提交 c2783949 authored 作者: 付康's avatar 付康

合并分支 'fk-dev' 到 'pre'

Fk dev 查看合并请求 !321
流水线 #380 已通过 于阶段
in 2 分 22 秒
...@@ -12,6 +12,7 @@ export function search(data) { ...@@ -12,6 +12,7 @@ export function search(data) {
}) })
} }
// 智库列表
export function getThinkTankList() { export function getThinkTankList() {
return request({ return request({
method: 'GET', method: 'GET',
...@@ -19,9 +20,50 @@ export function getThinkTankList() { ...@@ -19,9 +20,50 @@ export function getThinkTankList() {
}) })
} }
// 立法阶段
export function getStatusList() { export function getStatusList() {
return request({ return request({
method: 'GET', method: 'GET',
url: `/temporarySearch/search-info/dBillStage`, url: `/temporarySearch/search-info/dBillStage`,
}) })
} }
// 省名字列表
export function getProvinceList() {
return request({
method: 'GET',
url: `/temporarySearch/search-info/all-provinceName`,
})
}
// 国家列表
export function getCountryList() {
return request({
method: 'GET',
url: `/temporarySearch/search-info/all-countryName`,
})
}
// 实体类型
export function getEntityTypes() {
return request({
method: 'GET',
url: `/temporarySearch/search-info/entityTypes`,
})
}
// 物项类别
export function getMaterialCategory() {
return request({
method: 'GET',
url: `/temporarySearch/search-info/all-materialCategory`,
})
}
// 商业管制清单-管控原因
export function getControlReason() {
return request({
method: 'GET',
url: `/temporarySearch/search-info/all-controlReason`,
})
}
\ No newline at end of file
...@@ -12,6 +12,7 @@ const useTagsViewStore = defineStore('tags-view', { ...@@ -12,6 +12,7 @@ const useTagsViewStore = defineStore('tags-view', {
this.addCachedView(view) this.addCachedView(view)
}, },
addVisitedView(view) { addVisitedView(view) {
this.visitedViews = localStorage.getItem('visitedViews') && JSON.parse(localStorage.getItem('visitedViews')) || []
this.visitedViews.forEach(item => { this.visitedViews.forEach(item => {
item.active = false item.active = false
}) })
...@@ -23,8 +24,8 @@ const useTagsViewStore = defineStore('tags-view', { ...@@ -23,8 +24,8 @@ const useTagsViewStore = defineStore('tags-view', {
...view, ...view,
title: view.meta?.title || '未命名' title: view.meta?.title || '未命名'
}) })
localStorage.setItem('visitedViews', JSON.stringify(this.visitedViews))
} else { } else {
this.visitedViews.forEach(v => { this.visitedViews.forEach(v => {
if (v.path === view.path) { if (v.path === view.path) {
v.active = true v.active = true
...@@ -49,7 +50,7 @@ const useTagsViewStore = defineStore('tags-view', { ...@@ -49,7 +50,7 @@ const useTagsViewStore = defineStore('tags-view', {
if (index !== -1) { if (index !== -1) {
this.visitedViews.splice(index, 1) this.visitedViews.splice(index, 1)
} }
localStorage.setItem('visitedViews', JSON.stringify(this.visitedViews))
resolve([...this.visitedViews]) resolve([...this.visitedViews])
}) })
}, },
...@@ -64,6 +65,13 @@ const useTagsViewStore = defineStore('tags-view', { ...@@ -64,6 +65,13 @@ const useTagsViewStore = defineStore('tags-view', {
} }
}, },
loadVisitedViewFromLocalStorage() {
const saved = localStorage.getItem('visitedViews')
if (saved) {
this.items = JSON.parse(saved)
}
},
// 关闭其他/右侧/全部 // 关闭其他/右侧/全部
delOthersViews(view) { delOthersViews(view) {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<div class="header-top"> <div class="header-top">
<SelectBox :placeholder-name="areaPlaceHolder" select-title="科技领域" :select-list="areaList" <SelectBox :placeholder-name="areaPlaceHolder" select-title="科技领域" :select-list="areaList"
:select-name="selectedArea" @update:select-text="handleSelectArea" /> :select-name="selectedArea" @update:select-text="handleSelectArea" />
<SelectBox :placeholder-name="DatePlaceHolder" select-title="提时间" :select-list="dateList" <SelectBox :placeholder-name="DatePlaceHolder" select-title="提时间" :select-list="dateList"
:select-name="selectedDate" :custom-time="customTime" @update:select-text="handleSelectDate" :select-name="selectedDate" :custom-time="customTime" @update:select-text="handleSelectDate"
@update:custom-time="handleCustomDate" /> @update:custom-time="handleCustomDate" />
<SelectBox v-if="isFolderAll" :placeholder-name="partyPlaceHolder" select-title="所属党派" :select-list="partyList" <SelectBox v-if="isFolderAll" :placeholder-name="partyPlaceHolder" select-title="所属党派" :select-list="partyList"
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<ChartHeader :list="staticsDemensionList" @clickItem="handleClickDemensionItem"> <ChartHeader :list="staticsDemensionList" @clickItem="handleClickDemensionItem">
<template #chart-header-right> <template #chart-header-right>
<el-select v-model="selectedTime" placeholder="选择时间" style="width: 150px" <el-select v-model="selectedTime" placeholder="选择时间" style="width: 150px"
v-show="curDemension === '提案时间'"> v-show="curDemension === '提案时间'" @change="handleChangeTime">
<el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
...@@ -123,7 +123,8 @@ ...@@ -123,7 +123,8 @@
<el-table-column type="selection" width="40" /> <el-table-column type="selection" width="40" />
<el-table-column label="法案名称" width="455"> <el-table-column label="法案名称" width="455">
<template #default="scope"> <template #default="scope">
<span class="title-item text-compact-bold" @click="handleClickToDetail(scope.row)">{{ scope.row.originalTitle <span class="title-item text-compact-bold" @click="handleClickToDetail(scope.row)">{{
scope.row.originalTitle
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
...@@ -184,10 +185,20 @@ const handleSwitchChartData = () => { ...@@ -184,10 +185,20 @@ const handleSwitchChartData = () => {
const curDemensionItem = staticsDemensionList.value.filter(item => { const curDemensionItem = staticsDemensionList.value.filter(item => {
return item.name === curDemension.value return item.name === curDemension.value
})[0] })[0]
timer1.value = setTimeout(() => { // timer1.value = setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '提案时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}) } else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data
}
// })
} }
} }
...@@ -206,10 +217,12 @@ const staticsDemensionList = ref([ ...@@ -206,10 +217,12 @@ const staticsDemensionList = ref([
dataY: [] dataY: []
}, },
quatarData: { quatarData: {
dataX: [],
dataY: []
}, },
yearData: { yearData: {
dataX: [],
dataY: []
} }
}, },
{ {
...@@ -273,11 +286,17 @@ const handleClickDemensionItem = (val) => { ...@@ -273,11 +286,17 @@ const handleClickDemensionItem = (val) => {
curDemension.value = val.name curDemension.value = val.name
timer2.value = setTimeout(() => { timer2.value = setTimeout(() => {
activeChart.value = val.chartTypeList[0] activeChart.value = val.chartTypeList[0]
if (curDemension.value === '发布时间' && selectedTime.value === '按年度统计') {
curChartData.value = val.yearData
} else if (curDemension.value === '发布时间' && selectedTime.value === '按季度统计') {
curChartData.value = val.quatarData
} else {
curChartData.value = val.data curChartData.value = val.data
}
}) })
} }
const selectedTime = ref('按统计') const selectedTime = ref('按年度统计')
const timeList = ref([ const timeList = ref([
{ {
label: '按年度统计', label: '按年度统计',
...@@ -293,6 +312,27 @@ const timeList = ref([ ...@@ -293,6 +312,27 @@ const timeList = ref([
}, },
]) ])
const handleChangeTime = value => {
let curChart = activeChart.value
activeChart.value = ''
if (value === '按月度统计') {
setTimeout(() => {
activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].data
})
} else if (value === '按季度统计') {
setTimeout(() => {
activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].quatarData
})
} else {
setTimeout(() => {
activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].yearData
})
}
}
// 激活的标签列表 // 激活的标签列表
const activeTagList = computed(() => { const activeTagList = computed(() => {
const arr = [] const arr = []
...@@ -307,7 +347,7 @@ const activeTagList = computed(() => { ...@@ -307,7 +347,7 @@ const activeTagList = computed(() => {
if (selectedDate.value === '自定义') { if (selectedDate.value === '自定义') {
arr.push( arr.push(
{ {
tag: '提时间', tag: '提时间',
name: customTime.value.join('至') name: customTime.value.join('至')
} }
) )
...@@ -372,7 +412,7 @@ const handleCloseCurTag = (tag, index) => { ...@@ -372,7 +412,7 @@ const handleCloseCurTag = (tag, index) => {
case '科技领域': case '科技领域':
selectedArea.value = '全部领域' selectedArea.value = '全部领域'
break break
case '提时间': case '提时间':
selectedDate.value = '' selectedDate.value = ''
break break
case '所属党派': case '所属党派':
...@@ -541,7 +581,7 @@ const handleSelectArea = (value) => { ...@@ -541,7 +581,7 @@ const handleSelectArea = (value) => {
selectedArea.value = value selectedArea.value = value
} }
// 提时间 // 提时间
const DatePlaceHolder = ref('请选择时间') const DatePlaceHolder = ref('请选择时间')
const selectedDate = ref('') const selectedDate = ref('')
const dateList = ref([ const dateList = ref([
...@@ -843,6 +883,14 @@ const fetchTableData = async () => { ...@@ -843,6 +883,14 @@ const fetchTableData = async () => {
dataX: Object.keys(res.data.aggregationsDate), dataX: Object.keys(res.data.aggregationsDate),
dataY: Object.values(res.data.aggregationsDate).map(value => Number(value)) dataY: Object.values(res.data.aggregationsDate).map(value => Number(value))
} }
staticsDemensionList.value[0].quatarData = {
dataX: Object.keys(res.data.aggregationsQuarter),
dataY: Object.values(res.data.aggregationsQuarter).map(value => Number(value))
}
staticsDemensionList.value[0].yearData = {
dataX: Object.keys(res.data.aggregationsYear),
dataY: Object.values(res.data.aggregationsYear).map(value => Number(value))
}
staticsDemensionList.value[1].data = Object.entries(res.data.aggregationsDomain).map(([key, value]) => ({ staticsDemensionList.value[1].data = Object.entries(res.data.aggregationsDomain).map(([key, value]) => ({
name: key, name: key,
value: Number(value) value: Number(value)
...@@ -860,7 +908,7 @@ const fetchTableData = async () => { ...@@ -860,7 +908,7 @@ const fetchTableData = async () => {
value: Number(value) value: Number(value)
})) }))
staticsDemensionList.value[5].data = Object.entries(res.data.aggregationsStatus).map(([key, value]) => ({ staticsDemensionList.value[5].data = Object.entries(res.data.aggregationsStatus).map(([key, value]) => ({
name: key === '1' ? '通过' : '提出', name: key,
value: Number(value) value: Number(value)
})) }))
} }
......
...@@ -62,7 +62,9 @@ const getBarChart = (data) => { ...@@ -62,7 +62,9 @@ const getBarChart = (data) => {
type: 'bar', type: 'bar',
data: data.dataY, data: data.dataY,
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
color: 'rgb(59, 65, 75)', color: 'rgb(59, 65, 75)',
fontWeight: 'regular', // 文字加粗 fontWeight: 'regular', // 文字加粗
...@@ -72,7 +74,7 @@ const getBarChart = (data) => { ...@@ -72,7 +74,7 @@ const getBarChart = (data) => {
return params.value return params.value
}, },
}, },
barWidth: 20, barWidth: data.dataX.length < 60 ? 20 : 3,
itemStyle: { itemStyle: {
color: function (params) { color: function (params) {
return new echarts.graphic.LinearGradient(0, 1, 0, 0, return new echarts.graphic.LinearGradient(0, 1, 0, 0,
......
<template> <template>
<div class="wrapper"> <div class="wrapper">
<div class="show" @click="handleSwitchShowAll"> <div v-if="isShowAllBtn" class="show" @click="handleSwitchShowAll">
<div class="text text-compact">{{ isShowAll ? '收起' : '展开全部' }}</div> <div class="text text-compact">{{ isShowAll ? '收起' : '展开全部' }}</div>
<div class="icon"> <div class="icon">
<img v-if="isShowAll" src="./arrow-up.svg" alt=""> <img v-if="isShowAll" src="./arrow-up.svg" alt="">
...@@ -23,6 +23,10 @@ const props = defineProps({ ...@@ -23,6 +23,10 @@ const props = defineProps({
isShowAll: { isShowAll: {
type: Boolean, type: Boolean,
default: false default: false
},
isShowAllBtn: {
type: Boolean,
default: true
} }
}) })
......
...@@ -53,6 +53,9 @@ const getLineChart = (dataX, dataY) => { ...@@ -53,6 +53,9 @@ const getLineChart = (dataX, dataY) => {
lineStyle: { lineStyle: {
color: 'rgba(5, 95, 194, 1)' color: 'rgba(5, 95, 194, 1)'
}, },
label: {
show: true
},
areaStyle: { areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0, offset: 0,
......
import { MUTICHARTCOLORS } from "@/common/constant"; import { MUTICHARTCOLORS } from "@/common/constant";
const getPieChart = (data) => { const getPieChart = (data) => {
const colorList = MUTICHARTCOLORS const colorList = MUTICHARTCOLORS
let showData = data
if(data.length > 14) {
showData = data.slice(0,13)
let num = 0
data.slice(13,).forEach(item => {
num = num + item.value
})
showData = [...showData, {name: '其他', value: num}]
}
let option = { let option = {
color: colorList, color: colorList,
legend: {
show: false
},
series: [ series: [
{ {
type: 'pie', type: 'pie',
...@@ -50,7 +62,7 @@ const getPieChart = (data) => { ...@@ -50,7 +62,7 @@ const getPieChart = (data) => {
labelLinePoints: points labelLinePoints: points
}; };
}, },
data: data data: showData
}] }]
} }
return option return option
......
...@@ -89,4 +89,5 @@ const customTimeValue = computed({ ...@@ -89,4 +89,5 @@ const customTimeValue = computed({
.select-wrapper-custom { .select-wrapper-custom {
width: 738px; width: 738px;
} }
</style> </style>
\ No newline at end of file
...@@ -197,7 +197,7 @@ const handleSwitchChartData = () => { ...@@ -197,7 +197,7 @@ const handleSwitchChartData = () => {
const curDemensionItem = staticsDemensionList.value.filter(item => { const curDemensionItem = staticsDemensionList.value.filter(item => {
return item.name === curDemension.value return item.name === curDemension.value
})[0] })[0]
setTimeout(() => { // setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '发布时间') { if (curDemension.value === '发布时间') {
if (selectedTime.value === '按月度统计') { if (selectedTime.value === '按月度统计') {
...@@ -210,7 +210,7 @@ const handleSwitchChartData = () => { ...@@ -210,7 +210,7 @@ const handleSwitchChartData = () => {
} else { } else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
} }
}) // })
} }
} }
...@@ -289,7 +289,7 @@ const handleClickDemensionItem = (val) => { ...@@ -289,7 +289,7 @@ const handleClickDemensionItem = (val) => {
} }
// 时间图表 当前选择时间 // 时间图表 当前选择时间
const selectedTime = ref('按统计') const selectedTime = ref('按年度统计')
// 时间图表-时间列表 // 时间图表-时间列表
const timeList = ref([ const timeList = ref([
{ {
......
...@@ -92,6 +92,7 @@ import { ElMessage } from "element-plus"; ...@@ -92,6 +92,7 @@ import { ElMessage } from "element-plus";
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const tagsViewStore = useTagsViewStore(); const tagsViewStore = useTagsViewStore();
tagsViewStore.loadVisitedViewFromLocalStorage()
// 在路由全局守卫中处理 // 在路由全局守卫中处理
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
...@@ -348,8 +349,7 @@ const handleSiderSecondItem = item => { ...@@ -348,8 +349,7 @@ const handleSiderSecondItem = item => {
}; };
const openedTabList = computed(() => { const openedTabList = computed(() => {
const arr = tagsViewStore.visitedViews; return tagsViewStore.visitedViews;
return arr;
}); });
const handleClickTab = tab => { const handleClickTab = tab => {
...@@ -586,6 +586,7 @@ onBeforeUnmount(() => { ...@@ -586,6 +586,7 @@ onBeforeUnmount(() => {
if (timer.value) { if (timer.value) {
clearTimeout(timer.value); clearTimeout(timer.value);
} }
localStorage.setItem('visitedViews', [])
}); });
</script> </script>
......
...@@ -189,7 +189,7 @@ const handleSwitchChartData = () => { ...@@ -189,7 +189,7 @@ const handleSwitchChartData = () => {
const curDemensionItem = staticsDemensionList.value.filter(item => { const curDemensionItem = staticsDemensionList.value.filter(item => {
return item.name === curDemension.value; return item.name === curDemension.value;
})[0]; })[0];
setTimeout(() => { // setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0]; activeChart.value = curDemensionItem.chartTypeList[0];
if (curDemension.value === "发布时间") { if (curDemension.value === "发布时间") {
if (selectedTime.value === "按月度统计") { if (selectedTime.value === "按月度统计") {
...@@ -202,7 +202,7 @@ const handleSwitchChartData = () => { ...@@ -202,7 +202,7 @@ const handleSwitchChartData = () => {
} else { } else {
curChartData.value = curDemensionItem.data; curChartData.value = curDemensionItem.data;
} }
}); // });
} }
}; };
...@@ -281,7 +281,7 @@ const handleClickDemensionItem = val => { ...@@ -281,7 +281,7 @@ const handleClickDemensionItem = val => {
}; };
// 时间图表 当前选择时间 // 时间图表 当前选择时间
const selectedTime = ref("按统计"); const selectedTime = ref("按年度统计");
// 时间图表-时间列表 // 时间图表-时间列表
const timeList = ref([ const timeList = ref([
{ {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论