feat: 添加“最近打开的任务”

This commit is contained in:
韦荣超 2022-03-07 11:49:29 +08:00
parent fe8cf38a7f
commit 59b2ecebda
4 changed files with 67 additions and 3 deletions

View File

@ -42,6 +42,30 @@
<DropdownItem name="exportTask">{{$L('导出任务统计')}}</DropdownItem>
</DropdownMenu>
</Dropdown>
<!--最近打开的任务-->
<Dropdown
v-else-if="item.path === 'taskBrowse'"
placement="right-start">
<DropdownItem divided>
<div class="manage-menu-flex">
{{$L(item.name)}}
<Icon type="ios-arrow-forward"></Icon>
</div>
</DropdownItem>
<DropdownMenu slot="list" v-if="taskBrowseLists.length > 0">
<DropdownItem
v-for="(item, key) in taskBrowseLists"
class="task-title"
:key="key"
@click.native="openTask(item)"
:name="item.name">{{ item.name }}</DropdownItem>
</DropdownMenu>
<DropdownMenu v-else slot="list">
<DropdownItem style="color: darkgrey;">
{{ $L('暂无打开记录') }}
</DropdownItem>
</DropdownMenu>
</Dropdown>
<!-- 主题皮肤 -->
<Dropdown
v-else-if="item.path === 'theme'"
@ -458,7 +482,8 @@ export default {
'wsMsg',
'clientNewVersion'
'clientNewVersion',
'cacheTaskBrowse'
]),
...mapGetters(['taskData', 'dashboardTask']),
@ -497,6 +522,8 @@ export default {
{path: 'team', name: '团队管理', divided: true},
{path: 'taskBrowse', name: '最近打开的任务', divided: true},
{path: 'theme', name: '主题皮肤', divided: true},
{path: 'language', name: this.currentLanguage, divided: true},
@ -514,6 +541,8 @@ export default {
{path: 'workReport', name: '工作报告', divided: true},
{path: 'archivedProject', name: '已归档的项目'},
{path: 'taskBrowse', name: '最近打开的任务', divided: true},
{path: 'theme', name: '主题皮肤', divided: true},
{path: 'language', name: this.currentLanguage, divided: true},
@ -558,7 +587,16 @@ export default {
'overlay-y': true,
'overlay-none': this.topOperateVisible === true,
}
}
},
taskBrowseLists() {
const {cacheTaskBrowse} = this;
return $A.cloneJSON(cacheTaskBrowse).sort((a, b) => {
if (a.view_time || b.view_time) {
return b.view_time - a.view_time;
}
});
},
},
watch: {
@ -1029,6 +1067,11 @@ export default {
}
document.addEventListener(visibilityChangeEvent, visibilityChangeListener);
},
openTask(task) {
console.log('openTask',task);
this.$store.dispatch("openTask", task)
},
}
}
</script>

View File

@ -432,6 +432,7 @@ export default {
state.cacheProjects = [];
state.cacheColumns = [];
state.cacheTasks = [];
state.cacheTaskBrowse = [];
//
$A.setStorage("cacheProjectParameter", state.cacheProjectParameter);
$A.setStorage("cacheServerUrl", state.cacheServerUrl);
@ -1382,7 +1383,21 @@ export default {
}).then(() => {
dispatch("getTaskContent", task_id);
dispatch("getTaskFiles", task_id);
dispatch("getTaskForParent", task_id).catch(() => {})
dispatch("getTaskForParent", task_id).catch(() => {});
task.view_time = new Date().getTime();
let index = state.cacheTaskBrowse.findIndex(({id}) => id == task.id)
if (index > -1) {
state.cacheTaskBrowse.splice(index, 1,task)
} else {
state.cacheTaskBrowse.push(task)
}
if (state.cacheTaskBrowse.length > 10) {
let deleteNum = state.cacheTaskBrowse.length - 10
state.cacheTaskBrowse.splice(0, parseInt(deleteNum))
}
setTimeout(() => {
$A.setStorage("cacheTaskBrowse", state.cacheTaskBrowse);
})
}).catch(({msg}) => {
$A.modalWarning({
content: msg,

View File

@ -29,6 +29,7 @@ const stateData = {
cacheColumns: $A.getStorageArray("cacheColumns"),
cacheTasks: $A.getStorageArray("cacheTasks"),
cacheProjectParameter: $A.getStorageArray("cacheProjectParameter"),
cacheTaskBrowse: $A.getStorageArray("cacheTaskBrowse"),
// ServerUrl
cacheServerUrl: $A.getStorageString("cacheServerUrl"),

View File

@ -95,6 +95,11 @@
color: #666666;
}
}
.task-title {
overflow: hidden;
text-overflow: ellipsis;
}
}
> ul {
flex: 1;