From d1814a4e0f157f7ca8ea71f7b0253b0e47587565 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 23 Dec 2021 15:41:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A1=B9=E7=9B=AE=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BC=98=E5=85=88=E7=BA=A7=E3=80=81=E5=88=B0?= =?UTF-8?q?=E6=9C=9F=E6=97=B6=E9=97=B4=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/manage/components/ProjectList.vue | 70 +++++++++++++------ .../sass/pages/components/project-list.scss | 38 ++++++++++ 2 files changed, 88 insertions(+), 20 deletions(-) diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index 0ebfb8c0..785a1ce8 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -232,9 +232,25 @@ # {{$L('任务名称')}} {{$L('列表')}} - {{$L('优先级')}} + +
+ {{$L('优先级')}} +
+ + +
+
+ {{$L('负责人')}} - {{$L('到期时间')}} + +
+ {{$L('到期时间')}} +
+ + +
+
+
@@ -425,6 +441,9 @@ export default { completeJust: [], + sortField: 'end_at', + sortType: 'desc', + searchText: '', addShow: false, @@ -513,7 +532,7 @@ export default { }, myList() { - const {projectId, tasks, searchText, userId, completeJust} = this; + const {projectId, tasks, searchText, userId, completeJust, sortField, sortType} = this; const array = tasks.filter((task) => { if (task.project_id != projectId) { return false; @@ -531,17 +550,19 @@ export default { return task.task_user && task.task_user.find(({userid, owner}) => userid == userId && owner == 1); }); return array.sort((a, b) => { - if (a.p_level != b.p_level) { - return a.p_level - b.p_level; + if (sortType == 'asc') { + [a, b] = [b, a]; + } + if (sortField == 'level') { + return a.p_level - b.p_level; + } else if (sortField == 'end_at') { + return $A.Date(a.end_at) - $A.Date(b.end_at); } - let at1 = $A.Date(a.end_at), - at2 = $A.Date(b.end_at); - return at1 - at2; }); }, helpList() { - const {projectId, tasks, searchText, userId, completeJust} = this; + const {projectId, tasks, searchText, userId, completeJust, sortField, sortType} = this; const array = tasks.filter((task) => { if (task.project_id != projectId) { return false; @@ -559,17 +580,19 @@ export default { return task.task_user && task.task_user.find(({userid, owner}) => userid == userId && owner == 0); }); return array.sort((a, b) => { - if (a.p_level != b.p_level) { - return a.p_level - b.p_level; + if (sortType == 'asc') { + [a, b] = [b, a]; + } + if (sortField == 'level') { + return a.p_level - b.p_level; + } else if (sortField == 'end_at') { + return $A.Date(a.end_at) - $A.Date(b.end_at); } - let at1 = $A.Date(a.end_at), - at2 = $A.Date(b.end_at); - return at1 - at2; }); }, undoneList() { - const {projectId, tasks, searchText, completeJust} = this; + const {projectId, tasks, searchText, completeJust, sortField, sortType} = this; const array = tasks.filter((task) => { if (task.project_id != projectId) { return false; @@ -587,12 +610,14 @@ export default { return !task.complete_at || completeJust.find(id => id == task.id); }); return array.sort((a, b) => { - if (a.p_level != b.p_level) { - return a.p_level - b.p_level; + if (sortType == 'asc') { + [a, b] = [b, a]; + } + if (sortField == 'level') { + return a.p_level - b.p_level; + } else if (sortField == 'end_at') { + return $A.Date(a.end_at) - $A.Date(b.end_at); } - let at1 = $A.Date(a.end_at), - at2 = $A.Date(b.end_at); - return at1 - at2; }); }, @@ -931,6 +956,11 @@ export default { }); }, + onSort(field) { + this.sortField = field; + this.sortType = this.sortType == 'desc' ? 'asc' : 'desc'; + }, + onSetting() { this.settingLoad++; this.$store.dispatch("call", { diff --git a/resources/assets/sass/pages/components/project-list.scss b/resources/assets/sass/pages/components/project-list.scss index 1f64f264..e5bc755c 100644 --- a/resources/assets/sass/pages/components/project-list.scss +++ b/resources/assets/sass/pages/components/project-list.scss @@ -543,6 +543,44 @@ color: #888888; font-size: 13px; font-weight: 500; + .sort { + display: flex; + align-items: center; + cursor: pointer; + } + .task-sort { + display: inline-block; + width: 14px; + height: 12px; + margin-top: -1px; + margin-left: 1px; + vertical-align: middle; + overflow: hidden; + cursor: pointer; + position: relative; + > i { + display: block; + height: 6px; + line-height: 6px; + overflow: hidden; + position: absolute; + color: #c5c8ce; + transition: color .2s ease-in-out; + font-size: 16px; + &.on { + color: #2d8cf0 + } + &:hover { + color: inherit + } + &:first-child { + top: 0 + } + &:last-child { + bottom: 0 + } + } + } } } }