no message

This commit is contained in:
kuaifan 2022-01-05 14:17:45 +08:00
parent 0b4e1f3dee
commit aad621bd84
7 changed files with 77 additions and 86 deletions

View File

@ -76,15 +76,15 @@ export default {
computed: {
...mapState(['userId', 'projects', 'tasks']),
...mapGetters(['myTasks', 'transforTasks']),
...mapGetters(['ownerTasks', 'transforTasks']),
list() {
const datas = this.transforTasks(this.myTasks.filter(({end_at}) => {
const datas = this.transforTasks(this.ownerTasks.filter(({end_at}) => {
return end_at;
}));
return datas.map(data => {
let isAllday = $A.rightExists(data.start_at, "00:00:00") && $A.rightExists(data.end_at, "23:59:59")
let task = {
const isAllday = $A.rightExists(data.start_at, "00:00:00") && $A.rightExists(data.end_at, "23:59:59")
const task = {
id: data.id,
calendarId: String(data.project_id),
title: data.name,

View File

@ -24,7 +24,7 @@
</div>
</Tooltip>
</li>
<li :class="['project-icon', projectParameters('chat') ? 'active' : '']" @click="$store.dispatch('toggleProjectParameters', 'chat')">
<li :class="['project-icon', projectParameter('chat') ? 'active' : '']" @click="$store.dispatch('toggleProjectParameter', 'chat')">
<Icon class="menu-icon" type="ios-chatbubbles" />
<Badge class="menu-badge" :count="msgUnread"></Badge>
</li>
@ -53,15 +53,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="projectParameters('completedTask')" @on-change="toggleCompleted">{{$L('显示已完成')}}</Checkbox>
<Checkbox :value="projectParameter('completedTask')" @on-change="toggleCompleted">{{$L('显示已完成')}}</Checkbox>
</div>
<div :class="['project-switch-button', !projectParameters('card') ? 'menu' : '']" @click="$store.dispatch('toggleProjectParameters', 'card')">
<div :class="['project-switch-button', !projectParameter('card') ? 'menu' : '']" @click="$store.dispatch('toggleProjectParameter', 'card')">
<div><i class="taskfont">&#xe60c;</i></div>
<div><i class="taskfont">&#xe66a;</i></div>
</div>
</div>
</div>
<div v-if="projectParameters('card')" class="project-column">
<div v-if="projectParameter('card')" class="project-column">
<Draggable
:list="columnList"
:animation="150"
@ -255,10 +255,10 @@
</Row>
</div>
<!--我的任务-->
<div :class="['project-table-body', !projectParameters('showMy') ? 'project-table-hide' : '']">
<div :class="['project-table-body', !projectParameter('showMy') ? 'project-table-hide' : '']">
<Row class="task-row">
<Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameters', 'showMy')">&#xe689;</i>
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showMy')">&#xe689;</i>
<div class="row-h1">{{$L('我的任务')}}</div>
<div class="row-num">({{myList.length}})</div>
</Col>
@ -267,13 +267,13 @@
<Col span="3"></Col>
<Col span="3"></Col>
</Row>
<TaskRow v-if="projectParameters('showMy')" :list="transforTasks(myList)" open-key="my" @command="dropTask" @on-priority="addTaskOpen" fast-add-task/>
<TaskRow v-if="projectParameter('showMy')" :list="transforTasks(myList)" open-key="my" @command="dropTask" @on-priority="addTaskOpen" fast-add-task/>
</div>
<!--协助的任务-->
<div v-if="helpList.length" :class="['project-table-body', !projectParameters('showHelp') ? 'project-table-hide' : '']">
<div v-if="helpList.length" :class="['project-table-body', !projectParameter('showHelp') ? 'project-table-hide' : '']">
<Row class="task-row">
<Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameters', 'showHelp')">&#xe689;</i>
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showHelp')">&#xe689;</i>
<div class="row-h1">{{$L('协助的任务')}}</div>
<div class="row-num">({{helpList.length}})</div>
</Col>
@ -282,13 +282,13 @@
<Col span="3"></Col>
<Col span="3"></Col>
</Row>
<TaskRow v-if="projectParameters('showHelp')" :list="helpList" open-key="help" @command="dropTask" @on-priority="addTaskOpen"/>
<TaskRow v-if="projectParameter('showHelp')" :list="helpList" open-key="help" @command="dropTask" @on-priority="addTaskOpen"/>
</div>
<!--未完成任务-->
<div v-if="projectData.task_num > 0" :class="['project-table-body', !projectParameters('showUndone') ? 'project-table-hide' : '']">
<div v-if="projectData.task_num > 0" :class="['project-table-body', !projectParameter('showUndone') ? 'project-table-hide' : '']">
<Row class="task-row">
<Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameters', 'showUndone')">&#xe689;</i>
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showUndone')">&#xe689;</i>
<div class="row-h1">{{$L('未完成任务')}}</div>
<div class="row-num">({{unList.length}})</div>
</Col>
@ -297,13 +297,13 @@
<Col span="3"></Col>
<Col span="3"></Col>
</Row>
<TaskRow v-if="projectParameters('showUndone')" :list="unList" open-key="undone" @command="dropTask" @on-priority="addTaskOpen"/>
<TaskRow v-if="projectParameter('showUndone')" :list="unList" open-key="undone" @command="dropTask" @on-priority="addTaskOpen"/>
</div>
<!--已完成任务-->
<div v-if="projectData.task_num > 0" :class="['project-table-body', !projectParameters('showCompleted') ? 'project-table-hide' : '']">
<div v-if="projectData.task_num > 0" :class="['project-table-body', !projectParameter('showCompleted') ? 'project-table-hide' : '']">
<Row class="task-row">
<Col span="12" class="row-title">
<i class="taskfont" @click="$store.dispatch('toggleProjectParameters', 'showCompleted')">&#xe689;</i>
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showCompleted')">&#xe689;</i>
<div class="row-h1">{{$L('已完成任务')}}</div>
<div class="row-num">({{completedList.length}})</div>
</Col>
@ -312,7 +312,7 @@
<Col span="3"></Col>
<Col span="3"></Col>
</Row>
<TaskRow v-if="projectParameters('showCompleted')" :list="completedList" open-key="completed" @command="dropTask" @on-priority="addTaskOpen"/>
<TaskRow v-if="projectParameter('showCompleted')" :list="completedList" open-key="completed" @command="dropTask" @on-priority="addTaskOpen"/>
</div>
</div>
@ -504,7 +504,7 @@ export default {
}, 1000);
//
this.projectDialogSubscribe = Store.subscribe('onProjectDialogBack', () => {
this.$store.dispatch('toggleProjectParameters', 'chat');
this.$store.dispatch('toggleProjectParameter', 'chat');
});
},
@ -530,7 +530,7 @@ export default {
'columns',
]),
...mapGetters(['projectData', 'projectParameters', 'myTasks', 'transforTasks']),
...mapGetters(['projectData', 'projectParameter', 'ownerTasks', 'transforTasks']),
userWaitRemove() {
const {userids, useridbak} = this.userData;
@ -555,7 +555,7 @@ export default {
panelTask() {
const {searchText} = this;
return function (list) {
if (!this.projectParameters('completedTask')) {
if (!this.projectParameter('completedTask')) {
list = list.filter(({complete_at}) => {
return !complete_at;
});
@ -593,12 +593,12 @@ export default {
},
myList() {
const {projectId, myTasks, searchText, completeTask, sortField, sortType} = this;
const array = myTasks.filter((task) => {
const {projectId, ownerTasks, searchText, completeTask, sortField, sortType} = this;
const array = ownerTasks.filter((task) => {
if (task.project_id != projectId) {
return false;
}
if (!this.projectParameters('completedTask')) {
if (!this.projectParameter('completedTask')) {
if (task.complete_at && !completeTask.find(id => id == task.id)) {
return false;
}
@ -631,7 +631,7 @@ export default {
if (task.project_id != projectId || task.parent_id > 0) {
return false;
}
if (!this.projectParameters('completedTask')) {
if (!this.projectParameter('completedTask')) {
if (task.complete_at && !completeTask.find(id => id == task.id)) {
return false;
}
@ -664,7 +664,7 @@ export default {
if (task.project_id != projectId || task.parent_id > 0) {
return false;
}
if (!this.projectParameters('completedTask')) {
if (!this.projectParameter('completedTask')) {
if (task.complete_at && !completeTask.find(id => id == task.id)) {
return false;
}
@ -1201,7 +1201,7 @@ export default {
taskIsHidden(task) {
const {name, desc, complete_at} = task;
const {searchText} = this;
if (!this.projectParameters('completedTask')) {
if (!this.projectParameter('completedTask')) {
if (complete_at) {
return true;
}
@ -1254,7 +1254,7 @@ export default {
},
toggleCompleted() {
this.$store.dispatch('toggleProjectParameters', 'completedTask');
this.$store.dispatch('toggleProjectParameter', 'completedTask');
this.completeTask = [];
},

View File

@ -120,7 +120,7 @@ export default {
taskLoad: {},
completeTask: [],
tempShowTasks: [],
}
},
@ -156,7 +156,7 @@ export default {
},
list() {
const {dashboard, completeTask} = this;
const {dashboard, tempShowTasks} = this;
let data = [];
switch (dashboard) {
case 'today':
@ -166,12 +166,8 @@ export default {
data = this.transforTasks(this.dashboardTask.overdue);
break
}
if (completeTask.length > 0) {
completeTask.forEach(task => {
if (!data.find(({id}) => id == task.id)) {
data.push(task);
}
})
if (tempShowTasks.length > 0) {
data.push(...tempShowTasks);
}
return data.sort((a, b) => {
return $A.Date(a.end_at) - $A.Date(b.end_at);
@ -181,10 +177,10 @@ export default {
watch: {
'$route'() {
this.completeTask = [];
this.tempShowTasks = [];
},
dashboard() {
this.completeTask = [];
this.tempShowTasks = [];
}
},
@ -196,7 +192,7 @@ export default {
this.updateTask(task, {
complete_at: $A.formatDate("Y-m-d H:i:s")
}).then(() => {
this.completeTask.push(task)
this.tempShowTasks.push(task)
})
break;
case 'uncomplete':
@ -204,10 +200,7 @@ export default {
this.updateTask(task, {
complete_at: false
}).then(() => {
let index = this.completeTask.findIndex(({id}) => id == task.id)
if (index > -1) {
this.completeTask.splice(index, 1)
}
this.tempShowTasks = this.tempShowTasks.filter(({id}) => id != task.id)
})
break;
case 'archived':

View File

@ -1,7 +1,7 @@
<template>
<div class="page-project">
<ProjectList/>
<ProjectDialog v-if="projectParameters('chat')"/>
<ProjectDialog v-if="projectParameter('chat')"/>
</div>
</template>
@ -22,7 +22,7 @@ export default {
},
computed: {
...mapGetters(['projectParameters']),
...mapGetters(['projectParameter']),
},
watch: {

View File

@ -138,8 +138,8 @@ export default {
* @param state
* @param data|{key, project_id}
*/
toggleProjectParameters({state}, data) {
$A.execMainDispatch("toggleProjectParameters", data)
toggleProjectParameter({state}, data) {
$A.execMainDispatch("toggleProjectParameter", data)
//
let key = data;
let project_id = state.projectId;
@ -148,28 +148,18 @@ export default {
project_id = data.project_id;
}
if (project_id) {
let index = state.cacheProjectParameters.findIndex(item => item.project_id == project_id)
let index = state.cacheProjectParameter.findIndex(item => item.project_id == project_id)
if (index === -1) {
state.cacheProjectParameters.push({
project_id,
card: true,
cardInit: false,
chat: false,
showMy: true,
showHelp: true,
showUndone: true,
showCompleted: false,
completedTask: false,
});
index = state.cacheProjectParameters.findIndex(item => item.project_id == project_id)
state.cacheProjectParameter.push(state.method.projectParameterTemplate(project_id));
index = state.cacheProjectParameter.findIndex(item => item.project_id == project_id)
}
const cache = state.cacheProjectParameters[index];
const cache = state.cacheProjectParameter[index];
if (!state.method.isJson(key)) {
key = {[key]: !cache[key]};
}
state.cacheProjectParameters.splice(index, 1, Object.assign(cache, key))
state.cacheProjectParameter.splice(index, 1, Object.assign(cache, key))
setTimeout(() => {
state.method.setStorage("cacheProjectParameters", state.cacheProjectParameters);
state.method.setStorage("cacheProjectParameter", state.cacheProjectParameter);
});
}
},
@ -395,7 +385,7 @@ export default {
state.cacheColumns = state.columns = [];
state.cacheTasks = state.tasks = [];
//
state.method.setStorage("cacheProjectParameters", state.cacheProjectParameters);
state.method.setStorage("cacheProjectParameter", state.cacheProjectParameter);
state.method.setStorage("cacheServerUrl", state.cacheServerUrl);
state.method.setStorage("cacheLoginEmail", cacheLoginEmail);
dispatch("saveUserInfo", state.method.isJson(userInfo) ? userInfo : state.userInfo);
@ -787,9 +777,9 @@ export default {
dispatch("saveColumn", data.data);
// 判断只有1列的时候默认版面为表格模式
if (state.columns.filter(item => item.project_id == project_id).length === 1) {
const cache = state.cacheProjectParameters.find(item => item.project_id == project_id) || {};
const cache = state.cacheProjectParameter.find(item => item.project_id == project_id) || {};
if (typeof cache.cardInit === "undefined" || cache.cardInit === false) {
dispatch("toggleProjectParameters", {
dispatch("toggleProjectParameter", {
project_id,
key: {
card: false,

View File

@ -24,25 +24,15 @@ export default {
* @param state
* @returns {(function(*): (boolean|*))|*}
*/
projectParameters(state) {
projectParameter(state) {
return function (key) {
if (!state.projectId) {
return false;
}
let cache = state.cacheProjectParameters.find(({project_id}) => project_id == state.projectId);
let cache = state.cacheProjectParameter.find(({project_id}) => project_id == state.projectId);
if (!cache) {
cache = {
project_id: state.projectId,
card: true,
cardInit: false,
chat: false,
showMy: true,
showHelp: true,
showUndone: true,
showCompleted: false,
completedTask: false,
}
state.cacheProjectParameters.push(cache);
cache = state.method.projectParameterTemplate(state.projectId)
state.cacheProjectParameter.push(cache);
}
return cache && !!cache[key];
}
@ -73,7 +63,7 @@ export default {
* @param state
* @returns {unknown[]}
*/
myTasks(state) {
ownerTasks(state) {
return state.tasks.filter(({complete_at, owner}) => {
if (complete_at) {
return false;
@ -137,7 +127,7 @@ export default {
const todayStart = $A.Date($A.formatDate("Y-m-d 00:00:00")),
todayEnd = $A.Date($A.formatDate("Y-m-d 23:59:59")),
todayNow = $A.Date($A.formatDate("Y-m-d H:i:s"));
const todayTasks = getters.myTasks.filter(task => {
const todayTasks = getters.ownerTasks.filter(task => {
if (!task.end_at) {
return false;
}
@ -145,7 +135,7 @@ export default {
end = $A.Date(task.end_at);
return (start <= todayStart && todayStart <= end) || (start <= todayEnd && todayEnd <= end) || (start > todayStart && todayEnd > end);
})
const overdueTasks = getters.myTasks.filter(task => {
const overdueTasks = getters.ownerTasks.filter(task => {
if (!task.end_at) {
return false;
}

View File

@ -245,6 +245,20 @@ const method = {
return defaultVal ? defaultVal : "";
}
},
projectParameterTemplate(project_id) {
return {
project_id,
card: true,
cardInit: false,
chat: false,
showMy: true,
showHelp: true,
showUndone: true,
showCompleted: false,
completedTask: false,
}
}
};
// 方法类
@ -256,17 +270,21 @@ state.windowMax768 = window.innerWidth <= 768;
// 数据缓存
state.cacheLoading = {};
state.cacheDrawerOverlay = [];
// User
state.cacheUserActive = {};
state.cacheUserWait = [];
state.cacheUserBasic = state.method.getStorageArray("cacheUserBasic");
// Dialog
state.cacheDialogs = state.method.getStorageArray("cacheDialogs");
// Project
state.cacheProjects = state.method.getStorageArray("cacheProjects");
state.cacheColumns = state.method.getStorageArray("cacheColumns");
state.cacheTasks = state.method.getStorageArray("cacheTasks");
state.cacheProjectParameters = state.method.getStorageArray("cacheProjectParameters");
state.cacheProjectParameter = state.method.getStorageArray("cacheProjectParameter");
// ServerUrl
state.cacheServerUrl = state.method.getStorageString("cacheServerUrl")
if (state.cacheServerUrl && window.systemInformation) {