no message

This commit is contained in:
kuaifan 2021-06-22 12:26:12 +08:00
parent db37cce011
commit 551c835988
4 changed files with 58 additions and 37 deletions

View File

@ -23,7 +23,7 @@
</div>
</Tooltip>
</li>
<li :class="['project-icon', projectChatShow ? 'active' : '']" @click="toggleBoolean('projectChatShow')">
<li :class="['project-icon', projectChatShow ? 'active' : '']" @click="$store.dispatch('toggleBoolean', 'projectChatShow')">
<Icon class="menu-icon" type="ios-chatbubbles" />
<Badge class="menu-badge" :count="msgUnread"></Badge>
</li>
@ -46,15 +46,15 @@
<div v-if="projectData.desc" class="project-subtitle">{{projectData.desc}}</div>
<div class="project-switch">
<div v-if="completedCount > 0" class="project-checkbox">
<Checkbox :value="projectCompleteShow" @on-change="toggleBoolean('projectCompleteShow', $event)">{{$L('显示已完成')}}</Checkbox>
<Checkbox :value="projectCompleteShow" @on-change="$store.dispatch('toggleBoolean', 'projectCompleteShow')">{{$L('显示已完成')}}</Checkbox>
</div>
<div :class="['project-switch-button', !projectTablePanel ? 'menu' : '']" @click="toggleBoolean('projectTablePanel')">
<div :class="['project-switch-button', !tablePanel('card') ? 'menu' : '']" @click="$store.dispatch('toggleTablePanel', 'card')">
<div><i class="iconfont">&#xe60c;</i></div>
<div><i class="iconfont">&#xe66a;</i></div>
</div>
</div>
</div>
<div v-if="projectTablePanel" class="project-column overlay-x">
<div v-if="tablePanel('card')" class="project-column overlay-x">
<Draggable
:list="projectData.columns"
:animation="150"
@ -229,10 +229,10 @@
</Row>
</div>
<!--我的任务-->
<div :class="['project-table-body', !taskMyShow ? 'project-table-hide' : '']">
<div :class="['project-table-body', !tablePanel('showMy') ? 'project-table-hide' : '']">
<Row class="task-row">
<Col span="12" class="row-title">
<i class="iconfont" @click="toggleBoolean('taskMyShow')">&#xe689;</i>
<i class="iconfont" @click="$store.dispatch('toggleTablePanel', 'showMy')">&#xe689;</i>
<div class="row-h1">{{$L('我的任务')}}</div>
<div class="row-num">({{myList.length}})</div>
</Col>
@ -244,10 +244,10 @@
<TaskRow :list="myList" open-key="my" @command="dropTask" fast-add-task/>
</div>
<!--未完成任务-->
<div v-if="projectData.task_num > 0" :class="['project-table-body', !taskUndoneShow ? 'project-table-hide' : '']">
<div v-if="projectData.task_num > 0" :class="['project-table-body', !tablePanel('showUndone') ? 'project-table-hide' : '']">
<Row class="task-row">
<Col span="12" class="row-title">
<i class="iconfont" @click="toggleBoolean('taskUndoneShow')">&#xe689;</i>
<i class="iconfont" @click="$store.dispatch('toggleTablePanel', 'showUndone')">&#xe689;</i>
<div class="row-h1">{{$L('未完成任务')}}</div>
<div class="row-num">({{undoneList.length}})</div>
</Col>
@ -259,10 +259,10 @@
<TaskRow :list="undoneList" open-key="undone" @command="dropTask"/>
</div>
<!--已完成任务-->
<div v-if="projectData.task_num > 0" :class="['project-table-body', !taskCompletedShow ? 'project-table-hide' : '']">
<div v-if="projectData.task_num > 0" :class="['project-table-body', !tablePanel('showCompleted') ? 'project-table-hide' : '']">
<Row class="task-row">
<Col span="12" class="row-title">
<i class="iconfont" @click="toggleBoolean('taskCompletedShow')">&#xe689;</i>
<i class="iconfont" @click="$store.dispatch('toggleTablePanel', 'showCompleted')">&#xe689;</i>
<div class="row-h1">{{$L('已完成任务')}}</div>
<div class="row-num">({{completedList.length}})</div>
</Col>
@ -408,15 +408,10 @@ export default {
'columns',
'projectChatShow',
'projectTablePanel',
'projectCompleteShow',
'taskMyShow',
'taskUndoneShow',
'taskCompletedShow'
]),
...mapGetters(['projectData']),
...mapGetters(['projectData', 'tablePanel']),
msgUnread() {
const {dialogList, projectData} = this;
@ -938,10 +933,6 @@ export default {
}
},
toggleBoolean(type) {
this.$store.dispatch("toggleBoolean", type);
},
taskIsHidden(task) {
const {name, desc, complete_at} = task;
const {searchText, projectCompleteShow} = this;

View File

@ -1,3 +1,5 @@
import state from "./state";
export default {
/**
* 访问接口
@ -132,6 +134,28 @@ export default {
state.method.setStorage("boolean:" + key, state[key]);
},
/**
* 切换面板变量
* @param state
* @param key
*/
toggleTablePanel({state}, key) {
if (state.projectId) {
let index = state.cacheTablePanel.findIndex(({project_id}) => project_id == state.projectId)
if (index === -1) {
state.cacheTablePanel.push({
project_id: state.projectId,
});
index = state.cacheTablePanel.findIndex(({project_id}) => project_id == state.projectId)
}
const cache = state.cacheTablePanel[index];
state.cacheTablePanel.splice(index, 1, Object.assign(cache, {
[key]: !cache[key]
}))
state.method.setStorage("cacheTablePanel", state.cacheTablePanel);
}
},
/**
* 获取/更新会员信息
* @param dispatch

View File

@ -48,4 +48,24 @@ export default {
}
return {};
},
tablePanel(state) {
return function (key) {
if (!state.projectId) {
return false;
}
let cache = state.cacheTablePanel.find(({project_id}) => project_id == state.projectId);
if (!cache) {
cache = {
project_id: state.projectId,
card: true,
showMy: true,
showUndone: true,
showCompleted: false,
}
state.cacheTablePanel.push(cache);
}
return cache && !!cache[key];
}
}
}

View File

@ -226,23 +226,6 @@ const method = {
// 方法类
const state = { method };
// 变量缓存
[
'projectTablePanel', // 项目面板显示类型
'taskMyShow', // 项目面板显示我的任务
'taskUndoneShow', // 项目面板显示未完成任务
].forEach((key) => {
state[key] = state.method.getStorageBoolean("boolean:" + key, true)
});
[
'projectChatShow', // 项目聊天显示
'taskCompletedShow', // 项目面板显示已完成任务
'projectCompleteShow' // 项目面板显示已完成列表
].forEach((key) => {
state[key] = state.method.getStorageBoolean("boolean:" + key, false)
});
// ajax
state.ajaxLoadNum = 0;
state.ajaxWsReady = false;
@ -255,6 +238,9 @@ state.cacheProjects = state.method.getStorageArray("cacheProjects");
state.cacheColumns = state.method.getStorageArray("cacheColumns");
state.cacheTasks = state.method.getStorageArray("cacheTasks");
state.cacheTaskSubs = state.method.getStorageArray("cacheTaskSubs");
state.cacheTablePanel = state.method.getStorageArray("cacheTablePanel");
state.projectChatShow = state.method.getStorageBoolean("boolean:projectChatShow", false)
state.projectCompleteShow = state.method.getStorageBoolean("boolean:projectCompleteShow", false)
// 会员信息
state.userInfo = state.method.getStorageJson("userInfo");