Browse Source

feat: 首页下拉刷新

test2
xuesinan 4 years ago
parent
commit
fb6551188c
  1. 3
      CHANGELOG.md
  2. 79
      hooks/project/useGetTasks.js
  3. 3
      pages.json
  4. 11
      pages/index/index.vue

3
CHANGELOG.md

@ -1,4 +1,4 @@
# 1.0.0 (2022-03-21)
# 1.0.0 (2022-03-22)
### 🌟 新功能
范围|描述|commitId
@ -150,6 +150,7 @@
- | 向上查向下查 | [1933e1b](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/1933e1b)
- | 项目列表排序 | [ad0ce75](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/ad0ce75)
- | 消息id | [f79918b](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/f79918b)
- | 小红点监听 | [f0f158d](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/f0f158d)
- | 小红点修复 | [ef33187](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/ef33187)
- | 修复一些内容 | [3cdb1ce](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/3cdb1ce)
- | 修复app打开详情页失败的问题 | [ecb943e](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/ecb943e)

79
hooks/project/useGetTasks.js

@ -159,9 +159,9 @@ export default function useGetTasks() {
async function handleTasksData(params, centerData, realTasks) {
let showTasks = currRoleShowTasks.value; // 显示的数据
let firstTime = showTasks.length > 0 ? dayjs(+showTasks[0].planStart).subtract(1, timeGranularity.value) : new Date().getTime(); // 显示的数据第一个数据的时间
let firstTime = showTasks.length > 0 ? showTasks[0].planStart : 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 upTargetTime = dayjs(+firstTime).subtract(params.pageSize, timeGranularity.value);
let downTargetTime = dayjs(+lastTime).add(params.pageSize - 1, timeGranularity.value);
const nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
@ -189,33 +189,80 @@ export default function useGetTasks() {
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;
let cycleIndex = params.pageSize;
let newArr = [];
let breakTime = ''; // 循环结束时间
let continueTime = ''; // 第一个数据的时间
// 循环开始时间
let currTime = params.queryType === 0 ? upTargetTime : lastTime;
// 符合条件的数据 < centerData的数据
// 或者
// centerData的数据全部符合条件,但是 < 15,而且没有下一页,不能向下查
// 数据需要补齐15天的刻度
// 所以循环长度为params.pageSize
// centerData的数据全部显示,且数量 = 15
// 需要补齐数据中间的空刻度
// 循环长度为 结束时间到开始时间的差
// 当循环到的时间 = 数据最后一条的时间,则跳出循环
if (arr.length === centerData.length && centerData.length === params.pageSize) {
if (params.queryType === 0) {
continueTime = arr[0].planStart;
} else {
breakTime = arr[arr.length - 1].planStart;
}
}
// if (arr.length < centerData.length || (arr.length === centerData.length && centerData.length < params.pageSize && nextPage === 0)) {
const startTime = params.queryType === 0 ? firstTime : dayjs(+lastTime).subtract(1, timeGranularity.value);
let firstArr = arr.filter(item => dayjs(+item.planStart).isSame(+startTime, timeGranularity.value));
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 (firstArr.length && params.queryType === 1) {
newArr = [...newArr, ...firstArr];
}
for (let i = 0; i < params.pageSize; i++) {
let termArr = arr.filter(item => dayjs(+item.planStart).isSame(+currTime, timeGranularity.value));
// }
for (let i = 0; i < params.pageSize; i++) {
if (continueTime && dayjs(+currTime).isBefore(+continueTime, timeGranularity.value)) {
currTime = dayjs(+currTime).add(1, timeGranularity.value);
continue;
} else {
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);
if (breakTime && dayjs(+currTime).isSame(+breakTime, timeGranularity.value)) {
break;
} else {
currTime = dayjs(+currTime).add(1, timeGranularity.value);
}
}
}
showTasks = params.queryType === 0 ? [...newArr, ...showTasks] : [...showTasks, ...newArr];
if (firstArr.length && params.queryType === 0) {
newArr = [...newArr, ...firstArr];
}
const repeatTime = params.queryType === 0 ? newArr[newArr.length - 1].planStart : newArr[0].planStart;
const repeatTimeArr = showTasks.filter(item => dayjs(+item.planStart).isSame(+repeatTime, timeGranularity.value));
if (repeatTimeArr.length) {
const index = repeatTimeArr.findIndex(item => item.detailId);
if (index > -1) {
showTasks = params.queryType === 0 ? [...newArr, ...showTasks] : [...showTasks, ...newArr];
} else {
showTasks = params.queryType === 0 ? showTasks.slice(1) : showTasks.slice(0, showTasks.length - 2);
showTasks = params.queryType === 0 ? [...newArr, ...showTasks] : [...showTasks, ...newArr];
}
} else {
showTasks = params.queryType === 0 ? [...arr, ...showTasks] : [...showTasks, ...arr];
showTasks = params.queryType === 0 ? [...newArr, ...showTasks] : [...showTasks, ...newArr];
}
}

3
pages.json

@ -3,7 +3,8 @@
"path": "pages/index/index",
"style": {
"navigationBarText": "TALL",
"navigationStyle": "custom"
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{

11
pages/index/index.vue

@ -45,6 +45,7 @@
import { useStore } from 'vuex';
import dayjs from 'dayjs';
import upApp from '../../uni_modules/uni-upgrade-center-app/utils/check-update.js';
import { onPullDownRefresh } from '@dcloudio/uni-app';
upApp();
@ -66,6 +67,16 @@
if (!userInfo.value && user) {
store.commit('user/setUser', JSON.parse(user));
}
/**
* 下拉刷新
*/
onPullDownRefresh(() => {
getProjects();
setTimeout(function () {
uni.stopPullDownRefresh();
}, 1000);
})
getProjects();
// handleFindPoint();

Loading…
Cancel
Save