diff --git a/CHANGELOG.md b/CHANGELOG.md index 3360cef..53eb312 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# 0.1.0 (2021-08-19) +# 0.1.0 (2021-08-18) ### 🌟 新功能 范围|描述|commitId @@ -82,6 +82,7 @@ ### 🐛 Bug 修复 范围|描述|commitId --|--|-- + - | 1.时间轴数据渲染 2.时间基准线 | [d643af2](https://dd.tall.wiki/gitea/ccsens_fe/TALL-MUI-3/commits/d643af2) 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) @@ -94,12 +95,14 @@ - | 下拉加载定期任务传参,时间格式化修改 | [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) @@ -118,11 +121,13 @@ - | 时间轴上下滚动数据加载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) @@ -163,6 +168,8 @@ ### 🚀 性能优化 范围|描述|commitId --|--|-- + - | 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) - | 插件查询及展示 | [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) @@ -197,4 +204,3 @@ - | 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/apis/plugin.js b/src/apis/plugin.js index e8ea541..0899cca 100644 --- a/src/apis/plugin.js +++ b/src/apis/plugin.js @@ -5,6 +5,10 @@ const install = (Vue, vm) => { vm.$u.api = { ...vm.$u.api } || {}; // 获取插件信息 vm.$u.api.getOtherPlugin = param => vm.$u.post(`${url}/pluginshop/plugin/query`, param); + // 查询子任务 + vm.$u.api.findSonTask = param => vm.$u.post(`${uni.$t.domain}/task/findSonTask`, param); + // 查询子项目 + vm.$u.api.findSonProject = param => vm.$u.post(`${uni.$t.domain}/project/findSonProject`, param); }; export default { install }; diff --git a/src/components/Plugin/Plugin.vue b/src/components/Plugin/Plugin.vue index 88a6b41..20d7127 100644 --- a/src/components/Plugin/Plugin.vue +++ b/src/components/Plugin/Plugin.vue @@ -27,8 +27,8 @@ - - + + diff --git a/src/components/Roles/Roles.vue b/src/components/Roles/Roles.vue index 1de30b1..6bf350f 100644 --- a/src/components/Roles/Roles.vue +++ b/src/components/Roles/Roles.vue @@ -58,10 +58,11 @@ export default { methods: { ...mapActions('task', ['handleRegularTask', 'getPermanent']), ...mapMutations('role', ['setRoleId']), - ...mapMutations('task', ['setPermanents', 'setDailyTasks', 'clearEndFlag', 'setTimeNode']), + ...mapMutations('task', ['setPermanents', 'clearEndFlag']), // 设置滚动位置 setCurrentRole(index) { + console.log('index: ', index); const data = document.getElementsByClassName('tab-children'); // 获取当前所有子元素 并插入到 tabList 列表中 data.forEach(item => { @@ -85,20 +86,12 @@ export default { // 时间基准点不用管 project监听了roleId 里处理了 changeRole(id, index) { try { - console.log('切换角色'); // 清除多余的script this.clearPluginScript(); this.$nextTick(() => { this.setRoleId(id); //改变index 即手动点击切换 我在此时将当前元素赋值给左边距 实现自动滚动 this.setCurrentRole(index); - // 清空日常任务的数据 - this.setPermanents([]); - this.setDailyTasks([]); - // 清空定期任务数据 - // 到顶的标志复位 - // 到底的标志复位 - this.clearEndFlag(); }); } catch (error) { console.error('role.vue changeRole error: ', error); diff --git a/src/components/TimeLine/TimeLine.vue b/src/components/TimeLine/TimeLine.vue index 3b65aee..efcc1ff 100644 --- a/src/components/TimeLine/TimeLine.vue +++ b/src/components/TimeLine/TimeLine.vue @@ -4,9 +4,9 @@ - + {{ $moment(+task.planStart).format(startTimeFormat) }} {{ $moment(+task.planStart).format('D日') }} + @@ -37,7 +38,7 @@ class="h-16" margin="0" v-if="tasks && tasks.length && task.process !== 4 && !showSkeleton" - @click="onClickTask(+task.planStart)" + @click="onClickTask(+task.planStart, task.id)" > @@ -104,11 +105,12 @@ export default { /** * 点击了定期任务的面板 更新可变的日常任务 * @param {number} planStart 任务计划开始时间 + * @param {string} taskId 任务id */ - onClickTask(planStart) { + onClickTask(planStart, taskId) { const param = { roleId: this.roleId, timeNode: planStart, timeUnit: this.timeUnit }; this.getGlobal(param); - this.$t.storage.setStorageSync('timeNode', planStart); + this.$t.storage.setStorageSync('taskId', taskId); this.$t.storage.setStorageSync('roleId', this.roleId); }, diff --git a/src/components/TimeLine/component/TimeStatus.vue b/src/components/TimeLine/component/TimeStatus.vue index 7215474..4042b07 100644 --- a/src/components/TimeLine/component/TimeStatus.vue +++ b/src/components/TimeLine/component/TimeStatus.vue @@ -5,13 +5,25 @@ :style="{ color: orderStyle.color }" @tap="changeStatus($event, task.process)" > + + + + + + + + + + + @@ -22,7 +34,7 @@ - + @@ -106,7 +118,6 @@ export default { * @param {object} event */ changeStatus(event, process) { - console.log('event, process: ', event, process); if (process === 4) { this.addTask(); return; @@ -184,4 +195,17 @@ export default { height: 33px; width: 33px; } + +.progress-box { + background: rgba(255, 255, 255, 0); + width: 33px; + height: 33px; + border: 2px solid #9ca3af; +} + +.progress-box-4 { + width: 25px; + height: 25px; + border: 2px solid #60a5fa; +} diff --git a/src/mixins/timeline.js b/src/mixins/timeline.js new file mode 100644 index 0000000..b61c46a --- /dev/null +++ b/src/mixins/timeline.js @@ -0,0 +1,44 @@ +import { mapGetters } from 'vuex'; + +const mixin = { + computed: mapGetters('task', ['timeGranularity']), + + methods: { + /** + * 设置时间轴空数据 + * @param {*} startTime + * @param {*} show true 向上加载,false 向下加载 + */ + setTime(startTime, show) { + let { timeGranularity } = this; + let arr = []; + let str = {}; + if (show) { + for (let i = 10; i > 0; i--) { + str = { + id: this.$u.guid(20, false, 10), + panel: {}, + plugins: [], + process: 4, + planStart: this.$t.time.add(startTime, `-${i}` - 0, timeGranularity).valueOf(), + }; + arr.push(str); + } + } else { + for (let i = 0; i < 10; i++) { + str = { + id: this.$u.guid(20, false, 10), + panel: {}, + plugins: [], + process: 4, + planStart: this.$t.time.add(startTime, i + 1, timeGranularity).valueOf(), + }; + arr.push(str); + } + } + return arr; + }, + }, +}; + +export default mixin; diff --git a/src/pages/project/project.vue b/src/pages/project/project.vue index ad85156..9ea4c29 100644 --- a/src/pages/project/project.vue +++ b/src/pages/project/project.vue @@ -18,8 +18,10 @@ diff --git a/src/plugins/p-subproject/p-subproject.vue b/src/plugins/p-subproject/p-subproject.vue index 67c08b0..602ccd8 100644 --- a/src/plugins/p-subproject/p-subproject.vue +++ b/src/plugins/p-subproject/p-subproject.vue @@ -1,18 +1,58 @@ diff --git a/src/plugins/p-subtasks/p-subtasks.vue b/src/plugins/p-subtasks/p-subtasks.vue index 0f652cb..8e55858 100644 --- a/src/plugins/p-subtasks/p-subtasks.vue +++ b/src/plugins/p-subtasks/p-subtasks.vue @@ -1,18 +1,38 @@ diff --git a/src/plugins/p-wbs-import/p-wbs-import.vue b/src/plugins/p-wbs-import/p-wbs-import.vue index 0e37dd2..00b9b1b 100644 --- a/src/plugins/p-wbs-import/p-wbs-import.vue +++ b/src/plugins/p-wbs-import/p-wbs-import.vue @@ -54,8 +54,7 @@ export default { // TODO: 更新接口没写完 async handleUpdate() { try { - const data = await this.$u.api.import({ projectId: this.projectId }); - console.log('data: ', data); + await this.$u.api.import({ projectId: this.projectId }); // 导入WBS成功后 // 直接打开导入的项目 this.onUploadSuccess(); diff --git a/src/store/task/actions.js b/src/store/task/actions.js index f48ced7..b8dfbfb 100644 --- a/src/store/task/actions.js +++ b/src/store/task/actions.js @@ -33,16 +33,9 @@ const actions = { * @param {number} param.queryType 必填 0 -> 向上 1 -> 向下 */ // eslint-disable-next-line - async getRegulars({ commit, state }, param) { + async getRegulars({ commit }, param) { try { - // 向上查 且 上边没数据了 不查 - // if (param.queryType === 0) return; - // 向下查 且 下边美术家了 不查 - // if (param.queryType === 1) return; - const data = await uni.$u.api.getRegularTask(param); - // 0 -> 向上 1 -> 向下 - // data 有无的判断在mutations里 - param.queryType === 0 ? commit('setUpTasks', data) : commit('setDownTasks', data); + return await uni.$u.api.getRegularTask(param); } catch (error) { throw error || '获取定期任务失败'; } diff --git a/src/store/task/mutations.js b/src/store/task/mutations.js index 1994329..e644faa 100644 --- a/src/store/task/mutations.js +++ b/src/store/task/mutations.js @@ -8,6 +8,15 @@ const mutations = { state.scrollTop = num; }, + /** + * 记录时间轴向上滚动的距离 + * @param { object } state + * @param { string } data + */ + setViewId(state, data) { + state.viewId = data; + }, + /** * 设置日常任务当前是否应该处于收缩状态 * @param { object } state @@ -52,7 +61,6 @@ const mutations = { */ setTimeNode(state, data) { state.timeNode = data; - console.log('state.timeNode : ', state.timeNode); }, /** @@ -70,65 +78,10 @@ const mutations = { * @param {Array} data 服务端返回的模板数组 */ setUpTasks(state, data) { - if (!data || !data.length) { - state.topEnd = true; - let sTime = ''; - if (!state.tasks || !state.tasks.length) { - sTime = +new Date().getTime(); - } else { - sTime = +state.tasks[0].planStart - 0; - } - const initData = [ - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, -6, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, -5, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, -4, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, -3, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, -2, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, -1, 'day').valueOf(), - }, - ]; - state.tasks = [...initData.concat(state.tasks)]; + if (!state.tasks.length) { + state.tasks = [...data]; } else { - if (!state.tasks && !state.tasks.length) { - state.tasks = [...data]; - } else { - state.tasks = [...data.concat(state.tasks)]; - } + state.tasks = [...data.concat(state.tasks)]; } }, @@ -138,65 +91,10 @@ const mutations = { * @param {Array} data 服务端返回的模板数组 */ setDownTasks(state, data) { - if (!data || !data.length) { - state.bottomEnd = true; - let sTime = ''; - if (!state.tasks || !state.tasks.length) { - sTime = +new Date().getTime(); - } else { - sTime = +state.tasks[state.tasks.length - 1].planStart - 0; - } - const initData = [ - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, 1, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, 2, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, 3, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, 4, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, 5, 'day').valueOf(), - }, - { - id: state.randomId, - panel: {}, - plugins: [], - process: 4, - planStart: uni.$t.time.add(sTime, 6, 'day').valueOf(), - }, - ]; - state.tasks = [...state.tasks.concat(initData)]; + if (!state.tasks && !state.tasks.length) { + state.tasks = [...data]; } else { - if (!state.tasks && !state.tasks.length) { - state.tasks = [...data]; - } else { - state.tasks = [...state.tasks.concat(data)]; - } + state.tasks = [...state.tasks.concat(data)]; } }, @@ -218,13 +116,35 @@ const mutations = { state.permanents = tasks || []; }, - // 清空标志位 任务 如切换角色等使用 + /** + * 设置时间轴是否继续向上查任务 + * @param {Object} state + * @param {Boolean} show + */ + setTopEnd(state, show) { + state.topEnd = show; + }, + + /** + * 设置时间轴是否继续向下查任务 + * @param {Object} state + * @param {Boolean} show + */ + setBottomEnd(state, show) { + state.bottomEnd = show; + }, + + // 清空标志位 如切换角色等使用 clearEndFlag(state) { - state.tasks = []; state.topEnd = false; state.bottomEnd = false; }, + // 清空定期任务 + clearTasks(state) { + state.tasks = []; + }, + /** * 收到消息设置任务状态 * @param {Object} state diff --git a/src/store/task/state.js b/src/store/task/state.js index 79f4db9..c2ed496 100644 --- a/src/store/task/state.js +++ b/src/store/task/state.js @@ -1,5 +1,6 @@ const state = { scrollTop: 0, + viewId: '', // 时间轴自动滚动的位置 isShrink: false, // true: 收起, false:展开 tip: { taskId: '', // 当前正在修改状态的任务的id @@ -18,7 +19,6 @@ const state = { // 定期任务 tasks: [], showSkeleton: false, // 定期任务骨架屏 - randomId: Math.floor(Math.random() * 100000000000000000000), // 随机id }; export default state; diff --git a/src/utils/time.js b/src/utils/time.js index 4997acd..6f1fae2 100644 --- a/src/utils/time.js +++ b/src/utils/time.js @@ -100,6 +100,17 @@ const validateTimeIsToday = time => { return timeDate.getFullYear() === date.getFullYear() && timeDate.getMonth() === date.getMonth() && timeDate.getDate() === date.getDate(); }; +/** + * 检测两个日期是否相同 + * @param {number | date} time + * @param {number | date} value + * @param {string} cycle 传入 day 将会比较 day、 month和 year + */ +const isSame = (time, value, cycle) => { + const str = dayjs(time).isSame(value, cycle); + return str; +}; + /** * 格式化开始时间 * @param {Number} timestamp 时间戳 @@ -344,6 +355,7 @@ export default { convertTime, secondToMinute, setTimestampToStr, + isSame, formatBeginTime, formatDuration, formatDurationToObject,