153 lines
4.9 KiB
JavaScript
Vendored
153 lines
4.9 KiB
JavaScript
Vendored
export default {
|
|
/**
|
|
* 当前打开的项目
|
|
* @param state
|
|
* @returns {{}|{readonly id?: *}}
|
|
*/
|
|
projectData(state) {
|
|
let projectId = state.projectId;
|
|
if (projectId == 0) {
|
|
projectId = $A.runNum(window.__projectId);
|
|
}
|
|
if (projectId > 0) {
|
|
window.__projectId = projectId;
|
|
const project = state.cacheProjects.find(({id}) => id == projectId);
|
|
if (project) {
|
|
return project;
|
|
}
|
|
}
|
|
return {};
|
|
},
|
|
|
|
/**
|
|
* 当前打开的项目面板参数
|
|
* @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);
|
|
}
|
|
return cache && !!cache[key];
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 当前打开的任务
|
|
* @param state
|
|
* @returns {{}|{readonly id?: *}}
|
|
*/
|
|
taskData(state) {
|
|
let taskId = state.taskId;
|
|
if (taskId == 0) {
|
|
taskId = $A.runNum(window.__taskId);
|
|
}
|
|
if (taskId > 0) {
|
|
window.__taskId = taskId;
|
|
const task = state.cacheTasks.find(({id}) => id == taskId);
|
|
if (task) {
|
|
return task;
|
|
}
|
|
}
|
|
return {};
|
|
},
|
|
|
|
/**
|
|
* 转换任务列表
|
|
* @returns {function(*): *}
|
|
*/
|
|
transforTasks(state) {
|
|
return function (list) {
|
|
return list.filter(({parent_id}) => {
|
|
if (parent_id > 0) {
|
|
if (list.find(({id}) => id == parent_id)) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}).map(task => {
|
|
if (task.parent_id > 0) {
|
|
// 子任务
|
|
const data = state.cacheTasks.find(({id}) => id == task.parent_id);
|
|
if (data) {
|
|
return Object.assign({}, data, {
|
|
id: task.id,
|
|
parent_id: task.parent_id,
|
|
name: task.name,
|
|
start_at: task.start_at,
|
|
end_at: task.end_at,
|
|
complete_at: task.complete_at,
|
|
_time: task._time,
|
|
|
|
flow_item_id: task.flow_item_id,
|
|
flow_item_name: task.flow_item_name,
|
|
flow_item_status: task.flow_item_status,
|
|
|
|
sub_top: true,
|
|
sub_my: [],
|
|
});
|
|
} else {
|
|
return Object.assign({}, task, {
|
|
sub_top: true,
|
|
sub_my: [],
|
|
});
|
|
}
|
|
} else {
|
|
// 主任务
|
|
return Object.assign({}, task, {
|
|
sub_top: false,
|
|
sub_my: list.filter(({parent_id}) => parent_id == task.id),
|
|
});
|
|
}
|
|
})
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 仪表盘任务数据
|
|
* @param state
|
|
* @returns {{overdue: *, today: *}}
|
|
*/
|
|
dashboardTask(state) {
|
|
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 filterTask = (task, chackCompleted = true) => {
|
|
if (task.archived_at) {
|
|
return false;
|
|
}
|
|
if (task.complete_at && chackCompleted === true) {
|
|
return false;
|
|
}
|
|
if (!task.end_at) {
|
|
return false;
|
|
}
|
|
return task.owner;
|
|
}
|
|
let array = state.cacheTasks.filter(task => filterTask(task));
|
|
let tmps = state.taskCompleteTemps.filter(task => filterTask(task, false));
|
|
if (tmps.length > 0) {
|
|
array = $A.cloneJSON(array)
|
|
array.push(...tmps);
|
|
}
|
|
const todayTasks = array.filter(task => {
|
|
const start = $A.Date(task.start_at),
|
|
end = $A.Date(task.end_at);
|
|
return (start <= todayStart && todayStart <= end) || (start <= todayEnd && todayEnd <= end) || (start > todayStart && todayEnd > end);
|
|
})
|
|
const overdueTasks = array.filter(task => {
|
|
return $A.Date(task.end_at) <= todayNow;
|
|
})
|
|
return {
|
|
today: todayTasks,
|
|
overdue: overdueTasks,
|
|
}
|
|
},
|
|
}
|