mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-13 12:02:51 +00:00
perf: 优化数据排序
This commit is contained in:
parent
f2ec6ad05e
commit
edd5cd1ca1
@ -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,
|
||||
|
||||
29
resources/assets/js/functions/common.js
vendored
29
resources/assets/js/functions/common.js
vendored
@ -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'));
|
||||
|
||||
@ -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;
|
||||
});
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
@ -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);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@ -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;
|
||||
});
|
||||
|
||||
@ -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);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@ -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 => {
|
||||
|
||||
@ -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;
|
||||
});
|
||||
|
||||
@ -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;
|
||||
});
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
4
resources/assets/js/store/actions.js
vendored
4
resources/assets/js/store/actions.js
vendored
@ -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)
|
||||
}
|
||||
|
||||
@ -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;
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user