no message

This commit is contained in:
kuaifan 2022-04-14 07:58:53 +08:00
parent 8a0f53aaaf
commit ac1e7bc186
4 changed files with 49 additions and 61 deletions

View File

@ -108,7 +108,7 @@ export default {
computed: { computed: {
...mapState(['userId', 'windowWidth', 'taskPriority']), ...mapState(['userId', 'windowWidth', 'taskPriority']),
...mapGetters(['projectParameter']), ...mapGetters(['projectData']),
menuWidth() { menuWidth() {
return this.windowWidth < 1440 ? 180 : 260; return this.windowWidth < 1440 ? 180 : 260;
@ -119,7 +119,7 @@ export default {
}, },
completedTask() { completedTask() {
return this.projectParameter('completedTask'); return this.projectData.cacheParameter.completedTask;
} }
}, },

View File

@ -15,9 +15,9 @@
<UserAvatar :userid="projectData.owner_userid" :size="36" :borderWitdh="2" :openDelay="0"> <UserAvatar :userid="projectData.owner_userid" :size="36" :borderWitdh="2" :openDelay="0">
<p>{{$L('项目负责人')}}</p> <p>{{$L('项目负责人')}}</p>
</UserAvatar> </UserAvatar>
<Badge v-if="(windowWidth <= 980 || projectParameter('chat')) && projectUser.length > 0" type="normal" :count="projectData.project_user.length"/> <Badge v-if="(windowWidth <= 980 || projectData.cacheParameter.chat) && projectUser.length > 0" type="normal" :count="projectData.project_user.length"/>
</li> </li>
<template v-if="!(windowWidth <= 980 || projectParameter('chat')) && projectUser.length > 0" v-for="item in projectUser"> <template v-if="!(windowWidth <= 980 || projectData.cacheParameter.chat) && projectUser.length > 0" v-for="item in projectUser">
<li v-if="item.userid === -1" class="more"> <li v-if="item.userid === -1" class="more">
<ETooltip :content="$L('共' + (projectData.project_user.length) + '个成员')"> <ETooltip :content="$L('共' + (projectData.project_user.length) + '个成员')">
<Icon type="ios-more"/> <Icon type="ios-more"/>
@ -42,7 +42,7 @@
</div> </div>
</Tooltip> </Tooltip>
</li> </li>
<li :class="['project-icon', projectParameter('chat') ? 'active' : '']" @click="$store.dispatch('toggleProjectParameter', 'chat')"> <li :class="['project-icon', projectData.cacheParameter.chat ? 'active' : '']" @click="$store.dispatch('toggleProjectParameter', 'chat')">
<Icon class="menu-icon" type="ios-chatbubbles" /> <Icon class="menu-icon" type="ios-chatbubbles" />
<Badge class="menu-badge" :count="msgUnread"></Badge> <Badge class="menu-badge" :count="msgUnread"></Badge>
</li> </li>
@ -75,7 +75,7 @@
<div class="project-subtitle">{{projectData.desc}}</div> <div class="project-subtitle">{{projectData.desc}}</div>
<div class="project-switch"> <div class="project-switch">
<div v-if="completedCount > 0" class="project-checkbox"> <div v-if="completedCount > 0" class="project-checkbox">
<Checkbox :value="projectParameter('completedTask')" @on-change="toggleCompleted">{{$L('显示已完成')}}</Checkbox> <Checkbox :value="projectData.cacheParameter.completedTask" @on-change="toggleCompleted">{{$L('显示已完成')}}</Checkbox>
</div> </div>
<div v-if="flowList.length > 0" class="project-select"> <div v-if="flowList.length > 0" class="project-select">
<Cascader :data="flowData" @on-change="flowChange" transfer-class-name="project-list-flow-cascader" transfer> <Cascader :data="flowData" @on-change="flowChange" transfer-class-name="project-list-flow-cascader" transfer>
@ -255,7 +255,7 @@
</Row> </Row>
</div> </div>
<!--我的任务--> <!--我的任务-->
<div :class="['project-table-body', !projectParameter('showMy') ? 'project-table-hide' : '']"> <div :class="['project-table-body', !projectData.cacheParameter.showMy ? 'project-table-hide' : '']">
<Row class="task-row"> <Row class="task-row">
<Col span="12" class="row-title"> <Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showMy')">&#xe689;</i> <i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showMy')">&#xe689;</i>
@ -267,10 +267,10 @@
<Col span="3"></Col> <Col span="3"></Col>
<Col span="3"></Col> <Col span="3"></Col>
</Row> </Row>
<TaskRow v-if="projectParameter('showMy')" :list="transforTasks(myList)" open-key="my" @on-priority="addTaskOpen" fast-add-task/> <TaskRow v-if="projectData.cacheParameter.showMy" :list="transforTasks(myList)" open-key="my" @on-priority="addTaskOpen" fast-add-task/>
</div> </div>
<!--协助的任务--> <!--协助的任务-->
<div v-if="helpList.length" :class="['project-table-body', !projectParameter('showHelp') ? 'project-table-hide' : '']"> <div v-if="helpList.length" :class="['project-table-body', !projectData.cacheParameter.showHelp ? 'project-table-hide' : '']">
<Row class="task-row"> <Row class="task-row">
<Col span="12" class="row-title"> <Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showHelp')">&#xe689;</i> <i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showHelp')">&#xe689;</i>
@ -282,10 +282,10 @@
<Col span="3"></Col> <Col span="3"></Col>
<Col span="3"></Col> <Col span="3"></Col>
</Row> </Row>
<TaskRow v-if="projectParameter('showHelp')" :list="helpList" open-key="help" @on-priority="addTaskOpen"/> <TaskRow v-if="projectData.cacheParameter.showHelp" :list="helpList" open-key="help" @on-priority="addTaskOpen"/>
</div> </div>
<!--未完成任务--> <!--未完成任务-->
<div v-if="projectData.task_num > 0" :class="['project-table-body', !projectParameter('showUndone') ? 'project-table-hide' : '']"> <div v-if="projectData.task_num > 0" :class="['project-table-body', !projectData.cacheParameter.showUndone ? 'project-table-hide' : '']">
<Row class="task-row"> <Row class="task-row">
<Col span="12" class="row-title"> <Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showUndone')">&#xe689;</i> <i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showUndone')">&#xe689;</i>
@ -297,10 +297,10 @@
<Col span="3"></Col> <Col span="3"></Col>
<Col span="3"></Col> <Col span="3"></Col>
</Row> </Row>
<TaskRow v-if="projectParameter('showUndone')" :list="unList" open-key="undone" @on-priority="addTaskOpen"/> <TaskRow v-if="projectData.cacheParameter.showUndone" :list="unList" open-key="undone" @on-priority="addTaskOpen"/>
</div> </div>
<!--已完成任务--> <!--已完成任务-->
<div v-if="projectData.task_num > 0" :class="['project-table-body', !projectParameter('showCompleted') ? 'project-table-hide' : '']"> <div v-if="projectData.task_num > 0" :class="['project-table-body', !projectData.cacheParameter.showCompleted ? 'project-table-hide' : '']">
<Row class="task-row"> <Row class="task-row">
<Col span="12" class="row-title"> <Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showCompleted')">&#xe689;</i> <i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showCompleted')">&#xe689;</i>
@ -310,9 +310,9 @@
<Col span="3"></Col> <Col span="3"></Col>
<Col span="3"></Col> <Col span="3"></Col>
<Col span="3"></Col> <Col span="3"></Col>
<Col span="3">{{projectData.task_num > 0 && projectParameter('showCompleted') ? $L('完成时间') : ''}}</Col> <Col span="3">{{projectData.task_num > 0 && projectData.cacheParameter.showCompleted ? $L('完成时间') : ''}}</Col>
</Row> </Row>
<TaskRow v-if="projectParameter('showCompleted')" :list="completedList" open-key="completed" @on-priority="addTaskOpen" showCompleteAt/> <TaskRow v-if="projectData.cacheParameter.showCompleted" :list="completedList" open-key="completed" @on-priority="addTaskOpen" showCompleteAt/>
</div> </div>
</div> </div>
<div v-else-if="tabTypeActive === 'gantt'" class="project-gantt"> <div v-else-if="tabTypeActive === 'gantt'" class="project-gantt">
@ -563,10 +563,10 @@ export default {
'taskCompleteTemps', 'taskCompleteTemps',
]), ]),
...mapGetters(['projectData', 'projectParameter', 'transforTasks']), ...mapGetters(['projectData', 'transforTasks']),
tabTypeActive() { tabTypeActive() {
return this.projectParameter('menuType') return this.projectData.cacheParameter.menuType
}, },
tabTypeStyle() { tabTypeStyle() {
@ -610,7 +610,7 @@ export default {
panelTask() { panelTask() {
const {searchText, flowInfo} = this; const {searchText, flowInfo} = this;
return function (list) { return function (list) {
if (!this.projectParameter('completedTask')) { if (!this.projectData.cacheParameter.completedTask) {
list = list.filter(({complete_at}) => { list = list.filter(({complete_at}) => {
return !complete_at; return !complete_at;
}); });
@ -1261,7 +1261,7 @@ export default {
taskIsHidden(task) { taskIsHidden(task) {
const {name, desc, complete_at} = task; const {name, desc, complete_at} = task;
const {searchText, flowInfo} = this; const {searchText, flowInfo} = this;
if (!this.projectParameter('completedTask')) { if (!this.projectData.cacheParameter.completedTask) {
if (complete_at) { if (complete_at) {
return true; return true;
} }
@ -1357,7 +1357,7 @@ export default {
}, },
myFilter(task, chackCompleted = true) { myFilter(task, chackCompleted = true) {
if (!this.projectParameter('completedTask') && chackCompleted === true) { if (!this.projectData.cacheParameter.completedTask && chackCompleted === true) {
if (task.complete_at) { if (task.complete_at) {
return false; return false;
} }
@ -1377,7 +1377,7 @@ export default {
if (task.parent_id > 0) { if (task.parent_id > 0) {
return false; return false;
} }
if (!this.projectParameter('completedTask') && chackCompleted === true) { if (!this.projectData.cacheParameter.completedTask && chackCompleted === true) {
if (task.complete_at) { if (task.complete_at) {
return false; return false;
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="page-project"> <div class="page-project">
<ProjectList/> <ProjectList/>
<ProjectDialog v-if="projectParameter('chat')"/> <ProjectDialog v-if="projectData.cacheParameter.chat"/>
</div> </div>
</template> </template>
@ -18,7 +18,7 @@ export default {
computed: { computed: {
...mapState(['cacheProjects', 'wsOpenNum']), ...mapState(['cacheProjects', 'wsOpenNum']),
...mapGetters(['projectParameter']), ...mapGetters(['projectData']),
projectId() { projectId() {
const {projectId} = this.$route.params; const {projectId} = this.$route.params;
@ -46,12 +46,16 @@ export default {
methods: { methods: {
getProjectData() { getProjectData() {
if (this.projectId <= 0) return; if (this.projectId <= 0) return;
setTimeout(() => { const projectId = this.projectId;
this.$store.state.projectId = $A.runNum(this.projectId); this.$nextTick(() => {
this.$store.dispatch("getProjectOne", this.projectId).then(() => { this.$store.state.projectId = projectId;
this.$store.dispatch("getColumns", this.projectId).catch(() => {}); this.$store.dispatch("getProjectOne", projectId).then(() => {
this.$store.dispatch("getTaskForProject", this.projectId).catch(() => {}) this.$store.dispatch("getColumns", projectId).catch(() => {});
this.$store.dispatch("getTaskForProject", projectId).catch(() => {})
}).catch(({msg}) => { }).catch(({msg}) => {
if (projectId !== this.projectId) {
return;
}
$A.modalWarning({ $A.modalWarning({
content: msg, content: msg,
onOk: () => { onOk: () => {

View File

@ -2,43 +2,27 @@ export default {
/** /**
* 当前打开的项目 * 当前打开的项目
* @param state * @param state
* @returns {{}|{readonly id?: *}} * @returns {{cacheParameter: {}}}
*/ */
projectData(state) { projectData(state) {
let projectId = state.projectId; if (state.projectId > 0) {
if (projectId == 0) { let data = state.cacheProjects.find(({id}) => id == state.projectId);
projectId = $A.runNum(window.__projectId); if (data) {
let cacheParameter = state.cacheProjectParameter.find(({project_id}) => project_id == state.projectId);
if (!cacheParameter) {
cacheParameter = $A.projectParameterTemplate(state.projectId)
state.cacheProjectParameter.push(cacheParameter);
} }
if (projectId > 0) { if (cacheParameter.menuType === undefined) {
window.__projectId = projectId; cacheParameter.menuType = 'column'
const project = state.cacheProjects.find(({id}) => id == projectId); }
if (project) { data.cacheParameter = cacheParameter;
return project; return data;
} }
} }
return {}; return {
}, cacheParameter: {}
};
/**
* 当前打开的项目面板参数
* @param state
* @returns {(function(*): (boolean|*))|*}
*/
projectParameter(state) {
return function (key) {
if (!state.projectId) {
return false;
}
let cache = state.cacheProjectParameter.find(({project_id}) => project_id == state.projectId);
if (!cache) {
cache = $A.projectParameterTemplate(state.projectId)
state.cacheProjectParameter.push(cache);
}
if (key === 'menuType' && typeof cache[key] === "undefined") {
return 'column'
}
return cache[key];
}
}, },
/** /**