From a01de0945ba11e9570358192ee70379f7c104e90 Mon Sep 17 00:00:00 2001 From: xuesinan <1404152492@qq.com> Date: Wed, 16 Mar 2022 16:55:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=97=B6=E9=97=B4=E8=BD=B4=E7=89=88?= =?UTF-8?q?=E6=9C=AC1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + hooks/project/useGetTasks.js | 157 +++++++++--------- .../{useGetTasks222.js => useGetTasks111.js} | 157 +++++++++--------- 3 files changed, 158 insertions(+), 157 deletions(-) rename hooks/project/{useGetTasks222.js => useGetTasks111.js} (72%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f2b78f..2d20069 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ - | 设置状态栏 | [9871356](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/9871356) - | 审核插件的基本信息展示 | [aa4f17f](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/aa4f17f) - | 审核插件的通过与驳回功能 | [03a7c35](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/03a7c35) + - | 时间轴版本2、根据服务查询项目、区分不同服务 | [c612768](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/c612768) - | 时间轴调整 | [81d2500](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/81d2500) - | 时间轴接口 | [a95d005](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/a95d005) - | 时间轴新策略 | [e736d05](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/e736d05) diff --git a/hooks/project/useGetTasks.js b/hooks/project/useGetTasks.js index c1edea7..a969c59 100644 --- a/hooks/project/useGetTasks.js +++ b/hooks/project/useGetTasks.js @@ -30,9 +30,8 @@ export default function useGetTasks() { // 初始化 定期任务 async function initPlanTasks() { - // if (timeLineType.value === 1) setNextPlaceholderTasks({}); - uni.$ui.showLoading(); - console.log('查询定期任务11111111111111111'); + if (timeLineType.value === 1) setNextPlaceholderTasks({}); + console.log('查询定期任务'); await getTasks({}); // 获取初始数据 // await dataRender({}); } @@ -63,7 +62,6 @@ export default function useGetTasks() { * @param {number} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含 */ function getTasks(query) { - uni.$ui.showLoading(); store.commit('task/setShowSkeleton', false); const params = generateGetTaskParam(query); @@ -91,17 +89,12 @@ export default function useGetTasks() { params.queryType === 0 ? store.commit('task/setUpNextPage', arr[index].upNextPage) : store.commit('task/setDownNextPage', arr[index].downNextPage); // 下一页 // 如果第一次渲染但没有空数据则加载空数据 - // if (!currRoleShowTasks.value || !currRoleShowTasks.value.length && timeLineType.value === 1) { - // setNextPlaceholderTasks(params); - // } + if (!currRoleShowTasks.value || !currRoleShowTasks.value.length && timeLineType.value === 1) { + setNextPlaceholderTasks(params); + } // 数据处理 dataRender(params); - - // nextTick(() => { - // uni.$ui.hideLoading(); - // console.log('-------------------------------') - // }); } }); } @@ -163,71 +156,82 @@ export default function useGetTasks() { } async function handleTasksData(params, centerData, realTasks) { + /** + * 3、查找的任务数量是否>=15 + * 3-1、是。 + * 判断时间跨度是否>=15 + * 3-1-1、是。显示时间刻度范围内的任务 + * 3-1-2、否。显示全部任务并删除多余的刻度 + * 3-2、否。 + * 判断时间跨度是否>=15 + * 3-2-1、是。显示时间刻度范围内的任务 + * 3-2-2、否。 + * 下一页是否为0 + * 3-2-2-1、是。无下一页,显示任务和刻度,之后继续展示刻度 + * 3-2-2-1、否。查找下一页数据并重复上述步骤 + */ let showTasks = currRoleShowTasks.value; // 显示的数据 - let firstTime = showTasks.length > 0 ? dayjs(+showTasks[0].planStart).subtract(1, timeGranularity.value) : new Date().getTime(); // 显示的数据第一个数据的时间 - let lastTime = showTasks.length > 0 ? dayjs(+showTasks[showTasks.length - 1].planStart).add(1, timeGranularity.value) : new Date().getTime(); // 显示的数据最后一个数据的时间 - let upTargetTime = dayjs(+firstTime).subtract(params.pageSize - 1, timeGranularity.value); - let downTargetTime = dayjs(+lastTime).add(params.pageSize - 1, timeGranularity.value); const nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值 - if (centerData.length) { - let arr = []; - - centerData.forEach(v => { - let centerTime = '', // 中间数据+/-15后的数据 - isExceed = false; // 时间跨度是否大于15 + let centerDataTime = '', // 中间数据的时间 + scaleTime = '', // 空时间节点的开始时间 + centerTime = '', // 中间数据+/-15后的数据 + isExceed = false; // 时间跨度是否大于15 + + if (params.queryType) { + centerDataTime = centerData[centerData.length - 1].planStart; + scaleTime = currDownTimeNode.value; + centerTime = dayjs(+centerDataTime).subtract(params.pageSize, timeGranularity.value); + isExceed = dayjs(+centerTime).isSame(+scaleTime, timeGranularity.value) || dayjs(+centerTime).isAfter(+scaleTime, timeGranularity.value) + } else { + centerDataTime = centerData[0].planStart; + scaleTime = currUpTimeNode.value; + centerTime = dayjs(+centerDataTime).add(params.pageSize, timeGranularity.value); + isExceed = dayjs(+centerTime).isSame(+scaleTime, timeGranularity.value) || dayjs(+centerTime).isBefore(+scaleTime, timeGranularity.value) + } - if (params.queryType) { - isExceed = dayjs(+downTargetTime).isAfter(+v.planStart, timeGranularity.value) - } else { - isExceed = dayjs(+upTargetTime).isBefore(+v.planStart, timeGranularity.value) + const firstDetailIndex = showTasks.findIndex(task => task.detailId); // 显示任务中存在真实任务 + const firstId = firstDetailIndex > -1 ? showTasks[firstDetailIndex].id : ''; + let lastDetailIndex = -1; + showTasks.forEach((item, index) => { + if (item.detailId) { + lastDetailIndex = index; } - - if (isExceed) { - arr.push(v); + }) + const lastId = lastDetailIndex > -1 ? showTasks[lastDetailIndex].id : ''; + + showTasks.forEach((task, index) => { + const arr = centerData.filter(item => dayjs(+item.planStart).isSame(+task.planStart, timeGranularity.value)); + if (arr.length) { + if (params.queryType === 1 && task.id === lastId) { + showTasks.splice(index + 1, 0, [...arr]) + } else if (params.queryType === 0 && task.id === firstId) { + showTasks.splice(index, 0, [...arr]) + } else { + showTasks.splice(index, 1, [...arr]) + } } }) - if (!arr.length) { - params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params); - } else { - if (arr.length === centerData.length && centerData.length < params.pageSize && nextPage > 0) { - getTasks({pageNum: nextPage, queryType: params.queryType}); - } else { - if (arr.length < centerData.length || (arr.length === centerData.length && centerData.length < params.pageSize && nextPage === 0)) { - let newArr = []; - const time = params.queryType === 1 ? lastTime : upTargetTime; - let currTime = params.queryType === 0 ? upTargetTime : lastTime; + showTasks = flatten(showTasks); // 1维拍平 - - const firstTime = params.queryType === 0 ? dayjs(+upTargetTime).add(1, timeGranularity.value) : dayjs(+lastTime).subtract(1, timeGranularity.value); - let firstArr = arr.filter(item => dayjs(+item.planStart).isSame(+firstTime, timeGranularity.value)); - if (firstArr.length) { - newArr = params.queryType === 0 ? [...firstArr, ...newArr] : [...newArr, ...firstArr]; + if (!isExceed) { + if (centerData.length >= params.pageSize) { + let len = -1; + let data = params.queryType === 0 ? centerData[0] : centerData[centerData.length - 1]; + showTasks.forEach((item, index) => { + if (item.id === data.id) { + len = index; } + }) - for (let i = 0; i < params.pageSize; i++) { - let termArr = arr.filter(item => dayjs(+item.planStart).isSame(+currTime, timeGranularity.value)); - - if (termArr.length === 0) { - const newTasks = uni.$task.setPlaceholderTasks(+currTime, false, timeGranularity.value, 1); - newArr = [...newArr, ...newTasks]; - } else { - newArr = [...newArr, ...termArr]; - } - currTime = dayjs(+currTime).add(1, timeGranularity.value); - } - - showTasks = params.queryType === 0 ? [...newArr, ...showTasks] : [...showTasks, ...newArr]; - } else { - showTasks = params.queryType === 0 ? [...arr, ...showTasks] : [...showTasks, ...arr]; + if (len > -1) { + showTasks = params.queryType === 0 ? showTasks.slice(len) : showTasks.slice(0, len + 1); } + } else if (nextPage > 0) { + console.log('数据不为空,时间跨度小于15') + getTasks({pageNum: nextPage, queryType: params.queryType}); } - - showTasks = flatten(showTasks); // 1维拍平 - - store.commit('task/clearTasks'); - params.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks); } } else { if (nextPage > 0) { @@ -238,11 +242,12 @@ export default function useGetTasks() { } } - uni.$ui.hideLoading(); - console.log('------------') // if (showTasks.length > 30) { // showTasks = params.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80); // } + + store.commit('task/clearTasks'); + params.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks); } // 任务模式 @@ -265,9 +270,9 @@ export default function useGetTasks() { getTasks({pageNum: 1, queryType: 0}); } - // if (showTasks.length > 80) { - // showTasks = params.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80); - // } + if (showTasks.length > 80) { + showTasks = params.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80); + } store.commit('task/clearTasks'); params.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks); @@ -297,13 +302,13 @@ export default function useGetTasks() { startTime = dayjs(+currRoleShowTasks.value[currRoleShowTasks.value.length - 1].planStart).add(1, timeGranularity.value).valueOf(); } - // if (params.taskId) { - // currRoleRealTasks.value.forEach(item => { - // if (item.id === params.taskId) { - // startTime = Number(item.planStart); - // } - // }) - // } + if (params.taskId) { + currRoleRealTasks.value.forEach(item => { + if (item.id === params.taskId) { + startTime = Number(item.planStart); + } + }) + } const initData = uni.$task.setPlaceholderTasks(startTime, false, timeGranularity.value); store.commit('task/setCurrDownTimeNode', startTime); diff --git a/hooks/project/useGetTasks222.js b/hooks/project/useGetTasks111.js similarity index 72% rename from hooks/project/useGetTasks222.js rename to hooks/project/useGetTasks111.js index a969c59..c1edea7 100644 --- a/hooks/project/useGetTasks222.js +++ b/hooks/project/useGetTasks111.js @@ -30,8 +30,9 @@ export default function useGetTasks() { // 初始化 定期任务 async function initPlanTasks() { - if (timeLineType.value === 1) setNextPlaceholderTasks({}); - console.log('查询定期任务'); + // if (timeLineType.value === 1) setNextPlaceholderTasks({}); + uni.$ui.showLoading(); + console.log('查询定期任务11111111111111111'); await getTasks({}); // 获取初始数据 // await dataRender({}); } @@ -62,6 +63,7 @@ export default function useGetTasks() { * @param {number} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含 */ function getTasks(query) { + uni.$ui.showLoading(); store.commit('task/setShowSkeleton', false); const params = generateGetTaskParam(query); @@ -89,12 +91,17 @@ export default function useGetTasks() { params.queryType === 0 ? store.commit('task/setUpNextPage', arr[index].upNextPage) : store.commit('task/setDownNextPage', arr[index].downNextPage); // 下一页 // 如果第一次渲染但没有空数据则加载空数据 - if (!currRoleShowTasks.value || !currRoleShowTasks.value.length && timeLineType.value === 1) { - setNextPlaceholderTasks(params); - } + // if (!currRoleShowTasks.value || !currRoleShowTasks.value.length && timeLineType.value === 1) { + // setNextPlaceholderTasks(params); + // } // 数据处理 dataRender(params); + + // nextTick(() => { + // uni.$ui.hideLoading(); + // console.log('-------------------------------') + // }); } }); } @@ -156,82 +163,71 @@ export default function useGetTasks() { } async function handleTasksData(params, centerData, realTasks) { - /** - * 3、查找的任务数量是否>=15 - * 3-1、是。 - * 判断时间跨度是否>=15 - * 3-1-1、是。显示时间刻度范围内的任务 - * 3-1-2、否。显示全部任务并删除多余的刻度 - * 3-2、否。 - * 判断时间跨度是否>=15 - * 3-2-1、是。显示时间刻度范围内的任务 - * 3-2-2、否。 - * 下一页是否为0 - * 3-2-2-1、是。无下一页,显示任务和刻度,之后继续展示刻度 - * 3-2-2-1、否。查找下一页数据并重复上述步骤 - */ let showTasks = currRoleShowTasks.value; // 显示的数据 + let firstTime = showTasks.length > 0 ? dayjs(+showTasks[0].planStart).subtract(1, timeGranularity.value) : new Date().getTime(); // 显示的数据第一个数据的时间 + let lastTime = showTasks.length > 0 ? dayjs(+showTasks[showTasks.length - 1].planStart).add(1, timeGranularity.value) : new Date().getTime(); // 显示的数据最后一个数据的时间 + let upTargetTime = dayjs(+firstTime).subtract(params.pageSize - 1, timeGranularity.value); + let downTargetTime = dayjs(+lastTime).add(params.pageSize - 1, timeGranularity.value); const nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值 + if (centerData.length) { - let centerDataTime = '', // 中间数据的时间 - scaleTime = '', // 空时间节点的开始时间 - centerTime = '', // 中间数据+/-15后的数据 - isExceed = false; // 时间跨度是否大于15 - - if (params.queryType) { - centerDataTime = centerData[centerData.length - 1].planStart; - scaleTime = currDownTimeNode.value; - centerTime = dayjs(+centerDataTime).subtract(params.pageSize, timeGranularity.value); - isExceed = dayjs(+centerTime).isSame(+scaleTime, timeGranularity.value) || dayjs(+centerTime).isAfter(+scaleTime, timeGranularity.value) - } else { - centerDataTime = centerData[0].planStart; - scaleTime = currUpTimeNode.value; - centerTime = dayjs(+centerDataTime).add(params.pageSize, timeGranularity.value); - isExceed = dayjs(+centerTime).isSame(+scaleTime, timeGranularity.value) || dayjs(+centerTime).isBefore(+scaleTime, timeGranularity.value) - } + let arr = []; - const firstDetailIndex = showTasks.findIndex(task => task.detailId); // 显示任务中存在真实任务 - const firstId = firstDetailIndex > -1 ? showTasks[firstDetailIndex].id : ''; - let lastDetailIndex = -1; - showTasks.forEach((item, index) => { - if (item.detailId) { - lastDetailIndex = index; + centerData.forEach(v => { + let centerTime = '', // 中间数据+/-15后的数据 + isExceed = false; // 时间跨度是否大于15 + + if (params.queryType) { + isExceed = dayjs(+downTargetTime).isAfter(+v.planStart, timeGranularity.value) + } else { + isExceed = dayjs(+upTargetTime).isBefore(+v.planStart, timeGranularity.value) } - }) - const lastId = lastDetailIndex > -1 ? showTasks[lastDetailIndex].id : ''; - - showTasks.forEach((task, index) => { - const arr = centerData.filter(item => dayjs(+item.planStart).isSame(+task.planStart, timeGranularity.value)); - if (arr.length) { - if (params.queryType === 1 && task.id === lastId) { - showTasks.splice(index + 1, 0, [...arr]) - } else if (params.queryType === 0 && task.id === firstId) { - showTasks.splice(index, 0, [...arr]) - } else { - showTasks.splice(index, 1, [...arr]) - } + + if (isExceed) { + arr.push(v); } }) - showTasks = flatten(showTasks); // 1维拍平 + if (!arr.length) { + params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params); + } else { + if (arr.length === centerData.length && centerData.length < params.pageSize && nextPage > 0) { + getTasks({pageNum: nextPage, queryType: params.queryType}); + } else { + if (arr.length < centerData.length || (arr.length === centerData.length && centerData.length < params.pageSize && nextPage === 0)) { + let newArr = []; + const time = params.queryType === 1 ? lastTime : upTargetTime; + let currTime = params.queryType === 0 ? upTargetTime : lastTime; - if (!isExceed) { - if (centerData.length >= params.pageSize) { - let len = -1; - let data = params.queryType === 0 ? centerData[0] : centerData[centerData.length - 1]; - showTasks.forEach((item, index) => { - if (item.id === data.id) { - len = index; + + const firstTime = params.queryType === 0 ? dayjs(+upTargetTime).add(1, timeGranularity.value) : dayjs(+lastTime).subtract(1, timeGranularity.value); + let firstArr = arr.filter(item => dayjs(+item.planStart).isSame(+firstTime, timeGranularity.value)); + if (firstArr.length) { + newArr = params.queryType === 0 ? [...firstArr, ...newArr] : [...newArr, ...firstArr]; } - }) - if (len > -1) { - showTasks = params.queryType === 0 ? showTasks.slice(len) : showTasks.slice(0, len + 1); + for (let i = 0; i < params.pageSize; i++) { + let termArr = arr.filter(item => dayjs(+item.planStart).isSame(+currTime, timeGranularity.value)); + + if (termArr.length === 0) { + const newTasks = uni.$task.setPlaceholderTasks(+currTime, false, timeGranularity.value, 1); + newArr = [...newArr, ...newTasks]; + } else { + newArr = [...newArr, ...termArr]; + } + currTime = dayjs(+currTime).add(1, timeGranularity.value); + } + + showTasks = params.queryType === 0 ? [...newArr, ...showTasks] : [...showTasks, ...newArr]; + } else { + showTasks = params.queryType === 0 ? [...arr, ...showTasks] : [...showTasks, ...arr]; } - } else if (nextPage > 0) { - console.log('数据不为空,时间跨度小于15') - getTasks({pageNum: nextPage, queryType: params.queryType}); } + + showTasks = flatten(showTasks); // 1维拍平 + + store.commit('task/clearTasks'); + params.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks); } } else { if (nextPage > 0) { @@ -242,12 +238,11 @@ export default function useGetTasks() { } } + uni.$ui.hideLoading(); + console.log('------------') // if (showTasks.length > 30) { // showTasks = params.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80); // } - - store.commit('task/clearTasks'); - params.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks); } // 任务模式 @@ -270,9 +265,9 @@ export default function useGetTasks() { getTasks({pageNum: 1, queryType: 0}); } - if (showTasks.length > 80) { - showTasks = params.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80); - } + // if (showTasks.length > 80) { + // showTasks = params.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80); + // } store.commit('task/clearTasks'); params.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks); @@ -302,13 +297,13 @@ export default function useGetTasks() { startTime = dayjs(+currRoleShowTasks.value[currRoleShowTasks.value.length - 1].planStart).add(1, timeGranularity.value).valueOf(); } - if (params.taskId) { - currRoleRealTasks.value.forEach(item => { - if (item.id === params.taskId) { - startTime = Number(item.planStart); - } - }) - } + // if (params.taskId) { + // currRoleRealTasks.value.forEach(item => { + // if (item.id === params.taskId) { + // startTime = Number(item.planStart); + // } + // }) + // } const initData = uni.$task.setPlaceholderTasks(startTime, false, timeGranularity.value); store.commit('task/setCurrDownTimeNode', startTime);