diff --git a/CHANGELOG.md b/CHANGELOG.md index c0845a1..5d6e848 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,55 @@ - | 项目api url设置 | 6cd5245 - | 项目列表, 项目url | 32e005b - | 首页项目样式改变 | 8514c85 + - | api封装 | [7d4edfc](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7d4edfc) + - | cache indexedDB处理 | [3388967](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/3388967) + calendar, tall.js | 上下滑动切换日历的模式,tall.js中domain根据环境变量切换 | [364e25d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/364e25d) + - | db store | [6414c4f](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/6414c4f) + default plugin | 添加默认插件;项目列表;全局项目最大高度设置 | [ed1d87b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ed1d87b) + - | indexedDB | [687394e](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/687394e) + pinch | alloy finger实现图片的pinch放大缩小 | [de01343](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/de01343) + plugin | 插件添加了token及param参数 | [aeb0292](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/aeb0292) + - | post 封装 | [da52e94](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/da52e94) + - | tall插件封装 | [1bcb920](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1bcb920) + task status | 任务状态切换未完 | [7ffd135](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7ffd135) + - | ws storage | [21b3a06](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/21b3a06) + - | 上传逻辑变化 | [3ff1dc2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/3ff1dc2) + - | 任务状态时间显示 | [56f5183](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/56f5183) + - | 任务进行中状态数字 | [27b7326](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/27b7326) + - | 全局插件及默认插件位置修改 | [6c80d08](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/6c80d08) + - | 向右箭头图标变化 | [8e9ca55](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/8e9ca55) + - | 字体大小更改 | [82cfdd4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/82cfdd4) + - | 存token | [b8a178d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b8a178d) + - | 定期任务面板骨架屏添加 | [b2698c0](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b2698c0) + 富文本插件 | 富文本插件demo测试 | [ed3d644](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ed3d644) + - | 导入wbs | [1224fcb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1224fcb) + - | 导入项目,更新项目 | [5e06adf](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5e06adf) + - | 导入项目后提示并打开项目详情页 | [410f527](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/410f527) + - | 引入dayjs | [29b8b93](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/29b8b93) + - | 提交到本地 | [9cbe411](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/9cbe411) + - | 插件参数处理调整 | [a3e68d3](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a3e68d3) + - | 插件数据获取 | [5b91bdc](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5b91bdc) + - | 日历定位;合并 | [ea3f937](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ea3f937) + - | 日常任务插件调整 | [c1881f9](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c1881f9) + - | 时间基准线,默认插件 | [a33ba1e](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a33ba1e) + - | 时间轴修改状态时提示框增加 | [e841392](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/e841392) + - | 时间轴界面 | [33927e9](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/33927e9) + - | 标题栏变化 | [3898cfe](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/3898cfe) + - | 标题栏变化 | [c0fcd9d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c0fcd9d) + - | 标题栏角色栏全局任务组件新建 | [0500cb4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0500cb4) + - | 模拟接口测试 | [69e7931](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/69e7931) + - | 添加子任务插件 子项目插件 | [7bda7e2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7bda7e2) + - | 添加时间轴上下滚动 | [2b81bbc](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/2b81bbc) + - | 点击日历日期查询项目列表 | [c458385](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c458385) + - | 缓存修改 | [63e1f0d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/63e1f0d) + - | 角色栏实现 | [94cd671](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/94cd671) + - | 设置小红点 | [9316bcb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/9316bcb) + - | 距调整pc端 | [5069aa1](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5069aa1) + - | 配置默认插件接口 | [f0c177d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/f0c177d) + - | 面变化首页变化 | [5e860f1](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5e860f1) + - | 项目api url设置 | [6cd5245](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/6cd5245) + - | 项目列表, 项目url | [32e005b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/32e005b) + - | 首页项目样式改变 | [8514c85](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/8514c85) ### 🎨 代码样式 @@ -131,6 +180,56 @@ - | 设置时间轴自动滚动到当前位置 | a3474f8 - | 跳转详情页返回路径修改 | c5e17c0 - | 骨架屏替换 | e9fdd71 + - | 1.时间轴数据渲染 2.时间基准线 | [d643af2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/d643af2) + - | api 存storage | [81032ba](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/81032ba) + ID1000343 | 解决向下预加载查询参数时间没+1颗粒度;以及滚动加载颗粒度写死的问题 | [940603a](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/940603a), closes [#ID1000343](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/issues/ID1000343) + plugin | 插件解析机制完善 | [0f5a27d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0f5a27d) + project title | 项目标题修改; 切换角色移除script | [5c20017](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5c20017) + roles | 修复默认显示不是我的角色的问题 | [b69f94f](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b69f94f) + role | 切换角色的逻辑修正完善 | [4ae534f](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4ae534f) + task任务逻辑完善 | 减少初始global及regular的不必要请求 | [bd4bd38](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/bd4bd38) + - | title.vue根据页面栈显示返回按钮;标题文本超出显示... | [0cbacf4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0cbacf4) + - | 上下滑动加载定期任务 | [4090d89](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4090d89) + - | 上下滚动时间轴 | [d533a01](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/d533a01) + - | 下拉加载定期任务传参,时间格式化修改 | [0b95a0e](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0b95a0e) + - | 任务开始时间延迟插件 | [992a313](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/992a313) + - | 修改main | [749ae9a](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/749ae9a) + - | 修改定期任务状态0和4时不加载圆圈 | [30e352f](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/30e352f) + - | 修改小红点传参 | [87b20fd](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/87b20fd) + - | 修改报错 | [531c14d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/531c14d) + - | 修改接口路径 | [df6acf2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/df6acf2) + - | 修改角色栏组件 | [a54c601](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a54c601) + - | 切换到默认项目角色没有激活状态的bug | [438d448](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/438d448) + - | 切换日历时查询小红点 | [7091789](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7091789) + - | 初始展示角色修改 | [2ac4053](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/2ac4053) + - | 定期任务key值修改 | [c6688db](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c6688db) + - | 定期任务接口 | [aa4981c](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/aa4981c) + - | 定期任务插件 | [92b3254](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/92b3254) + - | 定期任务未加载时,显示空的时间轴并能上下滑动 | [ce38093](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ce38093) + 定期任务本地缓存和api赋值,未完成 | 定期任务本地缓存和api赋值,未完成 | [b22a366](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b22a366) + - | 定期任务骨架屏修改 | [8ff72dd](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/8ff72dd) + - | 平车演示临时去掉项目快捷方式的toast提示 | [e0b2c23](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/e0b2c23) + - | 手动展开日常任务 | [0a4a622](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0a4a622) + - | 提示信息显示bug及日常任务收缩问题 | [f2f06c5](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/f2f06c5) + - | 插件bug解决 | [41257eb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/41257eb) + - | 收到消息修改任务状态 | [c378063](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c378063) + - | 日历无任务时添加小绿点,时间轴刻度无任务不显示时分 | [0f90868](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0f90868) + - | 日常任务html数据查验 | [880ce5c](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/880ce5c) + - | 日常任务插件遍历时的key值修改 | [cd26285](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/cd26285) + - | 日常任务插件面板高度修改 | [249f9e4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/249f9e4) + - | 时间轴上下滑动 | [4d0ae46](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4d0ae46) + - | 时间轴上下滚动数据加载bug修改 | [e82ede4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/e82ede4) + - | 时间轴插件 | [225d3cc](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/225d3cc) + - | 时间轴无任务时时间刻度加载修改 | [4921672](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4921672) + - | 时间轴滚动位置修改 | [551da63](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/551da63) + - | 时间轴骨架屏修改 | [ca78d02](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ca78d02) + - | 监听时间基本点 | [033fca0](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/033fca0) + - | 角色显示状态修改 | [7d3b906](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7d3b906) + - | 角色栏修改 | [19228d6](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/19228d6) + - | 解决时间轴报错 | [da1eece](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/da1eece) + - | 设置时间轴自动滚动到当前位置 | [a3474f8](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a3474f8) + - | 跳转详情页返回路径修改 | [c5e17c0](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c5e17c0) + - | 骨架屏替换 | [e9fdd71](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/e9fdd71) ### 📝 文档 @@ -182,6 +281,19 @@ - | 组件文件夹新建 | 1421504 - | 角色栏文字颜色修改 | 215c6b3 - | 解决警告 | c932b09 + - | 1.时间轴筛选相同的时间替换数据 2.整理代码 | [e082ccb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/e082ccb) + - | 修改代码格式 | [14123d7](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/14123d7) + - | 修改定期任务骨架屏高度 | [909a734](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/909a734) + - | 小红点api缓存修改 | [e992343](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/e992343) + - | 插件查询及展示 | [4dba770](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4dba770) + - | 整理代码 | [7a55315](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7a55315) + - | 日历的更改 | [7353ac8](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7353ac8) + - | 测试接口 | [215e074](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/215e074) + - | 组件文件夹新建 | [22bfe7b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/22bfe7b) + - | 组件文件夹新建 | [17bb8c9](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/17bb8c9) + - | 组件文件夹新建 | [1421504](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1421504) + - | 角色栏文字颜色修改 | [215c6b3](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/215c6b3) + - | 解决警告 | [c932b09](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c932b09) ### chore @@ -206,4 +318,6 @@ - | style:index | 978f272 - | !2 基础模板v1.1.0 | f5e61dd - | init | c0f1deb - + - | style:index | [978f272](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/978f272) + - | !2 基础模板v1.1.0 | [f5e61dd](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/f5e61dd) + - | init | [c0f1deb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c0f1deb) diff --git a/src/components/Plugin/Plugin.vue b/src/components/Plugin/Plugin.vue index 20d7127..6136b8c 100644 --- a/src/components/Plugin/Plugin.vue +++ b/src/components/Plugin/Plugin.vue @@ -81,28 +81,31 @@ export default { // 获取插件信息 async getPlugin() { const { pluginId, styleType } = this; - const data = await this.$u.api.getOtherPlugin({ - pluginId, - styleType, - }); - if (!data || !data.id) return; - const reg = /data-root=["|']?(\w+)["|']?/gi; - let uuid = ''; - // FIXME: 没有兼容 只有js, 没有html的情况 - if (data.html) { - // 查有没有data-root=“xxx” 有的话 将xxx替换为 pluginTaskId - - if (reg.test(data.html)) { - uuid = RegExp.$1; - const str = data.html.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`); - this.pluginContent = str; + const params = { pluginId, styleType }; + this.$t.$q.getOtherPlugin(params, (err, data) => { + if (err) { + console.error('err: ', err); } else { - this.pluginContent = data.html; - } + if (!data || !data.id) return; + const reg = /data-root=["|']?(\w+)["|']?/gi; + let uuid = ''; + // FIXME: 没有兼容 只有js, 没有html的情况 + if (data.html) { + // 查有没有data-root=“xxx” 有的话 将xxx替换为 pluginTaskId - const str = data.js.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`); - this.handleDom(str); - } + if (reg.test(data.html)) { + uuid = RegExp.$1; + const str = data.html.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`); + this.pluginContent = str; + } else { + this.pluginContent = data.html; + } + + const str = data.js.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`); + this.handleDom(str); + } + } + }); // if (data.js) { // if (reg.test(data.js)) { diff --git a/src/components/Roles/Roles.vue b/src/components/Roles/Roles.vue index 33ef266..243bd24 100644 --- a/src/components/Roles/Roles.vue +++ b/src/components/Roles/Roles.vue @@ -68,7 +68,7 @@ export default { }, methods: { - ...mapActions('task', ['handleRegularTask', 'getPermanent']), + ...mapActions('task', ['handleRegularTask']), ...mapMutations('role', ['setRoleId']), ...mapMutations('task', ['setPermanents', 'clearEndFlag']), diff --git a/src/main.js b/src/main.js index e9c7976..03fe0b7 100644 --- a/src/main.js +++ b/src/main.js @@ -29,6 +29,8 @@ Vue.prototype.$moment = dayjs; Vue.use(uView); Vue.use(Tall); +uni.$moment = dayjs; + dayjs.locale('zh-cn'); App.mpType = 'app'; diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index b7b6e87..d27bd50 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -63,16 +63,20 @@ export default { }); }, - // 查询小红点 - handleFindPoint(start = this.$moment().startOf('day').valueOf(), end = this.$moment().endOf('day').valueOf()) { - // const data = await this.$u.api.findRedPoint(startTime, endTime); - this.$t.$q.findRedPoint(start, end, (err, data) => { - if (err) { - console.err('err: ', err); - } else { - this.setDotList(data); - } - }); + /** + * 查询小红点 + * @param { string } endTime 结束时间 + * @param { string } startTime 开始时间 + */ + async handleFindPoint(start, end) { + try { + const startTime = start || this.$moment().startOf('month').valueOf(); + const endTime = end || this.$moment().endOf('month').valueOf(); + const data = await this.$u.api.findRedPoint(startTime, endTime); + this.setDotList(data); + } catch (error) { + console.log('error: ', error); + } }, // 点击了某个日期 diff --git a/src/pages/project/project.vue b/src/pages/project/project.vue index 9ea4c29..9fefdc2 100644 --- a/src/pages/project/project.vue +++ b/src/pages/project/project.vue @@ -23,14 +23,16 @@ import mixin from '@/mixins/timeline'; export default { mixins: [mixin], data() { - return { height: '' }; + return { height: '', show: false }; }, computed: { ...mapState('user', ['user', 'token']), ...mapState('role', ['visibleRoles', 'roleId']), - ...mapState('task', ['timeNode', 'timeUnit', 'tasks']), + ...mapState('task', ['timeNode', 'timeUnit', 'tasks', 'regularTask']), + ...mapState('project', ['project']), ...mapGetters('task', ['timeGranularity']), + ...mapGetters('project', ['projectId']), }, onLoad(options) { @@ -43,10 +45,10 @@ export default { * 重新根据时间和角色查询普通日常任务 * 永久日常任务不发生改变 */ - async timeNode(val) { + timeNode(val) { if (val && this.roleId) { // 根据时间和角色查找日常任务 - await this.initTasks(); + this.initTasks(); } }, @@ -60,7 +62,8 @@ export default { if (val) { this.setTimeNode(Date.now()); // 根据角色查找永久的日常任务 - this.getPermanent(val); + const params = { roleId: val, projectId: this.projectId }; + this.getPermanent(params); } }, }, @@ -72,12 +75,11 @@ export default { onUnload() { this.clearEndFlag(); this.clearTasks(); + this.setRoleId(); }, methods: { ...mapActions('user', ['getToken']), - ...mapActions('project', ['getProjectById']), - ...mapActions('role', ['getRoles']), ...mapActions('task', ['getRegulars', 'getPermanent', 'getGlobal']), ...mapMutations('user', ['setToken']), ...mapMutations('project', ['setProject', 'setProjectName']), @@ -99,37 +101,63 @@ export default { * 初始化 * @param {object | null} options */ - async init(options) { - try { - if (!this.token) { - // 不论有没有token都直接从userId获取token - // token有过期时间 从本地获取可能是过期 干脆直接从userId获取 - if (!options || !options.u) { - // 参数里没有u (userId)提示 - this.$t.ui.showToast('缺少用户信息参数'); - } else { - await this.getToken(options.u); - } + init(options) { + if (!this.token) { + // 不论有没有token都直接从userId获取token + // token有过期时间 从本地获取可能是过期 干脆直接从userId获取 + if (!options || !options.u) { + // 参数里没有u (userId)提示 + this.$t.ui.showToast('缺少用户信息参数'); + } else { + this.getToken(options.u); } + } - // 参数里有项目名称 就设置标题里的项目名称 - options && options.pname && this.setProjectName(options.pname); + // 参数里有项目名称 就设置标题里的项目名称 + options && options.pname && this.setProjectName(options.pname); - if (!options || !options.p) { - // 没有项目id参数 - this.$t.ui.showToast('缺少项目信息参数'); - } else { - // 根据项目id获取项目信息 - await this.getProjectById({ projectId: options.p }); - // 根据项目id获取角色列表 - await this.getRoles({ projectId: options.p }); - this.setInitialRoleId(this.visibleRoles); - } + if (!options || !options.p) { + // 没有项目id参数 + this.$t.ui.showToast('缺少项目信息参数'); + } else { + // 根据项目id获取项目信息 + this.getProjectById({ projectId: options.p }); + } + }, + + /** + * 通过项目id获取项目信息 + * @param {string} projectId + * @param {object} params 提交的参数 + */ + async getProjectById(params) { + try { + const data = await uni.$u.api.findProjectById(params); + this.setProject(data); + // 根据项目id获取角色列表 + this.getRoles(params); } catch (error) { - console.error('project init function:', error); + console.log('error: ', error || '获取项目信息失败'); } }, + /** + * 通过项目id获取角色信息 + * @param {string} projectId + * @param {object} params 提交的参数 + */ + getRoles(params) { + this.$t.$q.findShowRole(params, (err, data) => { + if (err) { + console.error('err: ', err || '获取角色信息失败'); + } else { + this.setInvisibleRoles(data ? data.invisibleList : []); + this.setVisibleRoles(data ? data.visibleList : []); + this.setInitialRoleId(data ? data.visibleList : []); + } + }); + }, + // 初始化 时间轴 async initTasks() { // 清空日常任务的数据 @@ -153,7 +181,9 @@ export default { }); // 向下加载空数据 this.setNextTasks(); + await this.getInitTasks(); + // 根据项目id获取角色列表 // 从详情页返回时跳转到之前的位置 storage有存储值 this.$nextTick(() => { if (storageTaskId) { @@ -163,32 +193,38 @@ export default { }, // 切换了 颗粒度 || 角色时候 获取初始定期任务 - async getInitTasks() { - // 根据时间基准点和角色查找定期任务 - await this.getTasks({ queryType: 0 }); - await this.getTasks({ queryType: 1 }); - + getInitTasks() { // 预加载 上下的定期任务 - const detailId = this.tasks.findIndex(task => task.detailId); - if (detailId !== -1) { - this.$nextTick(async () => { - const { tasks, timeGranularity } = this; - await this.getTasks({ timeNode: +tasks[0].planStart, queryType: 0, queryNum: 6 }); // 向上拿数据 - // 向下查的时候要再最后一个任务的开始时间的基础上 多加一个时间颗粒度 - const nextQueryTime = +this.$t.time.add(+tasks[tasks.length - 1].planStart, 1, timeGranularity); - await this.getTasks({ timeNode: nextQueryTime, queryType: 1, queryNum: 6 }); // 向下拿数据 - }); - } else { - // 没有任务 上下显示时间刻度 - // 向上加载 - this.setPrevTasks(); - // 向下加载 - this.setNextTasks(); + function fn(that) { + const detailId = that.tasks.findIndex(task => task.detailId); + console.log('detailId: ', detailId); + if (detailId !== -1) { + that.$nextTick(() => { + // 向上拿数据 + const { tasks, timeGranularity } = that; + that.getTasks({ timeNode: +tasks[0].planStart, queryType: 0, queryNum: 6 }); + // 向下拿数据 + const nextQueryTime = +that.$t.time.add(+tasks[tasks.length - 1].planStart, 1, timeGranularity); + that.getTasks({ timeNode: nextQueryTime, queryType: 1, queryNum: 6 }); + }); + } else { + // 没有任务 上下显示时间刻度 + // 向上加载 + // that.setPrevTasks(); + // // 向下加载 + // that.setNextTasks(); + } } + // 根据时间基准点和角色查找定期任务 + this.getTasks({ queryType: 0 }); + + // 根据项目id获取角色列表 + this.getTasks({ queryType: 1 }, fn); }, // 设置 初始显示角色信息 setInitialRoleId(visibleList) { + if (!visibleList || !visibleList.length) return; const index = visibleList.findIndex(item => +item.mine === 1); const currentRole = index > 0 ? visibleList[index] : visibleList[0]; const storageRoleId = this.$t.storage.getStorageSync('roleId'); @@ -207,35 +243,49 @@ export default { * @param {string} query.queryNum 查找颗粒度数量 默认3个 * @param {string} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含 */ - async getTasks(query) { - try { - this.setShowSkeleton(true); - const { roleId, timeNode, timeUnit } = this; - const params = { - roleId, - timeNode: query.timeNode || timeNode, - timeUnit: query.timeUnit || timeUnit, - queryNum: query.queryNum || 3, - queryType: query.queryType, - }; - const res = await this.getRegulars(params); - this.setShowSkeleton(false); - // 0 -> 向上 1 -> 向下 - if (res && res.length) { - this.replacePrevData(res, params.queryType); - } else { - params.queryType === 0 ? this.setPrevTasks() : this.setNextTasks(); + getTasks(query, fn) { + const that = this; + that.setShowSkeleton(true); + const { roleId, timeNode, timeUnit, projectId } = that; + const params = { + roleId, + timeNode: query.timeNode || timeNode, + timeUnit: query.timeUnit || timeUnit, + queryNum: query.queryNum || 3, + queryType: query.queryType, + projectId, + }; + + that.$t.$q.getRegularTask(params, function (err, data) { + console.log('data: ', data); + console.log('that.show: ', that.show); + if (!that.show) { + if (err) { + that.setShowSkeleton(false); + console.error('err: ', err); + } else { + that.show = true; + that.setShowSkeleton(false); + // 0 -> 向上 1 -> 向下 + if (data && data.length) { + that.replacePrevData(data, params.queryType); + that.show = false; + } else { + params.queryType === 0 ? that.setPrevTasks() : that.setNextTasks(); + that.show = false; + } + if (that.tasks.length && fn) { + fn(that); + } + } } - } catch (error) { - this.setShowSkeleton(false); - console.error('error: ', error); - } + }); }, // 获取可变全局任务 getGlobalData() { - const { roleId, timeNode, timeUnit } = this; - const param = { roleId, timeNode, timeUnit }; + const { roleId, timeNode, timeUnit, projectId } = this; + const param = { roleId, timeNode, timeUnit, projectId }; this.getGlobal(param); }, @@ -268,44 +318,57 @@ export default { // 筛选相同的时间替换数据 replacePrevData(data, type) { let newTasks = [...this.tasks]; - for (let i = 0; i < newTasks.length; i++) { - const task = newTasks[i]; - let arr = []; - for (let j = 0; j < data.length; j++) { - const item = data[j]; - // 查找有没有超出时间刻度的时间 - if (+newTasks[0].planStart > +data[0].planStart) { - this.setPrevTasks(); - newTasks = [...this.tasks]; - i--; - break; - } else if (+data[data.length - 1].planStart > +newTasks[newTasks.length - 1].planStart) { - this.setNextTasks(); - newTasks = [...this.tasks]; - i--; - break; - } else { - // 筛选相同的时间替换数据 - const taskItem = this.$t.time.isSame(+task.planStart, +item.planStart, this.timeGranularity); - if (taskItem) { - arr.push(item); - if (task.detailId) { - newTasks.splice(i, 0, item); - } else { - if (arr.length === 1) { - newTasks.splice(i, 1, item); - } - if (arr.length > 1) { + let newDate = this.$u.deepClone(data); + + console.log('newDate: ', newDate); + + if (newDate && newDate.length) { + for (let i = 0; i < newTasks.length; i++) { + // const task = newTasks[i]; + let arr = []; + for (let j = 0; j < newDate.length; j++) { + const item = newDate[j]; + if (newTasks[i].id === item.id) { + console.log('j', j, i); + newTasks[i] = item; + break; + } + // 查找有没有超出时间刻度的时间 + if (+newTasks[0].planStart > +newDate[0].planStart) { + this.setPrevTasks(); + newTasks = [...this.tasks]; + i--; + break; + } else if (+newDate[newDate.length - 1].planStart > +newTasks[newTasks.length - 1].planStart) { + this.setNextTasks(); + newTasks = [...this.tasks]; + i--; + break; + } else { + // 筛选相同的时间替换数据 + const taskItem = this.$t.time.isSame(+newTasks[i].planStart, +item.planStart, this.timeGranularity); + if (taskItem) { + arr.push(item); + if (newTasks[i].detailId) { newTasks.splice(i, 0, item); + } else { + if (arr.length === 1) { + newTasks.splice(i, 1, item); + } + if (arr.length > 1) { + newTasks.splice(i, 0, item); + } } + i++; } - i++; } } } } this.clearTasks(); type === 0 ? this.setUpTasks(newTasks) : this.setDownTasks(newTasks); + console.log('newTasks: ', newTasks.length); + console.log('end'); }, }, }; diff --git a/src/store/project/actions.js b/src/store/project/actions.js index 57b1c9b..5dfa3d4 100644 --- a/src/store/project/actions.js +++ b/src/store/project/actions.js @@ -1,18 +1,3 @@ -const actions = { - /** - * 通过项目id获取项目信息 - * @param {any} commit - * @param {object} params 提交的参数 - */ - async getProjectById({ commit }, params) { - try { - const data = await uni.$u.api.findProjectById(params); - commit('setProject', data); - return data; - } catch (error) { - throw error || '获取项目信息失败'; - } - }, -}; +const actions = {}; export default actions; diff --git a/src/store/role/actions.js b/src/store/role/actions.js index 7ceb712..5dfa3d4 100644 --- a/src/store/role/actions.js +++ b/src/store/role/actions.js @@ -1,19 +1,3 @@ -const actions = { - /** - * 通过项目id获取角色信息 - * @param {any} commit - * @param {object} params 提交的参数 - */ - async getRoles({ commit }, params) { - try { - const res = await uni.$u.api.findShowRole(params); - commit('setInvisibleRoles', res.invisibleList); - commit('setVisibleRoles', res.visibleList); - return res; - } catch (error) { - throw error || '获取角色信息失败'; - } - }, -}; +const actions = {}; export default actions; diff --git a/src/store/task/actions.js b/src/store/task/actions.js index b8dfbfb..40cdb31 100644 --- a/src/store/task/actions.js +++ b/src/store/task/actions.js @@ -4,13 +4,14 @@ const actions = { * @param {*} commit * @param {string} roleId 角色id */ - async getPermanent({ commit }, roleId) { - try { - const data = await uni.$u.api.getPermanent({ roleId }); - commit('setPermanents', data); - } catch (error) { - console.log('task actions getPermanent error: ', error); - } + getPermanent({ commit }, param) { + uni.$t.$q.getPermanent(param, (err, data) => { + if (err) { + console.error('err: ', err); + } else { + commit('setPermanents', data); + } + }); }, /** @@ -18,27 +19,14 @@ const actions = { * @param {*} commit * @param {object} param 请求参数 roleId, timeNode, timeUnit */ - async getGlobal({ commit }, param) { - try { - const data = await uni.$u.api.getGlobal(param); - commit('setDailyTasks', data); - } catch (error) { - console.log('task actions getGlobal error: ', error); - } - }, - - /** - * 根据时间基准点和角色查找定期任务 - * @param {object} param 查询参数 - * @param {number} param.queryType 必填 0 -> 向上 1 -> 向下 - */ - // eslint-disable-next-line - async getRegulars({ commit }, param) { - try { - return await uni.$u.api.getRegularTask(param); - } catch (error) { - throw error || '获取定期任务失败'; - } + getGlobal({ commit }, param) { + uni.$t.$q.getGlobal(param, (err, data) => { + if (err) { + console.error('err: ', err); + } else { + commit('setDailyTasks', data); + } + }); }, }; diff --git a/src/store/task/state.js b/src/store/task/state.js index c2ed496..a4b4fab 100644 --- a/src/store/task/state.js +++ b/src/store/task/state.js @@ -16,8 +16,7 @@ const state = { bottomEnd: false, // 时间轴向下查任务到底了 permanents: [], // 永久日常任务 dailyTasks: [], // 日常任务 - // 定期任务 - tasks: [], + tasks: [], // 所有的定期任务 showSkeleton: false, // 定期任务骨架屏 }; diff --git a/src/utils/cache.js b/src/utils/cache.js index 7bb7ee9..c22e6c5 100644 --- a/src/utils/cache.js +++ b/src/utils/cache.js @@ -10,6 +10,112 @@ 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 { @@ -36,8 +142,8 @@ export default { putProjects(data) { try { if (!data || !data.length) return; // 服务端没数据不做操作 - - let locals = JSON.parse(uni.$t.storage.getStorageSync('projects')) || []; + let value = uni.$t.storage.getStorageSync('projects'); + let locals = value ? JSON.parse(value) : []; if (!locals || !locals.length) { // 本地没数据 locals = data || []; @@ -62,15 +168,168 @@ export default { }, /** - * 小红点 获取 + * 当前显示的角色信息 获取 + * @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) { + console.error('error: ', 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 getDotListByDay(startTime, endTime) { + async getStorageRegularTask(params) { try { - const data = await uni.$t.storage.getStorage('dotList'); - return filter.projects(JSON.parse(data), startTime, endTime); + 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) { + console.error('error: ', 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) { + console.error('error: ', 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) { console.error('error: ', error); return []; @@ -78,20 +337,21 @@ export default { }, /** - * 小红点 存 + * 日常任务 存 * @param {array} data */ - putDotList(data) { + putDailyTask(params, data) { try { if (!data || !data.length) return; // 服务端没数据不做操作 - let locals = JSON.parse(uni.$t.storage.getStorageSync('dotList')) || []; + 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 === local); + let localData = locals.find(local => item.detailId === local.detailId); if (localData) { // 有相同数据 就用新的data里的数据 localData = item; @@ -101,10 +361,49 @@ export default { } }); } - uni.$t.storage.setStorage('dotList', locals); + 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) { + 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.storage.setStorage(`plugin_${pluginId}`, locals); } catch (error) { console.error('error: ', error); - uni.$t.storage.setStorage('dotList', []); + uni.$t.storage.setStorage(`plugin_${pluginId}`, null); } }, }; diff --git a/src/utils/cacheAndRequest.js b/src/utils/cacheAndRequest.js index 8662055..bc35088 100644 --- a/src/utils/cacheAndRequest.js +++ b/src/utils/cacheAndRequest.js @@ -24,7 +24,6 @@ export default { uni.$t.cache .getProjectsByDay(startTime, endTime) .then(data => { - // console.log('cache data: ', data); !remote && fn(null, data); }) .catch(err => !remote && fn(err)); @@ -34,7 +33,6 @@ export default { uni.$u.api .getProjects(startTime, endTime) .then(data => { - // console.log('api data: ', data); remote = true; fn(null, data); // 存api到cache里 @@ -45,17 +43,15 @@ export default { }, /** - * 查询小红点 - * @param { string } endTime 结束时间 - * @param { string } startTime 开始时间 + * 通过项目id获取角色信息 + * @param {object} params 提交的参数 */ - findRedPoint(startTime, endTime, fn) { + findShowRole(params, fn) { let remote = false; // 有缓存 且 服务端数据未返回 就先返回缓存 uni.$t.cache - .getDotListByDay(startTime, endTime) + .getShowRole(params.projectId) .then(data => { - // console.log('cache data: ', data); !remote && fn(null, data); }) .catch(err => !remote && fn(err)); @@ -63,13 +59,127 @@ export default { waitTokenRequest(() => { // 拿到api数据后 再用api的数据 uni.$u.api - .findRedPoint(startTime, endTime) + .findShowRole(params) .then(data => { - // console.log('api data: ', data); remote = true; fn(null, data); // 存api到cache里 - uni.$t.cache.putDotList(data); + uni.$t.cache.putShowRole(params.projectId, data); + }) + .catch(err => fn(err)); + }); + }, + + /** + * 根据时间基准点和角色查找定期任务 + * @param {object} params 提交的参数 + */ + getRegularTask(params, fn) { + let remote = false; + // 有缓存 且 服务端数据未返回 就先返回缓存 + uni.$t.cache + .getStorageRegularTask(params) + .then(data => { + console.log('cache data: ', data); + !remote && fn(null, data); + }) + .catch(err => !remote && fn(err)); + + waitTokenRequest(() => { + // 拿到api数据后 再用api的数据 + uni.$u.api + .getRegularTask(params) + .then(data => { + console.log('api data: ', uni.$u.deepClone(data)); + remote = true; + + fn(null, uni.$u.deepClone(data)); + // 存api到cache里 + uni.$t.cache.putStorageRegularTask(params, data); + }) + .catch(err => fn(err)); + }); + }, + + /** + * 根据角色查找永久的日常任务 + * @param {object} params 提交的参数 + */ + getPermanent(params, fn) { + let remote = false; + // 有缓存 且 服务端数据未返回 就先返回缓存 + uni.$t.cache + .getStoragePermanent(params) + .then(data => { + !remote && fn(null, data); + }) + .catch(err => !remote && fn(err)); + + waitTokenRequest(() => { + // 拿到api数据后 再用api的数据 + uni.$u.api + .getPermanent(params) + .then(data => { + remote = true; + fn(null, data); + // 存api到cache里 + uni.$t.cache.putStoragePermanent(params, data); + }) + .catch(err => fn(err)); + }); + }, + + /** + * 根据时间和角色查找日常任务 + * @param {object} params 提交的参数 + */ + getGlobal(params, fn) { + let remote = false; + // 有缓存 且 服务端数据未返回 就先返回缓存 + uni.$t.cache + .getDailyTask(params) + .then(data => { + !remote && fn(null, data); + }) + .catch(err => !remote && fn(err)); + + waitTokenRequest(() => { + // 拿到api数据后 再用api的数据 + uni.$u.api + .getGlobal(params) + .then(data => { + remote = true; + fn(null, data); + // 存api到cache里 + uni.$t.cache.putDailyTask(params, data); + }) + .catch(err => fn(err)); + }); + }, + + /** + * 获取插件信息 + * @param {object} params 提交的参数 + */ + getOtherPlugin(params, fn) { + let remote = false; + // 有缓存 且 服务端数据未返回 就先返回缓存 + uni.$t.cache + .getPlugin(params.pluginId) + .then(data => { + !remote && fn(null, data); + }) + .catch(err => !remote && fn(err)); + + waitTokenRequest(() => { + // 拿到api数据后 再用api的数据 + uni.$u.api + .getOtherPlugin(params) + .then(data => { + remote = true; + fn(null, data); + // 存api到cache里 + uni.$t.cache.putPlugin(params.pluginId, data); }) .catch(err => fn(err)); }); diff --git a/src/utils/storage.js b/src/utils/storage.js index f5bc6cb..4ab40e6 100644 --- a/src/utils/storage.js +++ b/src/utils/storage.js @@ -39,6 +39,7 @@ export default { * @param {*} data */ setStorage(key, data) { + uni.$t.storage.checkCapacity(); return new Promise((resolve, reject) => { const value = typeof data === 'string' ? data : JSON.stringify(data); uni.setStorage({ @@ -97,4 +98,17 @@ export default { clearStorage() { uni.clearStorage(); }, + + // 检测local Storage容量 超出容量清空数据缓存 + checkCapacity() { + if (!window.localStorage) { + console.log('浏览器不支持localStorage '); + return; + } + const capacity = JSON.stringify(localStorage).length; + let max = 1024 * 1024 * 5; + if (capacity >= max) { + uni.$t.storage.clearStorage(); + } + }, }; diff --git a/src/utils/time.js b/src/utils/time.js index 6f1fae2..c20cd2b 100644 --- a/src/utils/time.js +++ b/src/utils/time.js @@ -82,7 +82,7 @@ const setTimestampToStr = timestamp => { const day = formatNumber(timeObj.getDate()); const hour = formatNumber(timeObj.getHours()); const minute = formatNumber(timeObj.getMinutes()); - const date = `${year}/${month}/${day}`; + const date = `${year}-${month}-${day}`; const time = `${hour}:${minute}`; return { date,