perf: 优化数据排序

This commit is contained in:
kuaifan 2025-03-04 19:24:13 +08:00
parent f2ec6ad05e
commit edd5cd1ca1
16 changed files with 67 additions and 38 deletions

View File

@ -512,12 +512,12 @@ export default {
return this.showDialog || dialog.type === 'user' return this.showDialog || dialog.type === 'user'
}).sort((a, b) => { }).sort((a, b) => {
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
if (a.todo_num > 0 || b.todo_num > 0) { if (a.todo_num > 0 || b.todo_num > 0) {
return b.todo_num - a.todo_num; return $A.sortFloat(b.todo_num, a.todo_num);
} }
return $A.dayjs(b.last_at) - $A.dayjs(a.last_at); return $A.sortDay(b.last_at, a.last_at);
}).map(({id, name, pinyin, email, type, group_type, avatar, dialog_user}) => { }).map(({id, name, pinyin, email, type, group_type, avatar, dialog_user}) => {
return { return {
name, name,

View File

@ -2178,5 +2178,34 @@ const timezone = require("dayjs/plugin/timezone");
}, },
}); });
/**
* =============================================================================
* *********************************** time ********************************
* =============================================================================
*/
$.extend({
/**
* 计算排序值 日期格式
* @param v1
* @param v2
* @returns {number}
*/
sortDay(v1, v2) {
if (v1 === v2) return 0;
return ($A.dayjs(v1).valueOf() || 0) - ($A.dayjs(v2).valueOf() || 0);
},
/**
* 计算排序值 数字格式
* @param v1
* @param v2
* @returns {number}
*/
sortFloat(v1, v2) {
if (v1 === v2) return 0;
return (parseFloat(v1) || 0) - (parseFloat(v2) || 0);
}
});
window.$A = $; window.$A = $;
})(window, window.$ = window.jQuery = require('jquery')); })(window, window.$ = window.jQuery = require('jquery'));

View File

