提交 661f902c authored 作者: coderBryanFu's avatar coderBryanFu

法案概览页新增图表跳转资源库

上级 80947d07
......@@ -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
......
......@@ -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);
}
}
};
......
......@@ -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()
......
......@@ -39,7 +39,7 @@ const handleClickItem = (item) => {
display: flex;
justify-content: space-between;
align-items: center;
.left {
display: flex;
gap: 8px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论