Browse Source

Merge pull request 'temp' (#42) from temp into develop

Reviewed-on: https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/pulls/42
develop
wally 4 years ago
parent
commit
8f88682a02
  1. 225
      CHANGELOG.md
  2. 2
      src/apis/tall.js
  3. 86
      src/components/Calendar/Calendar.vue
  4. 4
      src/components/Plugin/Plugin.vue
  5. 2
      src/components/Projects/Projects.vue
  6. 5
      src/components/Roles/Roles.vue
  7. 5
      src/components/TimeLine/TimeLine.vue
  8. 73
      src/components/TimeLine/component/TimeStatus.vue
  9. 3
      src/components/Tips/Tips.vue
  10. 22
      src/components/Upload/Upload.vue
  11. 401
      src/mock/mock.js
  12. 108
      src/pages/index/index.vue
  13. 2
      src/pages/project/project.vue
  14. 85
      src/plugins/p-wbs-import/p-wbs-import.vue
  15. 9
      src/store/project/mutations.js
  16. 1
      src/store/project/state.js
  17. 4
      src/utils/tall.js
  18. 2
      src/utils/time.js
  19. 2
      src/utils/ui.js
  20. 20
      src/utils/upload.js

225
CHANGELOG.md

@ -1,69 +1,112 @@
# 0.1.0 (2021-08-10) # 0.1.0 (2021-08-11)
### 🌟 新功能 ### 🌟 新功能
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
- | db store | [6414c4f](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/6414c4f) calendar, tall.js | 上下滑动切换日历的模式,tall.js中domain根据环境变量切换 | 364e25d
default plugin | 添加默认插件;项目列表;全局项目最大高度设置 | [ed1d87b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ed1d87b) - | db store | 6414c4f
- | indexedDB | [687394e](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/687394e) default plugin | 添加默认插件;项目列表;全局项目最大高度设置 | ed1d87b
pinch | alloy finger实现图片的pinch放大缩小 | [de01343](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/de01343) - | indexedDB | 687394e
plugin | 插件添加了token及param参数 | [aeb0292](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/aeb0292) pinch | alloy finger实现图片的pinch放大缩小 | de01343
- | post 封装 | [da52e94](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/da52e94) plugin | 插件添加了token及param参数 | aeb0292
- | tall插件封装 | [1bcb920](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1bcb920) - | post 封装 | da52e94
task status | 任务状态切换未完 | [7ffd135](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7ffd135) - | tall插件封装 | 1bcb920
- | ws storage | [21b3a06](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/21b3a06) task status | 任务状态切换未完 | 7ffd135
- | 上传逻辑变化 | [3ff1dc2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/3ff1dc2) - | ws storage | 21b3a06
- | 全局插件及默认插件位置修改 | [6c80d08](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/6c80d08) - | 上传逻辑变化 | 3ff1dc2
- | 向右箭头图标变化 | [8e9ca55](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/8e9ca55) - | 任务进行中状态数字 | 27b7326
- | 字体大小更改 | [82cfdd4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/82cfdd4) - | 全局插件及默认插件位置修改 | 6c80d08
- | 存token | [b8a178d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b8a178d) - | 向右箭头图标变化 | 8e9ca55
- | 定期任务面板骨架屏添加 | [b2698c0](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b2698c0) - | 字体大小更改 | 82cfdd4
富文本插件 | 富文本插件demo测试 | [ed3d644](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ed3d644) - | 存token | b8a178d
- | 导入wbs | [1224fcb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1224fcb) - | 定期任务面板骨架屏添加 | b2698c0
- | 引入dayjs | [29b8b93](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/29b8b93) 富文本插件 | 富文本插件demo测试 | ed3d644
- | 提交到本地 | [9cbe411](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/9cbe411) - | 导入wbs | 1224fcb
- | 插件参数处理调整 | [a3e68d3](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a3e68d3) - | 导入项目后提示并打开项目详情页 | 410f527
- | 插件数据获取 | [5b91bdc](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5b91bdc) - | 引入dayjs | 29b8b93
- | 日常任务插件调整 | [c1881f9](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c1881f9) - | 提交到本地 | 9cbe411
- | 时间基准线,默认插件 | [a33ba1e](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a33ba1e) - | 插件参数处理调整 | a3e68d3
- | 时间轴修改状态时提示框增加 | [e841392](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/e841392) - | 插件数据获取 | 5b91bdc
- | 时间轴界面 | [33927e9](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/33927e9) - | 日历定位;合并 | ea3f937
- | 标题栏变化 | [3898cfe](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/3898cfe) - | 日常任务插件调整 | c1881f9
- | 标题栏变化 | [c0fcd9d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c0fcd9d) - | 时间基准线,默认插件 | a33ba1e
- | 标题栏角色栏全局任务组件新建 | [0500cb4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0500cb4) - | 时间轴修改状态时提示框增加 | e841392
- | 模拟接口测试 | [69e7931](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/69e7931) - | 时间轴界面 | 33927e9
- | 添加时间轴上下滚动 | [2b81bbc](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/2b81bbc) - | 标题栏变化 | 3898cfe
- | 角色栏实现 | [94cd671](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/94cd671) - | 标题栏变化 | c0fcd9d
- | 距调整pc端 | [5069aa1](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5069aa1) - | 标题栏角色栏全局任务组件新建 | 0500cb4
- | 配置默认插件接口 | [f0c177d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/f0c177d) - | 模拟接口测试 | 69e7931
- | 面变化首页变化 | [5e860f1](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5e860f1) - | 添加时间轴上下滚动 | 2b81bbc
- | 项目api url设置 | [6cd5245](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/6cd5245) - | 点击日历日期查询项目列表 | c458385
- | 项目列表, 项目url | [32e005b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/32e005b) - | 角色栏实现 | 94cd671
- | 首页项目样式改变 | [8514c85](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/8514c85) - | 设置小红点 | 9316bcb
- | 距调整pc端 | 5069aa1
- | 配置默认插件接口 | f0c177d
- | 面变化首页变化 | 5e860f1
- | 项目api url设置 | 6cd5245
- | 项目列表, 项目url | 32e005b
- | 首页项目样式改变 | 8514c85
### 🎨 代码样式 ### 🎨 代码样式
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
- | 代码格式细节调整 | [cb2532b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/cb2532b) - | calendar注释 | a2ec112
- | 任务快捷方式图标增加 | [4aba872](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4aba872) - | 代码格式细节调整 | cb2532b
- | 修改角色样式 | [73e268e](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/73e268e) - | 任务快捷方式图标增加 | 4aba872
- | 删除多余字段 | [5ae3973](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5ae3973) - | 修改角色样式 | 73e268e
- | 删除插件携带的多余文件 | [0f392bb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0f392bb) - | 删除calendar中多余的console | e339eec
- | 删除没用代码 | [34b20e1](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/34b20e1) - | 删除console.log | 5064a38
- | 图标修改 | [54bca09](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/54bca09) - | 删除index中没用的alert代码 | 9c9eec7
- | 无基本变化 | [21ac4bb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/21ac4bb) - | 删除mock,console;upload添加loading | 99d42e2
- | 日常任务修改 | [dfa7ee2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/dfa7ee2) - | 删除多余字段 | 5ae3973
- | 更新代码 | [8c27e68](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/8c27e68) - | 删除插件携带的多余文件 | 0f392bb
- | 更新代码 | [1f40a76](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1f40a76) - | 删除没用代码 | 34b20e1
- | 格式细节调整 | [b907a03](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b907a03) - | 图标修改 | 54bca09
- | 添加插件数据 | [2f11b42](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/2f11b42) - | 无基本变化 | 21ac4bb
- | 组件新建 | [89c0035](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/89c0035) - | 日常任务修改 | dfa7ee2
- | 更新代码 | 8c27e68
- | 更新代码 | 1f40a76
- | 格式细节调整 | b907a03
- | 添加插件数据 | 2f11b42
- | 组件新建 | 89c0035
### 🐛 Bug 修复 ### 🐛 Bug 修复
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
ID1000343 | 解决向下预加载查询参数时间没+1颗粒度;以及滚动加载颗粒度写死的问题 | 940603a, closes #ID1000343
plugin | 插件解析机制完善 | 0f5a27d
project title | 项目标题修改; 切换角色移除script | 5c20017
roles | 修复默认显示不是我的角色的问题 | b69f94f
role | 切换角色的逻辑修正完善 | 4ae534f
task任务逻辑完善 | 减少初始global及regular的不必要请求 | bd4bd38
- | 上下滑动加载定期任务 | 4090d89
- | 上下滚动时间轴 | d533a01
- | 下拉加载定期任务传参,时间格式化修改 | 0b95a0e
- | 任务开始时间延迟插件 | 992a313
- | 修改main | 749ae9a
- | 修改报错 | 531c14d
- | 修改接口路径 | df6acf2
- | 修改角色栏组件 | a54c601
- | 切换日历时查询小红点 | 7091789
- | 定期任务接口 | aa4981c
- | 定期任务插件 | 92b3254
- | 定期任务未加载时,显示空的时间轴并能上下滑动 | ce38093
- | 平车演示临时去掉项目快捷方式的toast提示 | e0b2c23
- | 手动展开日常任务 | 0a4a622
- | 提示信息显示bug及日常任务收缩问题 | f2f06c5
- | 插件bug解决 | 41257eb
- | 日常任务html数据查验 | 880ce5c
- | 日常任务插件遍历时的key值修改 | cd26285
- | 日常任务插件面板高度修改 | 249f9e4
- | 时间轴上下滑动 | 4d0ae46
- | 时间轴上下滚动数据加载bug修改 | e82ede4
- | 时间轴插件 | 225d3cc
- | 时间轴骨架屏修改 | ca78d02
- | 角色栏修改 | 19228d6
- | 解决时间轴报错 | da1eece
- | 骨架屏替换 | e9fdd71
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) 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) 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) project title | 项目标题修改; 切换角色移除script | [5c20017](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5c20017)
@ -78,6 +121,7 @@
- | 修改报错 | [531c14d](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/531c14d) - | 修改报错 | [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) - | 修改接口路径 | [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) - | 修改角色栏组件 | [a54c601](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a54c601)
- | 切换日历时查询小红点 | [7091789](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7091789)
- | 定期任务接口 | [aa4981c](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/aa4981c) - | 定期任务接口 | [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) - | 定期任务插件 | [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) - | 定期任务未加载时,显示空的时间轴并能上下滑动 | [ce38093](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ce38093)
@ -100,65 +144,66 @@
### 📝 文档 ### 📝 文档
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
- | README.md | [ab0eb05](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/ab0eb05) - | README.md | ab0eb05
### 🔧 测试 ### 🔧 测试
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
- | 禁用任务开始操作 | [b5425db](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b5425db) - | 禁用任务开始操作 | b5425db
### 🔨 代码重构 ### 🔨 代码重构
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
calendar | 日历细节调整 | [1a8d6bf](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1a8d6bf) calendar | 日历细节调整 | 1a8d6bf
- | project 代码健壮性完善 | [a3202c5](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a3202c5) - | project 代码健壮性完善 | a3202c5
store/home | 删除store/home | [db8a3b4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/db8a3b4) store/home | 删除store/home | db8a3b4
task beginTime | 格式化任务开始时间 | [fbc0301](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/fbc0301) task beginTime | 格式化任务开始时间 | fbc0301
template | eslint prettier sass uview tailwindcss | [9c966a1](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/9c966a1) template | eslint prettier sass uview tailwindcss | 9c966a1
tips | 修改任务状态方法重构 | [b57d3ac](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b57d3ac) tips | 修改任务状态方法重构 | b57d3ac
tip | 任务状态显示及tip组件数据的重构 | [78a5750](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/78a5750) tip | 任务状态显示及tip组件数据的重构 | 78a5750
- | 下滑时间轴添加备注 | [4fd20e3](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4fd20e3) - | 下滑时间轴添加备注 | 4fd20e3
- | 任务状态重构 | [4693655](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4693655) - | 任务状态重构 | 4693655
- | 删除多余的技术验证界面 | [542ae5b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/542ae5b) - | 删除多余的weekmode store里的东西 | 0841fe0
- | 界面样式调整 | [4367249](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4367249) - | 删除多余的技术验证界面 | 542ae5b
- | 重构store分层 | [5f6fff8](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5f6fff8) - | 界面样式调整 | 4367249
- | 重构store分层 | 5f6fff8
### 🚀 性能优化 ### 🚀 性能优化
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
- | 插件查询及展示 | [4dba770](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/4dba770) - | 修改定期任务骨架屏高度 | 909a734
- | 日历的更改 | [7353ac8](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7353ac8) - | 插件查询及展示 | 4dba770
- | 测试接口 | [215e074](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/215e074) - | 日历的更改 | 7353ac8
- | 组件文件夹新建 | [22bfe7b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/22bfe7b) - | 测试接口 | 215e074
- | 组件文件夹新建 | [17bb8c9](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/17bb8c9) - | 组件文件夹新建 | 22bfe7b
- | 组件文件夹新建 | [1421504](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/1421504) - | 组件文件夹新建 | 17bb8c9
- | 角色栏文字颜色修改 | [215c6b3](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/215c6b3) - | 组件文件夹新建 | 1421504
- | 解决警告 | [c932b09](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c932b09) - | 角色栏文字颜色修改 | 215c6b3
- | 解决警告 | c932b09
### chore ### chore
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
- | api 封装 | [8dcb8a2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/8dcb8a2) - | api 封装 | 8dcb8a2
- | env host修改 | [a79a4a5](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a79a4a5) - | env host修改 | a79a4a5
- | merge globals | [b0957cc](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/b0957cc) - | merge globals | b0957cc
- | merge wrr | [5ccc7a5](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/5ccc7a5) - | merge wrr | 5ccc7a5
- | mock | [51c24a5](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/51c24a5) - | mock | 51c24a5
package manifest | 去掉了摇树 | [f7c1dd4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/f7c1dd4) package manifest | 去掉了摇树 | f7c1dd4
pwa 小程序 | 移除了pwa,alloyFinger添加平台判断 | [875fab4](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/875fab4) pwa 小程序 | 移除了pwa,alloyFinger添加平台判断 | 875fab4
- | uview-ui | [a9ea34b](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/a9ea34b) - | uview-ui | a9ea34b
v3.0.1 | tall api 地址从1.0改成了3.0 | [db5afd5](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/db5afd5) v3.0.1 | tall api 地址从1.0改成了3.0 | db5afd5
信息配置 | 配置eslint等配置 | [7421443](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/7421443) 信息配置 | 配置eslint等配置 | 7421443
- | 修复不能build的问题 | [0b7b91e](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/0b7b91e) - | 修复不能build的问题 | 0b7b91e
- | 删除多余的构建的命令 | [3f4eb2f](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/3f4eb2f) - | 删除多余的构建的命令 | 3f4eb2f
范围|描述|commitId 范围|描述|commitId
--|--|-- --|--|--
- | style:index | [978f272](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/978f272) - | style:index | 978f272
- | !2 基础模板v1.1.0 | [f5e61dd](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/f5e61dd) - | !2 基础模板v1.1.0 | f5e61dd
- | init | [c0f1deb](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/c0f1deb) - | init | c0f1deb

