no message
This commit is contained in:
parent
0b4e1f3dee
commit
aad621bd84
@ -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,
|
||||
|
@ -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"></i></div>
|
||||
<div><i class="taskfont"></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')"></i>
|
||||
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showMy')"></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')"></i>
|
||||
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showHelp')"></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')"></i>
|
||||
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showUndone')"></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')"></i>
|
||||
<i class="taskfont" @click="$store.dispatch('toggleProjectParameter', 'showCompleted')"></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 = [];
|
||||
},
|
||||
|
||||
|
@ -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':
|
||||
|
@ -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: {
|
||||
|
32
resources/assets/js/store/actions.js
vendored
32
resources/assets/js/store/actions.js
vendored
@ -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,
|
||||
|
24
resources/assets/js/store/getters.js
vendored
24
resources/assets/js/store/getters.js
vendored
@ -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;
|
||||
}
|
||||
|
20
resources/assets/js/store/state.js
vendored
20
resources/assets/js/store/state.js
vendored
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user