From e5a1e58159f790546134290fca0dfedbd8f05366 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Tue, 11 Jan 2022 12:13:06 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=AE=8C=E6=88=90=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E7=BB=A7=E7=BB=AD=E6=98=BE=E7=A4=BA=E5=9C=A8?= =?UTF-8?q?=E6=88=91=E7=9A=84=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/pages/login.vue | 6 +- .../pages/manage/components/ProjectList.vue | 83 +++++++++++-------- .../js/pages/manage/components/TaskMenu.vue | 36 ++++---- .../assets/js/pages/manage/dashboard.vue | 8 +- resources/assets/js/pages/manage/project.vue | 4 + resources/assets/js/store/actions.js | 35 +++++++- resources/assets/js/store/getters.js | 9 +- resources/assets/js/store/state.js | 1 + 8 files changed, 124 insertions(+), 58 deletions(-) diff --git a/resources/assets/js/pages/login.vue b/resources/assets/js/pages/login.vue index ffdcd9d5..0b6ac54f 100644 --- a/resources/assets/js/pages/login.vue +++ b/resources/assets/js/pages/login.vue @@ -10,7 +10,7 @@
{{$L('输入您的凭证以访问您的帐户。')}}
- + @@ -94,7 +94,7 @@ export default { currentLanguage() { return this.languageList[this.languageType] || 'Language' }, - + welcomeTitle() { let title = window.systemInfo.title || "Dootask"; if (title == "PublicDooTask") { @@ -185,7 +185,7 @@ export default { chackServerUrl(tip) { return new Promise((resolve, reject) => { - if (this.isNotServer()) { + if (this.$Electron && this.isNotServer()) { if (tip === true) { $A.messageWarning("请设置服务器") } diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index de213c48..2f9cb093 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -530,6 +530,8 @@ export default { 'projectLoad', 'cacheTasks', 'cacheColumns', + + 'taskCompleteTemps', ]), ...mapGetters(['projectData', 'projectParameter', 'transforTasks']), @@ -607,23 +609,12 @@ export default { }, myList() { - const {projectId, cacheTasks, searchText, sortField, sortType} = this; - const array = cacheTasks.filter((task) => { - if (task.project_id != projectId) { - return false; - } - if (!this.projectParameter('completedTask')) { - if (task.complete_at) { - return false; - } - } - if (searchText) { - if (!$A.strExists(task.name, searchText) && !$A.strExists(task.desc, searchText)) { - return false; - } - } - return task.owner; - }); + const {cacheTasks, taskCompleteTemps, sortField, sortType} = this; + let array = cacheTasks.filter(task => this.myFilter(task)); + if (taskCompleteTemps.length > 0) { + array = $A.cloneJSON(array) + array.push(...taskCompleteTemps.filter(task => this.myFilter(task, false))); + } return array.sort((a, b) => { if (sortType == 'asc') { [a, b] = [b, a]; @@ -640,23 +631,12 @@ export default { }, helpList() { - const {projectId, cacheTasks, searchText, userId, sortField, sortType} = this; - const array = cacheTasks.filter((task) => { - if (task.project_id != projectId || task.parent_id > 0) { - return false; - } - if (!this.projectParameter('completedTask')) { - if (task.complete_at) { - return false; - } - } - if (searchText) { - if (!$A.strExists(task.name, searchText) && !$A.strExists(task.desc, searchText)) { - return false; - } - } - return task.task_user && task.task_user.find(({userid, owner}) => userid == userId && owner == 0); - }); + const {cacheTasks, taskCompleteTemps, sortField, sortType} = this; + let array = cacheTasks.filter(task => this.helpFilter(task)); + if (taskCompleteTemps.length > 0) { + array = $A.cloneJSON(array) + array.push(...taskCompleteTemps.filter(task => this.helpFilter(task, false))); + } return array.sort((a, b) => { if (sortType == 'asc') { [a, b] = [b, a]; @@ -1176,9 +1156,44 @@ export default { }, toggleCompleted() { + this.$store.dispatch("forgetTaskCompleteTemp", true); this.$store.dispatch('toggleProjectParameter', 'completedTask'); }, + myFilter(task, chackCompleted = true) { + if (task.project_id != this.projectId) { + return false; + } + if (!this.projectParameter('completedTask') && chackCompleted === true) { + if (task.complete_at) { + return false; + } + } + if (this.searchText) { + if (!$A.strExists(task.name, this.searchText) && !$A.strExists(task.desc, this.searchText)) { + return false; + } + } + return task.owner; + }, + + helpFilter(task, chackCompleted = true) { + if (task.project_id != this.projectId || task.parent_id > 0) { + return false; + } + if (!this.projectParameter('completedTask') && chackCompleted === true) { + if (task.complete_at) { + return false; + } + } + if (this.searchText) { + if (!$A.strExists(task.name, this.searchText) && !$A.strExists(task.desc, this.searchText)) { + return false; + } + } + return task.task_user && task.task_user.find(({userid, owner}) => userid == this.userId && owner == 0); + }, + expiresFormat(date) { return $A.countDownFormat(date, this.nowTime) }, diff --git a/resources/assets/js/pages/manage/components/TaskMenu.vue b/resources/assets/js/pages/manage/components/TaskMenu.vue index 937568e0..e9e51aaa 100644 --- a/resources/assets/js/pages/manage/components/TaskMenu.vue +++ b/resources/assets/js/pages/manage/components/TaskMenu.vue @@ -171,11 +171,14 @@ export default { }) return; } + const cacheTask = this.task; switch (command) { case 'complete': if (this.task.complete_at) return; this.updateTask({ complete_at: $A.formatDate("Y-m-d H:i:s") + }).then(() => { + this.$store.dispatch("saveTaskCompleteTemp", cacheTask) }) break; @@ -183,6 +186,8 @@ export default { if (!this.task.complete_at) return; this.updateTask({ complete_at: false + }).then(() => { + this.$store.dispatch("forgetTaskCompleteTemp", cacheTask.id) }) break; @@ -200,20 +205,23 @@ export default { }, updateTask(updata) { - if (this.loadIng) { - return; - } - // - Object.keys(updata).forEach(key => this.$set(this.task, key, updata[key])); - // - this.$store.dispatch("taskUpdate", Object.assign(updata, { - task_id: this.task.id, - })).then(({msg}) => { - $A.messageSuccess(msg); - }).catch(({msg}) => { - $A.modalError(msg); - this.$store.dispatch("getTaskOne", this.task.id); - }); + return new Promise(resolve => { + if (this.loadIng) { + return; + } + // + Object.keys(updata).forEach(key => this.$set(this.task, key, updata[key])); + // + this.$store.dispatch("taskUpdate", Object.assign(updata, { + task_id: this.task.id, + })).then(({msg}) => { + $A.messageSuccess(msg); + resolve() + }).catch(({msg}) => { + $A.modalError(msg); + this.$store.dispatch("getTaskOne", this.task.id); + }); + }) }, archivedOrRemoveTask(type) { diff --git a/resources/assets/js/pages/manage/dashboard.vue b/resources/assets/js/pages/manage/dashboard.vue index 9fc38739..5ed538be 100644 --- a/resources/assets/js/pages/manage/dashboard.vue +++ b/resources/assets/js/pages/manage/dashboard.vue @@ -31,8 +31,8 @@
{{title}}