mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 19:35:50 +00:00
feat: 添加“最近打开的任务”
This commit is contained in:
parent
fe8cf38a7f
commit
59b2ecebda
@ -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>
|
||||
|
||||
17
resources/assets/js/store/actions.js
vendored
17
resources/assets/js/store/actions.js
vendored
@ -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,
|
||||
|
||||
1
resources/assets/js/store/state.js
vendored
1
resources/assets/js/store/state.js
vendored
@ -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"),
|
||||
|
||||
5
resources/assets/sass/pages/page-manage.scss
vendored
5
resources/assets/sass/pages/page-manage.scss
vendored
@ -95,6 +95,11 @@
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
|
||||
.task-title {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
> ul {
|
||||
flex: 1;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user