Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
226e9c9b
提交
226e9c9b
authored
12月 26, 2025
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
6ad6286d
显示空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
703 行增加
和
355 行删除
+703
-355
App.vue
src/App.vue
+17
-19
relevantCircumstance.js
src/api/bill/relevantCircumstance.js
+0
-0
home.js
src/api/decree/home.js
+3
-2
index.js
src/api/institution/index.js
+82
-1
main.css
src/styles/main.css
+0
-0
index.vue
src/views/bill/billHome/index.vue
+1
-1
index.vue
src/views/decree/decreeHome/index.vue
+94
-46
index.vue
src/views/decree/decreeLayout/deepdig/index.vue
+16
-2
index.vue
src/views/decree/decreeLayout/index.vue
+9
-10
index.vue
src/views/decree/decreeLayout/overview/background/index.vue
+39
-22
index.vue
src/views/decree/decreeLayout/overview/index.vue
+5
-10
index.vue
...views/decree/decreeLayout/overview/introduction/index.vue
+30
-25
index.vue
src/views/decree/institution/deepdig/index.vue
+36
-16
index.vue
src/views/decree/institution/index.vue
+35
-33
index.vue
src/views/decree/institution/insDetail/index.vue
+34
-55
index.vue
src/views/decree/institution/sanction/index.vue
+217
-89
index.vue
src/views/thinkTank/ReportDetail/policyTracking/index.vue
+3
-1
index.vue
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
+4
-3
multiLineChart.js
...nk/ThinkTankDetail/PolicyTracking/utils/multiLineChart.js
+4
-1
piechart.js
...hinkTank/ThinkTankDetail/PolicyTracking/utils/piechart.js
+12
-5
index.vue
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
+16
-2
index.vue
src/views/thinkTank/index.vue
+46
-12
没有找到文件。
src/App.vue
浏览文件 @
226e9c9b
...
@@ -26,14 +26,12 @@
...
@@ -26,14 +26,12 @@
<el-main
class=
"main-container"
>
<el-main
class=
"main-container"
>
<router-view
/>
<router-view
/>
</el-main>
</el-main>
<div
ref=
"target"
class=
"draggable-box"
:style=
"style"
>
<div
class=
"ai-btn"
@
click=
"openAiBox"
>
<div
class=
"ai-btn"
@
click=
"openAiBox"
>
<div
class=
"icon"
>
<div
class=
"icon"
>
<img
src=
"@/assets/icons/ai-icon.png"
alt=
""
/>
<img
src=
"@/assets/icons/ai-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"text"
>
智能问答
</div>
<div
class=
"text"
>
智能问答
</div>
</div>
</div>
</div>
<div
class=
"ai-dialog"
v-if=
"isShowAiBox"
>
<div
class=
"ai-dialog"
v-if=
"isShowAiBox"
>
<AiBox
@
close=
"closeAiBox"
/>
<AiBox
@
close=
"closeAiBox"
/>
...
@@ -48,24 +46,24 @@ import { Monitor, House, User, Location, Document, Bell, Message, ArrowDown } fr
...
@@ -48,24 +46,24 @@ import { Monitor, House, User, Location, Document, Bell, Message, ArrowDown } fr
import
{
useRouter
}
from
"vue-router"
;
import
{
useRouter
}
from
"vue-router"
;
import
Breadcrumb
from
"@/components/BreadCrumb/index.vue"
;
import
Breadcrumb
from
"@/components/BreadCrumb/index.vue"
;
import
AiBox
from
"./components/AiBox.vue"
;
import
AiBox
from
"./components/AiBox.vue"
;
import
{
useDraggable
}
from
"@vueuse/core"
;
//
import { useDraggable } from "@vueuse/core";
const
router
=
useRouter
();
const
router
=
useRouter
();
const
target
=
ref
(
null
);
//
const target = ref(null);
const
{
x
,
y
,
isDragging
}
=
useDraggable
(
target
,
{
//
const { x, y, isDragging } = useDraggable(target, {
initialValue
:
{
x
:
1770
,
y
:
800
},
//
initialValue: { x: 1770, y: 800 },
onStart
:
()
=>
console
.
log
(
"开始拖动"
),
//
onStart: () => console.log("开始拖动"),
onEnd
:
()
=>
console
.
log
(
"结束拖动"
)
//
onEnd: () => console.log("结束拖动")
});
//
});
const
style
=
computed
(()
=>
({
//
const style = computed(() => ({
position
:
"absolute"
,
//
position: "absolute",
left
:
`
${
x
.
value
}
px`
,
//
left: `${x.value}px`,
top
:
`
${
y
.
value
}
px`
,
//
top: `${y.value}px`,
cursor
:
isDragging
.
value
?
"grabbing"
:
"grab"
//
cursor: isDragging.value ? "grabbing" : "grab"
}));
//
}));
const
handleToHome
=
()
=>
{
const
handleToHome
=
()
=>
{
router
.
push
({
router
.
push
({
...
@@ -294,10 +292,10 @@ body {
...
@@ -294,10 +292,10 @@ body {
}
}
.ai-btn
{
.ai-btn
{
//
position: absolute;
position
:
absolute
;
// bottom: 20%
;
bottom
:
240px
;
// right: 46
px;
right
:
10
px
;
//
z-index: 9999;
z-index
:
9999
;
cursor
:
pointer
;
cursor
:
pointer
;
.icon
{
.icon
{
...
...
src/api/bill/relevantCircumstance.js
0 → 100644
浏览文件 @
226e9c9b
src/api/decree/home.js
浏览文件 @
226e9c9b
...
@@ -34,10 +34,11 @@ export function getDecreeYearOrder(params) {
...
@@ -34,10 +34,11 @@ export function getDecreeYearOrder(params) {
}
}
// 政令涉及领域
// 政令涉及领域
export
function
getDecreeArea
()
{
export
function
getDecreeArea
(
params
)
{
return
request
({
return
request
({
method
:
'GET'
,
method
:
'GET'
,
url
:
`/api/administrativeOrderOverview/industry`
,
url
:
`/api/administrativeOrderOverview/industry/
${
params
.
year
}
`
,
params
})
})
}
}
...
...
src/api/institution/index.js
浏览文件 @
226e9c9b
...
@@ -14,7 +14,7 @@ export function getGovOrgBasicInfo(params) {
...
@@ -14,7 +14,7 @@ export function getGovOrgBasicInfo(params) {
// 最新动态
// 最新动态
/**
/**
* @param { orgId, cRelated, currentPage, pageSize }
* @param { orgId, cRelated,
dynamicsType,
currentPage, pageSize }
*/
*/
export
function
getGovOrgLatestDynamics
(
params
)
{
export
function
getGovOrgLatestDynamics
(
params
)
{
return
request
({
return
request
({
...
@@ -62,3 +62,83 @@ export function getGovOrgOpinions(params) {
...
@@ -62,3 +62,83 @@ export function getGovOrgOpinions(params) {
params
params
})
})
}
}
// 人物关系
/**
* @param { orgId }
*/
export
function
getPersonRelation
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/governmentOrg/personRelation/
${
params
.
orgId
}
`
,
params
})
}
// 对华制裁 ---------------------------------------
// 实体清单新增数量
/**
* @param { orgId }
*/
export
function
getGrowthNum
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/governmentOrg/growthNum/
${
params
.
orgId
}
`
,
params
})
}
// 实体清单新增数量变化趋势
/**
* @param { orgId }
*/
export
function
getGrowthTrend
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/governmentOrg/growthTrend/
${
params
.
orgId
}
`
,
params
})
}
// 实体清单新增企业领域分布
/**
* @param { orgId }
*/
export
function
getEntityListField
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/governmentOrg/entityListField/
${
params
.
year
}
/
${
params
.
orgId
}
`
,
params
})
}
// 232调查单新增数量
/**
* @param { orgId }
*/
export
function
getGrowth232Num
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/governmentOrg/growth232Num/
${
params
.
orgId
}
`
,
params
})
}
// 232调查新增数量变化趋势
/**
* @param { orgId }
*/
export
function
getGrowth232Trend
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/governmentOrg/growth232Trend/
${
params
.
orgId
}
`
,
params
})
}
// 232调查新增企业领域分布
/**
* @param { orgId }
*/
export
function
getSection232Field
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/governmentOrg/section232Field/
${
params
.
startDate
}
/
${
params
.
orgId
}
`
,
params
})
}
\ No newline at end of file
src/styles/main.css
浏览文件 @
226e9c9b
src/views/bill/billHome/index.vue
浏览文件 @
226e9c9b
...
@@ -678,7 +678,7 @@
...
@@ -678,7 +678,7 @@
<
/div
>
<
/div
>
<
div
class
=
"right-footer"
>
<
div
class
=
"right-footer"
>
<
div
class
=
"footer-left"
>
<
div
class
=
"footer-left"
>
{{
`共
${total
}
项调查
`
}}
{{
`共
${total
}
条法案
`
}}
<
/div
>
<
/div
>
<
div
class
=
"footer-right"
>
<
div
class
=
"footer-right"
>
<
el
-
pagination
<
el
-
pagination
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
226e9c9b
...
@@ -256,7 +256,11 @@
...
@@ -256,7 +256,11 @@
<div
class=
"title"
>
{{
news
.
title
}}
</div>
<div
class=
"title"
>
{{
news
.
title
}}
</div>
<div
class=
"time"
>
{{
news
.
from
}}
</div>
<div
class=
"time"
>
{{
news
.
from
}}
</div>
</div>
</div>
<el-popover
effect=
"dark"
:width=
"1000"
:content=
"news.content"
placement=
"top-start"
>
<template
#
reference
>
<div
class=
"right-footer"
>
{{
news
.
content
}}
</div>
<div
class=
"right-footer"
>
{{
news
.
content
}}
</div>
</
template
>
</el-popover>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -294,16 +298,12 @@
...
@@ -294,16 +298,12 @@
</div>
</div>
<div
class=
"box5-header-title"
>
{{ "行政令发布频度" }}
</div>
<div
class=
"box5-header-title"
>
{{ "行政令发布频度" }}
</div>
</div>
</div>
</div>
<div
class=
"box5-main"
>
<div
class=
"box5-chart"
id=
"chart1"
></div>
<div
class=
"box5-selectbox"
>
<div
class=
"box5-selectbox"
>
<el-select
<el-select
@
change=
"handleBox5YearChange"
@
change=
"handleBox5YearChange"
v-model=
"box5SelectedYear"
v-model=
"box5SelectedYear"
placeholder=
"选择时间"
placeholder=
"选择时间"
style=
"width:
8
0px"
style=
"width:
12
0px"
>
>
<el-option
<el-option
v-for=
"item in box5YearList"
v-for=
"item in box5YearList"
...
@@ -314,6 +314,10 @@
...
@@ -314,6 +314,10 @@
</el-select>
</el-select>
</div>
</div>
</div>
</div>
<div
class=
"box5-main"
>
<div
class=
"box5-chart"
id=
"chart1"
></div>
</div>
</div>
</div>
<div
class=
"box6"
>
<div
class=
"box6"
>
<div
class=
"box6-header"
>
<div
class=
"box6-header"
>
...
@@ -321,6 +325,21 @@
...
@@ -321,6 +325,21 @@
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"header-title"
>
{{ "政令涉及领域" }}
</div>
<div
class=
"header-title"
>
{{ "政令涉及领域" }}
</div>
<div
class=
"box6-selectbox"
>
<el-select
@
change=
"handleBox6YearChange"
v-model=
"box6SelectedYear"
placeholder=
"选择时间"
style=
"width: 120px"
>
<el-option
v-for=
"item in box6YearList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</div>
</div>
</div>
<div
class=
"box6-main"
id=
"chart2"
></div>
<div
class=
"box6-main"
id=
"chart2"
></div>
</div>
</div>
...
@@ -334,7 +353,12 @@
...
@@ -334,7 +353,12 @@
<div
class=
"header-title"
>
{{ "关键行政令" }}
</div>
<div
class=
"header-title"
>
{{ "关键行政令" }}
</div>
</div>
</div>
<div
class=
"box7-main"
>
<div
class=
"box7-main"
>
<div
class=
"box7-item"
v-for=
"(item, index) in keyDecreeList"
:key=
"index"
>
<div
class=
"box7-item"
v-for=
"(item, index) in keyDecreeList"
:key=
"index"
@
click=
"handleKeyDecree(item.id)"
>
<div
class=
"icon"
>
<div
class=
"icon"
>
<img
src=
"./assets/images/warning.png"
alt=
""
/>
<img
src=
"./assets/images/warning.png"
alt=
""
/>
</div>
</div>
...
@@ -343,7 +367,11 @@
...
@@ -343,7 +367,11 @@
<div
class=
"title"
>
{{ item.title }}
</div>
<div
class=
"title"
>
{{ item.title }}
</div>
<div
class=
"time"
>
{{ item.time }}
</div>
<div
class=
"time"
>
{{ item.time }}
</div>
</div>
</div>
<el-popover
effect=
"dark"
:width=
"800"
:content=
"item.content"
placement=
"top-start"
>
<
template
#
reference
>
<div
class=
"info-content"
>
{{
item
.
content
?
item
.
content
:
"暂无数据"
}}
</div>
<div
class=
"info-content"
>
{{
item
.
content
?
item
.
content
:
"暂无数据"
}}
</div>
</
template
>
</el-popover>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -489,7 +517,7 @@
...
@@ -489,7 +517,7 @@
</div>
</div>
<div
class=
"footer-box"
>
<div
class=
"footer-box"
>
<div
class=
"footer-left"
>
<div
class=
"footer-left"
>
{{
`共
${totalDecreesNum
}
项调查
`
}}
{{ `共
${totalDecreesNum} 条政令
` }}
</div>
</div>
<div
class=
"footer-right"
>
<div
class=
"footer-right"
>
<el-pagination
<el-pagination
...
@@ -610,13 +638,9 @@ const govInsList = ref([
...
@@ -610,13 +638,9 @@ const govInsList = ref([
// name: "美国财政部"
// name: "美国财政部"
// },
// },
]);
]);
const
checkedGovIns
=
ref
([
'白宫'
])
const
checkedGovIns
=
ref
([
"白宫"
]);
const
handleChangeCheckedGovIns
=
(
val
)
=>
{
}
const
handleChangeCheckedGovIns
=
val
=>
{};
const
handleGetDepartmentList
=
async
()
=>
{
const
handleGetDepartmentList
=
async
()
=>
{
try
{
try
{
...
@@ -719,6 +743,16 @@ const handleClickDecree = decree => {
...
@@ -719,6 +743,16 @@ const handleClickDecree = decree => {
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
};
};
const
handleKeyDecree
=
id
=>
{
const
route
=
router
.
resolve
({
path
:
"/decreeLayout"
,
query
:
{
id
:
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 风险信号
// 风险信号
const
warningList
=
ref
([
const
warningList
=
ref
([
{
{
...
@@ -919,9 +953,36 @@ const chart2Data = ref([
...
@@ -919,9 +953,36 @@ const chart2Data = ref([
]);
]);
// const colorList = ["#69B1FF", "#FFC069", "#87E8DE", "#85A5FF", "#FF7875", "#B37FEB", "#4096FF"];
// const colorList = ["#69B1FF", "#FFC069", "#87E8DE", "#85A5FF", "#FF7875", "#B37FEB", "#4096FF"];
const
box6YearList
=
ref
([
{
label
:
"2025"
,
value
:
"2025"
},
{
label
:
"2024"
,
value
:
"2024"
},
{
label
:
"2023"
,
value
:
"2023"
},
{
label
:
"2022"
,
value
:
"2022"
},
{
label
:
"2021"
,
value
:
"2021"
}
]);
const
box6SelectedYear
=
ref
(
"2025"
);
const
handleGetDecreeArea
=
async
()
=>
{
const
handleGetDecreeArea
=
async
()
=>
{
const
params
=
{
year
:
box6SelectedYear
.
value
};
try
{
try
{
const
res
=
await
getDecreeArea
();
const
res
=
await
getDecreeArea
(
params
);
console
.
log
(
"政令涉及领域"
,
res
);
console
.
log
(
"政令涉及领域"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
chart2Data
.
value
=
res
.
data
.
map
(
item
=>
{
chart2Data
.
value
=
res
.
data
.
map
(
item
=>
{
...
@@ -941,6 +1002,10 @@ const handleBox6 = async () => {
...
@@ -941,6 +1002,10 @@ const handleBox6 = async () => {
setChart
(
chart2
,
"chart2"
);
setChart
(
chart2
,
"chart2"
);
};
};
const
handleBox6YearChange
=
()
=>
{
handleBox6
();
};
// 关键行政令
// 关键行政令
const
keyDecreeList
=
ref
([
const
keyDecreeList
=
ref
([
// {
// {
...
@@ -964,7 +1029,8 @@ const handleGetKeyDecree = async () => {
...
@@ -964,7 +1029,8 @@ const handleGetKeyDecree = async () => {
return
{
return
{
title
:
item
.
name
,
title
:
item
.
name
,
content
:
item
.
describe
,
content
:
item
.
describe
,
time
:
item
.
postDate
time
:
item
.
postDate
,
id
:
item
.
orderId
};
};
});
});
}
}
...
@@ -1012,7 +1078,6 @@ const handleSwithSort = () => {
...
@@ -1012,7 +1078,6 @@ const handleSwithSort = () => {
isSort
.
value
=
!
isSort
.
value
;
isSort
.
value
=
!
isSort
.
value
;
};
};
const
handleToPosi
=
id
=>
{
const
handleToPosi
=
id
=>
{
// 0 618 1240 2350
// 0 618 1240 2350
switch
(
id
)
{
switch
(
id
)
{
...
@@ -1088,7 +1153,7 @@ const decreeList = ref([
...
@@ -1088,7 +1153,7 @@ const decreeList = ref([
]);
]);
const
handleGetDecreeOrderList
=
async
()
=>
{
const
handleGetDecreeOrderList
=
async
()
=>
{
const
p0
=
checkedGovIns
.
value
.
join
(
','
)
const
p0
=
checkedGovIns
.
value
.
join
(
","
);
const
p1
=
activeAreaList
.
value
.
join
(
","
);
const
p1
=
activeAreaList
.
value
.
join
(
","
);
const
p2
=
activePubTime
.
value
.
join
(
","
);
const
p2
=
activePubTime
.
value
.
join
(
","
);
const
params
=
{
const
params
=
{
...
@@ -1109,7 +1174,7 @@ const handleGetDecreeOrderList = async () => {
...
@@ -1109,7 +1174,7 @@ const handleGetDecreeOrderList = async () => {
id
:
item
.
id
,
id
:
item
.
id
,
time
:
item
.
postDate
,
time
:
item
.
postDate
,
title
:
item
.
name
,
title
:
item
.
name
,
desc
:
item
.
order
,
desc
:
item
.
describe
,
img
:
item
.
orgImage
,
img
:
item
.
orgImage
,
tagList
:
item
.
industryList
tagList
:
item
.
industryList
};
};
...
@@ -1157,8 +1222,7 @@ watch(
...
@@ -1157,8 +1222,7 @@ watch(
val
=>
{
val
=>
{
handleGetDecreeOrderList
();
handleGetDecreeOrderList
();
}
}
);
)
// 切换当前政令
// 切换当前政令
const
handleSwithCurDecree
=
name
=>
{
const
handleSwithCurDecree
=
name
=>
{
...
@@ -2555,26 +2619,13 @@ onMounted(async () => {
...
@@ -2555,26 +2619,13 @@ onMounted(async () => {
line-height
:
26px
;
line-height
:
26px
;
}
}
}
}
.
box5
-
header
-
right
{
.box5-selectbox
{
width
:
49
px
;
margin-right
:
20px
;
height
:
24
px
;
margin-top
:
8px
;
margin
-
top
:
12
px
;
margin
-
right
:
27
px
;
cursor
:
pointer
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
}
}
}
.box5-main
{
.box5-main
{
height
:
397px
;
height
:
397px
;
position
:
relative
;
.
box5
-
selectbox
{
position
:
absolute
;
right
:
10
px
;
top
:
10
px
;
}
.box5-chart
{
.box5-chart
{
height
:
397px
;
height
:
397px
;
}
}
...
@@ -2613,17 +2664,10 @@ onMounted(async () => {
...
@@ -2613,17 +2664,10 @@ onMounted(async () => {
font-weight
:
700
;
font-weight
:
700
;
line-height
:
26px
;
line-height
:
26px
;
}
}
.
header
-
right
{
.
box6-selectbox
{
position
:
absolute
;
position
:
absolute
;
right
:
27
px
;
right
:
20px
;
width
:
49
px
;
top
:
8px
;
height
:
24
px
;
top
:
12
px
;
cursor
:
pointer
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
}
}
}
.box6-main
{
.box6-main
{
...
@@ -2680,6 +2724,10 @@ onMounted(async () => {
...
@@ -2680,6 +2724,10 @@ onMounted(async () => {
margin-top
:
16px
;
margin-top
:
16px
;
margin-left
:
25px
;
margin-left
:
25px
;
display
:
flex
;
display
:
flex
;
cursor
:
pointer
;
&
:hover
{
background
:
var
(
--
color-bg-hover
);
}
.icon
{
.icon
{
margin-top
:
6px
;
margin-top
:
6px
;
width
:
24px
;
width
:
24px
;
...
...
src/views/decree/decreeLayout/deepdig/index.vue
浏览文件 @
226e9c9b
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
<div
class=
"title"
>
{{
"政令主要内容"
}}
</div>
<div
class=
"title"
>
{{
"政令主要内容"
}}
</div>
</div>
</div>
<div
class=
"list-main"
>
<div
class=
"list-main"
>
<div
class=
"list-item"
v-for=
"(val, idx) in showList"
:key=
"idx"
>
<div
class=
"list-item"
v-for=
"(val, idx) in showList"
:key=
"idx"
@
click=
"handleToDecreeDetail(val)"
>
<div
class=
"id"
>
{{
idx
+
1
}}
</div>
<div
class=
"id"
>
{{
idx
+
1
}}
</div>
<div
class=
"title"
>
{{
val
.
content
}}
</div>
<div
class=
"title"
>
{{
val
.
content
}}
</div>
<div
class=
"open"
>
<div
class=
"open"
>
...
@@ -105,7 +105,7 @@
...
@@ -105,7 +105,7 @@
<
script
setup
>
<
script
setup
>
import
{
ref
,
computed
,
onMounted
}
from
"vue"
;
import
{
ref
,
computed
,
onMounted
}
from
"vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
import
router
from
"@/router"
;
import
{
getDecreeMainContent
}
from
"@/api/decree/introduction"
;
import
{
getDecreeMainContent
}
from
"@/api/decree/introduction"
;
import
{
getDecreeRelateOrder
}
from
"@/api/decree/deepdig"
;
import
{
getDecreeRelateOrder
}
from
"@/api/decree/deepdig"
;
...
@@ -254,6 +254,16 @@ const handleGetRelateOrder = async () => {
...
@@ -254,6 +254,16 @@ const handleGetRelateOrder = async () => {
}
}
}
;
}
;
const
handleToDecreeDetail
=
(
item
)
=>
{
const
route
=
router
.
resolve
({
path
:
"/decreeLayout/overview/introduction"
,
query
:
{
id
:
item
.
id
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
}
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetRelateOrder
();
handleGetRelateOrder
();
}
);
}
);
...
@@ -483,6 +493,10 @@ onMounted(() => {
...
@@ -483,6 +493,10 @@ onMounted(() => {
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
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/index.vue
浏览文件 @
226e9c9b
...
@@ -134,7 +134,7 @@ import icon2Active from "./assets/icons/icon2_active.png";
...
@@ -134,7 +134,7 @@ 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'
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
...
@@ -186,7 +186,6 @@ const activeTitle = ref("政令概况");
...
@@ -186,7 +186,6 @@ const activeTitle = ref("政令概况");
const
handleClickMainHeaderBtn
=
item
=>
{
const
handleClickMainHeaderBtn
=
item
=>
{
activeTitle
.
value
=
item
.
name
;
activeTitle
.
value
=
item
.
name
;
window
.
sessionStorage
.
setItem
(
"activeTitle"
,
item
.
name
);
router
.
push
({
router
.
push
({
path
:
item
.
path
,
path
:
item
.
path
,
query
:
{
query
:
{
...
@@ -211,16 +210,16 @@ const handleGetSummary = async () => {
...
@@ -211,16 +210,16 @@ const handleGetSummary = async () => {
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetSummary
();
handleGetSummary
();
if
(
window
.
sessionStorage
.
getItem
(
"activeTitle"
))
{
console
.
log
(
route
.
path
);
activeTitle
.
value
=
window
.
sessionStorage
.
getItem
(
"activeTitle"
);
if
(
route
.
path
===
"/decreeLayout/overview/introduction"
||
route
.
path
===
"/decreeLayout/overview/background"
)
{
activeTitle
.
value
=
"政令概况"
;
}
else
if
(
route
.
path
===
"/decreeLayout/deepDig"
)
{
activeTitle
.
value
=
"政令概况"
;
}
else
{
activeTitle
.
value
=
"影响分析"
;
}
}
});
});
onUnmounted
(()
=>
{
if
(
window
.
sessionStorage
.
getItem
(
"activeTitle"
))
{
window
.
sessionStorage
.
removeItem
(
"activeTitle"
);
}
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -247,7 +246,7 @@ onUnmounted(() => {
...
@@ -247,7 +246,7 @@ onUnmounted(() => {
.icon
{
.icon
{
width
:
64px
;
width
:
64px
;
height
:
64px
;
height
:
64px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
...
...
src/views/decree/decreeLayout/overview/background/index.vue
浏览文件 @
226e9c9b
<
template
>
<
template
>
<div
class=
"introduction-wrap"
>
<div
class=
"introduction-wrap"
>
<div
class=
"hover-dialog"
:style=
"
{ position: 'absolute', zIndex: 9999, top: `${mouseY - 220}px`, left: `${mouseX - 600}px` }"
v-if="isShowBox2Dialog"
>
{{
box2ContentAll
}}
</div>
<div
class=
"left"
>
<div
class=
"left"
>
<div
class=
"box1"
>
<div
class=
"box1"
>
<div
class=
"box-header"
>
<div
class=
"box-header"
>
...
@@ -29,13 +36,13 @@
...
@@ -29,13 +36,13 @@
<div
class=
"box1-item"
v-for=
"(item, index) in backgroundList"
:key=
"index"
>
<div
class=
"box1-item"
v-for=
"(item, index) in backgroundList"
:key=
"index"
>
<div
class=
"id"
>
{{
index
+
1
}}
</div>
<div
class=
"id"
>
{{
index
+
1
}}
</div>
<div
class=
"title"
>
{{
item
.
content
}}
</div>
<div
class=
"title"
>
{{
item
.
content
}}
</div>
<div
class=
"open"
>
<
!--
<
div
class=
"open"
>
<img
src=
"./assets/images/open-icon.png"
alt=
""
/>
<img
src=
"./assets/images/open-icon.png"
alt=
""
/>
</div>
</div>
-->
</div>
</div>
</div>
</div>
<div
class=
"box1-footer"
>
<div
class=
"box1-footer"
>
<div
class=
"box1-footer-left"
>
{{
`共计${backgroundListNum
}
条
指令
`
}}
<
/div
>
<div
class=
"box1-footer-left"
>
{{
`共计${backgroundListNum
}
条
背景
`
}}
<
/div
>
<
div
class
=
"box1-footer-right"
>
<
div
class
=
"box1-footer-right"
>
<
el
-
pagination
:
page
-
size
=
"5"
background
layout
=
"prev, pager, next"
:
total
=
"backgroundListNum"
/>
<
el
-
pagination
:
page
-
size
=
"5"
background
layout
=
"prev, pager, next"
:
total
=
"backgroundListNum"
/>
<
/div
>
<
/div
>
...
@@ -55,20 +62,19 @@
...
@@ -55,20 +62,19 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box2-main"
>
<
div
class
=
"box2-main"
>
<
div
class
=
"box2-dialog hover-dialog"
v
-
if
=
"isShowBox2Dialog"
>
{{
box2ContentAll
}}
<
/div
>
<
div
class
=
"box2-item"
v
-
for
=
"(item, index) in relatedEvents"
:
key
=
"index"
>
<
div
class
=
"box2-item"
v
-
for
=
"(item, index) in relatedEvents"
:
key
=
"index"
>
<
div
class
=
"item-left"
>
<
div
class
=
"item-left"
>
<
img
:
src
=
"item.image"
alt
=
""
/>
<
img
:
src
=
"item.image"
alt
=
""
/>
<
/div
>
<
/div
>
<
div
class
=
"item-center"
>
<
div
class
=
"item-center"
>
<
div
class
=
"title"
>
{{
item
.
title
}}
<
/div
>
<
div
class
=
"title"
>
{{
item
.
title
}}
<
/div
>
<
div
<
el
-
popover
effect
=
"dark"
:
width
=
"1000"
:
content
=
"item.content"
placement
=
"top-start"
>
class
=
"content"
<
template
#
reference
>
@
mouseenter
=
"handleChangeShowBox2Dialog(true, item.content)"
<
div
class
=
"content"
>
@
mouseleave
=
"handleChangeShowBox2Dialog(false)"
>
{{
item
.
content
}}
{{
item
.
content
}}
<
/div
>
<
/div
>
<
/template
>
<
/el-popover
>
<
/div
>
<
/div
>
<
div
class
=
"item-right"
>
{{
item
.
time
}}
<
/div
>
<
div
class
=
"item-right"
>
{{
item
.
time
}}
<
/div
>
<
/div
>
<
/div
>
...
@@ -94,13 +100,13 @@
...
@@ -94,13 +100,13 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box3-main"
>
<
div
class
=
"box3-main"
>
<
div
class
=
"box3-item"
v
-
for
=
"(item, index) in laws"
:
key
=
"index"
>
<
div
class
=
"box3-item"
v
-
for
=
"(item, index) in laws"
:
key
=
"index"
@
click
=
"handleToBillDetail(item)"
>
<
div
class
=
"id"
>
{{
index
+
1
}}
<
/div
>
<
div
class
=
"id"
>
{{
index
+
1
}}
<
/div
>
<
div
class
=
"item-header"
>
<
div
class
=
"item-header"
>
<
div
class
=
"name"
>
{{
item
.
title
}}
<
/div
>
<
div
class
=
"name"
>
{{
item
.
title
}}
<
/div
>
<
div
class
=
"info"
>
{{
item
.
info
}}
<
/div
>
<
!--
<
div
class
=
"info"
>
{{
item
.
info
}}
<
/div> --
>
<
/div
>
<
/div
>
<
!--
<
div
class
=
"item-content"
>
{{
item
.
content
}}
<
/div> --
>
<
div
class
=
"item-content"
>
{{
item
.
content
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -111,6 +117,7 @@
...
@@ -111,6 +117,7 @@
<
script
setup
>
<
script
setup
>
import
{
ref
,
onMounted
}
from
"vue"
;
import
{
ref
,
onMounted
}
from
"vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
import
router
from
"@/router"
;
import
{
getDecreeBackground
,
getDecreeRelatedEvent
,
getDecreeDepend
}
from
"@/api/decree/background"
;
import
{
getDecreeBackground
,
getDecreeRelatedEvent
,
getDecreeDepend
}
from
"@/api/decree/background"
;
import
Img1
from
"./assets/images/box2-img1.png"
;
import
Img1
from
"./assets/images/box2-img1.png"
;
...
@@ -119,11 +126,16 @@ import Img3 from "./assets/images/box2-img3.png";
...
@@ -119,11 +126,16 @@ import Img3 from "./assets/images/box2-img3.png";
import
Img4
from
"./assets/images/box2-img4.png"
;
import
Img4
from
"./assets/images/box2-img4.png"
;
import
Img5
from
"./assets/images/box2-img5.png"
;
import
Img5
from
"./assets/images/box2-img5.png"
;
import
{
reduce
}
from
"lodash"
;
import
{
reduce
}
from
"lodash"
;
import
Index
from
"../index.vue"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
decreeId
=
ref
(
route
.
query
.
id
);
const
decreeId
=
ref
(
route
.
query
.
id
);
// 基本鼠标位置
const
mouseX
=
ref
(
0
);
const
mouseY
=
ref
(
0
);
// 提出背景
// 提出背景
const
box1BtnList
=
ref
([
"涉华背景"
,
"全部背景"
]);
const
box1BtnList
=
ref
([
"涉华背景"
,
"全部背景"
]);
const
box1ActiveBtn
=
ref
(
"涉华背景"
);
const
box1ActiveBtn
=
ref
(
"涉华背景"
);
...
@@ -228,6 +240,17 @@ const handleChangeShowBox2Dialog = (isShow, content) => {
...
@@ -228,6 +240,17 @@ const handleChangeShowBox2Dialog = (isShow, content) => {
box2ContentAll
.
value
=
content
;
box2ContentAll
.
value
=
content
;
}
;
}
;
const
handleMouseMove
=
event
=>
{
mouseX
.
value
=
event
.
screenX
;
mouseY
.
value
=
event
.
screenY
;
}
;
const
handleToBillDetail
=
item
=>
{
window
.
sessionStorage
.
setItem
(
"billId"
,
item
.
billId
);
const
route
=
router
.
resolve
(
"/billLayout"
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetBackground
();
handleGetBackground
();
handleGetRelateEvents
();
handleGetRelateEvents
();
...
@@ -239,13 +262,6 @@ onMounted(() => {
...
@@ -239,13 +262,6 @@ onMounted(() => {
.
introduction
-
wrap
{
.
introduction
-
wrap
{
display
:
flex
;
display
:
flex
;
position
:
relative
;
position
:
relative
;
position
:
relative
;
.
box2
-
dialog
{
position
:
absolute
;
bottom
:
350
px
;
left
:
100
px
;
z
-
index
:
9999
;
}
.
box
-
header
{
.
box
-
header
{
height
:
56
px
;
height
:
56
px
;
display
:
flex
;
display
:
flex
;
...
@@ -323,7 +339,7 @@ onMounted(() => {
...
@@ -323,7 +339,7 @@ onMounted(() => {
.
box1
-
main
{
.
box1
-
main
{
margin
-
left
:
22
px
;
margin
-
left
:
22
px
;
width
:
1120
px
;
width
:
1120
px
;
height
:
2
8
0
px
;
height
:
2
9
0
px
;
overflow
:
hidden
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
overflow
-
y
:
auto
;
.
box1
-
item
{
.
box1
-
item
{
...
@@ -336,7 +352,7 @@ onMounted(() => {
...
@@ -336,7 +352,7 @@ onMounted(() => {
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
display
:
flex
;
display
:
flex
;
align
-
items
:
center
;
align
-
items
:
center
;
padding
:
12
px
0
;
padding
:
8
px
0
;
.
id
{
.
id
{
margin
-
left
:
15
px
;
margin
-
left
:
15
px
;
width
:
24
px
;
width
:
24
px
;
...
@@ -476,7 +492,8 @@ onMounted(() => {
...
@@ -476,7 +492,8 @@ onMounted(() => {
.
box3
-
item
{
.
box3
-
item
{
margin
-
bottom
:
20
px
;
margin
-
bottom
:
20
px
;
position
:
relative
;
position
:
relative
;
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
cursor
:
pointer
;
// border-bottom: 1px solid rgba(234, 236, 238, 1);
.
id
{
.
id
{
width
:
24
px
;
width
:
24
px
;
height
:
24
px
;
height
:
24
px
;
...
...
src/views/decree/decreeLayout/overview/index.vue
浏览文件 @
226e9c9b
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
</div>
</div>
</
template
>
</
template
>
<
script
setup
>
<
script
setup
>
import
{
ref
,
onMounted
,
onUnmounted
}
from
"vue"
;
import
{
ref
,
onMounted
}
from
"vue"
;
import
router
from
"@/router"
;
import
router
from
"@/router"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
...
@@ -41,7 +41,6 @@ const siderList = ref([
...
@@ -41,7 +41,6 @@ const siderList = ref([
const
siderBtnActive
=
ref
(
"政令简介"
);
const
siderBtnActive
=
ref
(
"政令简介"
);
const
handleClickLeftSiderBtn
=
item
=>
{
const
handleClickLeftSiderBtn
=
item
=>
{
window
.
sessionStorage
.
setItem
(
"siderBarActiveName"
,
item
.
name
);
siderBtnActive
.
value
=
item
.
name
;
siderBtnActive
.
value
=
item
.
name
;
router
.
push
({
router
.
push
({
path
:
item
.
path
,
path
:
item
.
path
,
...
@@ -52,14 +51,10 @@ const handleClickLeftSiderBtn = item => {
...
@@ -52,14 +51,10 @@ const handleClickLeftSiderBtn = item => {
};
};
onMounted
(()
=>
{
onMounted
(()
=>
{
if
(
window
.
sessionStorage
.
getItem
(
"siderBarActiveName"
))
{
if
(
route
.
path
===
"/decreeLayout/overview/introduction"
)
{
siderBtnActive
.
value
=
window
.
sessionStorage
.
getItem
(
"siderBarActiveName"
);
siderBtnActive
.
value
=
"政令简介"
;
}
}
else
{
});
siderBtnActive
.
value
=
"政令背景"
;
onUnmounted
(()
=>
{
if
(
window
.
sessionStorage
.
getItem
(
"siderBarActiveName"
))
{
window
.
sessionStorage
.
removeItem
(
"siderBarActiveName"
);
}
}
});
});
</
script
>
</
script
>
...
...
src/views/decree/decreeLayout/overview/introduction/index.vue
浏览文件 @
226e9c9b
...
@@ -43,9 +43,9 @@
...
@@ -43,9 +43,9 @@
<div
class=
"item-right text"
>
{{
basicInfo
.
signTime
}}
</div>
<div
class=
"item-right text"
>
{{
basicInfo
.
signTime
}}
</div>
</div>
</div>
<div
class=
"item"
>
<div
class=
"item"
>
<div
class=
"item-left"
>
{{
"
签署总统
:"
}}
</div>
<div
class=
"item-left"
>
{{
"
发布机构
:"
}}
</div>
<div
class=
"item-right text"
>
<div
class=
"item-right text"
>
{{
basicInfo
.
signPeopl
e
}}
{{
basicInfo
.
proposeOrgNam
e
}}
</div>
</div>
</div>
</div>
<div
class=
"item"
>
<div
class=
"item"
>
...
@@ -80,9 +80,9 @@
...
@@ -80,9 +80,9 @@
<div
class=
"box2-item"
v-for=
"(item, index) in curmajorList"
:key=
"index"
>
<div
class=
"box2-item"
v-for=
"(item, index) in curmajorList"
:key=
"index"
>
<div
class=
"id"
>
{{
index
+
1
}}
</div>
<div
class=
"id"
>
{{
index
+
1
}}
</div>
<div
class=
"title"
>
{{
item
.
content
}}
</div>
<div
class=
"title"
>
{{
item
.
content
}}
</div>
<div
class=
"open"
>
<
!--
<
div
class=
"open"
>
<img
src=
"./assets/images/open-icon.png"
alt=
""
/>
<img
src=
"./assets/images/open-icon.png"
alt=
""
/>
</div>
</div>
-->
</div>
</div>
</div>
</div>
<div
class=
"box2-footer"
>
<div
class=
"box2-footer"
>
...
@@ -233,6 +233,7 @@ const handleGetBasicInfo = async () => {
...
@@ -233,6 +233,7 @@ const handleGetBasicInfo = async () => {
basicInfo
.
value
.
signTime
=
res
.
data
.
postDate
;
basicInfo
.
value
.
signTime
=
res
.
data
.
postDate
;
basicInfo
.
value
.
bh
=
res
.
data
.
order
;
basicInfo
.
value
.
bh
=
res
.
data
.
order
;
basicInfo
.
value
.
deadline
=
res
.
data
.
deadline
;
basicInfo
.
value
.
deadline
=
res
.
data
.
deadline
;
basicInfo
.
value
.
proposeOrgName
=
res
.
data
.
proposeOrgName
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"基本信息error"
,
error
);
console
.
error
(
"基本信息error"
,
error
);
...
@@ -297,7 +298,7 @@ const handleClickBox3Btn = (btn, index) => {
...
@@ -297,7 +298,7 @@ const handleClickBox3Btn = (btn, index) => {
eventList
.
value
=
box3Data
.
value
[
index
].
newsList
.
map
(
val
=>
{
eventList
.
value
=
box3Data
.
value
[
index
].
newsList
.
map
(
val
=>
{
return
{
return
{
time
:
val
.
newsDate
,
time
:
val
.
newsDate
,
title
:
val
.
news
Title
title
:
val
.
news
Content
}
;
}
;
}
);
}
);
}
;
}
;
...
@@ -416,15 +417,14 @@ handleGetOrgnization();
...
@@ -416,15 +417,14 @@ handleGetOrgnization();
}
}
.
header
-
btn
-
box
{
.
header
-
btn
-
box
{
position
:
absolute
;
position
:
absolute
;
width
:
360
px
;
z
-
index
:
9999
;
height
:
35
px
;
width
:
320
px
;
height
:
56
px
;
overflow
:
hidden
;
overflow
-
x
:
auto
;
top
:
14
px
;
top
:
14
px
;
right
:
84
px
;
right
:
84
px
;
display
:
flex
;
display
:
flex
;
// justify-content: flex-end;
justify
-
content
:
flex
-
end
;
flex
-
wrap
:
wrap
;
gap
:
8
px
;
gap
:
8
px
;
white
-
space
:
nowrap
;
white
-
space
:
nowrap
;
.
btn
{
.
btn
{
...
@@ -466,10 +466,10 @@ handleGetOrgnization();
...
@@ -466,10 +466,10 @@ handleGetOrgnization();
}
}
}
}
.
left
{
.
left
{
width
:
1
150
px
;
width
:
1
064
px
;
.
box1
{
.
box1
{
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
1
150
px
;
width
:
1
064
px
;
height
:
414
px
;
height
:
414
px
;
border
-
radius
:
4
px
;
border
-
radius
:
4
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
...
@@ -525,7 +525,7 @@ handleGetOrgnization();
...
@@ -525,7 +525,7 @@ handleGetOrgnization();
}
}
.
box2
{
.
box2
{
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
1
150
px
;
width
:
1
064
px
;
height
:
415
px
;
height
:
415
px
;
border
-
radius
:
4
px
;
border
-
radius
:
4
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
...
@@ -533,20 +533,23 @@ handleGetOrgnization();
...
@@ -533,20 +533,23 @@ handleGetOrgnization();
.
box2
-
main
{
.
box2
-
main
{
margin
-
left
:
22
px
;
margin
-
left
:
22
px
;
height
:
280
px
;
height
:
280
px
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
.
box2
-
item
{
.
box2
-
item
{
width
:
1
101
px
;
width
:
1
015
px
;
height
:
48
px
;
//
height: 48px;
margin
-
bottom
:
8
px
;
margin
-
bottom
:
8
px
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
border
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
-
radius
:
2
px
;
border
-
radius
:
2
px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
display
:
flex
;
display
:
flex
;
align
-
items
:
center
;
padding
:
12
px
0
;
&
:
nth
-
child
(
2
n
-
1
)
{
&
:
nth
-
child
(
2
n
-
1
)
{
background
:
rgba
(
247
,
248
,
249
,
1
);
background
:
rgba
(
247
,
248
,
249
,
1
);
}
}
.
id
{
.
id
{
margin
-
top
:
12
px
;
margin
-
left
:
15
px
;
margin
-
left
:
15
px
;
width
:
24
px
;
width
:
24
px
;
height
:
24
px
;
height
:
24
px
;
...
@@ -558,15 +561,15 @@ handleGetOrgnization();
...
@@ -558,15 +561,15 @@ handleGetOrgnization();
}
}
.
title
{
.
title
{
width
:
1020
px
;
width
:
1020
px
;
line
-
height
:
48
px
;
line
-
height
:
24
px
;
margin
-
left
:
5
px
;
margin
-
left
:
10
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
16
px
;
font
-
size
:
16
px
;
font
-
weight
:
700
;
font
-
weight
:
700
;
overflow
:
hidden
;
//
overflow: hidden;
text
-
overflow
:
ellipsis
;
//
text-overflow: ellipsis;
white
-
space
:
nowrap
;
//
white-space: nowrap;
}
}
.
open
{
.
open
{
width
:
16
px
;
width
:
16
px
;
...
@@ -595,17 +598,18 @@ handleGetOrgnization();
...
@@ -595,17 +598,18 @@ handleGetOrgnization();
}
}
}
}
.
right
{
.
right
{
width
:
520
px
;
margin
-
left
:
16
px
;
margin
-
left
:
16
px
;
.
box3
{
.
box3
{
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
5
76
px
;
width
:
5
20
px
;
height
:
845
px
;
height
:
845
px
;
border
-
radius
:
4
px
;
border
-
radius
:
4
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.
box3
-
top
{
.
box3
-
top
{
margin
-
top
:
1
0
px
;
margin
-
top
:
3
0
px
;
height
:
2
6
1
px
;
height
:
2
4
1
px
;
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
.
box3
-
top
-
top
{
.
box3
-
top
-
top
{
width
:
473
px
;
width
:
473
px
;
...
@@ -651,6 +655,7 @@ handleGetOrgnization();
...
@@ -651,6 +655,7 @@ handleGetOrgnization();
}
}
}
}
.
right
{
.
right
{
width
:
350
px
;
margin
-
left
:
22
px
;
margin
-
left
:
22
px
;
.
name
{
.
name
{
height
:
26
px
;
height
:
26
px
;
...
...
src/views/decree/institution/deepdig/index.vue
浏览文件 @
226e9c9b
...
@@ -159,7 +159,7 @@ import getPieChart from "./utils/piechart";
...
@@ -159,7 +159,7 @@ import getPieChart from "./utils/piechart";
import
getWordCloudChart
from
"./utils/worldCloudChart"
;
import
getWordCloudChart
from
"./utils/worldCloudChart"
;
import
getGraphChart
from
"./utils/graph"
;
import
getGraphChart
from
"./utils/graph"
;
import
{
getGovOrgCompanyArea
,
getGovOrgOpinions
}
from
"@/api/institution/index"
;
import
{
getGovOrgCompanyArea
,
getGovOrgOpinions
,
getPersonRelation
}
from
"@/api/institution/index"
;
import
Img
from
"./assets/images/9.png"
;
import
Img
from
"./assets/images/9.png"
;
import
Img1
from
"./assets/images/1.png"
;
import
Img1
from
"./assets/images/1.png"
;
...
@@ -171,7 +171,7 @@ import Img6 from "./assets/images/6.png";
...
@@ -171,7 +171,7 @@ import Img6 from "./assets/images/6.png";
import
Img7
from
"./assets/images/7.png"
;
import
Img7
from
"./assets/images/7.png"
;
import
Img8
from
"./assets/images/8.png"
;
import
Img8
from
"./assets/images/8.png"
;
const
route
=
useRoute
()
const
route
=
useRoute
()
;
const
box1ChartData
=
ref
({
const
box1ChartData
=
ref
({
nodes
:
[
nodes
:
[
...
@@ -381,19 +381,15 @@ const box3ChartData = ref([
...
@@ -381,19 +381,15 @@ const box3ChartData = ref([
]);
]);
const
handleGetOpinions
=
async
()
=>
{
const
handleGetOpinions
=
async
()
=>
{
const
params
=
{
const
params
=
{
orgId
:
'50754570da464d0a81a5563dcb61d2ec'
orgId
:
"50754570da464d0a81a5563dcb61d2ec"
}
}
;
try
{
try
{
const
res
=
await
getGovOrgOpinions
(
params
)
const
res
=
await
getGovOrgOpinions
(
params
);
console
.
log
(
'主要科技政策观点'
,
res
);
console
.
log
(
"主要科技政策观点"
,
res
);
}
catch
(
error
)
{}
}
catch
(
error
)
{
};
}
}
// 人物关系
const
box4ChartData
=
ref
({
const
box4ChartData
=
ref
({
nodes
:
[
nodes
:
[
{
id
:
"9"
,
name
:
"霍华德·卢特尼克"
,
category
:
0
,
symbolSize
:
50
,
symbol
:
`image://
${
Img
}
`
},
{
id
:
"9"
,
name
:
"霍华德·卢特尼克"
,
category
:
0
,
symbolSize
:
50
,
symbol
:
`image://
${
Img
}
`
},
...
@@ -418,18 +414,42 @@ const box4ChartData = ref({
...
@@ -418,18 +414,42 @@ const box4ChartData = ref({
],
],
categories
:
[{
name
:
"a"
},
{
name
:
"b"
}]
categories
:
[{
name
:
"a"
},
{
name
:
"b"
}]
});
});
const
handleGetPerosonRelation
=
async
()
=>
{
const
params
=
{
orgId
:
route
.
query
.
id
};
try
{
const
res
=
await
getPersonRelation
(
params
);
console
.
log
(
"人物关系"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
&&
res
.
data
.
length
)
{
}
else
{
box4ChartData
.
value
.
nodes
=
[];
box4ChartData
.
value
.
links
=
[];
box4ChartData
.
value
.
categories
=
[];
}
}
catch
(
error
)
{
box4ChartData
.
value
.
nodes
=
[];
box4ChartData
.
value
.
links
=
[];
box4ChartData
.
value
.
categories
=
[];
}
};
const
handleBox4
=
async
()
=>
{
await
handleGetPerosonRelation
();
const
box4Chart
=
getGraphChart
(
box4ChartData
.
value
);
setChart
(
box4Chart
,
"box4Chart"
);
};
onMounted
(()
=>
{
onMounted
(()
=>
{
handleBox2
();
handleBox2
();
handleGetOpinions
()
handleGetOpinions
()
;
const
box1Chart
=
getSankeyChart
(
box1ChartData
.
value
.
nodes
,
box1ChartData
.
value
.
links
);
const
box1Chart
=
getSankeyChart
(
box1ChartData
.
value
.
nodes
,
box1ChartData
.
value
.
links
);
setChart
(
box1Chart
,
"box1Chart"
);
setChart
(
box1Chart
,
"box1Chart"
);
const
box3Chart
=
getWordCloudChart
(
box3ChartData
.
value
);
const
box3Chart
=
getWordCloudChart
(
box3ChartData
.
value
);
setChart
(
box3Chart
,
"box3Chart"
);
setChart
(
box3Chart
,
"box3Chart"
);
const
box4Chart
=
getGraphChart
(
box4ChartData
.
value
);
handleBox4
();
setChart
(
box4Chart
,
"box4Chart"
);
});
});
</
script
>
</
script
>
...
...
src/views/decree/institution/index.vue
浏览文件 @
226e9c9b
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div
class=
"wrap"
>
<div
class=
"wrap"
>
<div
class=
"header"
>
<div
class=
"header"
>
<div
class=
"header-left"
>
<div
class=
"header-left"
>
<img
:src=
"institutionInfo.logo
?institutionInfo.logo
: DefaultIcon2"
alt=
""
/>
<img
:src=
"institutionInfo.logo
? institutionInfo.logo
: DefaultIcon2"
alt=
""
/>
</div>
</div>
<div
class=
"header-right"
>
<div
class=
"header-right"
>
<div
class=
"title"
>
{{
institutionInfo
.
name
}}
</div>
<div
class=
"title"
>
{{
institutionInfo
.
name
}}
</div>
...
@@ -24,8 +24,8 @@
...
@@ -24,8 +24,8 @@
<div
class=
"tab-box"
>
<div
class=
"tab-box"
>
<div
<div
class=
"tab"
class=
"tab"
@
click=
"handleClickTab(item
, index
)"
@
click=
"handleClickTab(item)"
:class=
"
{ tabActive:
item.activ
e }"
:class=
"
{ tabActive:
activeTabName == item.nam
e }"
v-for="(item, index) in tabList"
v-for="(item, index) in tabList"
:key="index"
:key="index"
>
>
...
@@ -41,70 +41,72 @@
...
@@ -41,70 +41,72 @@
</
template
>
</
template
>
<
script
setup
>
<
script
setup
>
import
{
ref
,
computed
,
onMounted
}
from
"vue"
;
import
{
ref
,
computed
,
onMounted
,
onUnmounted
}
from
"vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
import
InsDetail
from
"./insDetail/index.vue"
;
import
InsDetail
from
"./insDetail/index.vue"
;
import
Deepdig
from
"./deepdig/index.vue"
;
import
Deepdig
from
"./deepdig/index.vue"
;
import
Sanction
from
"./sanction/index.vue"
;
import
Sanction
from
"./sanction/index.vue"
;
import
{
getGovOrgBasicInfo
}
from
'@/api/institution/index'
import
{
getGovOrgBasicInfo
}
from
"@/api/institution/index"
;
import
DefaultIcon2
from
'@/assets/icons/default-icon2.png'
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
const
route
=
useRoute
()
const
route
=
useRoute
()
;
const
institutionInfo
=
ref
({
const
institutionInfo
=
ref
({
name
:
""
,
name
:
""
,
enName
:
""
,
enName
:
""
,
desc
:
""
,
desc
:
""
,
tagList
:
[],
tagList
:
[],
logo
:
''
logo
:
""
});
});
const
handleGetInfo
=
async
()
=>
{
const
handleGetInfo
=
async
()
=>
{
const
params
=
{
const
params
=
{
id
:
route
.
query
.
id
id
:
route
.
query
.
id
}
}
;
try
{
try
{
const
res
=
await
getGovOrgBasicInfo
(
params
)
const
res
=
await
getGovOrgBasicInfo
(
params
);
console
.
log
(
'机构信息'
,
res
);
console
.
log
(
"机构信息"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
institutionInfo
.
value
.
name
=
res
.
data
.
orgName
institutionInfo
.
value
.
name
=
res
.
data
.
orgName
;
institutionInfo
.
value
.
enName
=
res
.
data
.
orgNameEn
institutionInfo
.
value
.
enName
=
res
.
data
.
orgNameEn
;
institutionInfo
.
value
.
desc
=
res
.
data
.
orgIntroduction
institutionInfo
.
value
.
desc
=
res
.
data
.
orgIntroduction
;
institutionInfo
.
value
.
name
=
res
.
data
.
orgName
institutionInfo
.
value
.
name
=
res
.
data
.
orgName
;
}
}
catch
(
error
)
{
}
}
}
}
catch
(
error
)
{}
};
handleGetInfo
()
handleGetInfo
()
;
const
activeTabName
=
ref
(
"机构详情"
);
const
activeTabName
=
ref
(
"机构详情"
);
const
tabList
=
ref
([
const
tabList
=
ref
([
{
{
name
:
"机构详情"
,
name
:
"机构详情"
active
:
true
},
},
{
{
name
:
"深度挖掘"
,
name
:
"深度挖掘"
active
:
false
},
},
{
{
name
:
"对话制裁"
,
name
:
"对华制裁"
active
:
false
}
}
]);
]);
const
handleClickTab
=
(
val
,
index
)
=>
{
const
handleClickTab
=
val
=>
{
tabList
.
value
.
forEach
(
item
=>
{
item
.
active
=
false
;
});
tabList
.
value
[
index
].
active
=
true
;
activeTabName
.
value
=
val
.
name
;
activeTabName
.
value
=
val
.
name
;
window
.
sessionStorage
.
setItem
(
"institutionActiveTabName"
,
val
.
name
);
};
};
onMounted
(()
=>
{
if
(
window
.
sessionStorage
.
getItem
(
"institutionActiveTabName"
))
{
activeTabName
.
value
=
window
.
sessionStorage
.
getItem
(
"institutionActiveTabName"
);
}
});
onUnmounted
(()
=>
{
window
.
sessionStorage
.
removeItem
(
'institutionActiveTabName'
)
})
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/decree/institution/insDetail/index.vue
浏览文件 @
226e9c9b
...
@@ -113,7 +113,7 @@
...
@@ -113,7 +113,7 @@
<
div
class
=
"user-content"
>
<
div
class
=
"user-content"
>
<
div
class
=
"user-item"
v
-
for
=
"(item, index) in keyUser"
:
key
=
"index"
>
<
div
class
=
"user-item"
v
-
for
=
"(item, index) in keyUser"
:
key
=
"index"
>
<
div
class
=
"user-item-left"
>
<
div
class
=
"user-item-left"
>
<
img
:
src
=
"item.avatarUrl"
alt
=
""
/>
<
img
:
src
=
"item.avatarUrl
?item.avatarUrl:DefaultIcon1
"
alt
=
""
/>
<
/div
>
<
/div
>
<
div
class
=
"user-item-right"
>
<
div
class
=
"user-item-right"
>
<
div
class
=
"name"
>
{{
item
.
name
}}
<
/div
>
<
div
class
=
"name"
>
{{
item
.
name
}}
<
/div
>
...
@@ -136,11 +136,13 @@ import User1 from "./assets/images/user1.png";
...
@@ -136,11 +136,13 @@ import User1 from "./assets/images/user1.png";
import
User2
from
"./assets/images/user2.png"
;
import
User2
from
"./assets/images/user2.png"
;
import
User3
from
"./assets/images/user3.png"
;
import
User3
from
"./assets/images/user3.png"
;
import
User4
from
"./assets/images/user4.png"
;
import
User4
from
"./assets/images/user4.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
{
getGovOrgLatestDynamics
,
getGovOrgKeyPerson
}
from
"@/api/institution/index"
;
import
{
getGovOrg
BasicInfo
,
getGovOrg
LatestDynamics
,
getGovOrgKeyPerson
}
from
"@/api/institution/index"
;
const
route
=
useRoute
()
const
route
=
useRoute
()
// 基本信息
const
basicInfo
=
ref
({
const
basicInfo
=
ref
({
image
:
Img
,
image
:
Img
,
shijian
:
"1948年"
,
shijian
:
"1948年"
,
...
@@ -149,6 +151,28 @@ const basicInfo = ref({
...
@@ -149,6 +151,28 @@ const basicInfo = ref({
xiashujigou
:
"工业与安全局、国际贸易管理局、专利商标局等"
,
xiashujigou
:
"工业与安全局、国际贸易管理局、专利商标局等"
,
zhicaishouduan
:
"实体清单、军事最终用户清单、“301条款”关税、“232条款”关税、特别指定国民清单"
zhicaishouduan
:
"实体清单、军事最终用户清单、“301条款”关税、“232条款”关税、特别指定国民清单"
}
);
}
);
const
handleGetBasicInfo
=
async
()
=>
{
const
params
=
{
id
:
route
.
query
.
id
}
try
{
const
res
=
await
getGovOrgBasicInfo
(
params
)
console
.
log
(
'基本信息'
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
basicInfo
.
value
.
image
=
res
.
data
.
logoUrl
basicInfo
.
value
.
shijian
=
res
.
data
.
establishmentDate
basicInfo
.
value
.
dizhi
=
res
.
data
.
address
basicInfo
.
value
.
zhize
=
res
.
data
.
orgIntroduction
basicInfo
.
value
.
xiashujigou
=
res
.
data
.
branchOrglist
.
toString
()
basicInfo
.
value
.
zhicaishouduan
=
res
.
data
.
taglist
.
toString
()
}
}
catch
(
error
)
{
}
}
// 关键人物
// 关键人物
const
keyUser
=
ref
([
const
keyUser
=
ref
([
...
@@ -162,16 +186,6 @@ const keyUser = ref([
...
@@ -162,16 +186,6 @@ const keyUser = ref([
// avatarUrl: User2,
// avatarUrl: User2,
// position: "副部长"
// position: "副部长"
//
}
,
//
}
,
//
{
// name: "杰弗里·凯斯勒",
// avatarUrl: User3,
// position: "工业与安全局局长"
//
}
,
//
{
// name: "约翰·斯奎尔斯",
// avatarUrl: User4,
// position: "专利商标局局长"
//
}
]);
]);
const
handleGetKeyUser
=
async
()
=>
{
const
handleGetKeyUser
=
async
()
=>
{
const
params
=
{
const
params
=
{
...
@@ -251,49 +265,7 @@ handleGetKeyUser();
...
@@ -251,49 +265,7 @@ handleGetKeyUser();
//
}
,
//
}
,
// tagList: ["集成电路"]
// tagList: ["集成电路"]
//
}
,
//
}
,
//
{
// title: "美国商务部:加强对华AI芯片出口限制",
// time: "2025 9月10日",
// content:
// "美国政府要求英特尔、AMD、英伟达等公司对向中国出口的先进AI处理器实施严格的许可证制度。英特尔Gaudi系列芯片等因性能超标明确受限。同时,考虑对中国AI初创企业DeepSeek实施制裁。",
// type:
{
// name: "行政令",
// status: 2
//
}
,
// tagList: ["人工智能", "集成电路"]
//
}
,
//
{
// title: "美国商务部:BIS更新“实体清单”",
// time: "2025 9月15日",
// content:
// "美国商务部工业和安全局宣布更新《出口管理条例》(EAR),并发布两项最终规则,将25家中国企业及其相关实体列入实体清单。",
// type:
{
// name: "实体清单",
// status: 4
//
}
,
// tagList: ["集成电路"]
//
}
,
//
{
// title: "美国商务部:发布针对中国网联汽车的禁令",
// time: "2025 8月25日",
// content: "美国商务部工业与安全局(BIS)发布一项最终规则,禁止涉及销售或进口其认定软件与中国有关联的联网汽车的交易。",
// type:
{
// name: "行政令",
// status: 2
//
}
,
// tagList: ["能源", "先进制造"]
//
}
,
//
{
// title: "美国商务部:考虑对中国无人机实施新限制",
// time: "2025 8月19日",
// content:
// "美国商务部表示正在考虑制定新规则,以限制或禁止中国无人机在美国境内使用,并就所谓“保护无人机供应链”的潜在规则征求公众意见。",
// type:
{
// name: "行政令",
// status: 2
//
}
,
// tagList: ["先进制造"]
//
}
// ]);
// ]);
const
dynamicsName
=
ref
(
"机构动态"
);
const
dynamicsName
=
ref
(
"机构动态"
);
const
isCrelated
=
ref
(
false
);
const
isCrelated
=
ref
(
false
);
...
@@ -318,6 +290,7 @@ const handleGetLatestDynamics = async () => {
...
@@ -318,6 +290,7 @@ const handleGetLatestDynamics = async () => {
const
params
=
{
const
params
=
{
orgId
:
route
.
query
.
id
,
orgId
:
route
.
query
.
id
,
cRelated
:
isCrelated
.
value
?
"Y"
:
"N"
,
cRelated
:
isCrelated
.
value
?
"Y"
:
"N"
,
dynamicsType
:
dynamicsName
===
'机构动态'
?
"org"
:
"person"
,
currentPage
:
1
,
currentPage
:
1
,
pageSize
:
9999999
pageSize
:
9999999
}
;
}
;
...
@@ -330,7 +303,13 @@ const handleGetLatestDynamics = async () => {
...
@@ -330,7 +303,13 @@ const handleGetLatestDynamics = async () => {
}
}
}
catch
(
error
)
{
}
}
catch
(
error
)
{
}
}
;
}
;
onMounted
(()
=>
{
handleGetLatestDynamics
();
handleGetLatestDynamics
();
handleGetBasicInfo
()
}
)
<
/script
>
<
/script
>
<
style
lang
=
"scss"
scoped
>
<
style
lang
=
"scss"
scoped
>
...
...
src/views/decree/institution/sanction/index.vue
浏览文件 @
226e9c9b
...
@@ -18,17 +18,17 @@
...
@@ -18,17 +18,17 @@
<div
class=
"item"
>
<div
class=
"item"
>
<div
class=
"item-top"
>
{{
"今年新增"
}}
</div>
<div
class=
"item-top"
>
{{
"今年新增"
}}
</div>
<div
class=
"item-bottom"
>
<div
class=
"item-bottom"
>
<div
class=
"item-bottom-left"
>
{{
"95家"
}}
</div>
<div
class=
"item-bottom-left"
>
{{
`${box1Info.currentYear.num
}
家`
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<div
class=
"item-bottom-right"
>
{{
"1129家"
}}
</div>
<
div
class
=
"item-bottom-right"
>
{{
`${box1Info.currentYear.totalNum
}
家`
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
<div
class=
"item-top"
>
{{
"
今年新增
"
}}
</div>
<
div
class
=
"item-top"
>
{{
"
全部企业
"
}}
<
/div
>
<
div
class
=
"item-bottom"
>
<
div
class
=
"item-bottom"
>
<div
class=
"item-bottom-left"
>
{{
"95家"
}}
</div>
<
div
class
=
"item-bottom-left"
>
{{
`${box1Info.allYear.num
}
家`
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<div
class=
"item-bottom-right"
>
{{
"1129家"
}}
</div>
<
div
class
=
"item-bottom-right"
>
{{
`${box1Info.allYear.totalNum
}
家`
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -80,17 +80,17 @@
...
@@ -80,17 +80,17 @@
<
div
class
=
"item"
>
<
div
class
=
"item"
>
<
div
class
=
"item-top"
>
{{
"今年新增"
}}
<
/div
>
<
div
class
=
"item-top"
>
{{
"今年新增"
}}
<
/div
>
<
div
class
=
"item-bottom"
>
<
div
class
=
"item-bottom"
>
<div
class=
"item-bottom-left"
>
{{
"2次"
}}
</div>
<
div
class
=
"item-bottom-left"
>
{{
`${box3Info.currentYear.num
}
次`
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<div
class=
"item-bottom-right"
>
{{
"6次"
}}
</div>
<
div
class
=
"item-bottom-right"
>
{{
`${box3Info.currentYear.totalNum
}
次`
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
<div
class=
"item-top"
>
{{
"
今年新增
"
}}
</div>
<
div
class
=
"item-top"
>
{{
"
全部调查
"
}}
<
/div
>
<
div
class
=
"item-bottom"
>
<
div
class
=
"item-bottom"
>
<div
class=
"item-bottom-left"
>
{{
"16次"
}}
</div>
<
div
class
=
"item-bottom-left"
>
{{
`${box3Info.allYear.num
}
次`
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<
div
class
=
"item-bottom-center"
>
{{
"/"
}}
<
/div
>
<div
class=
"item-bottom-right"
>
{{
"91次"
}}
</div>
<
div
class
=
"item-bottom-right"
>
{{
`${box3Info.allYear.totalNum
}
次`
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -130,117 +130,245 @@ import { ref, computed, onMounted } from "vue";
...
@@ -130,117 +130,245 @@ import { ref, computed, onMounted } from "vue";
import
setChart
from
"@/utils/setChart"
;
import
setChart
from
"@/utils/setChart"
;
import
getPieChart
from
"./utils/piechart"
;
import
getPieChart
from
"./utils/piechart"
;
import
getMultiLineChart
from
"./utils/multiLineChart"
;
import
getMultiLineChart
from
"./utils/multiLineChart"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
getGrowthNum
,
getGrowthTrend
,
getEntityListField
,
getGrowth232Num
,
getGrowth232Trend
,
getSection232Field
}
from
"@/api/institution/index"
;
const
route
=
useRoute
();
const
box1Info
=
ref
({
currentYear
:
{
num
:
0
,
totalNum
:
0
}
,
allYear
:
{
num
:
0
,
totalNum
:
0
}
}
);
const
handleGetGrowthNum
=
async
()
=>
{
const
params
=
{
orgId
:
route
.
query
.
id
// orgId: 54
}
;
try
{
const
res
=
await
getGrowthNum
(
params
);
console
.
log
(
"实体清单增长数量"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box1Info
.
value
.
currentYear
.
num
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"currentYear"
;
}
)[
0
].
chinaNum
;
box1Info
.
value
.
currentYear
.
totalNum
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"currentYear"
;
}
)[
0
].
allNum
;
box1Info
.
value
.
allYear
.
num
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"AllYear"
;
}
)[
0
].
chinaNum
;
box1Info
.
value
.
allYear
.
totalNum
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"AllYear"
;
}
)[
0
].
allNum
;
}
else
{
console
.
error
(
res
);
}
}
catch
(
error
)
{
console
.
error
(
"获取实体清单数量error"
,
error
);
}
}
;
handleGetGrowthNum
();
const
box1Data
=
ref
({
const
box1Data
=
ref
({
title
:
[
"2014"
,
"2015"
,
"2016"
,
"2017"
,
"2018"
,
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
],
title
:
[],
data
:
[
data
:
[
{
{
name
:
"全部实体"
,
name
:
"全部实体"
,
data
:
[
1104
,
468
,
602
,
635
,
486
,
622
,
811
,
967
,
952
,
1104
,
1358
,
1196
]
data
:
[]
}
,
}
,
{
{
name
:
"中国实体"
,
name
:
"中国实体"
,
data
:
[
234
,
263
,
251
,
224
,
264
,
255
,
258
,
234
,
246
,
249
,
257
,
268
]
data
:
[]
}
}
]
]
}
);
}
);
const
handleGetBox1Data
=
async
()
=>
{
const
params
=
{
orgId
:
route
.
query
.
id
// orgId: 54
}
;
try
{
const
res
=
await
getGrowthTrend
(
params
);
console
.
log
(
"实体清单新增数量变数趋势"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box1Data
.
value
.
title
=
res
.
data
.
map
(
item
=>
{
return
item
.
year
;
}
);
box1Data
.
value
.
data
[
0
].
data
=
res
.
data
.
map
(
item
=>
{
return
item
.
allNum
;
}
);
box1Data
.
value
.
data
[
1
].
data
=
res
.
data
.
map
(
item
=>
{
return
item
.
chinaNum
;
}
);
}
}
catch
(
error
)
{
}
}
;
const
handleBox1
=
async
()
=>
{
await
handleGetBox1Data
();
const
box1Chart
=
getMultiLineChart
(
box1Data
.
value
.
title
,
box1Data
.
value
.
data
[
0
].
data
,
box1Data
.
value
.
data
[
1
].
data
);
setChart
(
box1Chart
,
"box1Chart"
);
}
;
const
box2Data
=
ref
([
const
box2Data
=
ref
([
{
//
{
name
:
"集成电路"
,
// name: "集成电路",
value
:
50
// value: 50
},
//
}
,
{
]);
name
:
"人工智能"
,
const
handleGetBox2Data
=
async
()
=>
{
value
:
46
const
params
=
{
},
orgId
:
route
.
query
.
id
,
{
// orgId: 54,
name
:
"通信网络"
,
year
:
2025
value
:
40
}
;
},
try
{
{
const
res
=
await
getEntityListField
(
params
);
name
:
"能源"
,
console
.
log
(
"实体清单新增企业领域分布"
,
res
);
value
:
32
if
(
res
.
code
===
200
&&
res
.
data
)
{
},
box2Data
.
value
=
res
.
data
.
map
(
item
=>
{
{
return
{
name
:
"先进制造"
,
name
:
item
.
industry
,
value
:
31
value
:
item
.
amount
},
}
;
{
}
);
name
:
"生物科技"
,
}
value
:
31
}
catch
(
error
)
{
}
},
}
;
{
name
:
"航空航天"
,
const
handleBox2
=
async
()
=>
{
value
:
30
await
handleGetBox2Data
();
const
box2Chart
=
getPieChart
(
box2Data
.
value
);
setChart
(
box2Chart
,
"box2Chart"
);
}
;
const
box3Info
=
ref
({
currentYear
:
{
num
:
0
,
totalNum
:
0
}
,
}
,
{
allYear
:
{
n
ame
:
"新材料"
,
n
um
:
0
,
value
:
24
totalNum
:
0
}
}
]);
}
);
const
handleGetGrowth232Num
=
async
()
=>
{
const
params
=
{
orgId
:
route
.
query
.
id
// orgId: 54
}
;
try
{
const
res
=
await
getGrowth232Num
(
params
);
console
.
log
(
"232调查新增数量"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box3Info
.
value
.
currentYear
.
num
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"currentYear"
;
}
)[
0
].
chinaNum
;
box3Info
.
value
.
currentYear
.
totalNum
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"currentYear"
;
}
)[
0
].
allNum
;
box3Info
.
value
.
allYear
.
num
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"AllYear"
;
}
)[
0
].
chinaNum
;
box3Info
.
value
.
allYear
.
totalNum
=
res
.
data
.
filter
(
item
=>
{
return
item
.
yearType
===
"AllYear"
;
}
)[
0
].
allNum
;
}
else
{
console
.
error
(
res
);
}
}
catch
(
error
)
{
console
.
error
(
"获取232调查新增数量error"
,
error
);
}
}
;
handleGetGrowth232Num
();
const
box3Data
=
ref
({
const
box3Data
=
ref
({
title
:
[
"2014"
,
"2015"
,
"2016"
,
"2017"
,
"2018"
,
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
],
title
:
[],
data
:
[
data
:
[
{
{
name
:
"全部调查"
,
name
:
"全部调查"
,
data
:
[
856
,
456
,
568
,
631
,
667
,
631
,
532
,
589
,
631
,
668
,
672
,
630
]
data
:
[]
}
,
}
,
{
{
name
:
"涉华调查"
,
name
:
"涉华调查"
,
data
:
[
188
,
195
,
198
,
205
,
208
,
214
,
218
,
223
,
216
,
219
,
211
,
204
]
data
:
[]
}
}
]
]
}
);
}
);
const
box4Data
=
ref
([
const
handleGetBox3Data
=
async
()
=>
{
{
const
params
=
{
name
:
"集成电路"
,
orgId
:
route
.
query
.
id
value
:
50
// orgId: 54
},
}
;
{
try
{
name
:
"人工智能"
,
const
res
=
await
getGrowth232Trend
(
params
);
value
:
46
console
.
log
(
"232调查新增数量变数趋势"
,
res
);
},
if
(
res
.
code
===
200
&&
res
.
data
)
{
{
box3Data
.
value
.
title
=
res
.
data
.
map
(
item
=>
{
name
:
"通信网络"
,
return
item
.
year
;
value
:
40
}
);
},
box3Data
.
value
.
data
[
0
].
data
=
res
.
data
.
map
(
item
=>
{
{
return
item
.
allNum
;
name
:
"能源"
,
}
);
value
:
32
box3Data
.
value
.
data
[
1
].
data
=
res
.
data
.
map
(
item
=>
{
},
return
item
.
chinaNum
;
{
}
);
name
:
"先进制造"
,
}
value
:
31
}
catch
(
error
)
{
}
},
}
;
{
const
handleBox3
=
async
()
=>
{
name
:
"生物科技"
,
await
handleGetBox3Data
();
value
:
31
},
{
name
:
"航空航天"
,
value
:
30
},
{
name
:
"新材料"
,
value
:
24
}
]);
onMounted
(()
=>
{
const
box1Chart
=
getMultiLineChart
(
box1Data
.
value
.
title
,
box1Data
.
value
.
data
[
0
].
data
,
box1Data
.
value
.
data
[
1
].
data
);
setChart
(
box1Chart
,
"box1Chart"
);
const
box2Chart
=
getPieChart
(
box2Data
.
value
);
setChart
(
box2Chart
,
"box2Chart"
);
const
box3Chart
=
getMultiLineChart
(
box3Data
.
value
.
title
,
box3Data
.
value
.
data
[
0
].
data
,
box3Data
.
value
.
data
[
1
].
data
);
const
box3Chart
=
getMultiLineChart
(
box3Data
.
value
.
title
,
box3Data
.
value
.
data
[
0
].
data
,
box3Data
.
value
.
data
[
1
].
data
);
setChart
(
box3Chart
,
"box3Chart"
);
setChart
(
box3Chart
,
"box3Chart"
);
}
;
const
box4Data
=
ref
([]);
const
handleGetBox4Data
=
async
()
=>
{
const
params
=
{
orgId
:
route
.
query
.
id
,
// orgId: 54,
startDate
:
"2021-01-01"
}
;
try
{
const
res
=
await
getSection232Field
(
params
);
console
.
log
(
"232调查新增企业领域分布"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box4Data
.
value
=
res
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
industry
,
value
:
item
.
amount
}
;
}
);
}
}
catch
(
error
)
{
}
}
;
const
handleBox4
=
async
()
=>
{
await
handleGetBox4Data
();
const
box4Chart
=
getPieChart
(
box4Data
.
value
);
const
box4Chart
=
getPieChart
(
box4Data
.
value
);
setChart
(
box4Chart
,
"box4Chart"
);
setChart
(
box4Chart
,
"box4Chart"
);
}
;
onMounted
(()
=>
{
handleBox1
();
handleBox2
();
handleBox3
();
handleBox4
();
}
);
}
);
<
/script
>
<
/script
>
...
...
src/views/thinkTank/ReportDetail/policyTracking/index.vue
浏览文件 @
226e9c9b
...
@@ -429,7 +429,9 @@ onMounted(async () => {
...
@@ -429,7 +429,9 @@ onMounted(async () => {
.box1-main
{
.box1-main
{
width
:
1056px
;
width
:
1056px
;
height
:
1280px
;
min-height
:
738px
;
max-height
:
1280px
;
padding-bottom
:
20px
;
margin
:
0
auto
;
margin
:
0
auto
;
overflow
:
hidden
;
overflow
:
hidden
;
overflow-y
:
auto
;
overflow-y
:
auto
;
...
...
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
浏览文件 @
226e9c9b
...
@@ -145,7 +145,7 @@
...
@@ -145,7 +145,7 @@
</div>
</div>
</div>
</div>
<div
class=
"right-footer"
>
<div
class=
"right-footer"
>
<div
class=
"info"
>
共
{{
total
}}
智库报告
</div>
<div
class=
"info"
>
共
{{
total
}}
篇政策建议
</div>
<div
class=
"page-box"
>
<div
class=
"page-box"
>
<el-pagination
:page-size=
"12"
background
layout=
"prev, pager, next"
:total=
"total"
<el-pagination
:page-size=
"12"
background
layout=
"prev, pager, next"
:total=
"total"
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
/>
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
/>
...
@@ -831,7 +831,8 @@ onMounted(() => {
...
@@ -831,7 +831,8 @@ onMounted(() => {
.right
{
.right
{
width
:
1284px
;
width
:
1284px
;
height
:
1670px
;
max-height
:
1670px
;
margin-bottom
:
20px
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-radius
:
10px
;
border-radius
:
10px
;
...
@@ -841,7 +842,7 @@ onMounted(() => {
...
@@ -841,7 +842,7 @@ onMounted(() => {
.right-main
{
.right-main
{
margin
:
17px
auto
;
margin
:
17px
auto
;
width
:
1209px
;
width
:
1209px
;
height
:
1540px
;
max-
height
:
1540px
;
.right-main-item
{
.right-main-item
{
// height: 154px;
// height: 154px;
...
...
src/views/thinkTank/ThinkTankDetail/PolicyTracking/utils/multiLineChart.js
浏览文件 @
226e9c9b
...
@@ -21,7 +21,10 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
...
@@ -21,7 +21,10 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
legend
:
{
legend
:
{
show
:
true
,
show
:
true
,
top
:
10
,
top
:
10
,
left
:
'10%'
left
:
'10%'
,
textStyle
:
{
fontSize
:
16
}
},
},
xAxis
:
[
xAxis
:
[
{
{
...
...
src/views/thinkTank/ThinkTankDetail/PolicyTracking/utils/piechart.js
浏览文件 @
226e9c9b
...
@@ -14,13 +14,20 @@ const getPieChart = (data) => {
...
@@ -14,13 +14,20 @@ const getPieChart = (data) => {
label
:
{
label
:
{
alignTo
:
'edge'
,
alignTo
:
'edge'
,
formatter
:
'{name|{b}}
\
n{time|{c} 条 {d}%}'
,
formatter
:
'{name|{b}}
\
n{time|{c} 条 {d}%}'
,
minMargin
:
5
,
minMargin
:
10
,
edgeDistance
:
1
0
,
edgeDistance
:
2
0
,
lineHeight
:
15
,
lineHeight
:
24
,
rich
:
{
rich
:
{
name
:
{
fontSize
:
16
,
color
:
'rgba(59, 65, 75, 1)'
,
fontFamily
:
'Microsoft YaHei'
,
fontWeight
:
700
},
time
:
{
time
:
{
fontSize
:
10
,
fontSize
:
16
,
color
:
'#999'
color
:
'rgba(95, 101, 108, 1)'
,
fontFamily
:
'Microsoft YaHei'
,
}
}
}
}
},
},
...
...
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
浏览文件 @
226e9c9b
...
@@ -154,8 +154,8 @@
...
@@ -154,8 +154,8 @@
<div
class=
"box3-main-left"
id=
"box3Chart"
></div>
<div
class=
"box3-main-left"
id=
"box3Chart"
></div>
<div
class=
"box3-main-right"
>
<div
class=
"box3-main-right"
>
<div
class=
"box3-right-item"
v-for=
"(item, index) in box3RightData"
:key=
"index"
>
<div
class=
"box3-right-item"
v-for=
"(item, index) in box3RightData"
:key=
"index"
>
<div
class=
"icon"
>
<div
class=
"icon"
@
click=
"handleClickPerson"
>
<img
:src=
"item.imageUrl"
alt=
""
/>
<img
:src=
"item.imageUrl
?item.imageUrl:DefaultIcon1
"
alt=
""
/>
</div>
</div>
<div
class=
"info"
>
<div
class=
"info"
>
<div
class=
"info-header"
>
<div
class=
"info-header"
>
...
@@ -188,6 +188,8 @@ import {
...
@@ -188,6 +188,8 @@ import {
import
{
useRouter
}
from
"vue-router"
;
import
{
useRouter
}
from
"vue-router"
;
import
DefaultIcon1
from
'@/assets/icons/default-icon1.png'
const
router
=
useRouter
();
const
router
=
useRouter
();
import
InfoImg
from
"./images/img.png"
;
import
InfoImg
from
"./images/img.png"
;
import
Icon1
from
"./images/icon1.png"
;
import
Icon1
from
"./images/icon1.png"
;
...
@@ -477,6 +479,17 @@ const handleGetThinkPerson = async () => {
...
@@ -477,6 +479,17 @@ const handleGetThinkPerson = async () => {
}
}
};
};
// 点击人物头像,跳转到人物主页
const
handleClickPerson
=
()
=>
{
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
:
3
// 1 2 3
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetThinkTankInfoBasic
()
handleGetThinkTankInfoBasic
()
handleGetThinkTankInfoBranch
()
handleGetThinkTankInfoBranch
()
...
@@ -950,6 +963,7 @@ onMounted(() => {
...
@@ -950,6 +963,7 @@ onMounted(() => {
width
:
48px
;
width
:
48px
;
height
:
48px
;
height
:
48px
;
margin-left
:
8px
;
margin-left
:
8px
;
cursor
:
pointer
;
img
{
img
{
width
:
100%
;
width
:
100%
;
...
...
src/views/thinkTank/index.vue
浏览文件 @
226e9c9b
...
@@ -129,7 +129,7 @@
...
@@ -129,7 +129,7 @@
<div
class=
"title"
>
{{ box1Data[box1DataIndex]?.reportName }}
</div>
<div
class=
"title"
>
{{ box1Data[box1DataIndex]?.reportName }}
</div>
<div
class=
"tag-box"
>
<div
class=
"tag-box"
>
<div
class=
"tag"
v-for=
"(item, index) in box1Data[box1DataIndex]?.industryVOList"
:key=
"index"
>
<div
class=
"tag"
v-for=
"(item, index) in box1Data[box1DataIndex]?.industryVOList"
:key=
"index"
>
{{ item }}
{{ item
.industryName
}}
</div>
</div>
</div>
</div>
<div
class=
"content"
>
{{ box1Data[box1DataIndex]?.summary }}
</div>
<div
class=
"content"
>
{{ box1Data[box1DataIndex]?.summary }}
</div>
...
@@ -139,6 +139,7 @@
...
@@ -139,6 +139,7 @@
<div
class=
"logo"
>
<div
class=
"logo"
>
<img
:src=
"box1Data[box1DataIndex]?.thinkTankImage"
alt=
""
/>
<img
:src=
"box1Data[box1DataIndex]?.thinkTankImage"
alt=
""
/>
</div>
</div>
<div
class=
"text"
>
{{ box1Data[box1DataIndex]?.thinkTankName }}
</div>
<div
class=
"text"
>
{{ box1Data[box1DataIndex]?.reportDate }}
</div>
<div
class=
"text"
>
{{ box1Data[box1DataIndex]?.reportDate }}
</div>
</div>
</div>
</div>
</div>
...
@@ -168,7 +169,7 @@
...
@@ -168,7 +169,7 @@
{{ item.status || "一般风险" }}
{{ item.status || "一般风险" }}
</div>
</div>
<div
class=
"item-right"
>
<div
class=
"item-right"
>
<el-popover
effect=
"dark"
:content=
"item.title"
placement=
"top-start"
>
<el-popover
effect=
"dark"
:
width=
"500"
:
content=
"item.title"
placement=
"top-start"
>
<
template
#
reference
>
<
template
#
reference
>
<div
class=
"text"
>
<div
class=
"text"
>
{{
item
.
title
}}
{{
item
.
title
}}
...
@@ -201,7 +202,7 @@
...
@@ -201,7 +202,7 @@
</div>
</div>
</div>
</div>
<div
class=
"box3-main"
>
<div
class=
"box3-main"
>
<div
class=
"box3-item"
v-for=
"(news, index) in newsList"
:key=
"index"
>
<div
class=
"box3-item"
v-for=
"(news, index) in newsList"
:key=
"index"
@
click=
"handleToNewsAnalysis(news)"
>
<div
class=
"left"
>
<div
class=
"left"
>
<img
:src=
"news.newsImage !== null ? news.newsImage : defaultNewsIcon"
/>
<img
:src=
"news.newsImage !== null ? news.newsImage : defaultNewsIcon"
/>
</div>
</div>
...
@@ -211,7 +212,7 @@
...
@@ -211,7 +212,7 @@
<div
class=
"time"
>
{{ news.newsOrg }}
</div>
<div
class=
"time"
>
{{ news.newsOrg }}
</div>
</div>
</div>
<el-popover
effect=
"dark"
:content=
"news.newsContent"
placement=
"top-start"
>
<el-popover
effect=
"dark"
:
width=
700
:
content=
"news.newsContent"
placement=
"top-start"
>
<
template
#
reference
>
<
template
#
reference
>
<div
class=
"right-footer"
>
{{
news
.
newsContent
}}
</div>
<div
class=
"right-footer"
>
{{
news
.
newsContent
}}
</div>
</
template
>
</
template
>
...
@@ -242,7 +243,7 @@
...
@@ -242,7 +243,7 @@
</div> -->
</div> -->
<div
class=
"box4-main"
>
<div
class=
"box4-main"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
<div
class=
"left"
>
<div
class=
"left"
@
click=
"handleClickPerson()"
>
<img
:src=
"item.personImage ? item.personImage : defaultHeaderIcin"
alt=
""
/>
<img
:src=
"item.personImage ? item.personImage : defaultHeaderIcin"
alt=
""
/>
</div>
</div>
<div
class=
"right"
>
<div
class=
"right"
>
...
@@ -325,14 +326,14 @@
...
@@ -325,14 +326,14 @@
:class=
"{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
:class=
"{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
{{ index + 1 }}
{{ index + 1 }}
</div>
</div>
<el-popover
effect=
"dark"
:content=
"item.clause"
placement=
"top-start"
>
<
!-- <
el-popover effect="dark" :content="item.clause" placement="top-start">
<
template
#
reference
>
<template #reference>
-->
<div
class=
"item-center"
<div
class=
"item-center"
:class=
"{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
:class=
"{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
{{ item.clause }}
{{ item.clause }}
</div>
</div>
</
template
>
<
!-- <
/template>
</el-popover>
</el-popover>
-->
<!-- <div class="item-right">{{ `${item.count}份报告 >` }}</div> -->
<!-- <div class="item-right">{{ `${item.count}份报告 >` }}</div> -->
</div>
</div>
...
@@ -1420,6 +1421,34 @@ const handleToMoreRiskSignal = () => {
...
@@ -1420,6 +1421,34 @@ const handleToMoreRiskSignal = () => {
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
};
};
// 查看更多新闻资讯
const
handleToMoreNews
=
()
=>
{
const
route
=
router
.
resolve
(
"/newsBrief"
);
window
.
open
(
route
.
href
,
"_blank"
);
};
// 点击人物头像,跳转到人物主页
const
handleClickPerson
=
()
=>
{
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
:
3
// 1 2 3
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 点击新闻条目,跳转到新闻分析页
const
handleToNewsAnalysis
=
news
=>
{
const
route
=
router
.
resolve
({
path
:
"/newsAnalysis"
,
query
:
{
newsId
:
news
.
newsId
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
const
handleToReportDetail
=
id
=>
{
const
handleToReportDetail
=
id
=>
{
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
name
:
"ReportDetail"
,
name
:
"ReportDetail"
,
...
@@ -2046,11 +2075,11 @@ onMounted(async () => {
...
@@ -2046,11 +2075,11 @@ onMounted(async () => {
display
:
flex
;
display
:
flex
;
justify-content
:
flex-end
;
justify-content
:
flex-end
;
gap
:
6px
;
gap
:
6px
;
height
:
36px
;
.logo
{
.logo
{
margin-top
:
5px
;
width
:
36px
;
width
:
16px
;
height
:
36px
;
height
:
16px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
...
@@ -2059,6 +2088,7 @@ onMounted(async () => {
...
@@ -2059,6 +2088,7 @@ onMounted(async () => {
}
}
.text
{
.text
{
margin-top
:
6px
;
height
:
24px
;
height
:
24px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
@@ -2392,6 +2422,7 @@ onMounted(async () => {
...
@@ -2392,6 +2422,7 @@ onMounted(async () => {
overflow
:
hidden
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
white-space
:
nowrap
;
cursor
:
pointer
;
}
}
}
}
}
}
...
@@ -2529,6 +2560,9 @@ onMounted(async () => {
...
@@ -2529,6 +2560,9 @@ onMounted(async () => {
margin-top
:
5px
;
margin-top
:
5px
;
width
:
36px
;
width
:
36px
;
height
:
36px
;
height
:
36px
;
border-radius
:
18px
;
overflow
:
hidden
;
cursor
:
pointer
;
img
{
img
{
width
:
100%
;
width
:
100%
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论