forked from ccsens_fe/tall-mui-3
35 changed files with 1635 additions and 723 deletions
@ -1,247 +1,275 @@ |
|||
# 0.1.0 (2021-09-07) |
|||
|
|||
# 0.1.0 (2021-10-29) |
|||
|
|||
### 🌟 新功能 |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | api封装 | 7d4edfc |
|||
bind phone | 图形验证码;短信验证码;绑定手机号 | 93ffea2 |
|||
- | cache indexedDB处理 | 3388967 |
|||
calendar, tall.js | 上下滑动切换日历的模式,tall.js中domain根据环境变量切换 | 364e25d |
|||
- | db store | 6414c4f |
|||
default plugin | 添加默认插件;项目列表;全局项目最大高度设置 | ed1d87b |
|||
- | indexedDB | 687394e |
|||
mp | 兼容小程序,去除window,document等 | 9178255 |
|||
- | network控制本地缓存的使用 | 858429e |
|||
phone-bind | 验证码validate | a427250 |
|||
pinch | alloy finger实现图片的pinch放大缩小 | de01343 |
|||
plugin | 插件添加了token及param参数 | aeb0292 |
|||
- | post 封装 | da52e94 |
|||
- | tall插件封装 | 1bcb920 |
|||
task status | 任务状态切换未完 | 7ffd135 |
|||
- | ws storage | 21b3a06 |
|||
- | 上传逻辑变化 | 3ff1dc2 |
|||
- | 任务状态时间显示 | 56f5183 |
|||
- | 任务进行中状态数字 | 27b7326 |
|||
- | 全局插件及默认插件位置修改 | 6c80d08 |
|||
- | 分享项目和点击分享的项目链接 | 032d83c |
|||
- | 向右箭头图标变化 | 8e9ca55 |
|||
- | 字体大小更改 | 82cfdd4 |
|||
- | 存token | b8a178d |
|||
- | 定期任务面板骨架屏添加 | b2698c0 |
|||
富文本插件 | 富文本插件demo测试 | ed3d644 |
|||
- | 导入wbs | 1224fcb |
|||
- | 导入项目,更新项目 | 5e06adf |
|||
- | 导入项目后提示并打开项目详情页 | 410f527 |
|||
- | 引入dayjs | 29b8b93 |
|||
- | 提交到本地 | 9cbe411 |
|||
- | 插件参数处理调整 | a3e68d3 |
|||
- | 插件数据获取 | 5b91bdc |
|||
- | 新建任务,分享项目弹出层样式修改 | efbc679 |
|||
- | 新建形目 | f7d7108 |
|||
- | 日历定位;合并 | ea3f937 |
|||
- | 日常任务插件调整 | c1881f9 |
|||
- | 时间基准线,默认插件 | a33ba1e |
|||
- | 时间轴修改状态时提示框增加 | e841392 |
|||
- | 时间轴界面 | 33927e9 |
|||
- | 标题栏变化 | 3898cfe |
|||
- | 标题栏变化 | c0fcd9d |
|||
- | 标题栏角色栏全局任务组件新建 | 0500cb4 |
|||
- | 检查交付物 | 9d92be5 |
|||
- | 模拟接口测试 | 69e7931 |
|||
- | 添加内置插件-交付物 | 6e0bc46 |
|||
- | 添加子任务插件 子项目插件 | 7bda7e2 |
|||
- | 添加时间轴上下滚动 | 2b81bbc |
|||
- | 添加项目排序 | a0b491b |
|||
- | 点击日历日期查询项目列表 | c458385 |
|||
- | 细节调整,添加project-webview | 4d9050b |
|||
- | 绑定手机号 | 52e0352 |
|||
- | 缓存修改 | 63e1f0d |
|||
- | 角色栏实现 | 94cd671 |
|||
- | 设置小红点 | 9316bcb |
|||
- | 距调整pc端 | 5069aa1 |
|||
- | 适配小程序;小程序登录 | cefc0eb |
|||
- | 配置默认插件接口 | f0c177d |
|||
- | 面变化首页变化 | 5e860f1 |
|||
- | 项目api url设置 | 6cd5245 |
|||
- | 项目列表, 项目url | 32e005b |
|||
- | 项目创建分享链接 | eb2c4ba |
|||
- | 首页项目样式改变 | 8514c85 |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ----------------- | --------------------------------------------------------- | -------- | |
|||
| - | api 封装 | 7d4edfc | |
|||
| bind phone | 图形验证码;短信验证码;绑定手机号 | 93ffea2 | |
|||
| - | cache indexedDB 处理 | 3388967 | |
|||
| calendar, tall.js | 上下滑动切换日历的模式,tall.js 中 domain 根据环境变量切换 | 364e25d | |
|||
| - | db store | 6414c4f | |
|||
| default plugin | 添加默认插件;项目列表;全局项目最大高度设置 | ed1d87b | |
|||
| - | indexedDB | 687394e | |
|||
| mp | 兼容小程序,去除 window,document 等 | 9178255 | |
|||
| - | network 控制本地缓存的使用 | 858429e | |
|||
| phone-bind | 验证码 validate | a427250 | |
|||
| pinch | alloy finger 实现图片的 pinch 放大缩小 | de01343 | |
|||
| plugin | 插件添加了 token 及 param 参数 | aeb0292 | |
|||
| - | post 封装 | da52e94 | |
|||
| - | tall 插件封装 | 1bcb920 | |
|||
| task status | 任务状态切换未完 | 7ffd135 | |
|||
| - | ws storage | 21b3a06 | |
|||
| - | 上传逻辑变化 | 3ff1dc2 | |
|||
| - | 任务状态时间显示 | 56f5183 | |
|||
| - | 任务进行中状态数字 | 27b7326 | |
|||
| - | 全局插件及默认插件位置修改 | 6c80d08 | |
|||
| - | 分享项目和点击分享的项目链接 | 032d83c | |
|||
| - | 向右箭头图标变化 | 8e9ca55 | |
|||
| - | 字体大小更改 | 82cfdd4 | |
|||
| - | 存 token | b8a178d | |
|||
| - | 定期任务面板骨架屏添加 | b2698c0 | |
|||
| 富文本插件 | 富文本插件 demo 测试 | ed3d644 | |
|||
| - | 导入 wbs | 1224fcb | |
|||
| - | 导入项目,更新项目 | 5e06adf | |
|||
| - | 导入项目后提示并打开项目详情页 | 410f527 | |
|||
| - | 引入 dayjs | 29b8b93 | |
|||
| - | 提交到本地 | 9cbe411 | |
|||
| - | 插件参数处理调整 | a3e68d3 | |
|||
| - | 插件数据获取 | 5b91bdc | |
|||
| - | 新建任务 部分提交参数 | 25c78b8 | |
|||
| - | 新建任务 部分提交参数 | 6a422f6 | |
|||
| - | 新建任务,分享项目弹出层样式修改 | efbc679 | |
|||
| - | 新建形目 | f7d7108 | |
|||
| - | 日历定位;合并 | ea3f937 | |
|||
| - | 日常任务插件调整 | c1881f9 | |
|||
| - | 时间基准线,默认插件 | a33ba1e | |
|||
| - | 时间轴修改状态时提示框增加 | e841392 | |
|||
| - | 时间轴界面 | 33927e9 | |
|||
| - | 标题栏变化 | 3898cfe | |
|||
| - | 标题栏变化 | c0fcd9d | |
|||
| - | 标题栏角色栏全局任务组件新建 | 0500cb4 | |
|||
| - | 检查交付物 | 9d92be5 | |
|||
| - | 模拟接口测试 | 69e7931 | |
|||
| - | 添加任务对接口 | 7fc959d | |
|||
| - | 添加内置插件-交付物 | 6e0bc46 | |
|||
| - | 添加医院项目下的问卷悬浮按钮 | e68e633 | |
|||
| - | 添加子任务插件 子项目插件 | 7bda7e2 | |
|||
| - | 添加时间轴上下滚动 | 2b81bbc | |
|||
| - | 添加禁用角色 | 732684d | |
|||
| - | 添加项目排序 | a0b491b | |
|||
| - | 点击日历日期查询项目列表 | c458385 | |
|||
| - | 细节调整,添加 project-webview | 4d9050b | |
|||
| - | 绑定手机号 | 52e0352 | |
|||
| - | 缓存修改 | 63e1f0d | |
|||
| - | 角色栏实现 | 94cd671 | |
|||
| - | 设置小红点 | 9316bcb | |
|||
| - | 距调整 pc 端 | 5069aa1 | |
|||
| - | 适配小程序;小程序登录 | cefc0eb | |
|||
| - | 配置默认插件接口 | f0c177d | |
|||
| - | 面变化首页变化 | 5e860f1 | |
|||
| - | 项目 api url 设置 | 6cd5245 | |
|||
| - | 项目列表, 项目 url | 32e005b | |
|||
| - | 项目创建分享链接 | eb2c4ba | |
|||
| - | 首页项目样式改变 | 8514c85 | |
|||
|
|||
### 🎨 代码样式 |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | calendar注释 | a2ec112 |
|||
- | indexedDB.js格式整理 | b0d3a36 |
|||
- | 代码审查 | d75134c |
|||
- | 代码格式细节调整 | cb2532b |
|||
- | 任务快捷方式图标增加 | 4aba872 |
|||
- | 修改角色样式 | 73e268e |
|||
- | 修改选择检查人样式 | 4c2de55 |
|||
- | 删除calendar中多余的console | e339eec |
|||
- | 删除console.log | 5064a38 |
|||
- | 删除index中没用的alert代码 | 9c9eec7 |
|||
- | 删除mock,console;upload添加loading | 99d42e2 |
|||
- | 删除多余字段 | 5ae3973 |
|||
- | 删除插件携带的多余文件 | 0f392bb |
|||
- | 删除没用代码 | 34b20e1 |
|||
- | 图标修改 | 54bca09 |
|||
- | 无基本变化 | 21ac4bb |
|||
- | 日常任务修改 | dfa7ee2 |
|||
- | 更新代码 | 8c27e68 |
|||
- | 更新代码 | 1f40a76 |
|||
- | 格式细节调整 | b907a03 |
|||
- | 添加插件数据 | 2f11b42 |
|||
- | 组件新建 | 89c0035 |
|||
- | 细节调整 | 2cfc09a |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ---- | ------------------------------------- | -------- | |
|||
| - | calendar 注释 | a2ec112 | |
|||
| - | indexedDB.js 格式整理 | b0d3a36 | |
|||
| - | 代码审查 | d75134c | |
|||
| - | 代码格式细节调整 | cb2532b | |
|||
| - | 任务快捷方式图标增加 | 4aba872 | |
|||
| - | 修改角色样式 | 73e268e | |
|||
| - | 修改选择检查人样式 | 4c2de55 | |
|||
| - | 删除 calendar 中多余的 console | e339eec | |
|||
| - | 删除 console.log | a9ead1a | |
|||
| - | 删除 console.log | 5064a38 | |
|||
| - | 删除 index 中没用的 alert 代码 | 9c9eec7 | |
|||
| - | 删除 mock,console;upload 添加 loading | 99d42e2 | |
|||
| - | 删除多余字段 | 5ae3973 | |
|||
| - | 删除插件携带的多余文件 | 0f392bb | |
|||
| - | 删除没用代码 | 34b20e1 | |
|||
| - | 图标修改 | 54bca09 | |
|||
| - | 无基本变化 | 21ac4bb | |
|||
| - | 日常任务修改 | dfa7ee2 | |
|||
| - | 更新代码 | 8c27e68 | |
|||
| - | 更新代码 | 1f40a76 | |
|||
| - | 格式细节调整 | b907a03 | |
|||
| - | 添加插件数据 | 2f11b42 | |
|||
| - | 组件新建 | 89c0035 | |
|||
| - | 细节调整 | 2cfc09a | |
|||
|
|||
### 🐛 Bug 修复 |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | 1.时间轴数据渲染 2.时间基准线 | d643af2 |
|||
- | api 存storage | 81032ba |
|||
ID1000343 | 解决向下预加载查询参数时间没+1颗粒度;以及滚动加载颗粒度写死的问题 | 940603a, closes #ID1000343 |
|||
plugin | 插件解析机制完善 | 0f5a27d |
|||
project title | 项目标题修改; 切换角色移除script | 5c20017 |
|||
roles | 修复默认显示不是我的角色的问题 | b69f94f |
|||
role | 切换角色的逻辑修正完善 | 4ae534f |
|||
task任务逻辑完善 | 减少初始global及regular的不必要请求 | bd4bd38 |
|||
- | title.vue根据页面栈显示返回按钮;标题文本超出显示... | 0cbacf4 |
|||
- | 上下滑动加载定期任务 | 4090d89 |
|||
- | 上下滚动时间轴 | d533a01 |
|||
- | 下拉加载定期任务传参,时间格式化修改 | 0b95a0e |
|||
- | 交付物+考勤管理 | 7020c78 |
|||
- | 交付物显示样式修改 | be2f3cd |
|||
- | 任务开始时间延迟插件 | 992a313 |
|||
- | 修改main | 749ae9a |
|||
- | 修改定期任务状态0和4时不加载圆圈 | 30e352f |
|||
- | 修改小红点传参 | 87b20fd |
|||
- | 修改报错 | 531c14d |
|||
- | 修改接口路径 | df6acf2 |
|||
- | 修改角色栏组件 | a54c601 |
|||
- | 切换到默认项目角色没有激活状态的bug | 438d448 |
|||
- | 切换日历时查询小红点 | 7091789 |
|||
- | 初始展示角色修改 | 2ac4053 |
|||
- | 定期任务key值修改 | c6688db |
|||
- | 定期任务接口 | aa4981c |
|||
- | 定期任务插件 | 92b3254 |
|||
- | 定期任务未加载时,显示空的时间轴并能上下滑动 | ce38093 |
|||
- | 定期任务本地缓存和api赋值,未完成 | 5a10856 |
|||
定期任务本地缓存和api赋值,未完成 | 定期任务本地缓存和api赋值,未完成 | b22a366 |
|||
- | 定期任务骨架屏修改 | 8ff72dd |
|||
- | 平车演示临时去掉项目快捷方式的toast提示 | e0b2c23 |
|||
- | 手动展开日常任务 | 0a4a622 |
|||
- | 提示信息显示bug及日常任务收缩问题 | f2f06c5 |
|||
- | 插件bug解决 | 41257eb |
|||
- | 收到消息修改任务状态 | c378063 |
|||
- | 日历无任务时添加小绿点,时间轴刻度无任务不显示时分 | 0f90868 |
|||
- | 日常任务html数据查验 | 880ce5c |
|||
- | 日常任务插件遍历时的key值修改 | cd26285 |
|||
- | 日常任务插件面板高度修改 | 249f9e4 |
|||
- | 时间轴上下滑动 | 4d0ae46 |
|||
- | 时间轴上下滚动数据加载bug修改 | e82ede4 |
|||
- | 时间轴插件 | 225d3cc |
|||
- | 时间轴无任务时时间刻度加载修改 | 4921672 |
|||
- | 时间轴滚动位置修改 | 551da63 |
|||
- | 时间轴骨架屏修改 | ca78d02 |
|||
- | 检查交付物传参修改 | ebe0031 |
|||
- | 检查交付物传参修改 | 37b51bc |
|||
- | 滚动id函数优化 | b351b67 |
|||
- | 监听时间基本点 | 033fca0 |
|||
- | 角色显示状态修改 | 7d3b906 |
|||
- | 角色栏修改 | 19228d6 |
|||
- | 解决时间轴报错 | da1eece |
|||
- | 设置时间轴自动滚动到当前位置 | a3474f8 |
|||
- | 调试定期任务bug;不能合并使用 | d641312 |
|||
- | 跳转详情页返回路径修改 | c5e17c0 |
|||
- | 骨架屏替换 | e9fdd71 |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ---------------------------------- | ------------------------------------------------------------------ | -------------------------- | |
|||
| - | 1.时间轴数据渲染 2.时间基准线 | d643af2 | |
|||
| - | api 存 storage | 81032ba | |
|||
| ID1000343 | 解决向下预加载查询参数时间没+1 颗粒度;以及滚动加载颗粒度写死的问题 | 940603a, closes #ID1000343 | |
|||
| plugin | 插件解析机制完善 | 0f5a27d | |
|||
| project title | 项目标题修改; 切换角色移除 script | 5c20017 | |
|||
| roles | 修复默认显示不是我的角色的问题 | b69f94f | |
|||
| role | 切换角色的逻辑修正完善 | 4ae534f | |
|||
| task 任务逻辑完善 | 减少初始 global 及 regular 的不必要请求 | bd4bd38 | |
|||
| - | title.vue 根据页面栈显示返回按钮;标题文本超出显示... | 0cbacf4 | |
|||
| - | 上下滑动加载定期任务 | 4090d89 | |
|||
| - | 上下滚动时间轴 | d533a01 | |
|||
| - | 下拉加载定期任务传参,时间格式化修改 | 0b95a0e | |
|||
| - | 交付物+考勤管理 | 7020c78 | |
|||
| - | 交付物显示样式修改 | be2f3cd | |
|||
| - | 任务开始时间延迟插件 | 992a313 | |
|||
| - | 修复日常任务面板内容显示不全的问题 | 053be5b | |
|||
| - | 修改 main | 749ae9a | |
|||
| - | 修改定期任务状态 0 和 4 时不加载圆圈 | 30e352f | |
|||
| - | 修改小红点传参 | 87b20fd | |
|||
| - | 修改报错 | 531c14d | |
|||
| - | 修改接口路径 | df6acf2 | |
|||
| - | 修改时间轴定期任务加载逻辑 | 1977c00 | |
|||
| - | 修改角色栏组件 | a54c601 | |
|||
| - | 修改项目详情页返回首页 bug | e942887 | |
|||
| - | 全局任务点击时保存角色 id 到本地 | e1a17c5 | |
|||
| - | 分享未登录提示修改 | 80eb4c5 | |
|||
| - | 分享项目链接 | d867239 | |
|||
| - | 切换到默认项目角色没有激活状态的 bug | 438d448 | |
|||
| - | 切换日历时查询小红点 | 7091789 | |
|||
| - | 初始展示角色修改 | 2ac4053 | |
|||
| - | 定期任务 key 值修改 | c6688db | |
|||
| - | 定期任务接口 | aa4981c | |
|||
| - | 定期任务插件 | 92b3254 | |
|||
| - | 定期任务未加载时,显示空的时间轴并能上下滑动 | ce38093 | |
|||
| - | 定期任务本地缓存和 api 赋值,未完成 | 5a10856 | |
|||
| 定期任务本地缓存和 api 赋值,未完成 | 定期任务本地缓存和 api 赋值,未完成 | b22a366 | |
|||
| - | 定期任务骨架屏修改 | 8ff72dd | |
|||
| - | 平车演示临时去掉项目快捷方式的 toast 提示 | e0b2c23 | |
|||
| - | 手动展开日常任务 | 0a4a622 | |
|||
| - | 接受切换项目消息,分享项目 | 2f84ae1 | |
|||
| - | 接受切换项目消息,分享项目 | 5ea2fe4 | |
|||
| - | 提示信息显示 bug 及日常任务收缩问题 | f2f06c5 | |
|||
| - | 插件 bug 解决 | 41257eb | |
|||
| - | 收到消息修改任务状态 | c378063 | |
|||
| - | 日历无任务时添加小绿点,时间轴刻度无任务不显示时分 | 0f90868 | |
|||
| - | 日常任务 html 数据查验 | 880ce5c | |
|||
| - | 日常任务插件遍历时的 key 值修改 | cd26285 | |
|||
| - | 日常任务插件面板高度修改 | 249f9e4 | |
|||
| - | 时间轴上下滑动 | 4d0ae46 | |
|||
| - | 时间轴上下滚动数据加载 bug 修改 | e82ede4 | |
|||
| - | 时间轴插件 | 225d3cc | |
|||
| - | 时间轴无任务时时间刻度加载修改 | 4921672 | |
|||
| - | 时间轴滚动位置修改 | 551da63 | |
|||
| - | 时间轴自动滚动到对应位置修改 | e5a13c8 | |
|||
| - | 时间轴自动滚动到对应位置修改 | 1c23019 | |
|||
| - | 时间轴骨架屏修改 | ca78d02 | |
|||
| - | 检查交付物传参修改 | ebe0031 | |
|||
| - | 检查交付物传参修改 | 37b51bc | |
|||
| - | 添加页面返回功能 解决角色滚动 bug | 87ce0f7 | |
|||
| - | 滚动 id 函数优化 | b351b67 | |
|||
| - | 监听时间基本点 | 033fca0 | |
|||
| - | 角色显示状态修改 | 7d3b906 | |
|||
| - | 角色栏修改 | 19228d6 | |
|||
| - | 角色滚动问题修复 | c8ee189 | |
|||
| - | 解决时间轴报错 | da1eece | |
|||
| - | 解决进项目角色 id 不更新问题 | 3b400df | |
|||
| - | 设置时间轴自动滚动到当前位置 | a3474f8 | |
|||
| - | 调查问卷未读数计算修改 | 69677ce | |
|||
| - | 调试定期任务 bug;不能合并使用 | d641312 | |
|||
| - | 跳转详情页返回路径修改 | c5e17c0 | |
|||
| - | 骨架屏替换 | e9fdd71 | |
|||
|
|||
### 📝 文档 |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | README.md | ab0eb05 |
|||
- | 新建项目,分享项目样式修改 | 4524d4a |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ---- | -------------------------- | -------- | |
|||
| - | README.md | ab0eb05 | |
|||
| - | 新建项目,分享项目样式修改 | 4524d4a | |
|||
|
|||
### 🔧 测试 |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | 提交交付物选择检查人样式修改 | b8d5aeb |
|||
- | 暂时移除了jest浏览器配置 | 5088d01 |
|||
- | 添加测试,测试utils/time.js的computeDurationText | e758010 |
|||
- | 禁用任务开始操作 | b5425db |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ---- | --------------------------------------------------- | -------- | |
|||
| - | 提交交付物选择检查人样式修改 | b8d5aeb | |
|||
| - | 暂时移除了 jest 浏览器配置 | 5088d01 | |
|||
| - | 添加测试,测试 utils/time.js 的 computeDurationText | e758010 | |
|||
| - | 禁用任务开始操作 | b5425db | |
|||
|
|||
### 🔨 代码重构 |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
calendar | 日历细节调整 | 1a8d6bf |
|||
- | project 代码健壮性完善 | a3202c5 |
|||
- | puppeteer升级v10 | f02b0e7 |
|||
store/home | 删除store/home | db8a3b4 |
|||
tailwindcss | tailwindcss CDN引入;移除相关配置文件及包;开启treeShaking | 15485a0 |
|||
task beginTime | 格式化任务开始时间 | fbc0301 |
|||
template | eslint prettier sass uview tailwindcss | 9c966a1 |
|||
tips | 修改任务状态方法重构 | b57d3ac |
|||
tip | 任务状态显示及tip组件数据的重构 | 78a5750 |
|||
title.vue | 移除测试的repeat; 样式细节调整 | c32d2bd |
|||
- | 下滑时间轴添加备注 | 4fd20e3 |
|||
- | 任务状态重构 | 4693655 |
|||
- | 删除多余的weekmode store里的东西 | 0841fe0 |
|||
- | 删除多余的技术验证界面 | 542ae5b |
|||
- | 只保留project内容 | 7781c7b |
|||
- | 界面样式调整 | 4367249 |
|||
- | 重构store分层 | 5f6fff8 |
|||
- | 重构时间刻度渲染任务 | 5cf7d08 |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| -------------- | ------------------------------------------------------------ | -------- | |
|||
| calendar | 日历细节调整 | 1a8d6bf | |
|||
| - | project 代码健壮性完善 | a3202c5 | |
|||
| - | puppeteer 升级 v10 | f02b0e7 | |
|||
| store/home | 删除 store/home | db8a3b4 | |
|||
| tailwindcss | tailwindcss CDN 引入;移除相关配置文件及包;开启 treeShaking | 15485a0 | |
|||
| task beginTime | 格式化任务开始时间 | fbc0301 | |
|||
| template | eslint prettier sass uview tailwindcss | 9c966a1 | |
|||
| tips | 修改任务状态方法重构 | b57d3ac | |
|||
| tip | 任务状态显示及 tip 组件数据的重构 | 78a5750 | |
|||
| title.vue | 移除测试的 repeat; 样式细节调整 | c32d2bd | |
|||
| - | webview 返回主框架 | 6aa728b | |
|||
| - | 下滑时间轴添加备注 | 4fd20e3 | |
|||
| - | 任务状态重构 | 4693655 | |
|||
| - | 修改角色栏和日常任务面板的样式 | d653f9a | |
|||
| - | 删除多余的 weekmode store 里的东西 | 0841fe0 | |
|||
| - | 删除多余的技术验证界面 | 542ae5b | |
|||
| - | 删除无用的修改 | f601f3b | |
|||
| - | 只保留 project 内容 | 7781c7b | |
|||
| - | 更改版本号 | 64af936 | |
|||
| - | 界面样式调整 | 4367249 | |
|||
| - | 重构 store 分层 | 5f6fff8 | |
|||
| - | 重构时间刻度渲染任务 | 5cf7d08 | |
|||
|
|||
### 🚀 性能优化 |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | 1.时间轴筛选相同的时间替换数据 2.整理代码 | e082ccb |
|||
- | 修改代码格式 | 14123d7 |
|||
- | 修改定期任务骨架屏高度 | 909a734 |
|||
- | 修改样式 | 322b0fb |
|||
- | 务,分享项目样框样式修改式弹框 | dab3d44 |
|||
- | 小红点api缓存修改 | e992343 |
|||
- | 插件查询及展示 | 4dba770 |
|||
- | 整理代码 | 7a55315 |
|||
- | 日历的更改 | 7353ac8 |
|||
- | 测试接口 | 215e074 |
|||
- | 添加弹框动画 | 8903854 |
|||
- | 组件文件夹新建 | 22bfe7b |
|||
- | 组件文件夹新建 | 17bb8c9 |
|||
- | 组件文件夹新建 | 1421504 |
|||
- | 角色栏文字颜色修改 | 215c6b3 |
|||
- | 解决警告 | c932b09 |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ---- | ----------------------------------------- | -------- | |
|||
| - | 1.时间轴筛选相同的时间替换数据 2.整理代码 | e082ccb | |
|||
| - | 修改代码格式 | 14123d7 | |
|||
| - | 修改内置插件任务名 | 1191396 | |
|||
| - | 修改定期任务骨架屏高度 | 909a734 | |
|||
| - | 修改样式 | 322b0fb | |
|||
| - | 务,分享项目样框样式修改式弹框 | dab3d44 | |
|||
| - | 小红点 api 缓存修改 | e992343 | |
|||
| - | 插件查询及展示 | 4dba770 | |
|||
| - | 整理代码 | 7a55315 | |
|||
| - | 新建任务界面完善 | 2033b55 | |
|||
| - | 日历的更改 | 7353ac8 | |
|||
| - | 日常任务样式修改 | 4628301 | |
|||
| - | 测试接口 | 215e074 | |
|||
| - | 添加弹框动画 | 8903854 | |
|||
| - | 组件文件夹新建 | 22bfe7b | |
|||
| - | 组件文件夹新建 | 17bb8c9 | |
|||
| - | 组件文件夹新建 | 1421504 | |
|||
| - | 角色栏文字颜色修改 | 215c6b3 | |
|||
| - | 解决警告 | c932b09 | |
|||
|
|||
### chore |
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | api 封装 | 8dcb8a2 |
|||
- | env host修改 | a79a4a5 |
|||
- | merge globals | b0957cc |
|||
- | merge wrr | 5ccc7a5 |
|||
- | merge wrr lucky | 959ae05 |
|||
- | mock | 51c24a5 |
|||
node-sass | 替换node-sass为sass(dart-sass) | c33169d |
|||
package manifest | 去掉了摇树 | f7c1dd4 |
|||
pwa 小程序 | 移除了pwa,alloyFinger添加平台判断 | 875fab4 |
|||
- | uview-ui | a9ea34b |
|||
v3.0.1 | tall api 地址从1.0改成了3.0 | db5afd5 |
|||
信息配置 | 配置eslint等配置 | 7421443 |
|||
- | 修复不能build的问题 | 0b7b91e |
|||
- | 关掉了treeShaking | 3d9bac5 |
|||
- | 删除vuedragable及修改运行端口为9000 | c864f91 |
|||
- | 删除多余的构建的命令 | 3f4eb2f |
|||
|
|||
|
|||
范围|描述|commitId |
|||
--|--|-- |
|||
- | style:index | 978f272 |
|||
- | !2 基础模板v1.1.0 | f5e61dd |
|||
- | init | c0f1deb |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ---------------- | -------------------------------------- | -------- | |
|||
| - | api 封装 | 8dcb8a2 | |
|||
| - | env host 修改 | a79a4a5 | |
|||
| - | merge globals | b0957cc | |
|||
| - | merge wrr | 5ccc7a5 | |
|||
| - | merge wrr lucky | 959ae05 | |
|||
| - | mock | 51c24a5 | |
|||
| node-sass | 替换 node-sass 为 sass(dart-sass) | c33169d | |
|||
| package manifest | 去掉了摇树 | f7c1dd4 | |
|||
| pwa 小程序 | 移除了 pwa,alloyFinger 添加平台判断 | 875fab4 | |
|||
| - | uview-ui | a9ea34b | |
|||
| v3.0.1 | tall api 地址从 1.0 改成了 3.0 | db5afd5 | |
|||
| 信息配置 | 配置 eslint 等配置 | 7421443 | |
|||
| - | 修复不能 build 的问题 | 0b7b91e | |
|||
| - | 关掉了 treeShaking | 3d9bac5 | |
|||
| - | 删除 vuedragable 及修改运行端口为 9000 | c864f91 | |
|||
| - | 删除多余的构建的命令 | 3f4eb2f | |
|||
|
|||
| 范围 | 描述 | commitId | |
|||
| ---- | ------------------ | -------- | |
|||
| - | style:index | 978f272 | |
|||
| - | !2 基础模板 v1.1.0 | f5e61dd | |
|||
| - | init | c0f1deb | |
|||
|
@ -0,0 +1,100 @@ |
|||
<template> |
|||
<view class="input-group flex-1"> |
|||
<input :placeholder="placeholder" @input="search" @blur="hideList" v-model="backName" /> |
|||
<view class="ul"> |
|||
<view class="li" v-for="(item, index) in dataSource" :key="index" @tap="select(item)">{{ item.name }}</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
props: { |
|||
placeholder: String, //默认提示 |
|||
searchKey: String, //模糊搜索的key值 |
|||
dataSource: { |
|||
type: Array, |
|||
default: function () { |
|||
//数据源 |
|||
return []; |
|||
}, |
|||
}, |
|||
}, |
|||
data() { |
|||
return { |
|||
list: [], |
|||
name: '', |
|||
backName: '', |
|||
}; |
|||
}, |
|||
destroyed() { |
|||
clearTimeout(this.t); |
|||
}, |
|||
methods: { |
|||
search(e) { |
|||
let val = e.detail.value; |
|||
this.$emit('searchPrevTask', val); |
|||
|
|||
// let arr = []; |
|||
// for (let i = 0; i < dataSource.length; i++) { |
|||
// if (dataSource[i].name.indexOf(val) !== -1) { |
|||
// arr.push(dataSource[i]); |
|||
// } |
|||
// } |
|||
// if (!val) { |
|||
// this.list = []; |
|||
// } else { |
|||
// this.list = arr; |
|||
// } |
|||
}, |
|||
|
|||
select(item) { |
|||
console.log('item: ', item); |
|||
this.backName = item.name; |
|||
this.$emit('select', item); |
|||
}, |
|||
|
|||
hideList() { |
|||
setTimeout(() => { |
|||
this.$emit('clearAllTasks'); |
|||
}, 200); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.input-group { |
|||
position: relative; |
|||
|
|||
input { |
|||
border-bottom: 1upx solid #dcdfe6; |
|||
height: 90upx; |
|||
padding-left: 10upx; |
|||
font-size: 30upx; |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
.uni-input-placeholder { |
|||
color: rgb(192, 196, 204); |
|||
font-size: 28upx; |
|||
} |
|||
|
|||
.ul { |
|||
position: absolute; |
|||
left: 0; |
|||
top: 100%; |
|||
width: 100%; |
|||
z-index: 999; |
|||
background: #fff; |
|||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); |
|||
max-height: 100px; |
|||
overflow-y: auto; |
|||
|
|||
.li { |
|||
border-bottom: 1upx solid #f1f1f1; |
|||
padding: 16upx; |
|||
} |
|||
} |
|||
} |
|||
</style> |
@ -1,11 +1,185 @@ |
|||
<template> |
|||
<view class="flex justify-between" style="min-width: 90px"> |
|||
<u-icon custom-prefix="custom-icon" name="C-bxl-redux" size="17px"></u-icon> |
|||
<u-icon custom-prefix="custom-icon" name="attachment" size="21px"></u-icon> |
|||
<u-icon custom-prefix="custom-icon" name="moneycollect" size="20px"></u-icon> |
|||
<view> |
|||
<view class="flex justify-between" style="min-width: 90px; position: relative"> |
|||
<u-icon custom-prefix="custom-icon" name="C-bxl-redux" size="17px"></u-icon> |
|||
<u-icon custom-prefix="custom-icon" name="attachment" size="21px"></u-icon> |
|||
<!-- <u-icon custom-prefix="custom-icon" name="moneycollect" size="20px"></u-icon> --> |
|||
<u-icon name="xuanxiang" custom-prefix="custom-icon" size="21px" @click="operation"></u-icon> |
|||
|
|||
<!-- 右上角 ... 弹窗 --> |
|||
<view class="popup border shadow-md" v-if="show"> |
|||
<view class="flex justify-center pb-3 border-b-1"> |
|||
<span @click="createTask">新建任务</span> |
|||
</view> |
|||
<view class="flex pt-3 justify-center"> |
|||
<span>克隆任务</span> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<!-- 遮罩 --> |
|||
<view class="mask" v-if="maskShow" @click="closeMask"></view> |
|||
<!-- 新建任务弹窗 --> |
|||
<CreateTask |
|||
:startTime="startTime" |
|||
:endTime="endTime" |
|||
:task="task" |
|||
@showTime="showTime" |
|||
@closeMask="closeMask" |
|||
class="thirdPopup flex transition-transform" |
|||
v-if="createTaskShow" |
|||
/> |
|||
|
|||
<u-picker title="开始时间" mode="time" v-model="showStart" :params="params" @confirm="confirmStartTime"></u-picker> |
|||
<u-picker title="结束时间" mode="time" v-model="showEnd" :params="params" @confirm="confirmEndTime"></u-picker> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default {}; |
|||
import CreateTask from '../../Title/components/CreateTask.vue'; |
|||
|
|||
export default { |
|||
components: { CreateTask }, |
|||
|
|||
props: { |
|||
task: { |
|||
type: Object, |
|||
default: () => {}, |
|||
}, |
|||
}, |
|||
|
|||
data() { |
|||
return { |
|||
show: false, //右上角 ... 显示 |
|||
createTaskShow: false, //新建项目显示 |
|||
secondShow: false, //分享项目显示 |
|||
maskShow: false, //遮罩显示 |
|||
showStart: false, |
|||
showEnd: false, |
|||
startTime: '', // 新建任务的开始时间 |
|||
endTime: '', // 新建任务的截止时间 |
|||
params: { |
|||
year: true, |
|||
month: true, |
|||
day: true, |
|||
hour: true, |
|||
minute: true, |
|||
second: true, |
|||
}, |
|||
}; |
|||
}, |
|||
|
|||
methods: { |
|||
//操作 |
|||
operation() { |
|||
// this.$t.ui.showToast('操作'); |
|||
this.show = !this.show; |
|||
}, |
|||
|
|||
// 新建项目 |
|||
createTask() { |
|||
// 关闭 ... 弹窗 |
|||
this.show = false; |
|||
// 打开遮罩 |
|||
this.maskShow = true; |
|||
// 打开新建项目弹窗 |
|||
this.createTaskShow = true; |
|||
}, |
|||
|
|||
//点击遮罩,关闭弹窗 |
|||
closeMask() { |
|||
// 关闭遮罩 |
|||
this.maskShow = false; |
|||
// 关闭分享项目弹窗 |
|||
this.secondShow = false; |
|||
// 关闭新建项目弹窗 |
|||
this.createTaskShow = false; |
|||
}, |
|||
|
|||
showTime() { |
|||
this.showStart = !this.showStart; |
|||
}, |
|||
|
|||
// 选择开始时间 |
|||
confirmStartTime(e) { |
|||
this.startTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`; |
|||
this.showEnd = true; |
|||
}, |
|||
|
|||
// 选择结束时间 |
|||
confirmEndTime(e) { |
|||
this.endTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`; |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.mask { |
|||
width: 100%; |
|||
height: 100vh; |
|||
z-index: 21; |
|||
position: fixed; |
|||
top: 0; |
|||
left: 0; |
|||
background: rgba(0, 0, 0, 0.3); |
|||
} |
|||
|
|||
.thirdPopup { |
|||
background: #ffffff; |
|||
position: fixed; |
|||
left: 50%; |
|||
top: 50%; |
|||
transform: translate(-50%, -50%); |
|||
z-index: 33; |
|||
border-radius: 5px; |
|||
width: 90%; |
|||
} |
|||
|
|||
.popup { |
|||
width: 110px; |
|||
background: #fff; |
|||
position: absolute; |
|||
right: 0; |
|||
top: 35px; |
|||
z-index: 99; |
|||
padding: 15px 0; |
|||
color: black; |
|||
animation: opacity 1s ease-in; |
|||
} |
|||
|
|||
@keyframes opacity { |
|||
0% { |
|||
opacity: 0; |
|||
} |
|||
50% { |
|||
opacity: 0.8; |
|||
} |
|||
100% { |
|||
opacity: 1; |
|||
} |
|||
} |
|||
|
|||
::v-deep .u-slot-content { |
|||
min-width: 0; |
|||
} |
|||
::v-deep .u-dropdown__content { |
|||
min-height: 120px !important; |
|||
height: auto !important; |
|||
overflow-y: auto; |
|||
background: #fff !important; |
|||
transition: none !important; |
|||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); |
|||
} |
|||
::v-deep .u-dropdown__menu__item .u-flex { |
|||
justify-content: space-between; |
|||
width: 100%; |
|||
height: 100%; |
|||
flex-wrap: nowrap; |
|||
border: 1px solid #afbed1; |
|||
padding: 0 8px; |
|||
} |
|||
::v-deep .u-dropdown__content__mask { |
|||
display: none; |
|||
} |
|||
</style> |
|||
|
@ -0,0 +1,457 @@ |
|||
<template> |
|||
<div class="new-projects-box"> |
|||
<div class="form"> |
|||
<!-- 项目名称 --> |
|||
<view class="mb-3 font-bold text-base flex justify-center">新建任务</view> |
|||
<div class="flex items-center mb-2"> |
|||
<div>名称<span class="text-red-500">*</span>:</div> |
|||
<u-input max-length="5" v-model="name" :type="type" :border="border" /> |
|||
</div> |
|||
<!-- 起止时间 --> |
|||
<div class="mb-2"> |
|||
<div>起止时间:</div> |
|||
<u-input placeholder="请选择起止时间" v-model="timeValue" :type="type" :border="border" @click="$emit('showTime')" /> |
|||
</div> |
|||
<!-- 多选框 --> |
|||
<div class="flex justify-between items-center"> |
|||
<div>负责人<span class="text-red-500">*</span>:</div> |
|||
<div class="flex-1" v-if="hasRole">{{ roleName }}</div> |
|||
<div label="负责人" class="flex-1" v-else> |
|||
<u-dropdown disabled ref="uDropdown" placeholder="请选择负责人"> |
|||
<u-dropdown-item :title="roleList"> |
|||
<view class="slot-content bg-white"> |
|||
<div |
|||
class="flex flex-row justify-between mb-1 drop-item" |
|||
v-for="(role, roleIndex) in roleOptions" |
|||
:key="roleIndex" |
|||
@click="change(roleIndex)" |
|||
> |
|||
<view v-model="role.id">{{ role.name }}</view> |
|||
<u-icon v-if="role.dropdownShow" name="checkbox-mark" color="#2979ff" size="28"></u-icon> |
|||
</div> |
|||
</view> |
|||
</u-dropdown-item> |
|||
</u-dropdown> |
|||
</div> |
|||
</div> |
|||
<!-- 下拉图标 --> |
|||
<div class="flex justify-center my-6"> |
|||
<u-icon v-if="arrow" name="arrow-down" size="28" @click="openDropdown"></u-icon> |
|||
<u-icon v-else name="arrow-up" size="28" @click="closeSecondDropdown"></u-icon> |
|||
</div> |
|||
<!-- 下拉框的内容 --> |
|||
<div v-if="show" class="mb-6"> |
|||
<!-- 描述 --> |
|||
<div class="flex items-center mb-2"> |
|||
<div>描述:</div> |
|||
<u-input v-model="description" max-length="48" type="textarea" height="36" auto-height :border="border" /> |
|||
</div> |
|||
<!-- 所属项目 --> |
|||
<div class="w flex items-center mb-2"> |
|||
<div>所属项目<span class="text-red-500">*</span>:</div> |
|||
<div>{{ project.name }}</div> |
|||
</div> |
|||
<!-- 所属任务 --> |
|||
<div class="w flex items-center mb-2" v-if="task && task.id"> |
|||
<div>所属任务:</div> |
|||
<div>{{ task.name }}</div> |
|||
</div> |
|||
<!-- 上道工序 --> |
|||
<div class="flex items-center mb-2"> |
|||
<div>上道工序:</div> |
|||
<InputSearch |
|||
@searchPrevTask="searchPrevTask" |
|||
:dataSource="allTasks" |
|||
@select="handleChange" |
|||
@clearAllTasks="clearAllTasks" |
|||
placeholder="请输入上道工序" |
|||
/> |
|||
</div> |
|||
<!-- 检查人多选框 --> |
|||
<div class="flex justify-between items-center"> |
|||
<div>检查人<span class="text-red-500">*</span>:</div> |
|||
<div label="检查人" class="flex-1"> |
|||
<u-dropdown ref="dropdown"> |
|||
<u-dropdown-item :title="checkerList"> |
|||
<view class="slot-content bg-white"> |
|||
<div |
|||
class="flex flex-row justify-between mb-1 drop-item" |
|||
v-for="(checkoutOption, Index) in checkoutOptions" |
|||
:key="Index" |
|||
@click="choose(Index)" |
|||
> |
|||
<view v-model="checkoutOption.value">{{ checkoutOption.name }}</view> |
|||
<u-icon v-if="checkoutOption.dropdownShow" name="checkbox-mark" color="#2979ff" size="28"></u-icon> |
|||
</div> |
|||
</view> |
|||
</u-dropdown-item> |
|||
</u-dropdown> |
|||
</div> |
|||
</div> |
|||
<!-- 是否是日常任务 --> |
|||
<div class="flex justify-between items-center mt-6"> |
|||
是否是日常任务: |
|||
<u-switch v-model="isGlobal" size="28"></u-switch> |
|||
</div> |
|||
<div class="mt-6"> |
|||
<div>交付物:</div> |
|||
<div v-for="(sort, sortIndex) in deliverSort" :key="sortIndex"> |
|||
<u-input |
|||
@blur="addDeliverInput" |
|||
v-model="sort.name" |
|||
:placeholder="`交付物名称${sortIndex + 1}`" |
|||
:type="type" |
|||
:border="border" |
|||
/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="flex items-center mb-6"> |
|||
<u-button type="primary" size="medium" @click="setParameters">提交</u-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapState, mapGetters, mapMutations } from 'vuex'; |
|||
|
|||
export default { |
|||
props: { |
|||
startTime: { |
|||
type: String, |
|||
default: '', |
|||
}, |
|||
endTime: { |
|||
type: String, |
|||
default: '', |
|||
}, |
|||
task: { |
|||
type: Object, |
|||
default: null, |
|||
}, |
|||
}, |
|||
data() { |
|||
return { |
|||
arrow: true, |
|||
show: false, |
|||
isGlobal: false, //是否日常任务 |
|||
name: '', //名称 |
|||
showChooseTime: false, |
|||
timeValue: '', //起止时间 |
|||
description: '', //描述 |
|||
projectShow: false, //所属项目模糊搜索展示 |
|||
processTaskId: '', //上道工序 |
|||
type: 'text', |
|||
border: true, |
|||
roleList: undefined, //负责人默认多选 |
|||
checkerList: undefined, //检查人默认多选 |
|||
roleOptions: [], // 负责人下拉多选列表 |
|||
checkoutOptions: [], // 检查人下拉多选列表 |
|||
roleIdList: [], // 选中的负责人id |
|||
checkerIdList: [], // 选中的检查人id |
|||
deliverables: [], // 交付物 |
|||
deliverSort: [{ name: '' }], // 交付物排序 |
|||
allTasks: [], |
|||
roleName: '', // 负责人名字 |
|||
hasRole: false, // 有没有负责人 |
|||
}; |
|||
}, |
|||
|
|||
computed: { |
|||
...mapState('role', ['visibleRoles', 'roleId']), |
|||
...mapState('project', ['project']), |
|||
...mapState('task', ['tasks']), |
|||
...mapGetters('project', ['projectId']), |
|||
}, |
|||
|
|||
watch: { |
|||
endTime(val) { |
|||
if (val) { |
|||
this.timeValue = this.startTime + ' 至 ' + val; |
|||
} |
|||
}, |
|||
}, |
|||
|
|||
mounted() { |
|||
// 获取负责人和检查人列表 |
|||
if (this.visibleRoles.length) { |
|||
this.visibleRoles.forEach(role => { |
|||
role.dropdownShow = false; |
|||
role.status = false; |
|||
}); |
|||
} |
|||
this.roleOptions = this.$u.deepClone(this.visibleRoles); |
|||
this.checkoutOptions = this.$u.deepClone(this.visibleRoles); |
|||
|
|||
// 判断有没有负责人 是不是添加子任务 |
|||
if (this.roleId) { |
|||
const item = this.visibleRoles.find(r => r.id === this.roleId); |
|||
if (item) { |
|||
this.roleName = item.name; |
|||
this.hasRole = true; |
|||
} |
|||
} |
|||
}, |
|||
|
|||
methods: { |
|||
...mapMutations('task', ['updateTasks']), |
|||
|
|||
// 负责人下拉多选选中 |
|||
change(index) { |
|||
let arr = [...this.roleOptions]; |
|||
// 选择多选项图标的展示 |
|||
arr[index].dropdownShow = !arr[index].dropdownShow; |
|||
// 多选展示的改变 |
|||
this.roleList = arr[index].name; |
|||
let shows = ''; |
|||
// 遍历arr,如果选中,添加到多选展示框上 |
|||
arr.map(val => { |
|||
if (val.dropdownShow === true) { |
|||
shows += val.name + ','; |
|||
this.roleIdList.push(val.id); |
|||
} |
|||
}); |
|||
this.roleOptions = [...arr]; |
|||
// 删除最后的',' |
|||
this.roleList = shows.slice(0, shows.length - 1); |
|||
}, |
|||
|
|||
// 检查人下拉多选选中 |
|||
choose(index) { |
|||
let arr = [...this.checkoutOptions]; |
|||
// 选择多选项图标的展示 |
|||
arr[index].dropdownShow = !arr[index].dropdownShow; |
|||
// 多选展示的改变 |
|||
this.checkerList = arr[index].name; |
|||
let shows = ''; |
|||
// 遍历arr,如果选中,添加到多选展示框上 |
|||
arr.map(val => { |
|||
if (val.dropdownShow === true) { |
|||
shows += val.name + ','; |
|||
this.checkerIdList.push(val.id); |
|||
} |
|||
}); |
|||
this.checkoutOptions = [...arr]; |
|||
// 删除最后的',' |
|||
this.checkerList = shows.slice(0, shows.length - 1); |
|||
// this.roleList = arr[value - 1].name; |
|||
}, |
|||
|
|||
// 打开下拉框 |
|||
openDropdown() { |
|||
this.arrow = !this.arrow; |
|||
this.show = true; |
|||
}, |
|||
|
|||
// 关闭下拉框 |
|||
closeSecondDropdown() { |
|||
this.arrow = !this.arrow; |
|||
this.show = false; |
|||
}, |
|||
|
|||
/** |
|||
* 模糊查询 查找项目下的任务 |
|||
* @param name 任务名 |
|||
* @param projectId 项目id |
|||
*/ |
|||
async searchPrevTask(val) { |
|||
try { |
|||
const params = { name: val, projectId: this.projectId }; |
|||
const data = await this.$u.api.queryTaskOfProject(params); |
|||
this.allTasks = data; |
|||
return data; |
|||
} catch (error) { |
|||
console.error('error: ', error); |
|||
} |
|||
}, |
|||
|
|||
//用户点击获取的数据 |
|||
handleChange(data) { |
|||
this.processTaskId = data.detailId; |
|||
}, |
|||
// 清空模糊查询信息 |
|||
clearAllTasks() { |
|||
this.allTasks = []; |
|||
}, |
|||
|
|||
// 数组最后一项有值 添加一条交付物输入框 |
|||
addDeliverInput() { |
|||
if (this.deliverSort[this.deliverSort.length - 1].name) { |
|||
this.deliverSort.push({ name: '' }); |
|||
} |
|||
}, |
|||
|
|||
// 设置提交参数 |
|||
async setParameters() { |
|||
const { |
|||
projectId, |
|||
task, |
|||
name, |
|||
startTime, |
|||
endTime, |
|||
hasRole, |
|||
roleIdList, |
|||
roleId, |
|||
description, |
|||
processTaskId, |
|||
checkerIdList, |
|||
isGlobal, |
|||
} = this; |
|||
if (!name) { |
|||
this.$t.ui.showToast('请输入名称'); |
|||
return; |
|||
} |
|||
if ((!roleIdList || !roleIdList.length) && !hasRole) { |
|||
this.$t.ui.showToast('请选择负责人'); |
|||
return; |
|||
} |
|||
if (!checkerIdList || !checkerIdList.length) { |
|||
this.$t.ui.showToast('请选择检查人'); |
|||
return; |
|||
} |
|||
const deliverList = []; |
|||
this.deliverSort.forEach(item => { |
|||
if (item.name) { |
|||
deliverList.push(item.name); |
|||
} |
|||
}); |
|||
const params = { |
|||
name, |
|||
startTime: startTime ? this.$moment(startTime).format('x') - 0 : '', |
|||
endTime: endTime ? this.$moment(endTime).format('x') - 0 : '', |
|||
roleIdList: hasRole ? [roleId] : roleIdList, |
|||
description, |
|||
projectId, |
|||
parentTaskId: task && task.id ? task.id : '', // 父任务 |
|||
processTaskId, // 上道工序 TODO |
|||
checkerIdList, |
|||
global: isGlobal ? 1 : 0, |
|||
deliverList, |
|||
}; |
|||
await this.handleSubmit(params); |
|||
}, |
|||
|
|||
/** |
|||
* 新建任务 |
|||
* @param name 任务名 |
|||
* @param startTime 开始时间 |
|||
* @param endTime 结束时间 |
|||
* @param roleIdList 负责人id(数组) |
|||
* @param description 描述 |
|||
* @param projectId 所属项目id |
|||
* @param parentTaskId 所属任务id |
|||
* @param processTaskId 上道工序(任务id) |
|||
* @param checkerIdList 检查人id(数组) |
|||
* @param global 是否日常任务 0否 1是 |
|||
* @param deliverList 交付物名字(数组) |
|||
*/ |
|||
async handleSubmit(params) { |
|||
try { |
|||
const data = await this.$u.api.saveTask(params); |
|||
// TODO 任务新建成功 继续 or 取消 |
|||
this.$emit('closeMask'); |
|||
const newTasks = { |
|||
data: data[0], |
|||
processTaskId: params.processTaskId, |
|||
}; |
|||
// 将新加的任务加到store |
|||
// 判断不是子任务 |
|||
if (!this.task || !this.task.id) { |
|||
this.addNewTasks(newTasks); |
|||
} |
|||
} catch (error) { |
|||
this.$emit('closeMask'); |
|||
console.error('error: ', error); |
|||
} |
|||
}, |
|||
|
|||
// 添加任务后更新tasks |
|||
addNewTasks(data) { |
|||
const oldTasks = this.$u.deepClone(this.tasks); |
|||
let res = data.data; |
|||
// 判断有没有选择上道工序 |
|||
if (data.processTaskId) { |
|||
const index = oldTasks.find(item => item.detailId === data.processTaskId); |
|||
if (index) { |
|||
oldTasks.splice(index + 1, 0, res); |
|||
} |
|||
} else { |
|||
this.setAddPosition(res, oldTasks); |
|||
} |
|||
}, |
|||
|
|||
// 设置添加位置 |
|||
setAddPosition(res, oldTasks) { |
|||
if (res.planStart - 0 < oldTasks[0].planStart - 0) { |
|||
// 开始时间小于列表的第一个 插入最前面 |
|||
oldTasks.splice(0, 0, res); |
|||
} else if (res.planStart - 0 === oldTasks[0].planStart - 0) { |
|||
// 开始时间等于列表的第一个 插入第二 |
|||
oldTasks.splice(1, 0, res); |
|||
} else if (res.planStart - 0 >= oldTasks[oldTasks.length - 1].planStart - 0) { |
|||
// 开始时间大等于列表的最后一个 插入最后 |
|||
oldTasks.splice(-1, 0, res); |
|||
} else { |
|||
// 判断开始时间在列表中间的哪个位置 |
|||
for (let i = 0; i < oldTasks.length; i++) { |
|||
const item = oldTasks[i]; |
|||
if (res.planStart - 0 > item.planStart - 0) { |
|||
if (res.planStart - 0 <= oldTasks[i + 1].planStart - 0) { |
|||
oldTasks.splice(i + 1, 0, res); |
|||
return; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
// TODO: 不能全更新 |
|||
this.updateTasks([...oldTasks]); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.form { |
|||
display: flex; |
|||
flex-direction: column; |
|||
width: 100%; |
|||
max-height: 400px; |
|||
overflow-y: scroll; |
|||
} |
|||
|
|||
.drop-item { |
|||
border-bottom: 1px solid #f1f1f1; |
|||
padding: 16rpx; |
|||
} |
|||
|
|||
::v-deep.u-input--border { |
|||
border: none; |
|||
border-radius: 0; |
|||
} |
|||
::v-deep.u-dropdown__menu__item > uni-view { |
|||
border: none !important; |
|||
padding: 5px; |
|||
} |
|||
.u-input { |
|||
border-bottom: 1px solid #dcdfe6; |
|||
} |
|||
|
|||
.new-projects-box { |
|||
margin-top: 20px; |
|||
padding: 15px; |
|||
width: 100%; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.w { |
|||
width: 300px; |
|||
height: 39px; |
|||
} |
|||
|
|||
::v-deep .u-dropdown__menu__item .u-flex { |
|||
border: 0 !important; |
|||
border-bottom: 1px solid #dcdfe6 !important; |
|||
padding: 0 20rpx; |
|||
} |
|||
</style> |
@ -1,320 +0,0 @@ |
|||
<template> |
|||
<div class="new-projects-box" :style="{ height: arrow ? '330px' : '580px' }"> |
|||
<div class="form"> |
|||
<!-- 项目名称 --> |
|||
<view class="popupTitle flex justify-center">新建任务</view> |
|||
<div class="flex items-center"> |
|||
<div>名称</div> |
|||
<u-input v-model="nameValue" :type="type" :border="border" /> |
|||
</div> |
|||
<!-- 起止时间 --> |
|||
<div class="flex items-center"> |
|||
<div>起止-截止时间</div> |
|||
<u-input v-model="timeValue" :type="type" :border="border" /> |
|||
</div> |
|||
<!-- 多选框 --> |
|||
<div class="flex justify-between items-center"> |
|||
<div>负责人</div> |
|||
<div label="负责人" style="width: 85%"> |
|||
<u-dropdown ref="uDropdown"> |
|||
<u-dropdown-item :title="dropTitle"> |
|||
<view class="slot-content bg-white"> |
|||
<div |
|||
class="multiple-choice flex flex-row justify-between mb-1" |
|||
v-for="(option, optionIndex) in options" |
|||
:key="optionIndex" |
|||
@click="change(optionIndex)" |
|||
> |
|||
<view v-model="option.value">{{ option.label }}</view> |
|||
<u-icon v-if="option.dropdownShow" name="checkbox-mark" color="#2979ff" size="28"></u-icon> |
|||
</div> |
|||
</view> |
|||
</u-dropdown-item> |
|||
</u-dropdown> |
|||
</div> |
|||
</div> |
|||
<!-- 下拉图标 --> |
|||
<div class="flex justify-center" style="margin-top: 20px"> |
|||
<u-icon v-if="arrow" name="arrow-down" size="28" @click="openDropdown"></u-icon> |
|||
<u-icon v-else name="arrow-up" size="28" @click="closeSecondDropdown"></u-icon> |
|||
</div> |
|||
<!-- 下拉框的内容 --> |
|||
<div v-if="show"> |
|||
<!-- 描述 --> |
|||
<div class="flex items-center"> |
|||
<div>描述</div> |
|||
<u-input v-model="decripeValue" :type="type" :border="border" /> |
|||
</div> |
|||
<!-- 所属项目 --> |
|||
<div class="w flex items-center"> |
|||
<div>所属项目</div> |
|||
<div class="xiangmu" style="position: relative; background: #fff">当前项目</div> |
|||
</div> |
|||
<!-- 所属任务 --> |
|||
<div class="w flex items-center"> |
|||
<div>所属任务</div> |
|||
<div class="renwu">当前任务</div> |
|||
</div> |
|||
<!-- 上道工序 --> |
|||
<div class="flex items-center"> |
|||
<div>上道工序</div> |
|||
<u-input v-model="lastValue" :type="type" :border="border" /> |
|||
</div> |
|||
<!-- 检查人多选框 --> |
|||
<div class="flex justify-between items-center"> |
|||
<div>检查人</div> |
|||
<div class="" label="检查人" style="width: 85%"> |
|||
<u-dropdown ref="dropdown"> |
|||
<u-dropdown-item :title="secondDropTitle" style="border: none"> |
|||
<view class="slot-content bg-white"> |
|||
<div |
|||
class="mb-1 multiple-choice flex flex-row justify-between" |
|||
v-for="(checkoutOption, Index) in checkoutOptions" |
|||
:key="Index" |
|||
@click="choose(Index)" |
|||
> |
|||
<view v-model="checkoutOption.value">{{ checkoutOption.label }}</view> |
|||
<u-icon v-if="checkoutOption.dropdownShow" name="checkbox-mark" color="#2979ff" size="28"></u-icon> |
|||
</div> |
|||
</view> |
|||
</u-dropdown-item> |
|||
</u-dropdown> |
|||
</div> |
|||
</div> |
|||
<!-- 是否是日常任务 --> |
|||
<div class="flex justify-between items-center" style="padding: 25px 0; border-bottom: 1px solid #adadad"> |
|||
<div>是否日常任务</div> |
|||
<u-switch v-model="checked" size="28"></u-switch> |
|||
</div> |
|||
<div style="padding-top: 25px"> |
|||
<div>交付物</div> |
|||
<u-input style="border-bottom: 1px solid #dcdfe6" placeholder="交付物名称1" :type="type" :border="border" /> |
|||
<u-input style="border-bottom: 1px solid #dcdfe6" placeholder="交付物名称2" :type="type" :border="border" /> |
|||
</div> |
|||
</div> |
|||
<div class="flex justify-between items-center btns"> |
|||
<u-button class="btn flex justify-center" type="primary" shape="circle" size="medium" @click="$emit('closeMask')">提交</u-button> |
|||
<u-button class="btn flex justify-center" shape="circle" size="medium" @click="$emit('closeMask')">取消</u-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
projects: ['我是睡', '我叫什么', '我的名字是'], |
|||
title: 'tall1', |
|||
arrow: true, |
|||
show: false, |
|||
checked: false, //开关选择器默认关闭 |
|||
nameValue: '', //名称 |
|||
timeValue: '', //起止时间 |
|||
decripeValue: '', //描述 |
|||
projectValue: '', //所属项目 |
|||
projectShow: false, //所属项目模糊搜索展示 |
|||
taskValue: '', //所属任务 |
|||
lastValue: '', //上道工序 |
|||
type: 'text', |
|||
border: true, |
|||
dropTitle: '观众,干系人', //负责人默认多选 |
|||
secondDropTitle: '干系人', //检查人默认多选 |
|||
// 负责人下拉多选列表 |
|||
options: [ |
|||
{ |
|||
label: '观众', |
|||
value: 1, |
|||
dropdownShow: false, |
|||
status: false, |
|||
}, |
|||
{ |
|||
label: '距离优先', |
|||
value: 2, |
|||
dropdownShow: false, |
|||
status: false, |
|||
}, |
|||
{ |
|||
label: '价格优先', |
|||
value: 3, |
|||
dropdownShow: false, |
|||
status: false, |
|||
}, |
|||
], |
|||
// 检查人下拉多选列表 |
|||
checkoutOptions: [ |
|||
{ |
|||
label: '观众', |
|||
value: 1, |
|||
dropdownShow: false, |
|||
status: false, |
|||
}, |
|||
{ |
|||
label: '距离优先', |
|||
value: 2, |
|||
dropdownShow: false, |
|||
status: false, |
|||
}, |
|||
{ |
|||
label: '价格优先', |
|||
value: 3, |
|||
dropdownShow: false, |
|||
status: false, |
|||
}, |
|||
], |
|||
// 交付物 |
|||
diliverables: [], |
|||
// 所属项目下拉单选 |
|||
projectOptions: [ |
|||
{ |
|||
label: 'tall1', |
|||
value: 1, |
|||
}, |
|||
{ |
|||
label: 'tall2', |
|||
value: 2, |
|||
}, |
|||
{ |
|||
label: 'tall3', |
|||
value: 3, |
|||
}, |
|||
], |
|||
}; |
|||
}, |
|||
methods: { |
|||
isProjectShow($event) { |
|||
console.log(this.projectValue); |
|||
console.log($event); |
|||
this.projectShow = true; |
|||
}, |
|||
|
|||
// 下拉多选确定按钮 |
|||
closeDropdown() { |
|||
this.$refs.uDropdown.close(); |
|||
}, |
|||
|
|||
// 下拉多选确定按钮 |
|||
dropdownClosed() { |
|||
this.$refs.dropdown.close(); |
|||
}, |
|||
|
|||
// 负责人下拉多选选中 |
|||
change(index) { |
|||
console.log(index); |
|||
let arr = [...this.options]; |
|||
// 选择多选项图标的展示 |
|||
arr[index].dropdownShow = !arr[index].dropdownShow; |
|||
// 多选展示的改变 |
|||
this.dropTitle = arr[index].label; |
|||
let shows = ''; |
|||
// 遍历arr,如果选中,添加到多选展示框上 |
|||
arr.map(val => { |
|||
if (val.dropdownShow === true) { |
|||
shows += val.label + ','; |
|||
} |
|||
}); |
|||
this.options = [...arr]; |
|||
// 删除最后的',' |
|||
this.dropTitle = shows.slice(0, shows.length - 1); |
|||
console.log(this.dropTitle); |
|||
}, |
|||
// 检查人下拉多选选中 |
|||
choose(index) { |
|||
console.log(index); |
|||
let arr = [...this.checkoutOptions]; |
|||
// 选择多选项图标的展示 |
|||
arr[index].dropdownShow = !arr[index].dropdownShow; |
|||
// 多选展示的改变 |
|||
this.secondDropTitle = arr[index].label; |
|||
let shows = ''; |
|||
// 遍历arr,如果选中,添加到多选展示框上 |
|||
arr.map(val => { |
|||
if (val.dropdownShow === true) { |
|||
shows += val.label + ','; |
|||
} |
|||
}); |
|||
this.checkoutOptions = [...arr]; |
|||
// 删除最后的',' |
|||
this.secondDropTitle = shows.slice(0, shows.length - 1); |
|||
console.log(this.secondDropTitle); |
|||
// this.dropTitle = arr[value - 1].label; |
|||
}, |
|||
|
|||
// 所属项目下拉单选框 |
|||
// project(value) { |
|||
// console.log(value); |
|||
// this.title = this.projectOptions[value - 1].label; |
|||
// }, |
|||
|
|||
// 打开下拉框 |
|||
openDropdown() { |
|||
this.arrow = !this.arrow; |
|||
this.show = true; |
|||
}, |
|||
// 关闭下拉框 |
|||
closeSecondDropdown() { |
|||
this.arrow = !this.arrow; |
|||
this.show = false; |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.projectBelong { |
|||
height: auto; |
|||
background: #fff; |
|||
padding: 0 10px; |
|||
color: #c0c4cc; |
|||
position: absolute; |
|||
z-index: 55; |
|||
} |
|||
|
|||
.form { |
|||
display: flex; |
|||
flex-direction: column; |
|||
width: 100%; |
|||
height: 550px; |
|||
overflow-y: scroll; |
|||
} |
|||
|
|||
::deep.u-input--border { |
|||
border: none; |
|||
border-radius: 0; |
|||
} |
|||
::deep.u-dropdown__menu__item > uni-view { |
|||
border: none !important; |
|||
padding: 5px; |
|||
} |
|||
.u-input { |
|||
border-bottom: 1px solid #ccc; |
|||
} |
|||
.btn { |
|||
margin-top: 20px; |
|||
} |
|||
.popupTitle { |
|||
font-size: 16px; |
|||
font-weight: bold; |
|||
margin-bottom: 5px; |
|||
} |
|||
.new-projects-box { |
|||
margin-top: 20px; |
|||
padding: 15px; |
|||
width: 330px; |
|||
overflow: hidden; |
|||
} |
|||
.btns { |
|||
padding: 0 30px; |
|||
} |
|||
.xiangmu { |
|||
margin-left: 11px; |
|||
color: rgb(192, 196, 204); |
|||
} |
|||
.renwu { |
|||
margin-left: 11px; |
|||
color: rgb(192, 196, 204); |
|||
} |
|||
.w { |
|||
width: 300px; |
|||
height: 39px; |
|||
} |
|||
</style> |
Loading…
Reference in new issue