2
src/apis/tall.js

@ -7,6 +7,8 @@ const install = (Vue, vm) => {
vm.$u.api.getToken = userId => vm.$u.get(`${tall}/users/userId`, { userId }); vm.$u.api.getToken = userId => vm.$u.get(`${tall}/users/userId`, { userId });
// 获取项目列表 // 获取项目列表
vm.$u.api.getProjects = (startTime, endTime) => vm.$u.post(`${tall}/project/query`, { startTime, endTime }); vm.$u.api.getProjects = (startTime, endTime) => vm.$u.post(`${tall}/project/query`, { startTime, endTime });
// 查询日历是否有小红点
vm.$u.api.findRedPoint = (startTime, endTime) => vm.$u.post(`${tall}/project/day`, { startTime, endTime });
}; };
export default { install }; export default { install };

86
src/components/Calendar/Calendar.vue

@ -39,7 +39,7 @@
<view class="date" :class="[item.isToday ? todayClass : '', item.fullDate === selectedDate ? checkedClass : '']"> <view class="date" :class="[item.isToday ? todayClass : '', item.fullDate === selectedDate ? checkedClass : '']">
{{ item.time.getDate() }} {{ item.time.getDate() }}
</view> </view>
<view class="dot-show" v-if="item.info" :style="dotStyle"> </view> <view class="dot-show" v-if="item.info === '1'" :style="dotStyle"> </view>
</view> </view>
</template> </template>
<template v-else> <template v-else>
@ -83,40 +83,27 @@
</view> --> </view> -->
</view> </view>
<view class="flex justify-center u-font-18" style="color: #3b82f6" @click="goback"> 今日 </view> <view class="flex justify-center u-font-18" style="color: #3b82f6" @click="goToday"> 今日 </view>
</view> </view>
</template> </template>
mb-3
<script> <script>
import { gegerateDates, dateEqual, formatDate } from './generateDates.js'; import { mapState } from 'vuex';
import { gegerateDates, formatDate } from './generateDates.js';
export default { export default {
props: { props: {
duration: { duration: { type: Number, default: 500 },
type: Number, //
default: 500, showBack: { type: Boolean, default: false },
}, // class
dotList: { todayClass: { type: String, default: 'is-today' },
type: Array, /// // class
default() { checkedClass: { type: String, default: 'is-checked' },
return []; //
},
},
showBack: {
type: Boolean, //
default: false,
},
todayClass: {
type: String, // class
default: 'is-today',
},
checkedClass: {
type: String, // class
default: 'is-checked',
},
dotStyle: { dotStyle: {
type: Object, // type: Object,
default() { default: () => {
return { background: '#FF0000' }; return { background: '#FF0000' };
}, },
}, },
@ -125,11 +112,12 @@ export default {
watch: { watch: {
dotList: function (newvalue) { dotList: function (newvalue) {
const days = this.days.slice(0); const days = this.days.slice(0);
newvalue.forEach(item => { days.forEach((day, i) => {
const index = days.findIndex(ditem => ditem.fullDate === item.date); newvalue.forEach((item, j) => {
if (index > 0) { if (i === j) {
days[index].info = item; day.info = item;
} }
});
}); });
this.days = days; this.days = days;
}, },
@ -145,12 +133,14 @@ export default {
days: [], days: [],
weekMode: false, // false -> true -> weekMode: false, // false -> true ->
swiper: [0, 1, 2], swiper: [0, 1, 2],
// dotList: [], //
selectedDate: formatDate(new Date(), 'yyyy-MM-dd'), // selectedDate: formatDate(new Date(), 'yyyy-MM-dd'), //
start: '',
end: '',
}; };
}, },
computed: { computed: {
...mapState('project', ['dotList']),
sheight() { sheight() {
// //
// //
@ -214,6 +204,8 @@ export default {
created() { created() {
this.initDate(); this.initDate();
this.start = this.$moment().startOf('month').valueOf();
this.end = this.$moment().endOf('month').valueOf();
}, },
methods: { methods: {
@ -232,9 +224,15 @@ export default {
if (current - pre === 1 || current - pre === -2) { if (current - pre === 1 || current - pre === -2) {
// //
this.daysNext(); this.daysNext();
this.start = this.$t.time.add(this.start, 1, 'month').valueOf();
this.end = this.$t.time.add(this.end, 1, 'month').valueOf();
this.$emit('handleFindPoint', this.start, this.end);
} else { } else {
// //
this.daysPre(); this.daysPre();
this.start = this.$t.time.add(this.start, -1, 'month').valueOf();
this.end = this.$t.time.add(this.end, -1, 'month').valueOf();
this.$emit('handleFindPoint', this.start, this.end);
} }
}, },
@ -246,7 +244,7 @@ export default {
} else { } else {
date = new Date(); date = new Date();
} }
this.currentDate = date.getDate(); // this.currentDate = date.getDate(); //
this.currentYear = date.getFullYear(); // this.currentYear = date.getFullYear(); //
this.currentMonth = date.getMonth() + 1; // this.currentMonth = date.getMonth() + 1; //
this.currentWeek = date.getDay() === 0 ? 7 : date.getDay(); // 1...6,0 this.currentWeek = date.getDay() === 0 ? 7 : date.getDay(); // 1...6,0
@ -268,13 +266,13 @@ export default {
// this.selectedDate = formatDate(new Date(this.currentYear, this.currentMonth-1,1), 'yyyy-MM-dd') // this.selectedDate = formatDate(new Date(this.currentYear, this.currentMonth-1,1), 'yyyy-MM-dd')
// } // }
} }
days.forEach(day => { //
const dot = this.dotList.find(item => { days.forEach((day, i) => {
return dateEqual(item.date, day.fullDate); this.dotList.forEach((item, j) => {
if (i === j) {
day.info = item;
}
}); });
if (dot) {
day.info = dot;
}
}); });
this.days = days; this.days = days;
// , // ,
@ -342,7 +340,7 @@ export default {
}, },
// //
goback() { goToday() {
const d = new Date(); const d = new Date();
this.initDate(d); this.initDate(d);
}, },
@ -458,8 +456,8 @@ export default {
border-radius: 25px; border-radius: 25px;
} }
.dot-show { .dot-show {
width: 8px; width: 6px;
height: 8px; height: 6px;
// background: red; // background: red;
border-radius: 5px; border-radius: 5px;
position: absolute; position: absolute;

4
src/components/Plugin/Plugin.vue

@ -87,7 +87,6 @@ export default {
}); });
if (!data || !data.id) return; if (!data || !data.id) return;
const reg = /data-root=["|']?(\w+)["|']?/gi; const reg = /data-root=["|']?(\w+)["|']?/gi;
// console.log(data.html);
let uuid = ''; let uuid = '';
// FIXME: js, html // FIXME: js, html
if (data.html) { if (data.html) {
@ -95,8 +94,6 @@ export default {
if (reg.test(data.html)) { if (reg.test(data.html)) {
uuid = RegExp.$1; uuid = RegExp.$1;
// console.log('uuid: ', uuid, `p${this.pluginTaskId}`);
const str = data.html.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`); const str = data.html.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`);
this.pluginContent = str; this.pluginContent = str;
} else { } else {
@ -106,7 +103,6 @@ export default {
const str = data.js.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`); const str = data.js.replace(new RegExp(uuid, 'g'), `p${this.pluginTaskId}`);
this.handleDom(str); this.handleDom(str);
} }
// console.log(this.pluginContent);
// if (data.js) { // if (data.js) {
// if (reg.test(data.js)) { // if (reg.test(data.js)) {

2
src/components/Projects/Projects.vue

@ -1,5 +1,5 @@
<template> <template>
<view class="py-3 mt-4 bg-white"> <view class="py-3 mt-4 bg-white u-font-15">
<view v-for="(project, index) in projects" :key="index"> <view v-for="(project, index) in projects" :key="index">
<!-- 有子项目 --> <!-- 有子项目 -->
<view class="flex items-center justify-between p-3"> <view class="flex items-center justify-between p-3">

5
src/components/Roles/Roles.vue

@ -111,13 +111,12 @@ export default {
this.clearEndFlag(); this.clearEndFlag();
}); });
} catch (error) { } catch (error) {
console.log('role.vue changeRole error: ', error); console.error('role.vue changeRole error: ', error);
} }
}, },
// script // script
clearPluginScript() { clearPluginScript() {
console.log('clearPluginScript: ');
try { try {
const scripts = document.querySelectorAll('script[data-type=plugin]'); const scripts = document.querySelectorAll('script[data-type=plugin]');
@ -125,7 +124,7 @@ export default {
document.body.removeChild(scripts[i]); document.body.removeChild(scripts[i]);
} }
} catch (error) { } catch (error) {
console.log('clearPluginScript error: ', error); console.error('clearPluginScript error: ', error);
} }
}, },

5
src/components/TimeLine/TimeLine.vue

@ -56,12 +56,11 @@ export default {
// //
async handleScrollTop() { async handleScrollTop() {
console.log('this.topEnd: ', this.topEnd);
if (this.topEnd) return; if (this.topEnd) return;
const startTime = this.tasks[0].planStart - 0; const startTime = this.tasks[0].planStart - 0;
if (this.tasks[0].plugins && this.tasks[0].plugins.length === 0 && !this.topEnd) { if (this.tasks[0].plugins && this.tasks[0].plugins.length === 0 && !this.topEnd) {
// //
console.log('没有数据时: '); console.warn('没有数据时: ');
const addTasks = [ const addTasks = [
{ {
panel: {}, panel: {},
@ -82,7 +81,7 @@ export default {
this.setUpTasks([...addTasks.concat(this.tasks)]); this.setUpTasks([...addTasks.concat(this.tasks)]);
} else { } else {
// //
console.log('有数据时: '); console.warn('有数据时: ');
const upQuery = { const upQuery = {
timeNode: startTime, timeNode: startTime,
queryType: 0, queryType: 0,

73
src/components/TimeLine/component/TimeStatus.vue

@ -11,8 +11,8 @@
<view class="u-progress-content"> <view class="u-progress-content">
<view class="u-progress-dot"></view> <view class="u-progress-dot"></view>
<view class="u-progress-info"> <view class="u-progress-info">
<u-icon :name="orderStyle.icon" v-if="orderStyle.icon" size="30"></u-icon> <u-icon :name="orderStyle.icon" v-if="orderStyle.icon" size="15px"></u-icon>
<template v-else>{{ time }}</template> <template v-else>{{ computeDurationText() }}</template>
</view> </view>
</view> </view>
</u-circle-progress> </u-circle-progress>
@ -34,6 +34,7 @@ export default {
pause: [{ text: '继续' }, { text: '重新开始任务', color: 'blue' }, { text: '结束' }], pause: [{ text: '继续' }, { text: '重新开始任务', color: 'blue' }, { text: '结束' }],
proceed: [{ text: '暂停' }, { text: '重新开始任务', color: 'blue' }, { text: '结束' }], proceed: [{ text: '暂停' }, { text: '重新开始任务', color: 'blue' }, { text: '结束' }],
again: [{ text: '重新开始任务', color: 'blue' }], again: [{ text: '重新开始任务', color: 'blue' }],
timer: null,
}; };
}, },
@ -92,24 +93,23 @@ export default {
* 点击了图标 修改任务状态 * 点击了图标 修改任务状态
* @param {object} event * @param {object} event
*/ */
changeStatus() { changeStatus(event) {
return false; // return false;
// const { status, taskId, taskName, tip } = this; const { status, taskId, taskName, tip } = this;
// tip.status = status; tip.status = status;
// tip.taskId = taskId; tip.taskId = taskId;
// tip.left = event.target.x; tip.left = event.target.x;
// tip.top = event.target.y; tip.top = event.target.y;
// tip.show = true; tip.show = true;
// tip.text = this.genetateTips(status, taskName); tip.text = this.genetateTips(status, taskName);
// this.setTip(tip); this.setTip(tip);
}, },
// //
computeCyclePersent() { computeCyclePersent() {
if (!this.task || !this.task.realStart || !this.task.planDuration) return 100; if (!this.task || !this.task.realStart || !this.task.planDuration) return 100;
const { realStart, planDuration } = this.task; const { realStart, planDuration } = this.task;
console.log((((Date.now() - +realStart) * 100) / +planDuration).toFixed(2));
return (((Date.now() - +realStart) * 100) / +planDuration).toFixed(2); return (((Date.now() - +realStart) * 100) / +planDuration).toFixed(2);
}, },
@ -128,6 +128,53 @@ export default {
return `是否要重新开始此任务`; return `是否要重新开始此任务`;
} }
}, },
//
// = realStart() + planDuration()
// = -
// = realStart + planDuration - Date.now()
computeDurationText() {
try {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
const { realStart, planDuration } = this.task;
const leftTime = +realStart + +planDuration - Date.now(); //
console.log('leftTime: ', leftTime, this.$moment.duration(leftTime));
if (leftTime < 0) return 0;
const { years, months, days, hours, minutes, seconds, milliseconds } = this.$moment.duration(leftTime);
let num = 0;
let time = 1000;
if (years > 0) {
num = years;
time = 60 * 60 * 1000; //
} else if (months > 0) {
num = months;
time = 60 * 60 * 1000; //
} else if (days > 0) {
num = days;
time = 60 * 60 * 1000; //
} else if (hours > 0) {
num = hours;
} else if (minutes > 0) {
num = minutes;
} else if (seconds > 0) {
num = seconds;
} else if (milliseconds > 0) {
num = milliseconds;
time = 16;
}
this.timer = setTimeout(() => {
this.computeDurationText();
}, time);
return num;
} catch (error) {
console.error('🚀 ~ file: TimeStatus.vue ~ line 174 ~ computeDurationText ~ error', error);
return 0;
}
},
}, },
}; };
</script> </script>

3
src/components/Tips/Tips.vue

@ -80,7 +80,8 @@ export default {
location.reload(); location.reload();
// this.$router.go(0); // this.$router.go(0);
} catch (error) { } catch (error) {
console.log(error); console.error(error);
this.$t.ui.showToast(error.msg || '操作失败');
} }
}, },

22
src/components/Upload/Upload.vue

@ -1,23 +1,33 @@
<template> <template>
<view class="upload"> <view class="upload">
<view @tap="handleUpload"> <u-icon name="plus" size="24px" class="flex justify-center w-12 h-12 bg-blue-100 rounded-full shadow-md" @tap="handleUpload"></u-icon>
<u-icon name="plus" color="#ffffff" size="24px" class="flex justify-center w-12 h-12 bg-blue-100 rounded-full shadow-md"></u-icon>
</view>
</view> </view>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex';
export default { export default {
computed: mapGetters('user', ['userId']),
methods: { methods: {
// wbs // wbs
async handleUpload() { async handleUpload() {
try { try {
const data = await this.$u.api.import(); const data = await this.$u.api.import();
console.log('data: ', data);
// WBS // WBS
// //
console.log('data: ', data); this.$emit('success');
setTimeout(() => {
this.$u.route('/pages/project/project', {
u: this.userId,
p: data.id,
pname: data.pname,
url: data.url,
});
}, 2000);
} catch (error) { } catch (error) {
this.$emit('show-alert', error); this.$emit('error', error);
} }
}, },
}, },

401
src/mock/mock.js

@ -1,401 +0,0 @@
export default [
{
path: '/tasks',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: {
plugins: [
`<button onclick="location.href='https://www.tall.wiki/wl/1'">js打开物流页面</button>`,
`<a href="https://www.tall.wiki/wl/5">a链接打开现海园区</a>`,
`<div class="p-3 my-4 text-2xl bg-yellow-400 text-white" onclick="alert(123)">样式继承及简单脚本</div>`,
`<div class="p-3 my-4 text-2xl bg-red-400 text-white" onclick="openModal()">先是modal, 函数执行</div>
<div style="display: none" id="modal">modal</div>
<script>
function openModal() {
const modal = document.getElementById('modal');
if (modal.style.display === 'block') {
modal.style.display = 'none';
} else {
modal.style.display = 'block';
}
console.log('modal显示了');
}
</script>`,
],
},
});
},
},
//根据id获取token
{
path: '/tall/v1.0/users/userId',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: {
account: 'wally',
id: 123,
phone: '18603454788',
refresh_token: 'string',
token: 'string',
wxInfo: {
city: 'string',
country: 'string',
headImgUrl: 'string',
language: 'string',
nickname: 'string',
province: 'string',
sex: 0,
},
},
});
},
},
//根据id获取项目信息
{
path: '/defaultwbs/project/findProjectById',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: {
name: '默认项目',
projectId: 1235555,
},
});
},
},
//查询角色栏展示的角色
{
path: '/defaultwbs/role/show',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: {
//不展示的角色
invisibleList: [
{
id: 123456789,
mine: 1,
name: 'string',
pm: 0,
sequence: 33,
},
], //展示的角色
visibleList: [
{
id: 1,
name: '项目经理',
mine: 0,
pm: 1,
sequence: 1,
},
{
id: 2,
name: '运维',
mine: 0,
pm: 0,
sequence: 2,
},
{
id: 3,
name: '导师一',
mine: 1,
pm: 0,
sequence: 3,
},
{
id: 4,
name: '导师二',
mine: 1,
pm: 0,
sequence: 4,
},
{
id: 5,
name: '导师三',
mine: 1,
pm: 0,
sequence: 5,
},
],
},
});
},
},
//配置角色栏展示的角色
{
path: '/defaultwbs/role/updateShow',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: { description: 'data数据' },
});
},
},
//根据角色查找永久的日常任务
{
path: '/defaultwbs/task/permanent',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: [
{
description: 'string',
detailId: 147258,
id: 258147,
name: 'string',
panel: {
backgroundColor: 'string',
border: 'string',
borderRadius: 'string',
col: 132,
height: 'string',
row: 147,
shadow: 'string',
width: 'string',
},
planDuration: 123,
planStart: 123456789,
plugins: [
[
{
col: 1,
colspan: 123,
param: 123,
pluginId: 13,
row: 2,
rowspan: 123,
},
],
],
process: 0,
realDuration: 123456789,
realStart: 123456789,
skip: -1,
skipTaskId: 123456789,
},
],
});
},
},
//根据时间和角色查找日常任务
{
path: '/defaultwbs/task/global',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: [
{
description: 'string',
detailId: 147258,
id: 258147,
name: 'string',
panel: {
backgroundColor: 'string',
border: 'string',
borderRadius: 'string',
col: 132,
height: 'string',
row: 147,
shadow: 'string',
width: 'string',
},
planDuration: 123,
planStart: 123456789,
plugins: [
[
{
col: 1,
colspan: 123,
param: 123,
pluginId: 13,
row: 1,
rowspan: 123,
},
],
],
process: 0,
realDuration: 123456789,
realStart: 123456789,
skip: -1,
skipTaskId: 123456789,
},
],
});
},
},
//根据时间基准点和角色查找定期任务
{
path: '/defaultwbs/task/regular',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: [
{
description: 'string',
detailId: 147258,
id: 258147,
name: 'string',
panel: {
backgroundColor: 'string',
border: 'string',
borderRadius: 'string',
col: 132,
height: '100',
row: 147,
shadow: 'string',
width: 'string',
},
planDuration: 123,
planStart: 123456789,
plugins: [
[
{
col: 123,
colspan: 123,
param: 123,
pluginId: 1,
row: 123,
rowspan: 123,
},
],
],
process: 0,
realDuration: 123456789,
realStart: 123456789,
skip: -1,
skipTaskId: 123456789,
},
{
description: 'string',
detailId: 147258,
id: 254565,
name: 'string',
panel: {
backgroundColor: 'string',
border: 'string',
borderRadius: 'string',
col: 132,
height: '100',
row: 147,
shadow: 'string',
width: 'string',
},
planDuration: 123,
planStart: 123456789,
plugins: [
[
{
col: 123,
colspan: 123,
param: 123,
pluginId: 2,
row: 123,
rowspan: 123,
},
],
],
process: 0,
realDuration: 123456789,
realStart: 123456789,
skip: -1,
skipTaskId: 123456789,
},
{
description: 'string',
detailId: 147258,
id: 111125,
name: 'string',
panel: {
backgroundColor: 'string',
border: 'string',
borderRadius: 'string',
col: 132,
height: '100',
row: 147,
shadow: 'string',
width: 'string',
},
planDuration: 123,
planStart: 123456789,
plugins: [
[
{
col: 123,
colspan: 123,
param: 123,
pluginId: 3,
row: 123,
rowspan: 123,
},
],
],
process: 0,
realDuration: 123456789,
realStart: 123456789,
skip: -1,
skipTaskId: 123456789,
},
],
});
},
},
//修改任务状态
{
path: '/defaultwbs/task/type',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: { description: 'data数据' },
});
},
},
//根据id查询插件信息
{
path: '/defaultwbs/plugin',
method: 'post',
handler: (req, res) => {
return res.json({
code: 200,
msg: 'ok',
success: true,
data: {
html: '<div style="background:#0f0;height:100%"></div>',
id: 13,
intro: 'string',
js: 'string',
name: 'string',
styleType: -1,
version: 'string',
},
});
},
},
];

108
src/pages/index/index.vue

@ -1,46 +1,30 @@
<template> <template>
<view class="bg-gray-50"> <view class="flex flex-col h-full bg-gray-50" @touchmove="onMove">
<view class="relative"> <view class="relative">
<!-- 日历 --> <!-- 日历 -->
<Calendar @selected-change="onDateChange" :show-back="true" :dot-list="days" /> <Calendar @selected-change="onDateChange" :show-back="true" ref="calendar" @handleFindPoint="handleFindPoint" />
<!-- 上传 导入wbs --> <!-- 上传 导入wbs -->
<Upload @show-alert="onShowAlert" /> <Upload @success="onUploadSuccess" @error="onUploadError" />
</view> </view>
<!-- 项目列表 --> <!-- 项目列表 -->
<Projects /> <Projects class="flex-1 overflow-y-auto" />
<!-- 全局提示框 --> <!-- 全局提示框 -->
<u-alert-tips <u-top-tips ref="uTips"></u-top-tips>
class="top-0 -inset-x-0"
style="position: fixed !important"
type="error"
:close-able="true"
:title="alert.title"
:show="alert.show"
:description="alert.description"
@close="alert.show = false"
></u-alert-tips>
</view> </view>
</template> </template>
<script> <script>
import { mapState, mapMutations } from 'vuex'; import { mapState, mapMutations } from 'vuex';
let prevY = 0;
export default { export default {
data() { data() {
return { return {
days: [ calendar: null,
{ date: '2020-08-14' }, days: [],
{ date: '2020-08-27' },
{ date: '2020-08-09' },
// {date: '2020-08-16'}
],
alert: {
show: false,
title: '',
description: '',
},
}; };
}, },
@ -50,17 +34,22 @@ export default {
token(value) { token(value) {
if (!value) return; if (!value) return;
this.getProjects(); this.getProjects();
this.handleFindPoint();
}, },
}, },
onShow() { onShow() {
console.log('index onShow');
if (!this.token) return; if (!this.token) return;
this.getProjects(); this.getProjects();
this.handleFindPoint();
},
onReady() {
this.calendar = this.$refs.calendar;
}, },
methods: { methods: {
...mapMutations('project', ['setProjects']), ...mapMutations('project', ['setProjects', 'setDotList']),
// //
async getProjects(start = this.$moment().startOf('day').valueOf(), end = this.$moment().endOf('day').valueOf()) { async getProjects(start = this.$moment().startOf('day').valueOf(), end = this.$moment().endOf('day').valueOf()) {
@ -68,25 +57,72 @@ export default {
const data = await this.$u.api.getProjects(start, end); const data = await this.$u.api.getProjects(start, end);
this.setProjects(data); this.setProjects(data);
} catch (error) { } catch (error) {
console.log('error: ', error); console.error('error: ', error);
} }
}, },
changeList() { /**
this.days = [{ date: '2021-08-03' }, { date: '2021-08-04' }, { date: '2021-08-06' }]; * 查询小红点
* @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);
}
}, },
//
onDateChange(event) { onDateChange(event) {
console.log(event); const day = this.$moment(event.fullDate);
const start = day.startOf('date').valueOf();
const end = day.endOf('date').valueOf();
this.getProjects(start, end);
},
// /
onMove(event) {
const y = event.changedTouches[0].pageY;
if (y - prevY > 0) {
// weekMode=true weekMode=false
this.calendar.weekMode && (this.calendar.weekMode = false);
} else if (y - prevY < 0) {
// weekMode=false weekMode=true
!this.calendar.weekMode && (this.calendar.weekMode = true);
}
prevY = y;
this.calendar.initDate();
}, },
// alert //
onShowAlert(event) { onUploadSuccess() {
this.alert.description = event || '发生了点小意外'; this.$refs.uTips.show({
this.alert.show = true; title: '导入成功,即将打开新项目',
type: 'success',
duration: '3000',
});
},
setTimeout(() => (this.alert.show = false), 10000); //
onUploadError(error) {
this.$refs.uTips.show({
title: error || '导入失败',
type: 'error',
duration: '6000',
});
}, },
}, },
}; };
</script> </script>
<style lang="scss" scoped>
page {
height: 100%;
overflow: hidden;
}
</style>

2
src/pages/project/project.vue

@ -161,7 +161,7 @@ export default {
await this.getRegulars(params); await this.getRegulars(params);
} catch (error) { } catch (error) {
console.log('error: ', error); console.error('error: ', error);
} }
}, },

85
src/plugins/p-wbs-import/p-wbs-import.vue

@ -1,3 +1,86 @@
<template> <template>
<view>导入wbs</view> <view>
<view @tap="handleUpload" v-if="task.name === '导入WBS新建项目'">{{ task.name }}</view>
<view @tap="handleUpdate" v-if="task.name === '导入WBS更新项目'">{{ task.name }}</view>
<!-- 全局提示框 -->
<u-top-tips ref="uTips"></u-top-tips>
</view>
</template> </template>
<script>
import { mapGetters, mapMutations } from 'vuex';
export default {
name: 'p-wbs-import',
props: {
task: {
type: Object,
default: () => {},
},
},
data() {
return {};
},
computed: {
...mapGetters('user', ['userId']),
...mapGetters('project', ['projectId']),
},
methods: {
...mapMutations('project', ['setShowAlert']),
// wbs
async handleUpload() {
try {
const data = await this.$u.api.import();
// WBS
//
this.onUploadSuccess();
setTimeout(() => {
this.$u.route('/pages/project/project', {
u: this.userId,
p: data.id,
pname: data.pname,
url: data.url,
});
}, 2000);
} catch (error) {
this.onUploadError(error);
}
},
//
// TODO:
async handleUpdate() {
try {
const data = await this.$u.api.import({ projectId: this.projectId });
console.log('data: ', data);
// WBS
//
this.onUploadSuccess();
} catch (error) {
this.onUploadError(error);
}
},
//
onUploadSuccess() {
this.$refs.uTips.show({
title: '导入成功,即将打开新项目',
type: 'success',
duration: '3000',
});
},
//
onUploadError(error) {
this.$refs.uTips.show({
title: error || '导入失败',
type: 'error',
duration: '6000',
});
},
},
};
</script>

9
src/store/project/mutations.js

@ -29,6 +29,15 @@ const mutations = {
setProjectName(state, data) { setProjectName(state, data) {
state.project.name = data; state.project.name = data;
}, },
/**
* 设置小红点
* @param { object } state
* @param { string } data
*/
setDotList(state, data) {
state.dotList = data;
},
}; };
export default mutations; export default mutations;

1
src/store/project/state.js

@ -2,6 +2,7 @@
const state = { const state = {
project: { name: '加载中...' }, // 当前项目信息 project: { name: '加载中...' }, // 当前项目信息
projects: [], // 项目列表 projects: [], // 项目列表
dotList: [], // 小红点
}; };
export default state; export default state;

4
src/utils/tall.js

@ -7,6 +7,8 @@ import time from '@/utils/time.js';
import ui from '@/utils/ui.js'; import ui from '@/utils/ui.js';
import upload from '@/utils/upload.js'; import upload from '@/utils/upload.js';
const gateway = process.env.VUE_APP_API_URL;
const $t = { const $t = {
zIndex, // 定位元素层级 zIndex, // 定位元素层级
app, // app级别的相关配置 app, // app级别的相关配置
@ -16,7 +18,7 @@ const $t = {
timeConfig, // 时间相关配置 timeConfig, // 时间相关配置
ui, // ui界面提示相关 ui, // ui界面提示相关
chooseAndUpload: upload.chooseAndUpload, // 选择并上传单个文件相关的封装 chooseAndUpload: upload.chooseAndUpload, // 选择并上传单个文件相关的封装
domain: 'https://www.tall.wiki/tall3/v3.0.0/defaultwbs', domain: `${gateway}/defaultwbs`,
}; };
uni.$t = $t; uni.$t = $t;

2
src/utils/time.js

@ -2,9 +2,11 @@ import dayjs from 'dayjs';
const advancedFormat = require('dayjs/plugin/advancedFormat'); const advancedFormat = require('dayjs/plugin/advancedFormat');
const weekOfYear = require('dayjs/plugin/weekOfYear'); const weekOfYear = require('dayjs/plugin/weekOfYear');
const duration = require('dayjs/plugin/duration');
dayjs.extend(advancedFormat); dayjs.extend(advancedFormat);
dayjs.extend(weekOfYear); dayjs.extend(weekOfYear);
dayjs.extend(duration);
/** /**
* 格式化数字 * 格式化数字

2
src/utils/ui.js

@ -22,7 +22,7 @@ export default {
* 显示加载雪花 * 显示加载雪花
* @param {string} title * @param {string} title
*/ */
showLoading(title) { showLoading(title = '玩命加载中...') {
return uni.showLoading({ return uni.showLoading({
title, title,
mask: true, mask: true,

20
src/utils/upload.js

@ -8,6 +8,9 @@ export default {
* @returns * @returns
*/ */
chooseAndUpload(url, formData = {}, extension = ['.xls', '.xlsx'], name = 'param') { chooseAndUpload(url, formData = {}, extension = ['.xls', '.xlsx'], name = 'param') {
uni.hideLoading();
clearTimeout(timer);
let timer = null;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const token = uni.$t.storage.getStorageSync(uni.$t.app.tokenKey); const token = uni.$t.storage.getStorageSync(uni.$t.app.tokenKey);
if (!token) { if (!token) {
@ -17,6 +20,13 @@ export default {
count: 1, //默认100 count: 1, //默认100
extension, extension,
success: res => { success: res => {
if (!timer) {
timer = setTimeout(() => {
uni.$t.ui.showLoading('正在上传...');
timer = null;
}, 800);
}
// 开始上传
uni.uploadFile({ uni.uploadFile({
url, url,
filePath: res.tempFilePaths[0], filePath: res.tempFilePaths[0],
@ -24,24 +34,30 @@ export default {
formData, formData,
header: { Authorization: `Bearer ${token}` }, header: { Authorization: `Bearer ${token}` },
success: ({ data, statusCode }) => { success: ({ data, statusCode }) => {
console.log('data, statusCode: ', data, statusCode); clearTimeout(timer);
uni.hideLoading();
if (statusCode === 200 && data) { if (statusCode === 200 && data) {
const { code, msg } = JSON.parse(data); const { code, msg } = JSON.parse(data);
if (code !== 200) { if (code !== 200) {
reject(msg); reject(msg);
} else { } else {
resolve(data.data); resolve(JSON.parse(data).data);
} }
} else { } else {
reject('上传失败'); reject('上传失败');
} }
}, },
fail: error => { fail: error => {
clearTimeout(timer);
uni.hideLoading();
reject(error); reject(error);
}, },
}); });
}, },
fail: error => { fail: error => {
clearTimeout(timer);
uni.hideLoading();
reject(error); reject(error);
}, },
}); });

Loading…
Cancel
Save