weifashi 1e58587b1c fix: 1. lisence 具体项不对的时候提醒
2. 从日历页面修改任务时间,就算时间不变也提示修改了
3. android滑动返回有问题,会文件页面循环返回
4. SSEClient 连接失败后死循环
2023-11-27 14:55:12 +08:00

89 lines
3.0 KiB
Vue

<template>
<div class="page-project">
<ProjectMenu v-if="!windowPortrait" :projectId="projId"/>
<template v-if="projId > 0">
<ProjectPanel/>
<ProjectDialog/>
</template>
<div v-else-if="!windowPortrait" class="page-project-empty">
<div><i class="taskfont">&#xe6f9;</i></div>
<span>{{ $L('选择一个项目查看更多任务') }}</span>
</div>
<ProjectList v-if="windowPortrait" v-show="projId === 0"/>
</div>
</template>
<script>
import {mapState} from "vuex";
import ProjectPanel from "./components/ProjectPanel";
import ProjectDialog from "./components/ProjectDialog";
import ProjectList from "./components/ProjectList";
import ProjectMenu from "./components/ProjectMenu";
export default {
components: {ProjectList, ProjectMenu, ProjectDialog, ProjectPanel},
deactivated() {
this.$store.dispatch("forgetTaskCompleteTemp", true);
},
computed: {
...mapState(['cacheProjects', 'wsOpenNum', 'projectId']),
projId() {
const {projectId} = this.$route.params;
if (!this.windowPortrait){
return parseInt(/^\d+$/.test(projectId) ? projectId : 0) || this.projectId || 0;
}
return parseInt(/^\d+$/.test(projectId) ? projectId : 0) || 0;
}
},
watch: {
projId: {
handler() {
this.getProjectData();
},
immediate: true
},
wsOpenNum(num) {
if (num <= 1) return
this.wsOpenTimeout && clearTimeout(this.wsOpenTimeout)
this.wsOpenTimeout = setTimeout(() => {
this.$route.name == 'manage-project' && this.getProjectData();
}, 5000)
}
},
methods: {
getProjectData() {
if (this.projId <= 0) return;
const projId = this.projId;
this.$nextTick(() => {
this.$store.state.projectId = projId;
this.$store.dispatch("getProjectOne", projId).then(() => {
this.$store.dispatch("getColumns", projId).catch(() => {});
this.$store.dispatch("getTaskForProject", projId).catch(() => {})
}).catch(({msg}) => {
if (projId !== this.projId) {
return;
}
$A.modalWarning({
content: msg,
onOk: () => {
const project = this.cacheProjects.find(({id}) => id);
if (project) {
$A.goForward({name: 'manage-project', params: {projectId: project.id}});
} else {
$A.goForward({name: 'manage-dashboard'});
}
}
});
});
this.$store.dispatch("forgetTaskCompleteTemp", true);
});
}
}
}
</script>