Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
661f902c
提交
661f902c
authored
3月 24, 2026
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
法案概览页新增图表跳转资源库
上级
80947d07
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
123 行增加
和
138 行删除
+123
-138
setChart.js
src/utils/setChart.js
+23
-1
index.vue
src/views/bill/billHome/index.vue
+22
-10
index.vue
src/views/dataLibrary/bill/countryBill/index.vue
+77
-126
index.vue
src/views/dataLibrary/components/ChartHeader/index.vue
+1
-1
没有找到文件。
src/utils/setChart.js
浏览文件 @
661f902c
...
...
@@ -17,7 +17,29 @@ const setChart = (option, chartId, allowClick, selectParam) => {
// 判断点击的是否为饼图的数据项
if
(
params
.
componentType
===
'series'
&&
params
.
seriesType
===
'pie'
)
{
console
.
log
(
'点击的扇形名称:'
,
params
.
name
);
selectParam
.
domains
=
JSON
.
stringify
([
params
.
name
])
if
(
selectParam
.
key
===
'领域'
)
{
selectParam
.
domains
=
JSON
.
stringify
([
params
.
name
])
}
else
if
(
selectParam
.
key
===
'议院委员会'
)
{
if
(
params
.
name
===
'众议院'
||
params
.
name
===
'参议院'
)
{
selectParam
.
selectedCongress
=
params
.
name
selectParam
.
selectedOrg
=
''
}
else
{
selectParam
.
selectedOrg
=
params
.
name
selectParam
.
selectedCongress
=
''
}
}
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/countryBill"
,
query
:
selectParam
});
window
.
open
(
route
.
href
,
"_blank"
);
}
else
if
(
params
.
componentType
===
'series'
&&
params
.
seriesType
===
'bar'
)
{
if
(
params
.
name
===
'已立法'
)
{
selectParam
.
selectedStauts
=
1
}
else
{
selectParam
.
selectedStauts
=
0
}
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/countryBill"
,
query
:
selectParam
...
...
src/views/bill/billHome/index.vue
浏览文件 @
661f902c
...
...
@@ -866,14 +866,20 @@ const handleBox7Data = async () => {
if
(
t1
!==
t2
)
return
t1
-
t2
;
return
(
b
.
value
??
0
)
-
(
a
.
value
??
0
);
});
const
selectParam
=
{
moduleType
:
'国会法案'
,
key
:
'议院委员会'
,
selectedDate
:
box7selectetedTime
.
value
,
}
const
box7Chart
=
getDoublePieChart
(
data1
,
data2
);
setChart
(
box7Chart
,
"box7Chart"
);
setChart
(
box7Chart
,
"box7Chart"
,
true
,
selectParam
);
box7AiData
.
value
=
{
inner
:
data1
,
outer
:
data2
};
}
else
{
// 接口异常(如500)时,清空图表数据以避免报错或显示错误信息
box7HasData
.
value
=
false
;
setChart
({},
"box7Chart"
);
setChart
({},
"box7Chart"
,
true
,
selectParam
);
box7AiData
.
value
=
{
inner
:
[],
outer
:
[]
};
}
}
catch
(
error
)
{
...
...
@@ -987,11 +993,9 @@ const handleBox9Data = async () => {
);
const
selectParam
=
{
moduleType
:
'国会法案'
,
proposedDateStart
:
box9selectetedTime
.
value
,
selectedDate
:
box9selectetedTime
.
value
,
status
:
box9LegislativeStatus
.
value
===
'提出法案'
?
0
:
1
,
isInvolveCn
:
1
}
box9ChartInstance
=
setChart
(
box9Chart
,
"box9Chart"
,
true
,
selectParam
);
}
...
...
@@ -1168,9 +1172,17 @@ const handleBox8Data = async () => {
box8HasData
.
value
=
true
;
box8Summary
.
value
=
countMap
.
get
(
"完成立法"
)
||
0
;
box8StageList
.
value
=
stages
;
const
selectParam
=
{
moduleType
:
'国会法案'
,
key
:
'领域'
,
selectedDate
:
box8selectetedTime
.
value
,
isInvolveCn
:
1
}
await
nextTick
();
const
box8Chart
=
getBox8ChartOption
(
stages
);
box8ChartInstance
=
setChart
(
box8Chart
,
"box8Chart"
);
box8ChartInstance
=
setChart
(
box8Chart
,
"box8Chart"
,
true
,
selectParam
);
}
else
{
const
data
=
box8MockDataByYear
[
box8selectetedTime
.
value
];
if
(
data
&&
data
.
stages
&&
data
.
stages
.
length
>
0
)
{
...
...
@@ -1179,12 +1191,12 @@ const handleBox8Data = async () => {
box8StageList
.
value
=
data
.
stages
;
await
nextTick
();
const
box8Chart
=
getBox8ChartOption
(
data
.
stages
);
box8ChartInstance
=
setChart
(
box8Chart
,
"box8Chart"
);
box8ChartInstance
=
setChart
(
box8Chart
,
"box8Chart"
,
true
,
selectParam
);
}
else
{
box8HasData
.
value
=
false
;
box8Summary
.
value
=
0
;
box8StageList
.
value
=
[];
setChart
({},
"box8Chart"
);
setChart
({},
"box8Chart"
,
true
,
selectParam
);
}
}
}
catch
(
error
)
{
...
...
@@ -1196,12 +1208,12 @@ const handleBox8Data = async () => {
box8StageList
.
value
=
data
.
stages
;
await
nextTick
();
const
box8Chart
=
getBox8ChartOption
(
data
.
stages
);
box8ChartInstance
=
setChart
(
box8Chart
,
"box8Chart"
);
box8ChartInstance
=
setChart
(
box8Chart
,
"box8Chart"
,
true
,
selectParam
);
}
else
{
box8HasData
.
value
=
false
;
box8Summary
.
value
=
0
;
box8StageList
.
value
=
[];
setChart
({},
"box8Chart"
);
setChart
({},
"box8Chart"
,
true
,
selectParam
);
}
}
};
...
...
src/views/dataLibrary/bill/countryBill/index.vue
浏览文件 @
661f902c
...
...
@@ -23,7 +23,7 @@
</div>
<div
class=
"check-box-right"
>
<el-checkbox
v-model=
"isInvolveCn"
class=
"involve-checkbox"
@
change=
"handleInvolveCnChange"
>
{{
'只看涉华
委员会
'
}}
{{
'只看涉华
法案
'
}}
</el-checkbox>
</div>
</div>
...
...
@@ -217,6 +217,7 @@ const staticsDemensionList = ref([
}
,
])
// 当前维度下的图表列表
const
curChartTypeList
=
computed
(()
=>
{
let
arr
=
staticsDemensionList
.
value
.
filter
(
item
=>
item
.
active
)
return
arr
[
0
].
chartTypeList
...
...
@@ -225,6 +226,7 @@ const curChartTypeList = computed(() => {
// 当前维度
const
curDemension
=
ref
(
'提案时间'
)
// 点击维度item
const
handleClickDemensionItem
=
(
val
)
=>
{
activeChart
.
value
=
''
staticsDemensionList
.
value
.
forEach
(
item
=>
{
...
...
@@ -257,25 +259,25 @@ const timeList = ref([
// 激活的标签列表
const
activeTagList
=
computed
(()
=>
{
const
arr
=
[]
if
(
selectedArea
.
value
&&
selectedArea
!==
'全部领域'
)
{
if
(
selectedArea
.
value
&&
selectedArea
.
value
!==
'全部领域'
)
{
arr
.
push
(
selectedArea
.
value
)
}
if
(
selectedDate
.
value
)
{
arr
.
push
(
selectedDate
.
value
)
}
if
(
selectedParty
.
value
&&
selectedParty
!==
'全部党派'
)
{
if
(
selectedParty
.
value
&&
selectedParty
.
value
!==
'全部党派'
)
{
arr
.
push
(
selectedParty
.
value
)
}
if
(
selectedCongress
.
value
&&
selectedCongress
!==
'全部议院'
)
{
if
(
selectedCongress
.
value
&&
selectedCongress
.
value
!==
'全部议院'
)
{
arr
.
push
(
selectedCongress
.
value
)
}
if
(
selectedOrg
.
value
&&
selectedOrg
!==
'全部委员会'
)
{
if
(
selectedOrg
.
value
&&
selectedOrg
.
value
!==
'全部委员会'
)
{
arr
.
push
(
selectedOrg
.
value
)
}
if
(
selectedmember
.
value
&&
selectedmember
!==
'全部议员'
)
{
if
(
selectedmember
.
value
&&
selectedmember
.
value
!==
'全部议员'
)
{
arr
.
push
(
selectedmember
.
value
)
}
if
(
selectedStauts
.
value
&&
selectedStauts
!==
'全部阶段'
)
{
if
(
selectedStauts
.
value
&&
selectedStauts
.
value
!==
'全部阶段'
)
{
arr
.
push
(
selectedStauts
.
value
)
}
if
(
isInvolveCn
.
value
)
{
...
...
@@ -298,67 +300,6 @@ const handleSwitchActiveChart = val => {
activeChart
.
value
=
val
.
name
}
const
lineChartData
=
ref
({
dataX
:
[
'2025-08'
,
'2025-09'
,
'2025-10'
,
'2025-11'
,
'2025-12'
,
'2026-01'
,
'2026-02'
,],
dataY
:
[
123
,
51
,
64
,
72
,
58
,
69
,
105
]
}
)
const
pieChartData
=
ref
([
{
name
:
'核'
,
value
:
24
}
,
{
name
:
'极地'
,
value
:
24
}
,
{
name
:
'新材料'
,
value
:
24
}
,
{
name
:
'深海'
,
value
:
30
}
,
{
name
:
'海洋'
,
value
:
31
}
,
{
name
:
'先进制造'
,
value
:
31
}
,
{
name
:
'生物科技'
,
value
:
32
}
,
{
name
:
'新能源'
,
value
:
35
}
,
{
name
:
'集成电路'
,
value
:
16
}
,
{
name
:
'新一代通信网络'
,
value
:
55
}
,
{
name
:
'量子科技'
,
value
:
33
}
,
{
name
:
'人工智能'
,
value
:
55
}
])
const
barChartData
=
ref
({
dataX
:
[
'2025-08'
,
'2025-09'
,
'2025-10'
,
'2025-11'
,
'2025-12'
,
'2026-01'
,
'2026-02'
,],
dataY
:
[
123
,
51
,
64
,
72
,
58
,
69
,
105
]
}
)
const
radarChartData
=
ref
({
title
:
[
{
...
...
@@ -425,9 +366,9 @@ const operationList = ref([
}
,
])
// 领域
//
科技
领域
const
areaPlaceHolder
=
ref
(
'请选择领域'
)
const
selectedArea
=
ref
(
''
)
const
selectedArea
=
ref
(
'
全部领域
'
)
const
areaList
=
ref
([
{
name
:
'全部领域'
,
...
...
@@ -494,7 +435,6 @@ const areaList = ref([
id
:
'其他'
}
,
])
const
handleSelectArea
=
(
value
)
=>
{
selectedArea
.
value
=
value
}
...
...
@@ -529,9 +469,8 @@ const dateList = ref([
}
,
])
const
customTime
=
ref
(
''
)
// 自定义时间
const
handleCustomDate
=
value
=>
{
console
.
log
(
'value'
,
value
);
//
console.log('value', value);
customTime
.
value
=
value
}
...
...
@@ -539,8 +478,12 @@ const handleSelectDate = (value) => {
selectedDate
.
value
=
value
}
//
党派列表
//
所属党派
const
partyList
=
ref
([
{
name
:
'全部党派'
,
id
:
'全部党派'
}
,
{
name
:
'共和党'
,
id
:
'共和党'
...
...
@@ -554,8 +497,7 @@ const partyList = ref([
id
:
'其他'
}
,
])
const
selectedParty
=
ref
(
''
)
const
selectedParty
=
ref
(
'全部党派'
)
const
partyPlaceHolder
=
ref
(
'请选择党派'
)
const
handleSelectParty
=
value
=>
{
...
...
@@ -564,6 +506,10 @@ const handleSelectParty = value => {
// 议院列表
const
congressList
=
ref
([
{
name
:
'全部议院'
,
id
:
'全部议院'
}
,
{
name
:
'众议院'
,
id
:
'众议院'
...
...
@@ -573,45 +519,15 @@ const congressList = ref([
id
:
'参议院'
}
])
const
selectedCongress
=
ref
(
''
)
const
selectedCongress
=
ref
(
'全部议院'
)
const
congressPlaceHolder
=
ref
(
'请选择议院'
)
const
handleSelectCongress
=
value
=>
{
selectedCongress
.
value
=
value
}
// 议院列表
const
statusList
=
ref
([
{
name
:
'提出'
,
id
:
'0'
}
,
{
name
:
'通过'
,
id
:
'1'
}
])
const
selectedStauts
=
ref
(
''
)
const
statusPlaceHolder
=
ref
(
'请选择立法阶段'
)
const
handleSelectStauts
=
value
=>
{
selectedStauts
.
value
=
value
}
// 是否涉华
const
isInvolveCn
=
ref
(
true
)
const
handleInvolveCnChange
=
()
=>
{
}
// 委员会
const
orgList
=
ref
([
])
const
selectedOrg
=
ref
(
''
)
const
orgList
=
ref
([])
const
selectedOrg
=
ref
(
'全部委员会'
)
const
orgPlaceHolder
=
ref
(
'请选择委员会'
)
const
handleSelectOrg
=
value
=>
{
...
...
@@ -630,6 +546,7 @@ const handleGetOrgList = async () => {
id
:
item
.
departmentName
}
}
)
orgList
.
value
=
[{
name
:
'全部委员会'
,
id
:
'全部委员会'
}
,
...
orgList
.
value
]
}
}
catch
(
error
)
{
...
...
@@ -639,12 +556,9 @@ const handleGetOrgList = async () => {
}
// 提出议员
const
memberList
=
ref
([
])
const
selectedmember
=
ref
(
''
)
const
memberList
=
ref
([])
const
selectedmember
=
ref
(
'全部议员'
)
const
memberPlaceHolder
=
ref
(
'请选择议员'
)
const
handleSelectMember
=
value
=>
{
selectedmember
.
value
=
value
}
...
...
@@ -661,6 +575,7 @@ const handleGetMemberList = async () => {
id
:
item
.
memberName
}
}
)
memberList
.
value
=
[{
name
:
'全部议员'
,
id
:
'全部议员'
}
,
...
memberList
.
value
]
}
}
catch
(
error
)
{
...
...
@@ -669,6 +584,34 @@ const handleGetMemberList = async () => {
}
}
// 阶段列表
const
statusList
=
ref
([
{
name
:
'全部阶段'
,
id
:
'全部阶段'
}
,
{
name
:
'提出'
,
id
:
'0'
}
,
{
name
:
'通过'
,
id
:
'1'
}
])
const
selectedStauts
=
ref
(
'全部阶段'
)
const
statusPlaceHolder
=
ref
(
'请选择立法阶段'
)
const
handleSelectStauts
=
value
=>
{
selectedStauts
.
value
=
value
}
// 是否涉华
const
isInvolveCn
=
ref
(
true
)
const
handleInvolveCnChange
=
()
=>
{
}
// 展开全部 / 收起
const
isFolderAll
=
ref
(
false
)
const
handleSwitchFolderAll
=
()
=>
{
...
...
@@ -683,8 +626,6 @@ const tableRef = ref(null)
const
tableData
=
ref
([
])
const
releaseTimeList
=
ref
([
{
label
:
"按发布时间倒序"
,
...
...
@@ -721,15 +662,16 @@ const fetchTableData = async () => {
size
:
pageSize
.
value
,
keyword
:
''
,
type
:
1
,
// type 1= 法案 2= 政令 3 =智库 4=智库报告 5=实体清单【制裁记录】 6= 人物 7= 机构 8=新闻 9= 社媒
domains
:
selectedArea
.
value
?
[
selectedArea
.
value
]
:
null
,
domains
:
selectedArea
.
value
===
'全部领域'
?
null
:
[
selectedArea
.
value
]
,
proposedDateStart
:
selectedDate
.
value
?
selectedDate
.
value
:
null
,
proposedDateEnd
:
null
,
affiliation
:
selectedParty
.
value
?
selectedParty
.
value
:
null
,
originChamber
:
selectedCongress
.
value
?
selectedCongress
.
value
:
null
,
originDepart
:
selectedOrg
.
value
?
selectedOrg
.
value
:
null
,
sponsorPersonName
:
selectedmember
.
value
?
selectedmember
.
value
:
null
,
affiliation
:
selectedParty
.
value
===
'全部党派'
?
null
:
selectedParty
.
value
,
originChamber
:
selectedCongress
.
value
===
'全部议院'
?
null
:
selectedCongress
.
value
,
originDepart
:
selectedOrg
.
value
===
'全部委员会'
?
null
:
selectedOrg
.
value
,
sponsorPersonName
:
selectedmember
.
value
===
'全部议员'
?
null
:
selectedmember
.
value
,
status
:
selectedStauts
.
value
===
'通过'
?
1
:
0
,
sleStatus
:
isInvolveCn
?
1
:
0
sleStatus
:
isInvolveCn
?
1
:
0
,
description
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
const
res
=
await
search
(
params
)
...
...
@@ -892,13 +834,22 @@ watch(tableData, () => {
// 当前图表数据
const
curChartData
=
ref
(
null
)
// 跳转到当前页 初始化筛选条件
const
initParam
=
()
=>
{
selectedArea
.
value
=
route
.
query
.
domains
?
JSON
.
parse
(
route
.
query
.
domains
)[
0
]
:
'全部领域'
selectedDate
.
value
=
route
.
query
.
selectedDate
,
isInvolveCn
.
value
=
route
.
query
.
isInvolveCn
?
true
:
false
selectedStauts
.
value
=
route
.
query
.
status
===
'1'
?
'通过'
:
'提出'
selectedCongress
.
value
=
route
.
query
.
selectedCongress
?
route
.
query
.
selectedCongress
:
'全部议院'
selectedOrg
.
value
=
route
.
query
.
selectedOrg
?
route
.
query
.
selectedOrg
:
'全部委员会'
}
onMounted
(
async
()
=>
{
handleGetOrgList
()
handleGetMemberList
()
selectedArea
.
value
=
route
.
query
.
domains
?
JSON
.
parse
(
route
.
query
.
domains
)[
0
]
:
''
selectedDate
.
value
=
route
.
query
.
proposedDateStart
,
isInvolveCn
.
value
=
route
.
query
.
isInvolveCn
?
true
:
false
selectedStauts
.
value
=
route
.
query
.
status
===
'1'
?
'通过'
:
'提出'
initParam
()
// 初始化
await
fetchTableData
()
...
...
src/views/dataLibrary/components/ChartHeader/index.vue
浏览文件 @
661f902c
...
...
@@ -39,7 +39,7 @@ const handleClickItem = (item) => {
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.left
{
display
:
flex
;
gap
:
8px
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论