|
|
@ -10,112 +10,6 @@ export const filter = { |
|
|
|
if (!data || !data.length) return []; |
|
|
|
return data.filter(item => start <= +item.endTime && end >= +item.startTime); |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 角色 过滤获取到的数据 根据开始截止时间 |
|
|
|
* @param {object} data 缓存拿到的数据 |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
roles(data) { |
|
|
|
if (!data || !data.length) return []; |
|
|
|
return data; |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 定期任务 过滤获取到的数据 根据开始截止时间 |
|
|
|
* @param {object} data 缓存拿到的数据 |
|
|
|
* @param {number} timeNode 时间基准点 ms |
|
|
|
* @param {number} queryNum 颗粒度数量 |
|
|
|
* @param {number} timeUnit 时间颗粒度 |
|
|
|
* @param {number} queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含 |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
planTask(data, timeNode, queryNum, timeUnit, queryType) { |
|
|
|
if (!data || !data.length) return []; |
|
|
|
if (queryType === 0) { |
|
|
|
// 计算颗粒度 对应的 dayjs add 的单位
|
|
|
|
let target = uni.$t.timeConfig.timeUnits.find(item => item.id === timeUnit); |
|
|
|
// TODO: 缺少通过时间颗粒度筛选数据 任务没有返回时间颗粒度标签
|
|
|
|
let start = uni.$t.time.add(+timeNode, -queryNum, target.granularity).valueOf(); |
|
|
|
let arr = []; |
|
|
|
arr = data.filter(item => start <= +item.planStart && +timeNode > +item.planEnd); |
|
|
|
|
|
|
|
if (!arr || !arr.length) { |
|
|
|
// 开始时间往前推
|
|
|
|
let resultS = []; |
|
|
|
let againStart = uni.$t.time.add(start, -1, target.granularity).valueOf(); |
|
|
|
let againArr = data.filter(item => againStart >= +item.planStart); |
|
|
|
if (againArr && againArr.length) { |
|
|
|
let sTime = uni.$t.time.setTimestampToStr(+againArr[0].planStart); |
|
|
|
data.forEach(item => { |
|
|
|
if (uni.$t.time.isSame(uni.$moment(sTime.date).valueOf(), +item.planStart, target.granularity)) { |
|
|
|
resultS.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
return resultS; |
|
|
|
} else { |
|
|
|
return arr; |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 计算颗粒度 对应的 dayjs add 的单位
|
|
|
|
let target = uni.$t.timeConfig.timeUnits.find(item => item.id === timeUnit); |
|
|
|
// TODO: 缺少通过时间颗粒度筛选数据 任务没有返回时间颗粒度标签
|
|
|
|
let end = uni.$t.time.add(timeNode, +queryNum - 1, target.granularity).valueOf(); |
|
|
|
let arr = []; |
|
|
|
arr = data.filter(item => end >= +item.planEnd && +timeNode <= +item.planStart); |
|
|
|
|
|
|
|
if (!arr || !arr.length) { |
|
|
|
// 结束时间往后推
|
|
|
|
let resultE = []; |
|
|
|
let againEnd = uni.$t.time.add(end, 1, target.granularity).valueOf(); |
|
|
|
let againEndArr = data.filter(item => againEnd <= +item.planStart); |
|
|
|
if (againEndArr) { |
|
|
|
let eTime = uni.$t.time.setTimestampToStr(+againEndArr[againEndArr.length - 1].planStart); |
|
|
|
data.forEach(item => { |
|
|
|
if (uni.$t.time.isSame(uni.$moment(eTime.date).valueOf(), +item.planEnd, target.granularity)) { |
|
|
|
resultE.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
return resultE; |
|
|
|
} else { |
|
|
|
return arr; |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 永久日常任务 过滤获取到的数据 根据开始截止时间 |
|
|
|
* @param {object} data 缓存拿到的数据 |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
fixedTasks(data) { |
|
|
|
if (!data || !data.length) return []; |
|
|
|
return data; |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 日常任务 过滤获取到的数据 根据开始截止时间 |
|
|
|
* @param {object} data 缓存拿到的数据 |
|
|
|
* @param {number} timeNode 时间基准点 ms |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
dailyTask(data, timeNode) { |
|
|
|
if (!data || !data.length) return []; |
|
|
|
// TODO: 缺少通过时间颗粒度筛选数据 任务没有返回时间颗粒度标签
|
|
|
|
return data.filter(item => timeNode <= +item.endTime && timeNode >= +item.startTime); |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 插件 过滤获取到的数据 根据插件id |
|
|
|
* @param {object} data 缓存拿到的数据 |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
plugin(data) { |
|
|
|
if (!data || !data.id) return null; |
|
|
|
return data; |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|
export default { |
|
|
@ -165,239 +59,4 @@ export default { |
|
|
|
uni.$t.storage.setStorage('projects', []); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 当前显示的角色信息 获取 |
|
|
|
* @param {object} params |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
async getShowRole(projectId) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`roles_${projectId}`); |
|
|
|
return filter.roles(JSON.parse(data)); |
|
|
|
} catch (error) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 当前显示的角色信息 存 |
|
|
|
* @param {array} data |
|
|
|
*/ |
|
|
|
putShowRole(projectId, data) { |
|
|
|
try { |
|
|
|
if (!data || !data.visibleList || !data.visibleList.length) return; // 服务端没数据不做操作
|
|
|
|
let value = uni.$t.storage.getStorageSync(`roles_${projectId}`); |
|
|
|
let locals = value ? JSON.parse(value) : null; |
|
|
|
if (!locals || !locals.length) { |
|
|
|
// 本地没数据
|
|
|
|
locals = data || null; |
|
|
|
} else { |
|
|
|
// 本地有数据
|
|
|
|
data.invisibleList.forEach(item => { |
|
|
|
let invisibleListLocalData = locals.invisibleList.find(local => item.id === local.id); |
|
|
|
if (invisibleListLocalData) { |
|
|
|
// 有相同数据 就用新的data里的数据
|
|
|
|
invisibleListLocalData = item; |
|
|
|
} else { |
|
|
|
// 没有就直接存本地
|
|
|
|
locals.invisibleList.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
data.visibleList.forEach(item => { |
|
|
|
let localData = locals.visibleList.find(local => item.id === local.id); |
|
|
|
if (localData) { |
|
|
|
// 有相同数据 就用新的data里的数据
|
|
|
|
localData = item; |
|
|
|
} else { |
|
|
|
// 没有就直接存本地
|
|
|
|
locals.visibleList.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.storage.setStorage(`roles_${projectId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
uni.$t.storage.setStorage(`roles_${projectId}`, []); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 定期任务 获取 |
|
|
|
* @param {number} startTime |
|
|
|
* @param {number} endTime |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
async getStorageRegularTask(params) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`plan_task_${params.projectId}_${params.roleId}`); |
|
|
|
return filter.planTask(JSON.parse(data), params.timeNode, params.queryNum, params.timeUnit, params.queryType); |
|
|
|
} catch (error) { |
|
|
|
return []; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 定期任务 存 |
|
|
|
* @param {array} data |
|
|
|
*/ |
|
|
|
putStorageRegularTask(params, data) { |
|
|
|
try { |
|
|
|
if (!data || !data.length) return; // 服务端没数据不做操作
|
|
|
|
let value = uni.$t.storage.getStorageSync(`plan_task_${params.projectId}_${params.roleId}`); |
|
|
|
let locals = value ? JSON.parse(value) : []; |
|
|
|
if (!locals || !locals.length) { |
|
|
|
// 本地没数据
|
|
|
|
locals = data || []; |
|
|
|
} else { |
|
|
|
// 本地有数据
|
|
|
|
data.forEach(item => { |
|
|
|
let localData = locals.find(local => item.id === local.id); |
|
|
|
if (localData) { |
|
|
|
// 有相同数据 就用新的data里的数据
|
|
|
|
localData = item; |
|
|
|
} else { |
|
|
|
// 没有就直接存本地
|
|
|
|
locals.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.storage.setStorage(`plan_task_${params.projectId}_${params.roleId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
uni.$t.storage.setStorage(`plan_task_${params.projectId}_${params.roleId}`, []); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 永久的日常任务 获取 |
|
|
|
* @param {number} startTime |
|
|
|
* @param {number} endTime |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
async getStoragePermanent(params) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`fixed_tasks_${params.projectId}_${params.roleId}`); |
|
|
|
return filter.fixedTasks(JSON.parse(data)); |
|
|
|
} catch (error) { |
|
|
|
return []; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 永久的日常任务 存 |
|
|
|
* @param {array} data |
|
|
|
*/ |
|
|
|
putStoragePermanent(params, data) { |
|
|
|
try { |
|
|
|
if (!data || !data.length) return; // 服务端没数据不做操作
|
|
|
|
let value = uni.$t.storage.getStorageSync(`fixed_tasks_${params.projectId}_${params.roleId}`); |
|
|
|
let locals = value ? JSON.parse(value) : []; |
|
|
|
if (!locals || !locals.length) { |
|
|
|
// 本地没数据
|
|
|
|
locals = data || []; |
|
|
|
} else { |
|
|
|
// 本地有数据
|
|
|
|
data.forEach((item, index) => { |
|
|
|
let localData = locals.find(local => item.detailId === local.detailId); |
|
|
|
if (localData) { |
|
|
|
// 有相同数据 就用新的data里的数据
|
|
|
|
localData = item; |
|
|
|
} else { |
|
|
|
locals.splice(index, 1); |
|
|
|
// 没有就直接存本地
|
|
|
|
locals.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.storage.setStorage(`fixed_tasks_${params.projectId}_${params.roleId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
uni.$t.storage.setStorage(`fixed_tasks_${params.projectId}_${params.roleId}`, []); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 日常任务 获取 |
|
|
|
* @param {number} timeNode |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
async getDailyTask(params) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`variable_tasks_${params.projectId}_${params.roleId}`); |
|
|
|
return filter.dailyTask(JSON.parse(data), params.timeNode); |
|
|
|
} catch (error) { |
|
|
|
return []; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 日常任务 存 |
|
|
|
* @param {array} data |
|
|
|
*/ |
|
|
|
putDailyTask(params, data) { |
|
|
|
try { |
|
|
|
if (!data || !data.length) return; // 服务端没数据不做操作
|
|
|
|
let value = uni.$t.storage.getStorageSync(`variable_tasks_${params.projectId}_${params.roleId}`); |
|
|
|
let locals = value ? JSON.parse(value) : []; |
|
|
|
if (!locals || !locals.length) { |
|
|
|
// 本地没数据
|
|
|
|
locals = data || []; |
|
|
|
} else { |
|
|
|
// 本地有数据
|
|
|
|
data.forEach(item => { |
|
|
|
let localData = locals.find(local => item.detailId === local.detailId); |
|
|
|
if (localData) { |
|
|
|
// 有相同数据 就用新的data里的数据
|
|
|
|
localData = item; |
|
|
|
} else { |
|
|
|
// 没有就直接存本地
|
|
|
|
locals.push(item); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.storage.setStorage(`variable_tasks_${params.projectId}_${params.roleId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
uni.$t.storage.setStorage(`variable_tasks_${params.projectId}_${params.roleId}`, []); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 插件信息 获取 |
|
|
|
* @param {string} pluginId |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
async getPlugin(pluginId) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`plugin_${pluginId}`); |
|
|
|
return filter.plugin(JSON.parse(data)); |
|
|
|
} catch (error) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 插件信息 存 |
|
|
|
* @param {string} pluginId |
|
|
|
* @param {object} data |
|
|
|
*/ |
|
|
|
putPlugin(pluginId, data) { |
|
|
|
try { |
|
|
|
if (!data || !data.id) return; // 服务端没数据不做操作
|
|
|
|
let value = uni.$t.storage.getStorageSync(`plugin_${pluginId}`); |
|
|
|
let locals = value ? JSON.parse(value) : null; |
|
|
|
if (!locals || !locals.length) { |
|
|
|
// 本地没数据
|
|
|
|
locals = data || null; |
|
|
|
} else { |
|
|
|
// 本地有数据
|
|
|
|
locals = data; |
|
|
|
} |
|
|
|
uni.$t.storage.setStorage(`plugin_${pluginId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
uni.$t.storage.setStorage(`plugin_${pluginId}`, null); |
|
|
|
} |
|
|
|
}, |
|
|
|
}; |
|
|
|