|
|
@ -10,6 +10,66 @@ 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 时间颗粒度 |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
planTask(data, timeNode, queryNum, timeUnit) { |
|
|
|
if (!data || !data.length) return []; |
|
|
|
// 计算颗粒度 对应的 dayjs add 的单位
|
|
|
|
const target = uni.$t.timeConfig.timeUnits.find(item => item.id === timeUnit); |
|
|
|
// TODO: 缺少通过时间颗粒度筛选数据 任务没有返回时间颗粒度标签
|
|
|
|
const start = uni.$t.time.add(timeNode, -queryNum, target.granularity).valueOf(); |
|
|
|
const end = uni.$t.time.add(timeNode, +queryNum - 1, target.granularity).valueOf(); |
|
|
|
return data.filter(item => start <= +item.endTime && end >= +item.startTime); |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 永久日常任务 过滤获取到的数据 根据开始截止时间 |
|
|
|
* @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 { |
|
|
@ -54,6 +114,7 @@ export default { |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.cache.checkCapacity(); |
|
|
|
uni.$t.storage.setStorage('projects', locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
@ -69,7 +130,7 @@ export default { |
|
|
|
async getShowRole(projectId) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`roles_${projectId}`); |
|
|
|
return JSON.parse(data); |
|
|
|
return filter.roles(JSON.parse(data)); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
return null; |
|
|
@ -111,6 +172,7 @@ export default { |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.cache.checkCapacity(); |
|
|
|
uni.$t.storage.setStorage(`roles_${projectId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
@ -127,7 +189,7 @@ export default { |
|
|
|
async getStorageRegularTask(params) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`plan_task_${params.projectId}_${params.roleId}`); |
|
|
|
return JSON.parse(data); |
|
|
|
return filter.planTask(JSON.parse(data), params.timeNode, params.queryNum, params.timeUnit); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
return []; |
|
|
@ -159,6 +221,7 @@ export default { |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.cache.checkCapacity(); |
|
|
|
uni.$t.storage.setStorage(`plan_task_${params.projectId}_${params.roleId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
@ -174,8 +237,8 @@ export default { |
|
|
|
*/ |
|
|
|
async getStoragePermanent(params) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`fixed_tasks_${params.projectId}`); |
|
|
|
return JSON.parse(data); |
|
|
|
const data = await uni.$t.storage.getStorage(`fixed_tasks_${params.projectId}_${params.roleId}`); |
|
|
|
return filter.fixedTasks(JSON.parse(data)); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
return []; |
|
|
@ -189,7 +252,7 @@ export default { |
|
|
|
putStoragePermanent(params, data) { |
|
|
|
try { |
|
|
|
if (!data || !data.length) return; // 服务端没数据不做操作
|
|
|
|
let value = uni.$t.storage.getStorageSync(`fixed_tasks_${params.projectId}`); |
|
|
|
let value = uni.$t.storage.getStorageSync(`fixed_tasks_${params.projectId}_${params.roleId}`); |
|
|
|
let locals = value ? JSON.parse(value) : []; |
|
|
|
if (!locals || !locals.length) { |
|
|
|
// 本地没数据
|
|
|
@ -208,23 +271,23 @@ export default { |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
uni.$t.storage.setStorage(`fixed_tasks_${params.projectId}`, locals); |
|
|
|
uni.$t.cache.checkCapacity(); |
|
|
|
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}`, []); |
|
|
|
uni.$t.storage.setStorage(`fixed_tasks_${params.projectId}_${params.roleId}`, []); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 日常任务 获取 |
|
|
|
* @param {number} startTime |
|
|
|
* @param {number} endTime |
|
|
|
* @param {number} timeNode |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
async getDailyTask(params) { |
|
|
|
try { |
|
|
|
const data = await uni.$t.storage.getStorage(`variable_tasks_${params.projectId}`); |
|
|
|
return JSON.parse(data); |
|
|
|
const data = await uni.$t.storage.getStorage(`variable_tasks_${params.projectId}_${params.roleId}`); |
|
|
|
return filter.dailyTask(JSON.parse(data), params.timeNode); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
return []; |
|
|
@ -238,29 +301,82 @@ export default { |
|
|
|
putDailyTask(params, data) { |
|
|
|
try { |
|
|
|
if (!data || !data.length) return; // 服务端没数据不做操作
|
|
|
|
let value = uni.$t.storage.getStorageSync(`variable_tasks_${params.projectId}`); |
|
|
|
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, index) => { |
|
|
|
data.forEach(item => { |
|
|
|
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(`variable_tasks_${params.projectId}`, locals); |
|
|
|
uni.$t.cache.checkCapacity(); |
|
|
|
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}`, []); |
|
|
|
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) { |
|
|
|
console.error('error: ', 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.cache.checkCapacity(); |
|
|
|
uni.$t.storage.setStorage(`plugin_${pluginId}`, locals); |
|
|
|
} catch (error) { |
|
|
|
console.error('error: ', error); |
|
|
|
uni.$t.storage.setStorage(`plugin_${pluginId}`, null); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 检测local Storage容量
|
|
|
|
checkCapacity() { |
|
|
|
// if (window.localStorage) {
|
|
|
|
// console.log('浏览器不支持localStorage ');
|
|
|
|
// const capacity = JSON.stringify(localStorage).length;
|
|
|
|
// console.log('capacity: ', capacity);
|
|
|
|
// let max = 1024 * 1024 * 5;
|
|
|
|
// if (capacity >= max) {
|
|
|
|
// uni.$t.storage.clearStorage();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
}, |
|
|
|
}; |
|
|
|