Browse Source

解决历史记录卡顿问题。

dev
宋杰 9 hours ago
parent
commit
8507b1b358
  1. 98
      src/views/components/HistoryRecord.vue

98
src/views/components/HistoryRecord.vue

@ -458,10 +458,22 @@ const historyRecords = ref([]);
const categoryHistory = ref([]);
let chatFirstFlag = true;
let emotionTirstFlag = true;
//
let cachedCategoryHistory = null;
let lastDataHash = null;
const getHistoryList = async (params) => {
try {
const result = await getHistoryListAPI(params);
historyRecords.value = result.data;
// 使
const currentDataHash = JSON.stringify(result.data.map(r => ({ id: r.id, isTop: r.isTop, createdTime: r.createdTime })));
if (cachedCategoryHistory && lastDataHash === currentDataHash) {
// 使
categoryHistory.value = cachedCategoryHistory;
return;
}
let remainingRecords = result.data; //
// console.log(
// "params",
@ -505,60 +517,37 @@ const getHistoryList = async (params) => {
}
//
// 1.
let topList = remainingRecords.filter((record) => record.isTop === 1);
remainingRecords = remainingRecords.filter((record) => record.isTop !== 1);
// 2.
let todayList = remainingRecords.filter((record) => {
//
const today = moment().format("YYYY-MM-DD");
const recordDate = moment(record.createdTime).format("YYYY-MM-DD");
return recordDate === today;
});
remainingRecords = remainingRecords.filter((record) => {
const today = moment().format("YYYY-MM-DD");
const recordDate = moment(record.createdTime).format("YYYY-MM-DD");
return recordDate !== today;
});
// 3. 3
let recent3DaysList = remainingRecords.filter((record) => {
const threeDaysAgo = moment().subtract(3, "days").startOf("day");
const yesterday = moment().subtract(1, "days").endOf("day");
const recordDate = moment(record.createdTime);
return recordDate.isAfter(threeDaysAgo) && recordDate.isBefore(yesterday);
});
remainingRecords = remainingRecords.filter((record) => {
const threeDaysAgo = moment().subtract(3, "days").startOf("day");
const yesterday = moment().subtract(1, "days").endOf("day");
const recordDate = moment(record.createdTime);
return !(
recordDate.isAfter(threeDaysAgo) && recordDate.isBefore(yesterday)
);
});
// 4. 73
let recent7DaysList = remainingRecords.filter((record) => {
const sevenDaysAgo = moment().subtract(7, "days").startOf("day");
const recordDate = moment(record.createdTime);
return recordDate.isAfter(sevenDaysAgo);
});
remainingRecords = remainingRecords.filter((record) => {
const sevenDaysAgo = moment().subtract(7, "days").startOf("day");
const recordDate = moment(record.createdTime);
return !recordDate.isAfter(sevenDaysAgo);
});
// 5. 30
let recent30DaysList = remainingRecords.filter((record) => {
const thirtyDaysAgo = moment().subtract(30, "days").startOf("day");
const recordDate = moment(record.createdTime);
return recordDate.isAfter(thirtyDaysAgo);
});
remainingRecords = remainingRecords.filter((record) => {
const thirtyDaysAgo = moment().subtract(30, "days").startOf("day");
const topList = [];
const todayList = [];
const recent3DaysList = [];
const recent7DaysList = [];
const recent30DaysList = [];
remainingRecords.forEach((record) => {
if (record.isTop === 1) {
topList.push(record);
return;
}
const recordDate = moment(record.createdTime);
return !recordDate.isAfter(thirtyDaysAgo);
const recordDateStr = recordDate.format("YYYY-MM-DD");
if (recordDateStr === today) {
todayList.push(record);
} else if (recordDate.isAfter(threeDaysAgo) && recordDate.isBefore(yesterday)) {
recent3DaysList.push(record);
} else if (recordDate.isAfter(sevenDaysAgo)) {
recent7DaysList.push(record);
} else if (recordDate.isAfter(thirtyDaysAgo)) {
recent30DaysList.push(record);
}
});
historyRecords.value = result.data;
@ -585,6 +574,11 @@ const getHistoryList = async (params) => {
list: recent30DaysList,
},
];
//
cachedCategoryHistory = categoryHistory.value;
lastDataHash = currentDataHash;
// console.log("historyRecords", historyRecords.value);
// console.log("categoryHistory", categoryHistory.value);
} catch (e) {
@ -807,7 +801,7 @@ onMounted(() => {
border-right: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
z-index: 1000;
transition: width 0.3s ease;
transition: width 0.2s ease-out;
display: flex;
flex-direction: column;
align-items: center;
@ -824,7 +818,7 @@ onMounted(() => {
border-right: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
z-index: 1000;
transition: width 0.3s ease;
transition: width 0.2s ease-out;
display: flex;
flex-direction: column;
align-items: center;
@ -849,7 +843,7 @@ onMounted(() => {
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
transition: background-color 0.2s ease-out, border-color 0.2s ease-out;
z-index: 10;
}
@ -862,7 +856,7 @@ onMounted(() => {
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
transition: background-color 0.2s ease-out, border-color 0.2s ease-out;
z-index: 10;
}

Loading…
Cancel
Save