mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-13 20:12:48 +00:00
feat: 添加“最近打开的任务”
This commit is contained in:
parent
fe8cf38a7f
commit
59b2ecebda
@ -42,6 +42,30 @@
|
|||||||
<DropdownItem name="exportTask">{{$L('导出任务统计')}}</DropdownItem>
|
<DropdownItem name="exportTask">{{$L('导出任务统计')}}</DropdownItem>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</Dropdown>
|
</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
|
<Dropdown
|
||||||
v-else-if="item.path === 'theme'"
|
v-else-if="item.path === 'theme'"
|
||||||
@ -458,7 +482,8 @@ export default {
|
|||||||
|
|
||||||
'wsMsg',
|
'wsMsg',
|
||||||
|
|
||||||
'clientNewVersion'
|
'clientNewVersion',
|
||||||
|
'cacheTaskBrowse'
|
||||||
]),
|
]),
|
||||||
|
|
||||||
...mapGetters(['taskData', 'dashboardTask']),
|
...mapGetters(['taskData', 'dashboardTask']),
|
||||||
@ -497,6 +522,8 @@ export default {
|
|||||||
|
|
||||||
{path: 'team', name: '团队管理', divided: true},
|
{path: 'team', name: '团队管理', divided: true},
|
||||||
|
|
||||||
|
{path: 'taskBrowse', name: '最近打开的任务', divided: true},
|
||||||
|
|
||||||
{path: 'theme', name: '主题皮肤', divided: true},
|
{path: 'theme', name: '主题皮肤', divided: true},
|
||||||
|
|
||||||
{path: 'language', name: this.currentLanguage, divided: true},
|
{path: 'language', name: this.currentLanguage, divided: true},
|
||||||
@ -514,6 +541,8 @@ export default {
|
|||||||
{path: 'workReport', name: '工作报告', divided: true},
|
{path: 'workReport', name: '工作报告', divided: true},
|
||||||
{path: 'archivedProject', name: '已归档的项目'},
|
{path: 'archivedProject', name: '已归档的项目'},
|
||||||
|
|
||||||
|
{path: 'taskBrowse', name: '最近打开的任务', divided: true},
|
||||||
|
|
||||||
{path: 'theme', name: '主题皮肤', divided: true},
|
{path: 'theme', name: '主题皮肤', divided: true},
|
||||||
|
|
||||||
{path: 'language', name: this.currentLanguage, divided: true},
|
{path: 'language', name: this.currentLanguage, divided: true},
|
||||||
@ -558,7 +587,16 @@ export default {
|
|||||||
'overlay-y': true,
|
'overlay-y': true,
|
||||||
'overlay-none': this.topOperateVisible === 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: {
|
watch: {
|
||||||
@ -1029,6 +1067,11 @@ export default {
|
|||||||
}
|
}
|
||||||
document.addEventListener(visibilityChangeEvent, visibilityChangeListener);
|
document.addEventListener(visibilityChangeEvent, visibilityChangeListener);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
openTask(task) {
|
||||||
|
console.log('openTask',task);
|
||||||
|
this.$store.dispatch("openTask", task)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</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.cacheProjects = [];
|
||||||
state.cacheColumns = [];
|
state.cacheColumns = [];
|
||||||
state.cacheTasks = [];
|
state.cacheTasks = [];
|
||||||
|
state.cacheTaskBrowse = [];
|
||||||
//
|
//
|
||||||
$A.setStorage("cacheProjectParameter", state.cacheProjectParameter);
|
$A.setStorage("cacheProjectParameter", state.cacheProjectParameter);
|
||||||
$A.setStorage("cacheServerUrl", state.cacheServerUrl);
|
$A.setStorage("cacheServerUrl", state.cacheServerUrl);
|
||||||
@ -1382,7 +1383,21 @@ export default {
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
dispatch("getTaskContent", task_id);
|
dispatch("getTaskContent", task_id);
|
||||||
dispatch("getTaskFiles", 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}) => {
|
}).catch(({msg}) => {
|
||||||
$A.modalWarning({
|
$A.modalWarning({
|
||||||
content: msg,
|
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"),
|
cacheColumns: $A.getStorageArray("cacheColumns"),
|
||||||
cacheTasks: $A.getStorageArray("cacheTasks"),
|
cacheTasks: $A.getStorageArray("cacheTasks"),
|
||||||
cacheProjectParameter: $A.getStorageArray("cacheProjectParameter"),
|
cacheProjectParameter: $A.getStorageArray("cacheProjectParameter"),
|
||||||
|
cacheTaskBrowse: $A.getStorageArray("cacheTaskBrowse"),
|
||||||
|
|
||||||
// ServerUrl
|
// ServerUrl
|
||||||
cacheServerUrl: $A.getStorageString("cacheServerUrl"),
|
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;
|
color: #666666;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.task-title {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
> ul {
|
> ul {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user