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'
}).sort((a, b) => {
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) {
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}) => {
return {
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, window.$ = window.jQuery = require('jquery'));

View File

@ -667,7 +667,7 @@ export default {
const {projectKeyValue, cacheProjects} = this;
const data = $A.cloneJSON(cacheProjects).sort((a, b) => {
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;
});

View File

@ -138,7 +138,7 @@ export default {
const baseUrl = $A.mainUrl("images/emoticon")
if ($A.isArray(window.emojiData)) {
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 => {
return {
type: 'emoji',

View File

@ -1722,7 +1722,7 @@ export default {
let allTask = this.$store.getters.transforTasks(combinedTasks);
if (allTask.length > 0) {
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)
this.taskList.push({
label: [{id: 0, value: this.$L('我的待完成任务'), disabled: true}],
@ -1738,7 +1738,7 @@ export default {
let assistTask = this.$store.getters.assistTask;
if (assistTask.length > 0) {
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)
this.taskList.push({
label: [{id: 0, value: this.$L('我协助的任务'), disabled: true}],
@ -1764,7 +1764,7 @@ export default {
&& task.parent_id === 0
&& !task.archived_at
}).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) {
taskCallback(tasks)

View File

@ -147,7 +147,7 @@ export default {
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.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);
}).sort((a, b) => {
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) {
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 data = $A.cloneJSON(cacheProjects).sort((a, b) => {
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;
});

View File

@ -785,7 +785,7 @@ export default {
return project_id == projectId
}).sort((a, b) => {
if (a.sort != b.sort) {
return a.sort - b.sort;
return $A.sortFloat(a.sort, b.sort);
}
return a.id - b.id;
});
@ -794,10 +794,10 @@ export default {
return task.column_id == column.id;
})).sort((a, b) => {
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) {
return a.sort - b.sort;
return $A.sortFloat(a.sort, b.sort);
}
return a.id - b.id;
});
@ -820,12 +820,12 @@ export default {
[a, b] = [b, a];
}
if (sortField == 'level') {
return a.p_level - b.p_level;
return $A.sortFloat(a.p_level, b.p_level)
} else if (sortField == '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];
}
if (sortField == 'level') {
return a.p_level - b.p_level;
return $A.sortFloat(a.p_level, b.p_level)
} else if (sortField == '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];
}
if (sortField == 'level') {
return a.p_level - b.p_level;
return $A.sortFloat(a.p_level, b.p_level)
} else if (sortField == '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 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
}).sort((a, b) => {
if (a.sort != b.sort) {
return a.sort - b.sort;
return $A.sortFloat(a.sort, b.sort);
}
return a.id - b.id;
}).map(item => {

View File

@ -358,7 +358,7 @@ export default {
initCascaderData() {
const data = $A.cloneJSON(this.cacheProjects).sort((a, b) => {
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;
});

View File

@ -207,7 +207,7 @@ export default {
//
const data = $A.cloneJSON(this.cacheProjects).sort((a, b) => {
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;
});

View File

@ -166,7 +166,7 @@ export default {
hidden: hiddenColumns.includes(type),
count: dashboardTask[`${type}_count`],
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'),
count: assistTask.length,
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;

View File

@ -731,18 +731,18 @@ export default {
dialogSort(a, b) {
//
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) {
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) {
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) {

View File

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

View File

@ -527,7 +527,7 @@ class BaiduMapPicker {
// 按距离排序(如果有距离信息)
pois.sort((a, b) => {
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;
});