You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
328 lines
7.6 KiB
328 lines
7.6 KiB
import { getGlobal, getPermanent } from 'apis';
|
|
|
|
export default {
|
|
namespaced: true,
|
|
|
|
state: {
|
|
scrollTop: 0,
|
|
scrollToTaskId: '', // 时间轴自动滚动的位置
|
|
isShrink: false, // true: 收起, false:展开
|
|
tip: {
|
|
taskId: '', // 当前正在修改状态的任务的id
|
|
show: false,
|
|
status: 0, // 所点击任务的当前状态码
|
|
text: '',
|
|
left: 0, // 鼠标点击位置距离左边的距离
|
|
top: 0, // 鼠标点击位置距离上边的距离
|
|
},
|
|
timeNode: new Date().getTime(), // 时间基准点
|
|
timeUnit: 4, // 时间颗粒度
|
|
topEnd: false, // 时间轴向上查任务到顶了
|
|
bottomEnd: false, // 时间轴向下查任务到底了
|
|
permanents: [], // 永久日常任务
|
|
dailyTasks: [], // 日常任务
|
|
tasks: [], // 所有的定期任务
|
|
showSkeleton: false, // 定期任务骨架屏
|
|
newProjectInfo: {},
|
|
showScrollTo: false, // 是否可以设置时间轴自动滚动的位置
|
|
taskDetail: {}, // 当前点击任务信息
|
|
},
|
|
|
|
getters: {
|
|
// 所有的日常任务 永久 + 可变 日常任务
|
|
globals({ dailyTasks, permanents }) {
|
|
return [...permanents, ...dailyTasks];
|
|
},
|
|
|
|
// unitConfig({ timeUnit }) {
|
|
// const target = uni.$t.timeConfig.timeUnits.find(item => item.id === timeUnit);
|
|
// return target;
|
|
// },
|
|
|
|
// 计算任务开始时间的格式
|
|
startTimeFormat(state, { unitConfig }) {
|
|
return unitConfig.format || 'D日 HH:mm';
|
|
},
|
|
|
|
// 计算颗粒度 对应的 dayjs add 的单位
|
|
timeGranularity(state, { unitConfig }) {
|
|
return unitConfig.granularity;
|
|
},
|
|
},
|
|
|
|
mutations: {
|
|
/**
|
|
* 记录时间轴向上滚动的距离
|
|
* @param { object } state
|
|
* @param { number } num
|
|
*/
|
|
setScrollTop(state, num) {
|
|
state.scrollTop = num;
|
|
},
|
|
|
|
/**
|
|
* 记录时间轴向上滚动的距离
|
|
* @param { object } state
|
|
* @param {string} taskId
|
|
*/
|
|
setScrollToTaskId(state, taskId) {
|
|
state.scrollToTaskId = taskId;
|
|
},
|
|
|
|
/**
|
|
* 设置日常任务当前是否应该处于收缩状态
|
|
* @param { object } state
|
|
* @param { boolean } data
|
|
*/
|
|
setShrink(state, data) {
|
|
state.isShrink = data;
|
|
},
|
|
|
|
/**
|
|
* 设置tip的值
|
|
* @param {object} state
|
|
* @param {object} data
|
|
*/
|
|
setTip(state, data) {
|
|
if (!data) return;
|
|
state.tip = { ...data };
|
|
},
|
|
|
|
/**
|
|
* 是否显示tips
|
|
* @param { object } state
|
|
* @param { boolean } show
|
|
*/
|
|
setTipShow(state, show) {
|
|
state.tip.show = show;
|
|
},
|
|
|
|
/**
|
|
* 是否显示tips
|
|
* @param { object } state
|
|
* @param { number } status
|
|
*/
|
|
setStatus(state, status) {
|
|
state.tip.status = status;
|
|
},
|
|
|
|
/**
|
|
* 设置时间基准点
|
|
* @param { object } state
|
|
* @param { number } data
|
|
*/
|
|
setTimeNode(state, data) {
|
|
state.timeNode = data;
|
|
},
|
|
|
|
/**
|
|
* 设置时间颗粒度
|
|
* @param { object } state
|
|
* @param { number } data
|
|
*/
|
|
setTimeUnit(state, data) {
|
|
state.timeUnit = data;
|
|
},
|
|
|
|
/**
|
|
* 设置向上查到的定期任务数据
|
|
* @param {Object} state
|
|
* @param {Array} data 服务端返回的模板数组
|
|
*/
|
|
setUpTasks(state, data) {
|
|
if (!state.tasks.length) {
|
|
state.tasks = [...data]; // 原来没有数据
|
|
} else {
|
|
state.tasks = [...data, ...state.tasks];
|
|
|
|
const arr = [];
|
|
let flag = false;
|
|
state.tasks.forEach(task => {
|
|
arr.forEach(item => {
|
|
if (task.id === item.id) {
|
|
flag = true;
|
|
}
|
|
});
|
|
|
|
if (!flag) {
|
|
arr.push(task);
|
|
}
|
|
});
|
|
|
|
state.tasks = [...arr];
|
|
// state.tasks = [...data.concat(state.tasks)];
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 设置向下查到的定期任务数据
|
|
* @param {Object} state
|
|
* @param {Array} data 服务端返回的模板数组
|
|
*/
|
|
setDownTasks(state, data) {
|
|
if (!state.tasks && !state.tasks.length) {
|
|
state.tasks = [...data];
|
|
} else {
|
|
state.tasks = [...state.tasks, ...data];
|
|
|
|
const arr = [];
|
|
let flag = false;
|
|
state.tasks.forEach(task => {
|
|
arr.forEach(item => {
|
|
if (task.id === item.id) {
|
|
flag = true;
|
|
}
|
|
});
|
|
|
|
if (!flag) {
|
|
arr.push(task);
|
|
}
|
|
});
|
|
|
|
state.tasks = [...arr];
|
|
// state.tasks = [...state.tasks.concat(data)];
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 添加任务后更新tasks
|
|
* @param {Object} state
|
|
* @param {Array} data 新添加的task
|
|
*/
|
|
updateTasks(state, data) {
|
|
state.tasks = [...data];
|
|
},
|
|
|
|
/**
|
|
* 设置添加任务的位置
|
|
* @param {*} state
|
|
* @param {*} data
|
|
*/
|
|
setAddPosition(state, data) {
|
|
console.log('data: ', data);
|
|
},
|
|
|
|
/**
|
|
* 设置日常任务数据
|
|
* @param {Object} state
|
|
* @param {Array} data 服务端返回的模板数组
|
|
*/
|
|
setDailyTasks(state, data) {
|
|
state.dailyTasks = data || [];
|
|
},
|
|
|
|
/**
|
|
* 设置永久固定任务
|
|
* @param {object} state
|
|
* @param {array} tasks 服务端查询到的永久日常任务书籍
|
|
*/
|
|
setPermanents(state, tasks) {
|
|
state.permanents = tasks || [];
|
|
},
|
|
|
|
/**
|
|
* 设置时间轴是否继续向上查任务
|
|
* @param {Object} state
|
|
* @param {Boolean} show
|
|
*/
|
|
setTopEnd(state, show) {
|
|
state.topEnd = show;
|
|
},
|
|
|
|
/**
|
|
* 设置时间轴是否继续向下查任务
|
|
* @param {Object} state
|
|
* @param {Boolean} show
|
|
*/
|
|
setBottomEnd(state, show) {
|
|
state.bottomEnd = show;
|
|
},
|
|
|
|
// 清空标志位 如切换角色等使用
|
|
clearEndFlag(state) {
|
|
state.topEnd = false;
|
|
state.bottomEnd = false;
|
|
},
|
|
|
|
// 清空定期任务
|
|
clearTasks(state) {
|
|
state.tasks = [];
|
|
},
|
|
|
|
/**
|
|
* 收到消息设置任务状态
|
|
* @param {Object} state
|
|
* @param {Array} data 服务端返回的模板数组
|
|
*/
|
|
setTaskStatus(state, data) {
|
|
const item = state.tasks.find(i => i.id === data.id);
|
|
item.process = data.taskStatus;
|
|
},
|
|
|
|
/**
|
|
* 收到打开新项目消息状态
|
|
* @param {Object} state
|
|
* @param {Array} data 服务端返回的模板数组
|
|
*/
|
|
setNewProjectInfo(state, data) {
|
|
state.newProjectInfo = data;
|
|
},
|
|
|
|
/**
|
|
* 设置骨架屏是否显示
|
|
* @param {Object} state
|
|
* @param {Boolean} show
|
|
*/
|
|
setShowSkeleton(state, show) {
|
|
state.showSkeleton = show;
|
|
},
|
|
|
|
/**
|
|
* 是否设置时间轴自动滚动的位置
|
|
* @param {Object} state
|
|
* @param {Boolean} show
|
|
*/
|
|
setShowScrollTo(state, show) {
|
|
state.showScrollTo = show;
|
|
},
|
|
|
|
/**
|
|
* 设置当前点击的任务信息
|
|
*/
|
|
setTaskDetail(state, show) {
|
|
state.taskDetail = show;
|
|
},
|
|
},
|
|
|
|
actions: {
|
|
/**
|
|
* 根据角色查找永久的日常任务
|
|
* @param {*} commit
|
|
* @param {string} roleId 角色id
|
|
*/
|
|
async getPermanent({ commit }, param) {
|
|
try {
|
|
const data = await getPermanent(param);
|
|
commit('setPermanents', data);
|
|
return data;
|
|
} catch (error) {
|
|
throw new Error(error);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 根据时间和角色查找日常任务
|
|
* @param {*} commit
|
|
* @param {object} param 请求参数 roleId, timeNode, timeUnit
|
|
*/
|
|
async getGlobal({ commit }, param) {
|
|
try {
|
|
const data = await getGlobal(param);
|
|
commit('setDailyTasks', data);
|
|
return data;
|
|
} catch (error) {
|
|
throw new Error(error);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
|