Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
cd19ef12
提交
cd19ef12
authored
3月 31, 2026
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:更新数据资源库
上级
152adc61
显示空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
232 行增加
和
96 行删除
+232
-96
index.vue
src/components/base/moduleHeader/index.vue
+36
-12
getQuarterRange.js
src/utils/getQuarterRange.js
+13
-0
setChart.js
src/utils/setChart.js
+21
-0
index.vue
src/views/dataLibrary/bill/countryBill/index.vue
+29
-18
index.vue
src/views/dataLibrary/components/ChartContainer/index.vue
+2
-3
index.vue
src/views/dataLibrary/components/SelectBox/index.vue
+1
-1
index.vue
src/views/dataLibrary/decree/index.vue
+83
-43
index.vue
src/views/dataLibrary/index.vue
+9
-2
index.vue
src/views/decree/decreeHome/index.vue
+31
-2
index.vue
src/views/home/index.vue
+7
-15
没有找到文件。
src/components/base/moduleHeader/index.vue
浏览文件 @
cd19ef12
...
...
@@ -37,7 +37,7 @@
<div
class=
"icon"
>
<img
:src=
"item.icon"
alt=
""
/>
</div>
<div
class=
"title"
>
{{
item
.
title
}}
</div>
<div
class=
"title"
:class=
"
{ 'active-title': item.active }"
>
{{
item
.
title
}}
</div>
</div>
</div>
</div>
...
...
@@ -157,57 +157,68 @@ const menuList = ref([
{
title
:
"科技法案"
,
icon
:
Menu2
,
path
:
"/billHome"
path
:
"/billHome"
,
active
:
false
},
{
title
:
"科技政令"
,
icon
:
Menu3
,
path
:
"/decree"
path
:
"/decree"
,
active
:
false
},
{
title
:
"美国科技智库"
,
icon
:
Menu4
,
path
:
"/thinkTank"
path
:
"/thinkTank"
,
active
:
false
},
{
title
:
"出口管制"
,
icon
:
Menu5
,
path
:
"/exportControl"
path
:
"/exportControl"
,
active
:
false
},
{
title
:
"科研合作限制"
,
icon
:
Menu6
,
path
:
"/cooperationRestrictions"
path
:
"/cooperationRestrictions"
,
active
:
false
},
{
title
:
"投融资限制"
,
icon
:
Menu7
,
path
:
"/finance"
path
:
"/finance"
,
active
:
false
},
{
title
:
"市场准入限制"
,
icon
:
Menu8
,
path
:
"/marketAccessRestrictions"
path
:
"/marketAccessRestrictions"
,
active
:
false
},
{
title
:
"规则限制"
,
icon
:
Menu9
,
path
:
"/ruleRestrictions"
path
:
"/ruleRestrictions"
,
active
:
false
},
{
title
:
"美国科技人物观点"
,
icon
:
Menu10
,
path
:
"/technologyFigures"
path
:
"/technologyFigures"
,
active
:
false
},
{
title
:
"美国主要创新主体动向"
,
icon
:
Menu11
,
path
:
"/innovationSubject"
path
:
"/innovationSubject"
,
active
:
false
},
{
title
:
"美国科研资助体系"
,
icon
:
Menu12
,
path
:
"/scientificFunding"
path
:
"/scientificFunding"
,
active
:
false
}
]);
...
...
@@ -235,6 +246,7 @@ const handleToModule = (item, index) => {
window
.
sessionStorage
.
setItem
(
'homeActiveTitleIndex'
,
index
)
if
(
index
===
1
)
{
homeActiveTitleIndex
.
value
=
index
item
.
active
=
true
router
.
push
({
path
:
item
.
path
})
...
...
@@ -497,6 +509,11 @@ onUnmounted(() => {
letter-spacing
:
0px
;
text-align
:
left
;
}
.active-title
{
color
:
var
(
--
color-main-active
)
!
important
;
font-size
:
20px
!
important
;
}
}
}
}
...
...
@@ -528,6 +545,8 @@ onUnmounted(() => {
display
:
flex
;
cursor
:
pointer
;
&
:hover
{
.title
{
color
:
var
(
--
color-main-active
);
...
...
@@ -557,6 +576,11 @@ onUnmounted(() => {
letter-spacing
:
0px
;
text-align
:
left
;
}
.active-title
{
color
:
var
(
--
color-main-active
)
!
important
;
font-size
:
20px
!
important
;
}
}
}
}
...
...
src/utils/getQuarterRange.js
0 → 100644
浏览文件 @
cd19ef12
const
getQuarterRange
=
(
quatarNum
)
=>
{
const
quarters
=
{
1
:
[
'2025-01-01'
,
'2025-03-31'
],
2
:
[
'2025-04-01'
,
'2025-06-30'
],
3
:
[
'2025-07-01'
,
'2025-09-30'
],
4
:
[
'2025-10-01'
,
'2025-12-31'
]
};
return
quarters
[
quatarNum
];
}
export
default
getQuarterRange
\ No newline at end of file
src/utils/setChart.js
浏览文件 @
cd19ef12
// 绘制echarts图表
import
getMonthRange
from
'./getMonthRange'
import
getQuarterRange
from
'./getQuarterRange'
;
import
*
as
echarts
from
'echarts'
import
'echarts-wordcloud'
;
import
router
from
'@/router/index'
...
...
@@ -77,6 +78,26 @@ const setChart = (option, chartId, allowClick, selectParam) => {
}
}
break
case
'政令'
:
if
(
params
.
componentType
===
'series'
&&
params
.
seriesType
===
'pie'
)
{
selectParam
.
domains
=
params
.
name
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataDecree"
,
query
:
selectParam
});
window
.
open
(
route
.
href
,
"_blank"
);
}
else
if
(
params
.
componentType
===
'series'
&&
params
.
seriesType
===
'bar'
)
{
const
quatarNum
=
Number
(
params
.
name
[
params
.
name
.
length
-
1
])
selectParam
.
selectedDate
=
JSON
.
stringify
(
getQuarterRange
(
quatarNum
))
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataDecree"
,
query
:
selectParam
});
window
.
open
(
route
.
href
,
"_blank"
);
}
}
...
...
src/views/dataLibrary/bill/countryBill/index.vue
浏览文件 @
cd19ef12
...
...
@@ -151,7 +151,7 @@
<
/template
>
<
script
setup
>
import
{
ref
,
computed
,
watch
,
onMounted
,
nextTick
}
from
'vue'
import
{
ref
,
computed
,
watch
,
onMounted
,
nextTick
,
onBeforeUnmount
}
from
'vue'
import
ChartContainer
from
'../../components/ChartContainer/index.vue'
import
ChartHeader
from
'../../components/ChartHeader/index.vue'
import
ActiveTag
from
'../../components/ActiveTag/index.vue'
...
...
@@ -171,6 +171,10 @@ import getDateRange from '@/utils/getDateRange'
const
route
=
useRoute
();
const
timer1
=
ref
(
null
)
const
timer2
=
ref
(
null
)
const
timer3
=
ref
(
null
)
// 图表/数据
const
isShowChart
=
ref
(
false
)
// 点击切换数据/图表
...
...
@@ -180,7 +184,7 @@ const handleSwitchChartData = () => {
const
curDemensionItem
=
staticsDemensionList
.
value
.
filter
(
item
=>
{
return
item
.
name
===
curDemension
.
value
}
)[
0
]
setTimeout
(()
=>
{
timer1
.
value
=
setTimeout
(()
=>
{
activeChart
.
value
=
curDemensionItem
.
chartTypeList
[
0
]
curChartData
.
value
=
curDemensionItem
.
data
}
)
...
...
@@ -267,7 +271,7 @@ const handleClickDemensionItem = (val) => {
}
)
val
.
active
=
true
curDemension
.
value
=
val
.
name
setTimeout
(()
=>
{
timer2
.
value
=
setTimeout
(()
=>
{
activeChart
.
value
=
val
.
chartTypeList
[
0
]
curChartData
.
value
=
val
.
data
}
)
...
...
@@ -702,8 +706,8 @@ const statusList = ref([
id
:
'参议院通过'
}
,
{
name
:
'
双院通过
'
,
id
:
'
双院通过
'
name
:
'
分歧已解决
'
,
id
:
'
分歧已解决
'
}
,
])
...
...
@@ -778,8 +782,8 @@ const selectedCount = computed(() => selectedMap.value.size)
// 获取表格数据(示例)
const
fetchTableData
=
async
()
=>
{
isSelectedAll
.
value
=
false
selectedMap
.
value
.
clear
()
//
isSelectedAll.value = false
//
selectedMap.value.clear()
// 调用接口获取数据...
const
params
=
{
page
:
currentPage
.
value
,
...
...
@@ -793,8 +797,8 @@ const fetchTableData = async () => {
originChamber
:
selectedCongress
.
value
===
'全部议院'
?
null
:
selectedCongress
.
value
,
originDepart
:
selectedOrg
.
value
===
'全部委员会'
?
null
:
selectedOrg
.
value
,
sponsorPersonName
:
selectedmember
.
value
===
'全部议员'
?
null
:
selectedmember
.
value
,
status
:
selectedStatus
.
value
===
'
通过'
?
1
:
0
,
isInvolveCn
:
isInvolveCn
?
'Y'
:
'N'
,
status
:
selectedStatus
.
value
===
'
全部阶段'
?
null
:
selectedStatus
.
value
,
isInvolveCn
:
isInvolveCn
.
value
?
'Y'
:
'N'
,
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -836,7 +840,7 @@ const fetchTableData = async () => {
return
item
.
name
===
curDemension
.
value
}
)[
0
]
setTimeout
(()
=>
{
timer3
.
value
=
setTimeout
(()
=>
{
activeChart
.
value
=
curDemensionItem
.
chartTypeList
[
0
]
curChartData
.
value
=
curDemensionItem
.
data
}
)
...
...
@@ -877,7 +881,7 @@ const fetchAllData = async () => {
originDepart
:
selectedOrg
.
value
===
'全部委员会'
?
null
:
selectedOrg
.
value
,
sponsorPersonName
:
selectedmember
.
value
===
'全部议员'
?
null
:
selectedmember
.
value
,
status
:
selectedStatus
.
value
===
'通过'
?
1
:
0
,
isInvolveCn
:
isInvolveCn
?
'Y'
:
'N'
,
isInvolveCn
:
isInvolveCn
.
value
?
'Y'
:
'N'
,
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -1116,14 +1120,21 @@ const handleExport = () => {
onMounted
(
async
()
=>
{
handleGetOrgList
()
handleGetMemberList
()
initParam
()
// 初始化
await
fetchTableData
()
}
)
onBeforeUnmount
(()
=>
{
if
(
timer1
.
value
)
{
clearTimeout
(
timer1
.
value
)
}
if
(
timer2
.
value
)
{
clearTimeout
(
timer2
.
value
)
}
if
(
timer3
.
value
)
{
clearTimeout
(
timer3
.
value
)
}
}
)
<
/script
>
...
...
@@ -1239,10 +1250,11 @@ onMounted(async () => {
.
data
-
main
-
box
{
width
:
1568
px
;
height
:
810
px
;
min
-
height
:
810
px
;
border
-
radius
:
10
px
;
background
:
var
(
--
bg
-
white
-
100
);
margin
:
0
auto
;
margin
-
bottom
:
20
px
;
overflow
:
hidden
;
.
data
-
main
-
box
-
header
{
...
...
@@ -1274,8 +1286,7 @@ onMounted(async () => {
.
data
-
main
-
box
-
main
{
width
:
1520
px
;
// height: 633px;
height
:
680
px
;
min
-
height
:
680
px
;
border
-
radius
:
10
px
;
border
:
1
px
solid
var
(
--
bg
-
black
-
5
);
margin
:
0
auto
;
...
...
src/views/dataLibrary/components/ChartContainer/index.vue
浏览文件 @
cd19ef12
...
...
@@ -17,7 +17,7 @@
<slot
name=
"chart-box"
></slot>
</div>
<div
class=
"tip-box"
>
<TipTab
/>
<TipTab
text=
"数据来源:美国国会官网"
/>
</div>
</div>
</div>
...
...
@@ -176,8 +176,7 @@ const chartItemList = computed(() => {
.tip-box
{
height
:
54px
;
box-sizing
:
border-box
;
padding-top
:
10px
;
// background: orange;
padding
:
15px
600px
;
}
}
}
...
...
src/views/dataLibrary/components/SelectBox/index.vue
浏览文件 @
cd19ef12
...
...
@@ -2,7 +2,7 @@
<div
class=
"select-wrapper"
:class=
"
{ 'select-wrapper-custom': selectValue === '自定义' }">
<div
class=
"select-left text-tip-1"
>
{{
selectTitle
+
':'
}}
</div>
<div
class=
"select-right"
:class=
"
{ 'select-right-custom': selectValue === '自定义' }">
<el-select
v-model=
"selectValue"
:placeholder=
"placeholderName"
style=
"width: 240px"
>
<el-select
v-model=
"selectValue"
:placeholder=
"placeholderName"
filterable
style=
"width: 240px"
>
<!--
<el-option
label=
"全部领域"
value=
"全部领域"
/>
-->
<el-option
v-for=
"item in selectList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
...
...
src/views/dataLibrary/decree/index.vue
浏览文件 @
cd19ef12
...
...
@@ -128,7 +128,7 @@
<
el
-
table
ref
=
"tableRef"
:
data
=
"tableData"
row
-
key
=
"id"
@
selection
-
change
=
"handleSelectionChange"
@
select
=
"handleSelect"
@
select
-
all
=
"handleSelectAll"
style
=
"width: 100%"
:
row
-
style
=
"{ height: '52px'
}
"
>
<
el
-
table
-
column
type
=
"selection"
width
=
"40"
/>
<
el
-
table
-
column
label
=
"
法案名称"
width
=
"455
"
>
<
el
-
table
-
column
label
=
"
政令名称"
width
=
"720
"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"title-item text-compact-bold"
@
click
=
"handleClickToDetail(scope.row)"
>
{{
scope
.
row
.
title
}}
<
/span
>
...
...
@@ -137,15 +137,23 @@
<
el
-
table
-
column
label
=
"发布时间"
width
=
"120"
class
-
name
=
"date-column"
>
<
template
#
default
=
"scope"
>
{{
scope
.
row
.
date
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
提案人"
width
=
"4
80"
>
<
el
-
table
-
column
label
=
"
发布机构"
width
=
"1
80"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"person-item text-compact"
@
click
=
"handlePerClick(scope.row)"
>
{{
scope
.
row
.
sponsorPers
onName
<
span
class
=
"person-item text-compact"
@
click
=
"handlePerClick(scope.row)"
>
{{
scope
.
row
.
organizati
onName
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
property
=
"affiliation"
label
=
"所属党派"
width
=
"120"
/>
<
el
-
table
-
column
property
=
"originDepart"
label
=
"提出委员会"
width
=
"180"
/>
<
el
-
table
-
column
property
=
"status"
label
=
"所处阶段"
width
=
"120"
/>
<
el
-
table
-
column
label
=
"涉及领域"
width
=
"350"
class
-
name
=
"date-column"
>
<
template
#
default
=
"scope"
>
<
div
class
=
"tag-box"
>
<
AreaTag
v
-
for
=
"tag, index in scope.row.domains"
:
key
=
"index"
:
tagName
=
"tag"
/>
<
/div
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"政令类型"
width
=
"100"
>
<
template
#
default
=
"scope"
>
{{
scope
.
row
.
typeStr
}}
<
/template
>
<
/el-table-column
>
<
/el-table
>
<
/div
>
<
/div
>
...
...
@@ -175,6 +183,8 @@ import { search } from '@/api/comprehensiveSearch'
import
{
ElMessage
}
from
'element-plus'
import
getDateRange
from
'@/utils/getDateRange'
import
{
getDepartmentList
}
from
"@/api/decree/home"
;
const
route
=
useRoute
();
// 图表/数据
...
...
@@ -363,7 +373,7 @@ const activeTagList = computed(() => {
}
if
(
isInvolveTechnology
.
value
)
{
const
involveStr
=
'
政令
相关'
const
involveStr
=
'
科技
相关'
arr
.
push
(
{
tag
:
'科技相关'
,
...
...
@@ -593,18 +603,6 @@ const insList = ref([
name
:
'全部机构'
,
id
:
'全部机构'
}
,
{
name
:
'机构1'
,
id
:
'机构1'
}
,
{
name
:
'机构2'
,
id
:
'机构2'
}
,
{
name
:
'其他'
,
id
:
'其他'
}
,
])
const
selectedIns
=
ref
(
'全部机构'
)
const
insPlaceHolder
=
ref
(
'请选择发布机构'
)
...
...
@@ -612,6 +610,30 @@ const handleSelectIns = value => {
selectedIns
.
value
=
value
}
const
handleGetDeparmentList
=
async
()
=>
{
try
{
// let
{
keyWord
,
pageNum
,
pageSize
,
day
}
=
organizationInfo
const
params
=
{
day
:
365
,
}
const
res
=
await
getDepartmentList
(
params
);
console
.
log
(
"机构列表"
,
res
);
if
(
res
.
code
===
200
)
{
let
arr
=
res
.
data
.
orgList
.
map
(
item
=>
{
return
{
name
:
item
.
orgName
,
id
:
item
.
orgName
}
}
)
insList
.
value
=
[...
insList
.
value
,
...
arr
]
}
}
catch
(
error
)
{
}
}
// 政令类型列表
const
decreeTypeList
=
ref
([
{
...
...
@@ -642,6 +664,7 @@ const isInvolveTechnology = ref(false)
const
handleClear
=
()
=>
{
selectedArea
.
value
=
'全部领域'
selectedDate
.
value
=
''
customTime
.
value
=
[]
selectedIns
.
value
=
'全部机构'
selectedDecreeType
.
value
=
'全部类型'
isInvolveCn
.
value
=
false
...
...
@@ -701,12 +724,12 @@ const fetchTableData = async () => {
keyword
:
''
,
type
:
2
,
// type 1= 法案 2= 政令 3 =智库 4=智库报告 5=实体清单【制裁记录】 6= 人物 7= 机构 8=新闻 9= 社媒
domains
:
selectedArea
.
value
===
'全部领域'
?
null
:
[
selectedArea
.
value
],
proposedDateStart
:
customTime
.
value
[
0
],
proposedDateEnd
:
customTime
.
value
[
1
],
affiliation
:
selectedIns
.
value
===
'全部机构'
?
null
:
selectedIns
.
value
,
originChamber
:
selectedDecreeType
.
value
===
'全部类型'
?
null
:
selectedDecreeType
.
value
,
sleStatus
:
isInvolveCn
?
'Y'
:
'N'
,
aaaa
:
isInvolveTechnology
?
'Y'
:
'N'
,
proposedDateStart
:
customTime
.
value
[
0
]
?
customTime
.
value
[
0
]:
null
,
proposedDateEnd
:
customTime
.
value
[
1
]
?
customTime
.
value
[
1
]:
null
,
organizationName
:
selectedIns
.
value
===
'全部机构'
?
null
:
selectedIns
.
value
,
decreeType
:
selectedDecreeType
.
value
===
'全部类型'
?
null
:
selectedDecreeType
.
value
,
isInvolveCn
:
isInvolveCn
.
value
?
'Y'
:
'N'
,
isTechRelated
:
isInvolveTechnology
.
value
?
'Y'
:
'N'
,
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -731,7 +754,7 @@ const fetchTableData = async () => {
name
:
key
,
value
:
Number
(
value
)
}
))
staticsDemensionList
.
value
[
2
].
data
=
Object
.
entries
(
res
.
data
.
aggregations
OriginChamber
).
map
(([
key
,
value
])
=>
({
staticsDemensionList
.
value
[
2
].
data
=
Object
.
entries
(
res
.
data
.
aggregations
organizationName
).
map
(([
key
,
value
])
=>
({
name
:
key
,
value
:
Number
(
value
)
}
))
...
...
@@ -773,11 +796,11 @@ const fetchAllData = async () => {
domains
:
selectedArea
.
value
===
'全部领域'
?
null
:
[
selectedArea
.
value
],
proposedDateStart
:
customTime
.
value
[
0
],
proposedDateEnd
:
customTime
.
value
[
1
],
affiliation
:
selectedIns
.
value
===
'全部机构'
?
null
:
selectedIns
.
value
,
originChamber
:
selectedDecreeType
.
value
===
'全部类型'
?
null
:
selectedDecreeType
.
value
,
sleStatus
:
isInvolveCn
?
'Y'
:
'N'
,
aaaa
:
isInvolveTechnology
?
'Y'
:
'N'
,
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
organizationName
:
selectedIns
.
value
===
'全部机构'
?
null
:
selectedIns
.
value
,
decreeType
:
selectedDecreeType
.
value
===
'全部类型'
?
null
:
selectedDecreeType
.
value
,
isInvolveCn
:
isInvolveCn
.
value
?
'Y'
:
'N'
,
isTechRelated
:
isInvolveTechnology
.
value
?
'Y'
:
'N'
,
sort
:
isSort
.
value
?
0
:
1
}
try
{
const
res
=
await
search
(
params
)
...
...
@@ -933,6 +956,9 @@ const initParam = () => {
selectedDate
.
value
=
'自定义'
customTime
.
value
=
JSON
.
parse
(
route
.
query
.
selectedDate
)
}
selectedIns
.
value
=
route
.
query
.
orgnizationName
?
route
.
query
.
orgnizationName
:
'全部机构'
isInvolveCn
.
value
=
route
.
query
.
isInvolveCn
?
true
:
false
isInvolveTechnology
.
value
=
route
.
query
.
isInvolveTechnology
?
true
:
false
...
...
@@ -946,7 +972,7 @@ const initParam = () => {
}
else
{
const
savedQuery
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'decreeRouteQuery'
)
||
'{
}
'
);
selectedArea
.
value
=
savedQuery
.
domains
?
savedQuery
.
domains
:
'全部领域'
if
(
Array
.
isArray
(
JSON
.
parse
(
savedQuery
.
selectedDate
))
&&
JSON
.
parse
(
savedQuery
.
selectedDate
).
length
)
{
if
(
savedQuery
.
selectedDate
&&
Array
.
isArray
(
JSON
.
parse
(
savedQuery
.
selectedDate
))
&&
JSON
.
parse
(
savedQuery
.
selectedDate
).
length
)
{
selectedDate
.
value
=
'自定义'
customTime
.
value
=
JSON
.
parse
(
savedQuery
.
selectedDate
)
}
...
...
@@ -959,16 +985,16 @@ const initParam = () => {
}
// 跳转
法案
详情
const
handleClickToDetail
=
(
cur
Bill
)
=>
{
console
.
log
(
'cur
Bill'
,
curBill
);
// 跳转
政令
详情
const
handleClickToDetail
=
(
cur
Decree
)
=>
{
console
.
log
(
'cur
Decree'
,
curDecree
);
window
.
sessionStorage
.
setItem
(
"billId"
,
cur
Bill
.
id
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
cur
Bill
.
title
);
window
.
sessionStorage
.
setItem
(
"billId"
,
cur
Decree
.
id
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
cur
Decree
.
title
);
const
route
=
router
.
resolve
({
path
:
"/
bill
Layout"
,
path
:
"/
decree
Layout"
,
query
:
{
billId
:
cur
Bill
.
id
billId
:
cur
Decree
.
id
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
...
...
@@ -989,13 +1015,16 @@ const handlePerClick = item => {
// 导出
const
handleExport
=
()
=>
{
if
(
!
selectedCount
.
value
)
{
ElMessage
.
warning
(
'请选择至少一项数据!'
)
return
}
console
.
log
(
selectedMap
.
value
);
const
arr
=
Array
.
from
(
selectedMap
.
value
);
const
jsonStr
=
JSON
.
stringify
(
arr
,
null
,
2
);
const
blob
=
new
Blob
([
jsonStr
],
{
type
:
'application/json'
}
);
const
url
=
URL
.
createObjectURL
(
blob
);
const
link
=
document
.
createElement
(
'a'
);
link
.
href
=
url
;
link
.
download
=
'export.json'
;
...
...
@@ -1005,7 +1034,7 @@ const handleExport = () => {
}
;
onMounted
(
async
()
=>
{
handleGetDeparmentList
()
initParam
()
// 初始化
...
...
@@ -1127,10 +1156,11 @@ onMounted(async () => {
.
data
-
main
-
box
{
width
:
1568
px
;
height
:
810
px
;
min
-
height
:
810
px
;
border
-
radius
:
10
px
;
background
:
var
(
--
bg
-
white
-
100
);
margin
:
0
auto
;
margin
-
bottom
:
20
px
;
overflow
:
hidden
;
.
data
-
main
-
box
-
header
{
...
...
@@ -1163,7 +1193,7 @@ onMounted(async () => {
.
data
-
main
-
box
-
main
{
width
:
1520
px
;
// height: 633px;
height
:
680
px
;
min
-
height
:
680
px
;
border
-
radius
:
10
px
;
border
:
1
px
solid
var
(
--
bg
-
black
-
5
);
margin
:
0
auto
;
...
...
@@ -1257,6 +1287,14 @@ onMounted(async () => {
.
date
-
column
{
background
-
color
:
#
ecf5ff
;
.
tag
-
box
{
display
:
flex
;
flex
-
wrap
:
wrap
;
gap
:
8
px
;
width
:
340
px
;
}
}
.
date
-
column
.
cell
{
...
...
@@ -1284,6 +1322,8 @@ onMounted(async () => {
}
}
:
deep
(.
el
-
table__header
-
wrapper
)
{
// background-color: #f5f7fa;
height
:
48
px
;
...
...
src/views/dataLibrary/index.vue
浏览文件 @
cd19ef12
...
...
@@ -72,7 +72,7 @@
</
template
>
<
script
setup
>
import
{
computed
,
onMounted
,
ref
}
from
'vue'
import
{
computed
,
on
BeforeUnmount
,
on
Mounted
,
ref
}
from
'vue'
import
Icon1
from
'./assets/icons/sider-icon1.svg'
import
Icon2
from
'./assets/icons/sider-icon2.svg'
import
Icon3
from
'./assets/icons/sider-icon3.svg'
...
...
@@ -398,6 +398,8 @@ const handleClickTab = (tab) => {
})
}
const
timer
=
ref
(
null
)
// 关闭当前标签页
const
handleCloseCurTab
=
(
tab
,
index
)
=>
{
...
...
@@ -416,7 +418,7 @@ const handleCloseCurTab = (tab, index) => {
})
if
(
index
===
openedTabList
.
value
.
length
-
1
)
{
tagsViewStore
.
delView
(
tab
)
setTimeout
(()
=>
{
timer
.
value
=
setTimeout
(()
=>
{
tagsViewStore
.
visitedViews
[
tagsViewStore
.
visitedViews
.
length
-
1
].
active
=
true
activeTab
=
tagsViewStore
.
visitedViews
[
tagsViewStore
.
visitedViews
.
length
-
1
]
router
.
push
({
...
...
@@ -593,6 +595,11 @@ onMounted(() => {
})
onBeforeUnmount
(()
=>
{
if
(
timer
.
value
)
{
clearTimeout
(
timer
.
value
)
}
})
</
script
>
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
cd19ef12
...
...
@@ -896,7 +896,25 @@ const handleBox5 = async () => {
let
chart1
=
getBarChart
(
chart1Data
.
value
.
dataX
,
chart1Data
.
value
.
dataY
);
chart1
.
yAxis
.
name
=
"数量"
;
chart1
.
yAxis
.
nameTextStyle
=
{
align
:
'right'
}
setChart
(
chart1
,
"chart1"
);
let
org
=
'全部机构'
if
(
box5Params
.
proposeName
)
{
org
=
keyOrganizationList
.
value
.
filter
(
item
=>
{
return
item
.
orgId
===
box5Params
.
proposeName
})[
0
].
orgName
}
let
domain
=
'全部领域'
if
(
box5Params
.
domainId
)
{
domain
=
areaList
.
value
.
filter
(
item
=>
{
return
item
.
id
===
box5Params
.
domainId
})[
0
].
name
}
const
selectParam
=
{
moduleType
:
'政令'
,
orgnizationName
:
org
,
domains
:
domain
,
selectDate
:
box5Params
.
year
}
setChart
(
chart1
,
"chart1"
,
true
,
selectParam
);
};
// 政令科技领域
...
...
@@ -943,8 +961,19 @@ const handleGetDecreeArea = async () => {
};
const
handleBox6
=
async
()
=>
{
await
handleGetDecreeArea
();
let
org
=
'全部机构'
if
(
box6Params
.
proposeName
)
{
org
=
keyOrganizationList
.
value
.
filter
(
item
=>
{
return
item
.
orgId
===
box6Params
.
proposeName
})[
0
].
orgName
}
const
selectParam
=
{
moduleType
:
'政令'
,
orgnizationName
:
org
,
selectedDate
:
JSON
.
stringify
([
box6Params
.
year
+
'-01-01'
,
box6Params
.
year
+
'-12-31'
])
}
let
chart2
=
getPieChart
(
chart2Data
.
value
);
setChart
(
chart2
,
"chart2"
);
setChart
(
chart2
,
"chart2"
,
true
,
selectParam
);
};
const
handleBox6YearChange
=
()
=>
{
...
...
src/views/home/index.vue
浏览文件 @
cd19ef12
...
...
@@ -7,7 +7,7 @@
<router-view
/>
</div>
</div>
<div
class=
"right-btn"
@
click=
"handleClickToolBox"
>
<div
class=
"right-btn"
v-if=
"isShowToolBox"
@
click=
"handleClickToolBox"
>
<div
class=
"item"
>
<div
class=
"icon"
>
<img
src=
"@/assets/icons/overview/domain.png"
alt=
""
/>
...
...
@@ -22,20 +22,7 @@
</div>
</div>
<div
class=
"tool-box"
>
<!--
<div
class=
"tool-item"
>
<img
src=
"@/assets/icons/tool-item-icon1.png"
alt=
""
/>
</div>
<div
class=
"tool-item"
>
<img
src=
"@/assets/icons/tool-item-icon2.png"
alt=
""
/>
</div>
<div
class=
"tool-item"
>
<img
src=
"@/assets/icons/tool-item-icon3.png"
alt=
""
/>
</div>
<div
class=
"tool-item"
>
<img
src=
"@/assets/icons/tool-item-icon4.png"
alt=
""
/>
</div>
-->
<div
class=
"tool-box"
v-if=
"isShowToolBox"
>
<el-tooltip
content=
"智能写报"
placement=
"left"
:offset=
"10"
>
<div
class=
"tool-item"
@
click=
"handleOpenPage('znxb')"
>
<img
src=
"@/assets/icons/tool-item-icon1.png"
alt=
""
/>
...
...
@@ -96,6 +83,11 @@ import { ElMessage } from "element-plus";
const
router
=
useRouter
();
const
route
=
useRoute
();
const
isShowToolBox
=
computed
(()
=>
{
const
isShow
=
route
.
fullPath
.
includes
(
'dataLibrary'
)
?
false
:
true
return
isShow
})
const
isShowHeader
=
computed
(()
=>
{
const
isShow
=
route
.
meta
.
isShowHeader
return
isShow
?
true
:
false
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论