Browse Source

需求优化

master
xuhuajiao 9 months ago
parent
commit
676c8050ee
  1. 10
      src/views/archiveUtilize/archiveSearch/index.vue
  2. 183
      src/views/home.vue

10
src/views/archiveUtilize/archiveSearch/index.vue

@ -34,7 +34,7 @@
<div class="history-keyword">
<h4>历史检索</h4>
<div class="history-tag">
<span v-for="(item,index) in historyKeyword" :key="index">{{ item }}</span>
<span v-for="(item,index) in historyKeyword" :key="index" style="cursor: pointer;" @click="historySearch(item)">{{ item }}</span>
</div>
</div>
</div>
@ -377,6 +377,10 @@ export default {
},
dimSearch() {
},
historySearch(item) {
this.keywords = item
this.handleSearch()
},
handleSearch() {
if (this.keywords) {
this.isResult = true
@ -566,6 +570,10 @@ export default {
background: #E6E8ED;
border-radius: 3px;
cursor:default;
&:hover{
background: #0348F3;
color: #fff;
}
}
}
}

183
src/views/home.vue

@ -309,64 +309,171 @@ export default {
]
// 档案类别
// let maxCount = 0
// data.statisNumJSON.archives.forEach(archive => {
// if (archive.count > maxCount) {
// maxCount = archive.count
// }
// })
// data.statisNumJSON.singles.forEach(single => {
// if (single.count > maxCount) {
// maxCount = single.count
// }
// })
// this.addArcivesData.addArcivesMaxCount = maxCount
// const currentDate = new Date() // 获取当前日期
// const currentYear = currentDate.getFullYear() // 获取当前年份
// const currentMonth = currentDate.getMonth() // 获取当前月份(从 0 到 11,所以要加 1)
// let startYear = currentYear - 1 // 去年的年份
// let startMonth = currentMonth + 1 // 当前月份加上 1
// const result = [] // 存储每个年份和月份的组合
// const xResult = []
// while (startYear < currentYear || startMonth <= currentMonth) {
// xResult.push(startYear + '/' + startMonth)
// result.push({ year: startYear, month: startMonth, archivesCount: 0, singlesCount: 0 })
// // 计算下一个月份
// startMonth += 1
// if (startMonth > 12) {
// startYear += 1
// startMonth = 1
// }
// }
// result.forEach(yearMonthObj => {
// data.statisNumJSON.archives.forEach(archive => {
// if (parseInt(archive.month) === yearMonthObj.month) {
// yearMonthObj.archivesCount = archive.count
// return
// }
// })
// data.statisNumJSON.singles.forEach(single => {
// if (parseInt(single.month) === yearMonthObj.month) {
// yearMonthObj.singlesCount = single.count
// return
// }
// })
// })
// this.addArcivesData.addArcivesMonth = xResult
// this.addArcivesData.addArcivesNum = result.map(function(obj) {
// return obj.archivesCount
// })
// this.addArcivesData.addArcivesNumFile = result.map(function(obj) {
// return obj.singlesCount
// })
// console.log(result)
// console.log(' this.addArcivesData', this.addArcivesData)
const { statisNumJSON = { archives: [], singles: [] }} = data || {}
const { archives = [], singles = [] } = statisNumJSON
// 1. 计算所有count中的最大值(处理空数组情况)
let maxCount = 0
data.statisNumJSON.archives.forEach(archive => {
if (archive.count > maxCount) {
maxCount = archive.count
// 处理archives的count
archives.forEach(archive => {
const count = Number(archive.count)
if (!isNaN(count) && count > maxCount) {
maxCount = count
}
})
data.statisNumJSON.singles.forEach(single => {
if (single.count > maxCount) {
maxCount = single.count
// 处理singles的count
singles.forEach(single => {
const count = Number(single.count)
if (!isNaN(count) && count > maxCount) {
maxCount = count
}
})
this.addArcivesData.addArcivesMaxCount = maxCount
const currentDate = new Date() // 获取当前日期
const currentYear = currentDate.getFullYear() // 获取当前年份
const currentMonth = currentDate.getMonth() // 获取当前月份(从 0 到 11,所以要加 1)
// 2. 生成近12个月的时间维度(包含当月,共12个月)
const currentDate = new Date()
const currentYear = currentDate.getFullYear() // 当前年(如2026)
const currentMonth = currentDate.getMonth() + 1 // 当前月(1-12,如2)
const result = [] // 存储{year, month, archivesCount, singlesCount}
const xResult = [] // 存储"年/月"格式的时间轴(如"2026/2")
let startYear = currentYear - 1 // 去年的年份
let startMonth = currentMonth + 1 // 当前月份加上 1
// 从当前月往前推11个月,加上当前月,共12个月
let tempYear = currentYear
let tempMonth = currentMonth
const result = [] // 存储每个年份和月份的组合
const xResult = []
while (startYear < currentYear || startMonth <= currentMonth) {
xResult.push(startYear + '/' + startMonth)
result.push({ year: startYear, month: startMonth, archivesCount: 0, singlesCount: 0 })
// 计算下一个月份
startMonth += 1
if (startMonth > 12) {
startYear += 1
startMonth = 1
for (let i = 0; i < 12; i++) {
// 拼接时间轴文本(统一格式,比如02月显示为2,避免"2026/02"和"2026/2"不匹配)
const monthStr = tempMonth // 去掉前置0,统一为数字格式
const timeText = `${tempYear}/${monthStr}`
xResult.push(timeText)
// 初始化当月数据,计数默认0
result.push({
year: tempYear,
month: tempMonth,
archivesCount: 0,
singlesCount: 0
})
// 计算上一个月(处理跨年,比如1月的上一个月是去年12月)
tempMonth -= 1
if (tempMonth < 1) {
tempMonth = 12
tempYear -= 1
}
}
result.forEach(yearMonthObj => {
data.statisNumJSON.archives.forEach(archive => {
if (parseInt(archive.month) === yearMonthObj.month) {
yearMonthObj.archivesCount = archive.count
return
// 反转数组,让时间轴从"最早的月"到"当前月"排列(比如2025/3 → 2026/2)
result.reverse()
xResult.reverse()
// 3. 构建映射表,快速匹配年月对应的count(处理后台返回的month带前置0的情况,如"02")
// archives映射表:key为"年-月",value为count
const archivesMap = {}
archives.forEach(item => {
const year = Number(item.year)
const month = Number(item.month) // 把"02"转为2,统一格式
const count = Number(item.count) || 0
if (!isNaN(year) && !isNaN(month)) {
archivesMap[`${year}-${month}`] = count
}
})
data.statisNumJSON.singles.forEach(single => {
if (parseInt(single.month) === yearMonthObj.month) {
yearMonthObj.singlesCount = single.count
return
// singles映射表
const singlesMap = {}
singles.forEach(item => {
const year = Number(item.year)
const month = Number(item.month)
const count = Number(item.count) || 0
if (!isNaN(year) && !isNaN(month)) {
singlesMap[`${year}-${month}`] = count
}
})
})
this.addArcivesData.addArcivesMonth = xResult
this.addArcivesData.addArcivesNum = result.map(function(obj) {
return obj.archivesCount
})
this.addArcivesData.addArcivesNumFile = result.map(function(obj) {
return obj.singlesCount
// 4. 填充对应月份的count(无数据则保持0)
result.forEach(item => {
const key = `${item.year}-${item.month}`
// 填充archivesCount
if (archivesMap[key] !== undefined) {
item.archivesCount = archivesMap[key]
}
// 填充singlesCount
if (singlesMap[key] !== undefined) {
item.singlesCount = singlesMap[key]
}
})
// 5. 赋值最终数据到页面变量
this.addArcivesData.addArcivesMonth = xResult // 12个月的时间轴数组
this.addArcivesData.addArcivesNum = result.map(obj => obj.archivesCount) // archives的12个月计数
this.addArcivesData.addArcivesNumFile = result.map(obj => obj.singlesCount) // singles的12个月计数
console.log('生成的12个月数据:', result)
console.log('时间轴:', xResult)
console.log('最终赋值数据:', this.addArcivesData)
// 档案类型
for (const type in data.typeGroupBy) {
if (data.typeGroupBy.hasOwnProperty(type)) {

Loading…
Cancel
Save