@ -667,7 +667,7 @@ export default {
const {projectKeyValue, cacheProjects} = this; const {projectKeyValue, cacheProjects} = this;
const data = $A.cloneJSON(cacheProjects).sort((a, b) => { const data = $A.cloneJSON(cacheProjects).sort((a, b) => {
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
return b.id - a.id; return b.id - a.id;
}); });

View File

@ -138,7 +138,7 @@ export default {
const baseUrl = $A.mainUrl("images/emoticon") const baseUrl = $A.mainUrl("images/emoticon")
if ($A.isArray(window.emojiData)) { if ($A.isArray(window.emojiData)) {
this.emojiData = window.emojiData.sort(function (a, b) { this.emojiData = window.emojiData.sort(function (a, b) {
return a.emoji_order - b.emoji_order; return $A.sortFloat(a.emoji_order, b.emoji_order);
}).map(item => { }).map(item => {
return { return {
type: 'emoji', type: 'emoji',

View File

@ -1722,7 +1722,7 @@ export default {
let allTask = this.$store.getters.transforTasks(combinedTasks); let allTask = this.$store.getters.transforTasks(combinedTasks);
if (allTask.length > 0) { if (allTask.length > 0) {
allTask = allTask.sort((a, b) => { allTask = allTask.sort((a, b) => {
return $A.dayjs(a.end_at || "2099-12-31 23:59:59") - $A.dayjs(b.end_at || "2099-12-31 23:59:59"); return $A.sortDay(a.end_at || "2099-12-31 23:59:59", b.end_at || "2099-12-31 23:59:59");
}).splice(0, 100) }).splice(0, 100)
this.taskList.push({ this.taskList.push({
label: [{id: 0, value: this.$L('我的待完成任务'), disabled: true}], label: [{id: 0, value: this.$L('我的待完成任务'), disabled: true}],
@ -1738,7 +1738,7 @@ export default {
let assistTask = this.$store.getters.assistTask; let assistTask = this.$store.getters.assistTask;
if (assistTask.length > 0) { if (assistTask.length > 0) {
assistTask = assistTask.sort((a, b) => { assistTask = assistTask.sort((a, b) => {
return $A.dayjs(a.end_at || "2099-12-31 23:59:59") - $A.dayjs(b.end_at || "2099-12-31 23:59:59"); return $A.sortDay(a.end_at || "2099-12-31 23:59:59", b.end_at || "2099-12-31 23:59:59");
}).splice(0, 100) }).splice(0, 100)
this.taskList.push({ this.taskList.push({
label: [{id: 0, value: this.$L('我协助的任务'), disabled: true}], label: [{id: 0, value: this.$L('我协助的任务'), disabled: true}],
@ -1764,7 +1764,7 @@ export default {
&& task.parent_id === 0 && task.parent_id === 0
&& !task.archived_at && !task.archived_at
}).sort((a, b) => { }).sort((a, b) => {
return $A.dayjs(b.complete_at || "2099-12-31 23:59:59") - $A.dayjs(a.complete_at || "2099-12-31 23:59:59") return $A.sortDay(b.complete_at || "2099-12-31 23:59:59", a.complete_at || "2099-12-31 23:59:59")
}) })
if (tasks.length > 0) { if (tasks.length > 0) {
taskCallback(tasks) taskCallback(tasks)

View File

@ -147,7 +147,7 @@ export default {
if (a.userid === dialogData.owner_id || b.userid === dialogData.owner_id) { if (a.userid === dialogData.owner_id || b.userid === dialogData.owner_id) {
return (a.userid === dialogData.owner_id ? 0 : 1) - (b.userid === dialogData.owner_id ? 0 : 1); return (a.userid === dialogData.owner_id ? 0 : 1) - (b.userid === dialogData.owner_id ? 0 : 1);
} }
return $A.dayjs(a.created_at) - $A.dayjs(b.created_at); return $A.sortDay(a.created_at, b.created_at);
}) })
}, },

View File

@ -968,12 +968,12 @@ export default {
return !(dialog.name === undefined || dialog.dialog_delete === 1); return !(dialog.name === undefined || dialog.dialog_delete === 1);
}).sort((a, b) => { }).sort((a, b) => {
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
if (a.todo_num > 0 || b.todo_num > 0) { if (a.todo_num > 0 || b.todo_num > 0) {
return b.todo_num - a.todo_num; return $A.sortFloat(b.todo_num, a.todo_num);
} }
return $A.dayjs(b.last_at) - $A.dayjs(a.last_at); return $A.sortDay(b.last_at, a.last_at);
}); });
}, },

View File

@ -96,7 +96,7 @@ export default {
const {projectKeyValue, cacheProjects} = this; const {projectKeyValue, cacheProjects} = this;
const data = $A.cloneJSON(cacheProjects).sort((a, b) => { const data = $A.cloneJSON(cacheProjects).sort((a, b) => {
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
return b.id - a.id; return b.id - a.id;
}); });

View File

@ -785,7 +785,7 @@ export default {
return project_id == projectId return project_id == projectId
}).sort((a, b) => { }).sort((a, b) => {
if (a.sort != b.sort) { if (a.sort != b.sort) {
return a.sort - b.sort; return $A.sortFloat(a.sort, b.sort);
} }
return a.id - b.id; return a.id - b.id;
}); });
@ -794,10 +794,10 @@ export default {
return task.column_id == column.id; return task.column_id == column.id;
})).sort((a, b) => { })).sort((a, b) => {
if (a.complete_at || b.complete_at) { if (a.complete_at || b.complete_at) {
return $A.dayjs(a.complete_at) - $A.dayjs(b.complete_at); return $A.sortDay(a.complete_at, b.complete_at);
} }
if (a.sort != b.sort) { if (a.sort != b.sort) {
return a.sort - b.sort; return $A.sortFloat(a.sort, b.sort);
} }
return a.id - b.id; return a.id - b.id;
}); });
@ -820,12 +820,12 @@ export default {
[a, b] = [b, a]; [a, b] = [b, a];
} }
if (sortField == 'level') { if (sortField == 'level') {
return a.p_level - b.p_level; return $A.sortFloat(a.p_level, b.p_level)
} else if (sortField == 'end_at') { } else if (sortField == 'end_at') {
if (a.end_at == b.end_at) { if (a.end_at == b.end_at) {
return a.p_level - b.p_level; return $A.sortFloat(a.p_level, b.p_level)
} }
return $A.dayjs(a.end_at || "2099-12-31 23:59:59") - $A.dayjs(b.end_at || "2099-12-31 23:59:59"); return $A.sortDay(a.end_at || "2099-12-31 23:59:59", b.end_at || "2099-12-31 23:59:59");
} }
}); });
}, },
@ -845,12 +845,12 @@ export default {
[a, b] = [b, a]; [a, b] = [b, a];
} }
if (sortField == 'level') { if (sortField == 'level') {
return a.p_level - b.p_level; return $A.sortFloat(a.p_level, b.p_level)
} else if (sortField == 'end_at') { } else if (sortField == 'end_at') {
if (a.end_at == b.end_at) { if (a.end_at == b.end_at) {
return a.p_level - b.p_level; return $A.sortFloat(a.p_level, b.p_level)
} }
return $A.dayjs(a.end_at || "2099-12-31 23:59:59") - $A.dayjs(b.end_at || "2099-12-31 23:59:59"); return $A.sortDay(a.end_at || "2099-12-31 23:59:59", b.end_at || "2099-12-31 23:59:59");
} }
}); });
}, },
@ -876,12 +876,12 @@ export default {
[a, b] = [b, a]; [a, b] = [b, a];
} }
if (sortField == 'level') { if (sortField == 'level') {
return a.p_level - b.p_level; return $A.sortFloat(a.p_level, b.p_level)
} else if (sortField == 'end_at') { } else if (sortField == 'end_at') {
if (a.end_at == b.end_at) { if (a.end_at == b.end_at) {
return a.p_level - b.p_level; return $A.sortFloat(a.p_level, b.p_level)
} }
return $A.dayjs(a.end_at || "2099-12-31 23:59:59") - $A.dayjs(b.end_at || "2099-12-31 23:59:59"); return $A.sortDay(a.end_at || "2099-12-31 23:59:59", b.end_at || "2099-12-31 23:59:59");
} }
}); });
}, },
@ -903,7 +903,7 @@ export default {
return task.complete_at; return task.complete_at;
}); });
return array.sort((a, b) => { return array.sort((a, b) => {
return $A.dayjs(b.complete_at) - $A.dayjs(a.complete_at); return $A.sortDay(b.complete_at, a.complete_at);
}); });
}, },

View File

@ -240,7 +240,7 @@ export default {
return project_id == projectId return project_id == projectId
}).sort((a, b) => { }).sort((a, b) => {
if (a.sort != b.sort) { if (a.sort != b.sort) {
return a.sort - b.sort; return $A.sortFloat(a.sort, b.sort);
} }
return a.id - b.id; return a.id - b.id;
}).map(item => { }).map(item => {

View File

@ -358,7 +358,7 @@ export default {
initCascaderData() { initCascaderData() {
const data = $A.cloneJSON(this.cacheProjects).sort((a, b) => { const data = $A.cloneJSON(this.cacheProjects).sort((a, b) => {
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
return b.id - a.id; return b.id - a.id;
}); });

View File

@ -207,7 +207,7 @@ export default {
// //
const data = $A.cloneJSON(this.cacheProjects).sort((a, b) => { const data = $A.cloneJSON(this.cacheProjects).sort((a, b) => {
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
return b.id - a.id; return b.id - a.id;
}); });

View File

@ -166,7 +166,7 @@ export default {
hidden: hiddenColumns.includes(type), hidden: hiddenColumns.includes(type),
count: dashboardTask[`${type}_count`], count: dashboardTask[`${type}_count`],
list: data.sort((a, b) => { list: data.sort((a, b) => {
return $A.dayjs(a.end_at || "2099-12-31 23:59:59") - $A.dayjs(b.end_at || "2099-12-31 23:59:59"); return $A.sortDay(a.end_at || "2099-12-31 23:59:59", b.end_at || "2099-12-31 23:59:59");
}) })
}) })
}) })
@ -176,7 +176,7 @@ export default {
hidden: hiddenColumns.includes('assist'), hidden: hiddenColumns.includes('assist'),
count: assistTask.length, count: assistTask.length,
list: assistTask.sort((a, b) => { list: assistTask.sort((a, b) => {
return $A.dayjs(a.end_at || "2099-12-31 23:59:59") - $A.dayjs(b.end_at || "2099-12-31 23:59:59"); return $A.sortDay(a.end_at || "2099-12-31 23:59:59", b.end_at || "2099-12-31 23:59:59");
}) })
}) })
return list; return list;

View File

@ -731,18 +731,18 @@ export default {
dialogSort(a, b) { dialogSort(a, b) {
// //
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
// //
if (a.todo_num > 0 || b.todo_num > 0) { if (a.todo_num > 0 || b.todo_num > 0) {
return b.todo_num - a.todo_num; return $A.sortFloat(b.todo_num, a.todo_num);
} }
// 稿 // 稿
if (a.extra_draft_has || b.extra_draft_has) { if (a.extra_draft_has || b.extra_draft_has) {
return b.extra_draft_has - a.extra_draft_has; return $A.sortFloat(b.extra_draft_has, a.extra_draft_has);
} }
// //
return $A.dayjs(b.last_at) - $A.dayjs(a.last_at); return $A.sortDay(b.last_at, a.last_at);
}, },
userClass(user) { userClass(user) {

View File

@ -1324,7 +1324,7 @@ export default {
if (ids.includes(state.projectId)) { if (ids.includes(state.projectId)) {
const project = $A.cloneJSON(state.cacheProjects).sort((a, b) => { const project = $A.cloneJSON(state.cacheProjects).sort((a, b) => {
if (a.top_at || b.top_at) { if (a.top_at || b.top_at) {
return $A.dayjs(b.top_at) - $A.dayjs(a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
return b.id - a.id; return b.id - a.id;
}).find(({id}) => id && id != project_id); }).find(({id}) => id && id != project_id);
@ -2809,7 +2809,7 @@ export default {
return state.cacheDialogs return state.cacheDialogs
.filter(func) .filter(func)
.sort((a, b) => { .sort((a, b) => {
return $A.dayjs(a.last_at) - $A.dayjs(b.last_at); return $A.sortDay(a.last_at, b.last_at);
}) })
.find(({id}) => id > 0) .find(({id}) => id > 0)
} }

View File

@ -527,7 +527,7 @@ class BaiduMapPicker {
// 按距离排序(如果有距离信息) // 按距离排序(如果有距离信息)
pois.sort((a, b) => { pois.sort((a, b) => {
if (a.distance_current && b.distance_current) { if (a.distance_current && b.distance_current) {
return a.distance_current - b.distance_current; return $A.sortFloat(a.distance_current, b.distance_current);
} }
return 0; return 0;
}); });