From 7f14dabe4b42ff15e3d8a6c996a64939b9cea734 Mon Sep 17 00:00:00 2001
From: xuesinan <1404152492@qq.com>
Date: Wed, 14 Sep 2022 11:01:59 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8uniapp=E5=AE=8C?=
=?UTF-8?q?=E6=88=90=E6=89=93=E5=8D=A1=E6=8F=92=E4=BB=B6=EF=BC=88=E5=8C=85?=
=?UTF-8?q?=E6=8B=AC=E8=AF=A6=E6=83=85=E9=A1=B5=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 3 +-
apis/plugin.js | 12 +
common/styles/tailwind.scss | 4 +
components/Plugin/Plugin.vue | 87 ++-
.../PrettyExchange/PrettyExchange - 副本.vue | 731 ------------------
.../PrettyExchange/PrettyExchange222.vue | 693 -----------------
components/SearchPopup/SearchPopup.vue | 234 ++++++
components/TimeLine 复制/TimeLine.vue | 126 ---
.../TimeLine 复制/component/Barrier.vue | 38 -
.../TimeLine 复制/component/TaskTools.vue | 177 -----
.../TimeLine 复制/component/TimeBox.vue | 132 ----
.../TimeLine 复制/component/TimeStatus.vue | 317 --------
components/TimeLine 复制/component/Title.vue | 0
hooks/project/useGetTasks - 副本 (2).js | 476 ------------
hooks/project/useGetTasks - 副本 (3).js | 343 --------
hooks/project/useGetTasks - 副本.js | 263 -------
hooks/project/useGetTasks222.js | 336 --------
pages.json | 6 +
pages/detail/detail.vue | 26 +
pages/project/project 复制.vue | 142 ----
pages/submitLog/submitLog - 副本.vue | 66 --
plugins/p-check-work/detail.vue | 395 ++++++++++
plugins/p-check-work/p-check-work.vue | 165 ++++
store/index.js | 1 +
24 files changed, 891 insertions(+), 3882 deletions(-)
delete mode 100644 components/PrettyExchange/PrettyExchange - 副本.vue
delete mode 100644 components/PrettyExchange/PrettyExchange222.vue
create mode 100644 components/SearchPopup/SearchPopup.vue
delete mode 100644 components/TimeLine 复制/TimeLine.vue
delete mode 100644 components/TimeLine 复制/component/Barrier.vue
delete mode 100644 components/TimeLine 复制/component/TaskTools.vue
delete mode 100644 components/TimeLine 复制/component/TimeBox.vue
delete mode 100644 components/TimeLine 复制/component/TimeStatus.vue
delete mode 100644 components/TimeLine 复制/component/Title.vue
delete mode 100644 hooks/project/useGetTasks - 副本 (2).js
delete mode 100644 hooks/project/useGetTasks - 副本 (3).js
delete mode 100644 hooks/project/useGetTasks - 副本.js
delete mode 100644 hooks/project/useGetTasks222.js
create mode 100644 pages/detail/detail.vue
delete mode 100644 pages/project/project 复制.vue
delete mode 100644 pages/submitLog/submitLog - 副本.vue
create mode 100644 plugins/p-check-work/detail.vue
create mode 100644 plugins/p-check-work/p-check-work.vue
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e91122..f2429e4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-# 1.0.0 (2022-09-09)
+# 1.0.0 (2022-09-14)
### 🌟 新功能
范围|描述|commitId
@@ -83,6 +83,7 @@
- | 项目列表新 | [88cf48d](https://101.201.226.163:50022/ccsens_tall/TALL-MUI-4/commits/88cf48d)
- | 小红点显示逻辑 | [11923f3](https://101.201.226.163:50022/ccsens_tall/TALL-MUI-4/commits/11923f3)
- | 小绿点隐藏 | [31f3dc7](https://101.201.226.163:50022/ccsens_tall/TALL-MUI-4/commits/31f3dc7)
+ - | 修改一些东西 | [5b577b0](https://101.201.226.163:50022/ccsens_tall/TALL-MUI-4/commits/5b577b0)
- | 引导页、广告页 | [4aa76ff](https://101.201.226.163:50022/ccsens_tall/TALL-MUI-4/commits/4aa76ff)
- | 隐藏软键盘 | [919a44e](https://101.201.226.163:50022/ccsens_tall/TALL-MUI-4/commits/919a44e)
- | 域名配置 | [b68272d](https://101.201.226.163:50022/ccsens_tall/TALL-MUI-4/commits/b68272d)
diff --git a/apis/plugin.js b/apis/plugin.js
index d352277..3c97571 100644
--- a/apis/plugin.js
+++ b/apis/plugin.js
@@ -38,4 +38,16 @@ export function setupPlugin(app) {
uni.$u.api.checkDeliver = (param, url) => uni.$u.post(`${url || domain.value}/deliver/checkDeliver`, param);
// 查看检查记录
uni.$u.api.queryCheckLog = param => uni.$u.post(`${domain.value}/deliver/queryCheckLog`, param);
+
+ /**
+ * 考勤api
+ */
+ // 批量查询打卡信息
+ uni.$u.api.clockQuery = (params, url) => uni.$u.post(`${url ? url : domain.value}/clock/query`, params);
+
+ // 打卡
+ uni.$u.api.clockPunch = (params, url) => uni.$u.post(`${url ? url : domain.value}/clock/punch`, params);
+
+ // 审核
+ uni.$u.api.clockAudit = (params, url) => uni.$u.post(`${url ? url : domain.value}/clock/audit`, params);
}
diff --git a/common/styles/tailwind.scss b/common/styles/tailwind.scss
index 895ad41..302cc93 100644
--- a/common/styles/tailwind.scss
+++ b/common/styles/tailwind.scss
@@ -4676,4 +4676,8 @@
.list-outside {
list-style-position: outside;
+}
+
+.line-through {
+ text-decoration: line-through;
}
\ No newline at end of file
diff --git a/components/Plugin/Plugin.vue b/components/Plugin/Plugin.vue
index 86587e3..ce530cd 100644
--- a/components/Plugin/Plugin.vue
+++ b/components/Plugin/Plugin.vue
@@ -1,51 +1,56 @@
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
+
+
+
+
-
-
diff --git a/components/PrettyExchange/PrettyExchange222.vue b/components/PrettyExchange/PrettyExchange222.vue
deleted file mode 100644
index 54041d8..0000000
--- a/components/PrettyExchange/PrettyExchange222.vue
+++ /dev/null
@@ -1,693 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.name }}
-
- 进行中
-
-
-
- {{ dayjs(+item.startTime).format('MM-DD HH:mm') }}
- 至
- {{ dayjs(+item.endTime).format('MM-DD HH:mm') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ subItem.name }}
-
-
- {{ subItem.status === 0 ? '未开始' : subItem.status === 1 ? '进行中' : subItem.status === 2 ? '暂停' : '已完成' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/SearchPopup/SearchPopup.vue b/components/SearchPopup/SearchPopup.vue
new file mode 100644
index 0000000..26adecd
--- /dev/null
+++ b/components/SearchPopup/SearchPopup.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 过滤
+ 导出
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/TimeLine 复制/TimeLine.vue b/components/TimeLine 复制/TimeLine.vue
deleted file mode 100644
index 489c680..0000000
--- a/components/TimeLine 复制/TimeLine.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/TimeLine 复制/component/Barrier.vue b/components/TimeLine 复制/component/Barrier.vue
deleted file mode 100644
index 95f5f9b..0000000
--- a/components/TimeLine 复制/component/Barrier.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
- 2021年30周
-
-
-
-
-
-
diff --git a/components/TimeLine 复制/component/TaskTools.vue b/components/TimeLine 复制/component/TaskTools.vue
deleted file mode 100644
index 52f4c3e..0000000
--- a/components/TimeLine 复制/component/TaskTools.vue
+++ /dev/null
@@ -1,177 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- 新建任务
-
-
- 克隆任务
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/TimeLine 复制/component/TimeBox.vue b/components/TimeLine 复制/component/TimeBox.vue
deleted file mode 100644
index b40e172..0000000
--- a/components/TimeLine 复制/component/TimeBox.vue
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
-
-
- {{ $moment(+task.planStart).format(startTimeFormat) }}
- {{ $moment(+task.planStart).format('D日') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/TimeLine 复制/component/TimeStatus.vue b/components/TimeLine 复制/component/TimeStatus.vue
deleted file mode 100644
index 1747154..0000000
--- a/components/TimeLine 复制/component/TimeStatus.vue
+++ /dev/null
@@ -1,317 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{ data.durationText }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ data.durationText }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/TimeLine 复制/component/Title.vue b/components/TimeLine 复制/component/Title.vue
deleted file mode 100644
index e69de29..0000000
diff --git a/hooks/project/useGetTasks - 副本 (2).js b/hooks/project/useGetTasks - 副本 (2).js
deleted file mode 100644
index 136c067..0000000
--- a/hooks/project/useGetTasks - 副本 (2).js
+++ /dev/null
@@ -1,476 +0,0 @@
-import { computed, nextTick, watch } from 'vue';
-import { useStore } from 'vuex';
-import { flatten } from 'lodash';
-import dayjs from 'dayjs';
-
-export default function useGetTasks() {
- const store = useStore();
- const tasks = computed(() => store.state.task.tasks);
- const timeLineType = computed(() => store.state.task.timeLineType); // 时间轴模式
- const realTasks = computed(() => store.state.task.realTasks); // 真实任务
- const downNextPage = computed(() => store.state.task.downNextPage); // 下一页
- const upNextPage = computed(() => store.state.task.upNextPage); // 下一页
- const currUpTimeNode = computed(() => store.state.task.currUpTimeNode); // 当前查询的时间
- const currDownTimeNode = computed(() => store.state.task.currDownTimeNode); // 当前查询的时间
- const roleId = computed(() => store.state.role.roleId);
- const timeNode = computed(() => store.state.task.timeNode);
- const timeUnit = computed(() => store.state.task.timeUnit);
- const visibleRoles = computed(() => store.state.role.visibleRoles);
- const allTasks = computed(() => store.state.task.allTasks);
- const roleIndex = computed(() => store.state.role.roleIndex);
-
- const projectId = computed(() => store.getters['project/projectId']);
- const timeGranularity = computed(() => store.getters['task/timeGranularity']);
-
- const remindData = computed(() => store.state.socket.remindData); // 小红点
-
- const currRoleRealTasks = computed(() => store.state.task.currRoleRealTasks); // 当前角色的真实任务数据
-
- // 初始化 定期任务
- async function initPlanTasks() {
- // timeLineType.value === 1 ? setNextPlaceholderTasks({}) : '';
- await getTasks({}); // 获取初始数据
- // await dataRender({});
- }
-
- /**
- * 生成getTasks所用的参数
- * @param {object} query getTasks传递的参数
- */
- function generateGetTaskParam(query) {
- return {
- roleId: roleId.value,
- timeNode: query.timeNode || timeNode.value,
- timeUnit: query.timeUnit || timeUnit.value,
- queryType: query.queryType === 0 ? 0 : 1,
- pageNum: query.pageNum || 1,
- pageSize: query.pageSize || uni.$taskConfig.pageCount,
- taskId: query.taskId || ''
- };
- }
-
- /**
- * 根据时间基准点和角色查找定期任务
- * @param {object} query
- * @param {string} query.roleId 角色id
- * @param {string} query.timeNode 时间基准点 默认当前
- * @param {string} query.timeUnit 时间颗粒度 默认天
- * @param {string} query.queryNum 查找颗粒度数量 默认3个
- * @param {number} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含
- */
- function getTasks(query) {
- store.commit('task/setShowSkeleton', false);
-
- const params = generateGetTaskParam(query);
- uni.$catchReq.getTaskByNum(params, (err, data) => {
- store.commit('task/setShowSkeleton', false);
- if (err) {
- // TODO: 提示错误
- console.error('err: ', err);
- } else {
- store.commit('task/setShowScrollTo', true);
-
- params.queryType === 0 ? store.commit('task/setUpRealTasks', data.list) : store.commit('task/setDownRealTasks', data.list);
- params.queryType === 0 ? store.commit('task/setUpNextPage', data.nextPage) : store.commit('task/setDownNextPage', data.nextPage); // 下一页
-
- const index = visibleRoles.value.findIndex(role => role.id === roleId.value);
- const arr = [...allTasks.value];
- arr[index].realTasks = [...realTasks.value];
- store.commit('task/setAllTasks', arr);
- store.commit('task/setCurrRoleRealTasks', arr[index].realTasks); // 设置当前角色的真实任务数据
-
- // 数据处理
- dataRender(params);
- }
- });
- }
-
- function dataRender(params) {
- timeLineType.value === 1 ? renderScaleTask(params) : renderConTask(params);
- }
-
- // 任务模式
- async function renderConTask(params) {
- let nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
- let showTasks = tasks.value;
- let centerData = await showTaskId(params, showTasks, realTasks.value) || [];
-
- if (centerData.length < 15 && nextPage > 0) {
- getTasks({pageNum: nextPage, queryType: params.queryType});
- } else {
- if (params.queryType === 0) {
- showTasks = [...centerData, ...showTasks];
- } else {
- showTasks = [...showTasks, ...centerData];
- }
- }
-
- if (showTasks.length < 15 && nextPage === 0 && params.queryType === 1) {
- getTasks({pageNum: 1, queryType: 0});
- }
-
- 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);
- }
-
- // 刻度模式数据处理
- async function renderScaleTask(params) {
- // params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params);
-
- // let centerData = await showTaskId(params, tasks.value, currRoleRealTasks.value) || [];
- let centerData = await showTaskTime(params, tasks.value, currRoleRealTasks.value) || [];
- // tasksData(params, centerData, currRoleRealTasks.value);
- handleTasksData(params, centerData, currRoleRealTasks.value);
- }
-
- // 已显示的任务第一个时间和最后一个时间
- async function showTaskTime(params, showTasks, realTasks) {
-
- // 初始值
- let centerData = params.queryType === 0 ? [] : realTasks.slice(0, params.pageSize);
-
- /**
- * 1、判断显示任务中是否有真实任务
- * 1-1、有。根据id查找任务
- * 1-2、无。根据时间查找任务
- * 2、查找15个任务
- */
- const firstDetailIndex = showTasks.findIndex(task => task.detailId);
-
- if (firstDetailIndex > -1) {
- // 显示任务中有真实任务数据
- const firstId = showTasks[firstDetailIndex].id;
- let lastDetailIndex = -1;
- showTasks.forEach((item, index) => {
- if (item.detailId) {
- lastDetailIndex = index;
- }
- })
- const lastId = showTasks[lastDetailIndex].id;
-
- realTasks.forEach((item, index) => {
- if (params.queryType === 1 && item.id === lastId) {
- centerData = realTasks.slice(index + 1, index + 1 + params.pageSize) || [];
- } else if (params.queryType === 0 && item.id === firstId) {
- if (index >= params.pageSize) {
- centerData = realTasks.slice(index - params.pageSize, index) || [];
- } else {
- centerData = realTasks.slice(0, index) || [];
- }
- }
- })
- } else {
- // 显示任务中没有真实任务数据
- // 已显示任务的第一个任务时间
- const firstTime = showTasks.length ? showTasks[0].planStart : '';
- // 已显示任务的最后一个任务时间
- const lastTime = showTasks.length ? showTasks[showTasks.length - 1].planStart : '';
-
- try {
- realTasks.forEach((item, index) => {
- if (params.queryType === 1) {
- if (dayjs(+lastTime).isSame(+item.planStart, timeGranularity.value) || dayjs(+lastTime).isBefore(+item.planStart, timeGranularity.value)) {
- centerData = realTasks.slice(index, index + params.pageSize) || [];
- throw Error();
- }
- } else {
- if (dayjs(+firstTime).isSame(+item.planStart, timeGranularity.value) || dayjs(+firstTime).isAfter(+item.planStart, timeGranularity.value)) {
- if (index >= params.pageSize) {
- centerData = realTasks.slice(index - params.pageSize, index) || [];
- } else {
- centerData = realTasks.slice(0, index) || [];
- }
- }
- }
- })
- } catch (e) {
- console.log('退出循环')
- }
- }
-
- console.log('111111111', centerData);
- return centerData;
- }
-
- 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、否。查找下一页数据并重复上述步骤
- */
- const startTime = centerData.length ? centerData[0].planStart : '';
- const endTime = centerData.length ? centerData[centerData.length - 1].planStart : '';
- let centerTime = dayjs(+startTime).add(params.pageSize, timeGranularity.value);\
- // 时间跨度是否大于等于15
- let isExceed = dayjs(+centerTime).isBefore(+endTime, timeGranularity.value) || dayjs(+centerTime).isSame(+endTime, timeGranularity.value);
-
- let nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
- if (isExceed || centerData.length >= params.pageSize || nextPage === 0) {
- params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params);
- }
-
- let showTasks = tasks.value; // 显示的数据
-
- const firstDetailIndex = showTasks.findIndex(task => task.detailId); // 显示任务中存在真实任务
- const firstId = showTasks[firstDetailIndex].id;
- let lastDetailIndex = -1;
- showTasks.forEach((item, index) => {
- if (item.detailId) {
- lastDetailIndex = index;
- }
- })
- const lastId = showTasks[lastDetailIndex].id;
-
- showTasks.forEach((task, index) => {
- const arr = centerData.filter(item => dayjs(+item.planStart).isSame(+task.planStart, timeGranularity.value));
- if (arr && arr.length) {
- if (firstDetailIndex > -1) {
- if (params.queryType === 1 && task.id === lastId) {
- showTasks.splice(index + 1, 0, [...arr])
- } else (params.queryType === 0 && task.id === firstId) {
- showTasks.splice(index, 0, [...arr])
- }
- } else {
- showTasks.splice(index, 1, [...arr]);
- }
- }
- })
-
- showTasks = flatten(showTasks); // 1维拍平
-
- if (!isExceed) {
- if (centerData.length < params.pageSize && nextPage > 0) {
- await getTasks({pageNum: nextPage, queryType: params.queryType});
- return;
- }
-
- let data = params.queryType === 0 ? centerData[0] : centerData[centerData.length - 1];
- showTasks.forEach((item, index) => {
- if (item.id === data.id) {
- len = index;
- }
- })
-
- showTasks = params.queryType === 0 ? showTasks.slice(len) : showTasks.slice(0, len + 1);
- }
-
- if (showTasks.length > 80) {
- showTasks = param.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80);
- }
-
- store.commit('task/clearTasks');
- param.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks);
- }
-
- // 已显示的任务第一个id和最后一个id
- async function showTaskId(params, showTasks, realTasks) {
- const firstDetailIndex = showTasks.findIndex(task => task.detailId);
- const firstId = firstDetailIndex === -1 ? 0 : showTasks[firstDetailIndex].id;
- let lastDetailIndex = -1;
- showTasks.forEach((item, index) => {
- if (item.detailId) {
- lastDetailIndex = index;
- }
- })
- const lastId = lastDetailIndex === -1 ? 0 : showTasks[lastDetailIndex].id;
-
- let centerData = params.queryType === 0 ? [] : realTasks.slice(0, params.pageSize);
- let flag = false;
- realTasks.forEach((item, index) => {
- if (params.queryType === 1 && item.id === lastId) {
- flag = true;
- centerData = realTasks.slice(index + 1, index + 1 + params.pageSize) || [];
- } else if (params.queryType === 0 && item.id === firstId) {
- flag = true;
- centerData = realTasks.slice(index - params.pageSize, index) || [];
- }
- })
-
- if (!flag) {
- centerData = 0
- }
-
- console.log('111111', centerData, realTasks)
-
- // 1、数量大于等于15 centerData.length >= 15
- // 2、时间跨度大于等于15
- const startTime = centerData.length ? centerData[0].planStart : '';
- const endTime = centerData.length ? centerData[centerData.length - 1].planStart : '';
- let centerTime = dayjs(+startTime).add(params.pageSize, timeGranularity.value);
- let isExceed = dayjs(+centerTime).isBefore(+endTime, timeGranularity.value) || dayjs(+centerTime).isSame(+endTime, timeGranularity.value);
- // 3、下一页不为0 nextPage != 0
- let nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
-
- if (centerData.length < 15 && !isExceed && nextPage > 0) {
- await getTasks({pageNum: nextPage, queryType: params.queryType});
- // centerData = await showTaskId(params, tasks.value, currRoleRealTasks.value);
- }
-
- return centerData;
- }
-
- /**
- * 刻度模式数据处理
- * 大于等于15天,真实数据的时间跨度
- * 或大于等于15条,真实数据的数量
- * 不用重新加载数据
- * @param {Object} params
- */
- function tasksData(query, centerData, realTasks) {
- let params = generateGetTaskParam(query);
-
- params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params);
- let showTasks = tasks.value; // 显示的数据
-
-
-
- let nextPage = param.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
-
- // 判断条件
- let isAccordTerm1 = false, isAccordTerm2 = false;
- if (centerData.length > 0) {
- // 1.数据数量>=15条
- isAccordTerm1 = centerData.length >= param.pageSize;
-
- // 2.数据最后一条数据时间>=当前查询的时间
- if (param.queryType === 0) {
- let firstData = dayjs(centerData[0].planStart).add(param.pageSize, timeGranularity.value);
- isAccordTerm2 = dayjs(+firstData).isBefore(+currUpTimeNode.value, timeGranularity.value) || dayjs(+firstData).isSame(+currUpTimeNode.value, timeGranularity.value);
- } else {
- let lastData = dayjs(centerData[centerData.length - 1].planStart).subtract(param.pageSize, timeGranularity.value);
- isAccordTerm2 = dayjs(+lastData).isAfter(+currDownTimeNode.value, timeGranularity.value) || dayjs(+lastData).isSame(+currDownTimeNode.value, timeGranularity.value);
- }
- }
-
- // 3.下一页===0
- // 不需要添加新数据
- if (!isAccordTerm1 && !isAccordTerm2 && nextPage > 0) {
- // getTasks({pageNum: nextPage, queryType: param.queryType});
- } else {
- let tasksArr = [], isReplace = false, firstIndex = -1, selctedIndex = -1, replaceTime = 0;
- showTasks.forEach((task, index) => {
- const arr = centerData.filter(item => dayjs(+item.planStart).isSame(+task.planStart, timeGranularity.value));
- if (arr && arr.length) {
- if (task.detailId) {
- // 新数据与旧数据时间有重叠
- if (param.queryType === 1) {
- selctedIndex = index;
- tasksArr = [...arr];
- } else {
- firstIndex = showTasks.findIndex(data => dayjs(+data.planStart).isSame(+task.planStart, timeGranularity.value));
- }
- } else {
- showTasks.splice(index, 1, [...arr]);
- }
- }
- })
-
- if (selctedIndex) {
- showTasks.splice(selctedIndex + 1, 0, [...tasksArr])
- }
-
- if (firstIndex) {
- showTasks.splice(firstIndex, 0, [...tasksArr])
- }
-
- showTasks.forEach((task, index) => {
- const arr = centerData.filter(item => dayjs(+item.planStart).isSame(+task.planStart, timeGranularity.value));
- if (arr && arr.length) {
- if (!task.detailId) { // 新数据与旧数据时间有重叠
- showTasks.splice(index, 1, [...arr]); // 这里加入的数据是array类型的, [{},{},[],[],{}]
- }
- }
- })
-
- showTasks = flatten(showTasks); // 1维拍平
-
- if (isAccordTerm1 && !isAccordTerm2) {
- let len = 0;
- let data = param.queryType === 0 ? centerData[0] : centerData[centerData.length - 1];
- showTasks.forEach((item, index) => {
- if (item.id === data.id) {
- len = index;
- }
- })
-
- showTasks = param.queryType === 0 ? showTasks.slice(len) : showTasks.slice(0, len + 1);
- }
-
- if (showTasks.length > 80) {
- showTasks = param.queryType === 0 ? showTasks.slice(0, 80) : showTasks.slice(showTasks.length - 80);
- }
- }
-
- store.commit('task/clearTasks');
- param.queryType === 0 ? store.commit('task/setUpTasks', showTasks) : store.commit('task/setDownTasks', showTasks);
- }
-
- // 设置时间轴向上的空数据
- function setPrevPlaceholderTasks() {
- store.commit('task/setTopEnd', true);
- let startTime = '';
- if (!tasks.value || !tasks.value.length) {
- startTime = Date.now(); // 没有任务就应该是时间基准点
- } else {
- startTime = tasks.value[0].planStart - 0; // 有任务就是第一个任务的计划开始时间
- }
- const placeholderTasks = uni.$task.setPlaceholderTasks(startTime, true, timeGranularity.value);
- store.commit('task/setCurrUpTimeNode', startTime);
- store.commit('task/setUpTasks', placeholderTasks);
- }
-
- // 设置时间轴向下的空数据
- function setNextPlaceholderTasks(params) {
- // store.commit('task/setBottomEnd', true);
- console.log('ddddddddd')
- let startTime = '';
- if (!tasks.value || !tasks.value.length) {
- startTime = Date.now();
- } else {
- startTime = dayjs(+tasks.value[tasks.value.length - 1].planStart).add(1, timeGranularity.value).valueOf();
- }
-
- if (params.taskId) {
- realTasks.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);
- store.commit('task/setDownTasks', initData);
- }
-
- /**
- * 当日常任务发生变化时
- * 将新获取到的日常任务放在allTasks里
- */
- watch(tasks, newValue => {
- // 添加到allTasks里
- const index = visibleRoles.value.findIndex(role => role.id === roleId.value);
- const arr = [...allTasks.value];
- arr[index].task = [...newValue];
- store.commit('task/setAllTasks', arr);
- });
-
- return {
- initPlanTasks,
- getTasks,
- dataRender
- }
-}
diff --git a/hooks/project/useGetTasks - 副本 (3).js b/hooks/project/useGetTasks - 副本 (3).js
deleted file mode 100644
index 8bc439a..0000000
--- a/hooks/project/useGetTasks - 副本 (3).js
+++ /dev/null
@@ -1,343 +0,0 @@
-import { computed, nextTick, watch } from 'vue';
-import { useStore } from 'vuex';
-import { flatten } from 'lodash';
-import dayjs from 'dayjs';
-
-export default function useGetTasks() {
- const store = useStore();
- const tasks = computed(() => store.state.task.tasks);
- const timeLineType = computed(() => store.state.task.timeLineType); // 时间轴模式
- const realTasks = computed(() => store.state.task.realTasks); // 真实任务
- const downNextPage = computed(() => store.state.task.downNextPage); // 下一页
- const upNextPage = computed(() => store.state.task.upNextPage); // 下一页
- const currUpTimeNode = computed(() => store.state.task.currUpTimeNode); // 当前查询的时间
- const currDownTimeNode = computed(() => store.state.task.currDownTimeNode); // 当前查询的时间
- const roleId = computed(() => store.state.role.roleId);
- const timeNode = computed(() => store.state.task.timeNode);
- const timeUnit = computed(() => store.state.task.timeUnit);
- const visibleRoles = computed(() => store.state.role.visibleRoles);
- const allTasks = computed(() => store.state.task.allTasks);
- const roleIndex = computed(() => store.state.role.roleIndex);
-
- const projectId = computed(() => store.getters['project/projectId']);
- const timeGranularity = computed(() => store.getters['task/timeGranularity']);
-
- const remindData = computed(() => store.state.socket.remindData); // 小红点
-
- const currRoleRealTasks = computed(() => store.state.task.currRoleRealTasks); // 当前角色的真实任务数据
-
- // 初始化 定期任务
- async function initPlanTasks() {
- if (timeLineType.value === 1) setNextPlaceholderTasks({});
- await getTasks({}); // 获取初始数据
- // await dataRender({});
- }
-
- /**
- * 生成getTasks所用的参数
- * @param {object} query getTasks传递的参数
- */
- function generateGetTaskParam(query) {
- return {
- roleId: roleId.value,
- timeNode: query.timeNode || timeNode.value,
- timeUnit: query.timeUnit || timeUnit.value,
- queryType: query.queryType === 0 ? 0 : 1,
- pageNum: query.pageNum || 1,
- pageSize: query.pageSize || uni.$taskConfig.pageCount,
- taskId: query.taskId || ''
- };
- }
-
- /**
- * 根据时间基准点和角色查找定期任务
- * @param {object} query
- * @param {string} query.roleId 角色id
- * @param {string} query.timeNode 时间基准点 默认当前
- * @param {string} query.timeUnit 时间颗粒度 默认天
- * @param {string} query.queryNum 查找颗粒度数量 默认3个
- * @param {number} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含
- */
- function getTasks(query) {
- store.commit('task/setShowSkeleton', false);
-
- const params = generateGetTaskParam(query);
- uni.$catchReq.getTaskByNum(params, (err, data) => {
- store.commit('task/setShowSkeleton', false);
- if (err) {
- // TODO: 提示错误
- console.error('err: ', err);
- } else {
- store.commit('task/setShowScrollTo', true);
-
- params.queryType === 0 ? store.commit('task/setUpRealTasks', data.list) : store.commit('task/setDownRealTasks', data.list);
- params.queryType === 0 ? store.commit('task/setUpNextPage', data.nextPage) : store.commit('task/setDownNextPage', data.nextPage); // 下一页
-
- const index = visibleRoles.value.findIndex(role => role.id === roleId.value);
- const arr = [...allTasks.value];
- arr[index].realTasks = [...realTasks.value];
- store.commit('task/setAllTasks', arr);
- store.commit('task/setCurrRoleRealTasks', arr[index].realTasks); // 设置当前角色的真实任务数据
-
- // 数据处理
- dataRender(params);
- }
- });
- }
-
- function dataRender(params) {
- timeLineType.value === 1 ? renderScaleTask(params) : renderConTask(params);
- }
-
- // 刻度模式数据处理
- async function renderScaleTask(query) {
- const params = generateGetTaskParam(query);
- let centerData = await showTaskTime(params, tasks.value, currRoleRealTasks.value) || [];
- await handleTasksData(params, centerData, currRoleRealTasks.value);
- }
-
- // 已显示的任务第一个时间和最后一个时间
- async function showTaskTime(params, showTasks, realTasks) {
-
- // 初始值
- let centerData = params.queryType === 0 ? [] : realTasks.slice(0, params.pageSize);
-
- /**
- * 1、判断显示任务中是否有真实任务
- * 1-1、有。根据id查找任务
- * 1-2、无。根据时间查找任务
- * 2、查找15个任务
- */
- const firstDetailIndex = showTasks.findIndex(task => task.detailId);
-
- if (firstDetailIndex > -1) {
- // 显示任务中有真实任务数据
- const firstId = showTasks[firstDetailIndex].id;
- let lastDetailIndex = -1;
- showTasks.forEach((item, index) => {
- if (item.detailId) {
- lastDetailIndex = index;
- }
- })
- const lastId = showTasks[lastDetailIndex].id;
-
- realTasks.forEach((item, index) => {
- if (params.queryType === 1 && item.id === lastId) {
- centerData = realTasks.slice(index + 1, index + 1 + params.pageSize) || [];
- } else if (params.queryType === 0 && item.id === firstId) {
- if (index >= params.pageSize) {
- centerData = realTasks.slice(index - params.pageSize, index) || [];
- } else {
- centerData = realTasks.slice(0, index) || [];
- }
- }
- })
- } else {
- // 显示任务中没有真实任务数据
- // 已显示任务的第一个任务时间
- const firstTime = showTasks.length ? showTasks[0].planStart : '';
- // 已显示任务的最后一个任务时间
- const lastTime = showTasks.length ? showTasks[showTasks.length - 1].planStart : '';
-
- try {
- realTasks.forEach((item, index) => {
- if (params.queryType === 1) {
- if (dayjs(+lastTime).isSame(+item.planStart, timeGranularity.value) || dayjs(+lastTime).isBefore(+item.planStart, timeGranularity.value)) {
- centerData = realTasks.slice(index, index + params.pageSize) || [];
- throw Error();
- }
- } else {
- if (dayjs(+firstTime).isSame(+item.planStart, timeGranularity.value) || dayjs(+firstTime).isAfter(+item.planStart, timeGranularity.value)) {
- if (index >= params.pageSize) {
- centerData = realTasks.slice(index - params.pageSize, index) || [];
- } else {
- centerData = realTasks.slice(0, index) || [];
- }
- }
- }
- })
- } catch (e) {
- console.log('退出循环')
- }
- }
-
- console.log('111111111', centerData);
- return centerData;
- }
-
- 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、否。查找下一页数据并重复上述步骤
- */
- const startTime = centerData.length ? centerData[0].planStart : '';
- const endTime = centerData.length ? centerData[centerData.length - 1].planStart : '';
- let centerTime = dayjs(+startTime).add(params.pageSize, timeGranularity.value);
- // 时间跨度是否大于等于15
- let isExceed = dayjs(+centerTime).isBefore(+endTime, timeGranularity.value) || dayjs(+centerTime).isSame(+endTime, timeGranularity.value);
-
- let showTasks = tasks.value; // 显示的数据
- const nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
- console.log('下一页', nextPage, isExceed, params.pageSize)
- if (isExceed || centerData.length >= params.pageSize || nextPage === 0) {
- params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params);
- showTasks = tasks.value;
- console.log('fffffff', showTasks);
- }
-
- if (centerData.length === 0 && nextPage === 0) {
- params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params);
- showTasks = tasks.value;
- console.log('ccccc', showTasks);
- } else {
- console.log('ttttttttt', showTasks);
- 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;
- }
- })
- 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 && arr.length) {
- if (firstDetailIndex > -1) {
- 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]);
- }
- }
- })
-
- showTasks = flatten(showTasks); // 1维拍平
-
- if (!isExceed) {
- if (centerData.length < params.pageSize && nextPage > 0) {
- await getTasks({pageNum: nextPage, queryType: params.queryType});
- console.log('oooooooo', showTasks);
- return;
- }
-
- if (centerData.length) {
- let len = 0;
- let data = params.queryType === 0 ? centerData[0] : centerData[centerData.length - 1];
- showTasks.forEach((item, index) => {
- if (item.id === data.id) {
- len = index;
- }
- })
-
- showTasks = params.queryType === 0 ? showTasks.slice(len) : showTasks.slice(0, len + 1);
- }
- }
- }
-
- 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);
- }
-
- // 任务模式
- async function renderConTask(params) {
- let nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
- let showTasks = tasks.value;
- let centerData = await showTaskId(params, showTasks, realTasks.value) || [];
-
- if (centerData.length < 15 && nextPage > 0) {
- getTasks({pageNum: nextPage, queryType: params.queryType});
- } else {
- if (params.queryType === 0) {
- showTasks = [...centerData, ...showTasks];
- } else {
- showTasks = [...showTasks, ...centerData];
- }
- }
-
- if (showTasks.length < 15 && nextPage === 0 && params.queryType === 1) {
- getTasks({pageNum: 1, queryType: 0});
- }
-
- 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);
- }
-
- // 设置时间轴向上的空数据
- function setPrevPlaceholderTasks() {
- store.commit('task/setTopEnd', true);
- let startTime = '';
- if (!tasks.value || !tasks.value.length) {
- startTime = Date.now(); // 没有任务就应该是时间基准点
- } else {
- startTime = tasks.value[0].planStart - 0; // 有任务就是第一个任务的计划开始时间
- }
- const placeholderTasks = uni.$task.setPlaceholderTasks(startTime, true, timeGranularity.value);
- store.commit('task/setCurrUpTimeNode', startTime);
- store.commit('task/setUpTasks', placeholderTasks);
- }
-
- // 设置时间轴向下的空数据
- function setNextPlaceholderTasks(params) {
- // store.commit('task/setBottomEnd', true);
- console.log('ddddddddd')
- let startTime = '';
- if (!tasks.value || !tasks.value.length) {
- startTime = Date.now();
- } else {
- startTime = dayjs(+tasks.value[tasks.value.length - 1].planStart).add(1, timeGranularity.value).valueOf();
- }
-
- if (params.taskId) {
- realTasks.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);
- store.commit('task/setDownTasks', initData);
- }
-
- /**
- * 当日常任务发生变化时
- * 将新获取到的日常任务放在allTasks里
- */
- watch(tasks, newValue => {
- // 添加到allTasks里
- const index = visibleRoles.value.findIndex(role => role.id === roleId.value);
- const arr = [...allTasks.value];
- arr[index].task = [...newValue];
- store.commit('task/setAllTasks', arr);
- });
-
- return {
- initPlanTasks,
- getTasks,
- dataRender
- }
-}
diff --git a/hooks/project/useGetTasks - 副本.js b/hooks/project/useGetTasks - 副本.js
deleted file mode 100644
index 032d147..0000000
--- a/hooks/project/useGetTasks - 副本.js
+++ /dev/null
@@ -1,263 +0,0 @@
-import { computed, nextTick, watch } from 'vue';
-import { useStore } from 'vuex';
-import { flatten } from 'lodash';
-import dayjs from 'dayjs';
-export default function useGetTasks() {
- const store = useStore();
- const tasks = computed(() => store.state.task.tasks);
- const basicTasks = computed(() => store.state.task.basicTasks);
- const upBasicTasks = computed(() => store.state.task.upBasicTasks);
- const nextPage = computed(() => store.state.task.nextPage); // 下一页
- const upNextPage = computed(() => store.state.task.upNextPage); // 下一页
- // const lastPage = computed(() => store.state.task.lastPage); // 最后一页
- const roleId = computed(() => store.state.role.roleId);
- const timeNode = computed(() => store.state.task.timeNode);
- const timeUnit = computed(() => store.state.task.timeUnit);
- const visibleRoles = computed(() => store.state.role.visibleRoles);
- const allTasks = computed(() => store.state.task.allTasks);
- const roleIndex = computed(() => store.state.role.roleIndex);
-
- const projectId = computed(() => store.getters['project/projectId']);
- const timeGranularity = computed(() => store.getters['task/timeGranularity']);
-
- // 初始化 定期任务
- async function initPlanTasks() {
- await getTasks({}); // 获取初始数据
- }
-
- /**
- * 根据时间基准点和角色查找定期任务
- * @param {object} query
- * @param {string} query.roleId 角色id
- * @param {string} query.timeNode 时间基准点 默认当前
- * @param {string} query.timeUnit 时间颗粒度 默认天
- * @param {string} query.queryNum 查找颗粒度数量 默认3个
- * @param {number} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含
- */
- function getTasks(query) {
- store.commit('task/setShowSkeleton', false);
-
- const params = {
- roleId: roleId.value,
- timeUnit: query.timeUnit || timeUnit.value,
- queryType: query.queryType === 0 ? 0 : 1,
- pageNum: query.pageNum || 1,
- pageSize: query.pageSize || uni.$taskConfig.pageCount
- }
-
- uni.$catchReq.getTaskByNum(params, (err, data) => {
- store.commit('task/setShowSkeleton', false);
- if (err) {
- // TODO: 提示错误
- console.error('err: ', err);
- } else {
- store.commit('task/setShowScrollTo', true);
-
- if (params.queryType === 0) {
- // 将接口返回的数据存储到store
- let lists = [...upBasicTasks.value, ...data.list];
- store.commit('task/setUpBasicTask', lists);
- store.commit('task/setUpNextPage', data.nextPage); // 下一页
- } else {
- let lists = [...basicTasks.value, ...data.list];
- store.commit('task/setBasicTask', lists);
- store.commit('task/setNextPage', data.nextPage); // 下一页
- }
-
- // 刻度模式数据处理
- renderTask(params);
- }
- });
- }
-
- // 刻度模式数据处理
- function renderTask(params) {
- params.queryType === 0 ? setPrevPlaceholderTasks() : setNextPlaceholderTasks();
- tasksData(params);
- }
-
- /**
- * 刻度模式数据处理
- * 大于等于15天,真实数据的时间跨度
- * 或大于等于15条,真实数据的数量
- * 不用重新加载数据
- * @param {Object} params
- */
- function tasksData(params) {
- let oldTasks = tasks.value;
- let realTasks = params.queryType === 0 ? upBasicTasks.value : basicTasks.value;
- // 下一页的值
- let next = params.queryType === 0 ? upNextPage.value : nextPage.value;
-
- // 真实数据是否>=15条 || 是否>=15天
- let term = tremFilter(params);
-
- if (term || next === 0) {
- // 过滤真实数据中在tasks时间段中的数据,并将最后的数据存储到tasksArr数组中
- let tasksArr = [], taskLen = 0, lastIndex = 0;
- oldTasks.forEach((task, index) => {
- const oldArr = oldTasks.filter(item => dayjs(+item.planStart).isSame(+task.planStart, timeGranularity.value));
- const arr = realTasks.filter(item => dayjs(+item.planStart).isSame(+task.planStart, timeGranularity.value));
-
- if (arr && arr.length) {
- if (task.detailId) {
- tasksArr = [...arr];
- lastIndex = index;
- } else {
- taskLen += arr.length; // 在时间刻度内的数据量
- oldTasks.splice(index, 1, [...arr]); // 这里加入的数据是array类型的, [{},{},[],[],{}]
- }
- }
- })
-
- // 数据与上一页最后一个数据时间节点相同
- if (lastIndex) {
- taskLen += tasksArr.length;
- oldTasks.splice(lastIndex, 0, [...tasksArr]);
- }
-
- oldTasks = flatten(oldTasks); // 1维拍平
-
- if (taskLen === params.pageSize) {
- // 如果真实任务所有数据都在tasks时间段中,则将所有任务显示,并且从最后一个真实任务的时间截止,存储到tasks中
- let len = 0;
- oldTasks.forEach((item, index) => {
- if (item.id === realTasks[realTasks.length - 1].id) {
- len = index;
- }
- })
-
- oldTasks = oldTasks.slice(0, len + 1);
- params.queryType === 0 ? store.commit('task/setUpBasicTask', []) : store.commit('task/setBasicTask', []);
- } else {
- // 只有一部分真实数据展示,展示tasks时间段加时间段内的真实数据
- params.queryType === 0 ? store.commit('task/setUpBasicTask', realTasks.slice(taskLen)) : store.commit('task/setBasicTask', realTasks.slice(taskLen));
- }
-
- store.commit('task/clearTasks');
- params.queryType === 0 ? store.commit('task/setUpTasks', oldTasks) : store.commit('task/setDownTasks', oldTasks);
- } else {
- if (next > 0) {
- getTasks({pageNum: params.pageNum, queryType: params.queryType});
- }
- }
- }
-
- /**
- * 数据筛选条件
- * 大于等于15天,真实数据的时间跨度,且大于等于15条,真实数据的数量,不用重新加载数据
- */
- function tremFilter(params) {
- let time1 = 0, time2 = 0;
- let realTasks = basicTasks.value;
-
- if (realTasks.length > 0) {
- // 真实数据第一条数据加上15天后的时间
- time1 = dayjs(+realTasks[0].planStart).add(params.pageSize, timeGranularity.value);
- // 真实数据最后一条数据的时间
- time2 = dayjs(realTasks[realTasks.length - 1].planStart, timeGranularity.value);
- }
-
- let result1 = false, result2 = false;
- // 判断真实任务的时间跨度是否在15天之内
- if (time1 > 0 && time2 > 0) {
- // 两个时间是否相等
- result1 = dayjs(time1).isSame(time2, timeGranularity.value);
- // time1是否大于time2
- result2 = dayjs(time1).isAfter(time2, timeGranularity.value);
- }
-
- let term1 = realTasks.length >= params.pageSize; // 大于等于15条,真实数据的数量
- // 大于等于15天,真实数据的时间跨度
- let term2 = result1 || result2;
-
- return term1 || term2;
- }
-
- /**
- * 用拿到的新数据 替换 时间刻度/旧数据
- * 先对比 新旧数据的 始末时间 补齐刻度
- * 再遍历对比 用任务替换刻度
- * @param {array} data 服务端返回的新数据 上边已经处理过空值
- * @param {number} type 0 -> 向上 1->向下
- */
- // function replacePrevData(data, type) {
- // const obj = { tasks: tasks.value, data, timeGranularity: timeGranularity.value };
- // let oldTasks = fillPlaceholderTask(obj); // 已经上下补齐时间刻度的
- // console.log('oldTasks', oldTasks)
- // // 遍历对比 用任务替换刻度
- // // TODO: tasks越来越多 遍历越来越多 需要优化
- // oldTasks.forEach((taskItem, index) => {
- // const arr = data.filter(dataItem => dayjs(+dataItem.planStart).isSame(+taskItem.planStart, timeGranularity.value));
- // if (arr && arr.length) {
- // oldTasks.splice(index, 1, [...arr]); // 这里加入的数据是array类型的, [{},{},[],[],{}]
- // }
- // });
-
- // oldTasks = flatten(oldTasks); // 1维拍平
-
- // store.commit('task/clearTasks');
- // type === 0 ? store.commit('task/setUpTasks', oldTasks) : store.commit('task/setDownTasks', oldTasks);
- // }
-
- /**
- * 超出旧数据上、下限 补齐时间刻度到新数据的起始时间颗粒度
- */
- // function fillPlaceholderTask(obj) {
- // const { prev, next } = uni.$task.computeFillPlaceholderTaskCount(obj);
- // if (prev) {
- // const newTasks = uni.$task.setPlaceholderTasks(+obj.tasks[0].planStart, true, obj.timeGranularity, prev);
- // store.commit('task/setUpTasks', newTasks);
- // }
- // if (next) {
- // const newTasks = uni.$task.setPlaceholderTasks(+obj.tasks[obj.tasks.length - 1].planStart, false, obj.timeGranularity, next);
- // store.commit('task/setDownTasks', newTasks);
- // }
- // return tasks.value;
- // }
-
- // 设置时间轴向上的空数据
- function setPrevPlaceholderTasks() {
- store.commit('task/setTopEnd', true);
- let startTime = '';
- if (!tasks.value || !tasks.value.length) {
- startTime = Date.now(); // 没有任务就应该是时间基准点
- } else {
- startTime = tasks.value[0].planStart - 0; // 有任务就是第一个任务的计划开始时间
- }
- const placeholderTasks = uni.$task.setPlaceholderTasks(startTime, true, timeGranularity.value);
- store.commit('task/setUpTasks', placeholderTasks);
- }
-
- // 设置时间轴向下的空数据
- function setNextPlaceholderTasks() {
- // store.commit('task/setBottomEnd', true);
- let startTime = '';
- if (!tasks.value || !tasks.value.length) {
- startTime = Date.now();
- } else {
- startTime = dayjs(+tasks.value[tasks.value.length - 1].planStart).add(1, timeGranularity.value);
- }
- const initData = uni.$task.setPlaceholderTasks(startTime, false, timeGranularity.value);
- store.commit('task/setDownTasks', initData);
- }
-
- /**
- * 当日常任务发生变化时
- * 将新获取到的日常任务放在allTasks里
- */
- watch(tasks, newValue => {
- // console.log('newValue----->tasks: ', tasks.value);
- // 添加到allTasks里
- const index = visibleRoles.value.findIndex(role => role.id === roleId.value);
- const arr = [...allTasks.value];
- arr[index].task = [...newValue];
- store.commit('task/setAllTasks', arr);
- });
-
- return {
- initPlanTasks,
- getTasks,
- renderTask
- };
-}
diff --git a/hooks/project/useGetTasks222.js b/hooks/project/useGetTasks222.js
deleted file mode 100644
index a969c59..0000000
--- a/hooks/project/useGetTasks222.js
+++ /dev/null
@@ -1,336 +0,0 @@
-import { computed, nextTick, watch } from 'vue';
-import { useStore } from 'vuex';
-import { flatten } from 'lodash';
-import dayjs from 'dayjs';
-
-export default function useGetTasks() {
- const store = useStore();
- const tasks = computed(() => store.state.task.tasks);
- const timeLineType = computed(() => store.state.task.timeLineType); // 时间轴模式
- const realTasks = computed(() => store.state.task.realTasks); // 真实任务
- const downNextPage = computed(() => store.state.task.downNextPage); // 下一页
- const upNextPage = computed(() => store.state.task.upNextPage); // 下一页
- const currUpTimeNode = computed(() => store.state.task.currUpTimeNode); // 当前查询的时间
- const currDownTimeNode = computed(() => store.state.task.currDownTimeNode); // 当前查询的时间
- const roleId = computed(() => store.state.role.roleId);
- const timeNode = computed(() => store.state.task.timeNode);
- const timeUnit = computed(() => store.state.task.timeUnit);
- const visibleRoles = computed(() => store.state.role.visibleRoles);
- const allTasks = computed(() => store.state.task.allTasks);
- const roleIndex = computed(() => store.state.role.roleIndex);
-
- const projectId = computed(() => store.getters['project/projectId']);
- const timeGranularity = computed(() => store.getters['task/timeGranularity']);
-
- const remindData = computed(() => store.state.socket.remindData); // 小红点
-
- const currRoleRealTasks = computed(() => store.state.task.currRoleRealTasks); // 当前角色的真实任务数据
- const currRoleShowTasks = computed(() => store.state.task.currRoleShowTasks); // 当前角色的展示任务数据
- const currLocationTaskId = computed(() => store.state.socket.currLocationTaskId);
-
- // 初始化 定期任务
- async function initPlanTasks() {
- if (timeLineType.value === 1) setNextPlaceholderTasks({});
- console.log('查询定期任务');
- await getTasks({}); // 获取初始数据
- // await dataRender({});
- }
-
- /**
- * 生成getTasks所用的参数
- * @param {object} query getTasks传递的参数
- */
- function generateGetTaskParam(query) {
- return {
- roleId: roleId.value,
- timeNode: query.timeNode || timeNode.value,
- timeUnit: query.timeUnit || timeUnit.value,
- queryType: query.queryType === 0 ? 0 : 1,
- pageNum: query.pageNum || 1,
- pageSize: query.pageSize || uni.$taskConfig.pageCount,
- taskId: query.taskId || currLocationTaskId.value
- };
- }
-
- /**
- * 根据时间基准点和角色查找定期任务
- * @param {object} query
- * @param {string} query.roleId 角色id
- * @param {string} query.timeNode 时间基准点 默认当前
- * @param {string} query.timeUnit 时间颗粒度 默认天
- * @param {string} query.queryNum 查找颗粒度数量 默认3个
- * @param {number} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含
- */
- function getTasks(query) {
- store.commit('task/setShowSkeleton', false);
-
- const params = generateGetTaskParam(query);
- console.log('查询定期任务api', params);
- uni.$catchReq.getTaskByNum(params, (err, data) => {
- store.commit('task/setShowSkeleton', false);
- if (err) {
- // TODO: 提示错误
- console.error('err: ', err);
- } else {
- store.commit('task/setShowScrollTo', true);
-
- params.queryType === 0 ? store.commit('task/setUpRealTasks', data.list) : store.commit('task/setDownRealTasks', data.list);
-
- console.log('查询到的真实任务', data.list);
- const index = visibleRoles.value.findIndex(role => role.id === roleId.value);
- console.log('api当前角色id', roleId.value, index);
- const arr = [...allTasks.value];
- arr[index].realTasks = [...realTasks.value];
- arr[index].upNextPage = params.queryType === 0 ? data.nextPage : 1;
- arr[index].downNextPage = params.queryType === 1 ? data.nextPage : 1;
- store.commit('task/setAllTasks', arr);
- console.log('设置当前真实任务', arr[index].realTasks);
- store.commit('task/setCurrRoleRealTasks', arr[index].realTasks); // 设置当前角色的真实任务数据
- 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);
- }
-
- // 数据处理
- dataRender(params);
- }
- });
- }
-
- function dataRender(params) {
- timeLineType.value === 1 ? renderScaleTask(params) : renderConTask(params);
- }
-
- // 刻度模式数据处理
- async function renderScaleTask(query) {
- const params = generateGetTaskParam(query);
- console.log('当前角色id', roleId.value);
- console.log('当前角色的真实任务', currRoleRealTasks.value);
- let centerData = await showTaskTime(params, currRoleShowTasks.value, currRoleRealTasks.value) || [];
- console.log('需要显示的真实任务', centerData);
- await handleTasksData(params, centerData, currRoleRealTasks.value);
- }
-
- // 已显示的任务第一个时间和最后一个时间
- async function showTaskTime(params, showTasks, realTasks) {
- /**
- * 1、判断显示任务中是否有真实任务
- * 1-1、有。根据id查找任务
- * 1-2、无。根据时间查找任务
- * 2、查找15个任务
- */
-
- // 初始值
- // 显示任务中没有真实任务数据
- let centerData = [];
- if (realTasks.length > params.pageSize && params.queryType === 0) {
- centerData = realTasks.slice(realTasks.length - params.pageSize);
- } else {
- centerData = realTasks.slice(0, params.pageSize);
- }
-
- const firstDetailIndex = showTasks.findIndex(task => task.detailId);
- if (firstDetailIndex > -1) {
- // 显示任务中有真实任务数据
- const firstId = showTasks[firstDetailIndex].id;
- let lastDetailIndex = -1;
- showTasks.forEach((item, index) => {
- if (item.detailId) {
- lastDetailIndex = index;
- }
- })
- const lastId = showTasks[lastDetailIndex].id;
-
- realTasks.forEach((item, index) => {
- if (params.queryType === 1 && item.id === lastId) {
- centerData = realTasks.slice(index + 1, index + 1 + params.pageSize);
- } else if (params.queryType === 0 && item.id === firstId) {
- centerData = index >= params.pageSize ? realTasks.slice(index - params.pageSize, index) : realTasks.slice(0, index);
- }
- })
- }
-
- return centerData;
- }
-
- 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; // 显示的数据
- 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)
- }
-
- 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;
- }
- })
- 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])
- }
- }
- })
-
- showTasks = flatten(showTasks); // 1维拍平
-
- 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;
- }
- })
-
- 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});
- }
- }
- } else {
- if (nextPage > 0) {
- console.log('数据为空')
- getTasks({pageNum: nextPage, queryType: params.queryType});
- } else {
- params.queryType === 0 ? setPrevPlaceholderTasks(params) : setNextPlaceholderTasks(params);
- }
- }
-
- // 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);
- }
-
- // 任务模式
- async function renderConTask(params) {
- let nextPage = params.queryType === 0 ? upNextPage.value : downNextPage.value; // 下一页的值
- let showTasks = currRoleShowTasks.value;
- let centerData = await showTaskTime(params, showTasks, currRoleRealTasks.value) || [];
-
- if (centerData.length < 15 && nextPage > 0) {
- getTasks({pageNum: nextPage, queryType: params.queryType});
- } else {
- if (params.queryType === 0) {
- showTasks = [...centerData, ...showTasks];
- } else {
- showTasks = [...showTasks, ...centerData];
- }
- }
-
- if (showTasks.length < 15 && nextPage === 0 && params.queryType === 1) {
- getTasks({pageNum: 1, queryType: 0});
- }
-
- 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);
- }
-
- // 设置时间轴向上的空数据
- function setPrevPlaceholderTasks() {
- store.commit('task/setTopEnd', true);
- let startTime = '';
- if (!currRoleShowTasks.value || !currRoleShowTasks.value.length) {
- startTime = Date.now(); // 没有任务就应该是时间基准点
- } else {
- startTime = currRoleShowTasks.value[0].planStart - 0; // 有任务就是第一个任务的计划开始时间
- }
- const placeholderTasks = uni.$task.setPlaceholderTasks(startTime, true, timeGranularity.value);
- store.commit('task/setCurrUpTimeNode', startTime);
- store.commit('task/setUpTasks', placeholderTasks);
- }
-
- // 设置时间轴向下的空数据
- function setNextPlaceholderTasks(params) {
- // store.commit('task/setBottomEnd', true);
- let startTime = '';
- if (!currRoleShowTasks.value || !currRoleShowTasks.value.length) {
- startTime = Date.now();
- } else {
- 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);
- }
- })
- }
-
- const initData = uni.$task.setPlaceholderTasks(startTime, false, timeGranularity.value);
- store.commit('task/setCurrDownTimeNode', startTime);
- store.commit('task/setDownTasks', initData);
- }
-
- /**
- * 当日常任务发生变化时
- * 将新获取到的日常任务放在allTasks里
- */
- watch(tasks, () => {
- // 添加到allTasks里
- const index = visibleRoles.value.findIndex(role => role.id === roleId.value);
- const arr = [...allTasks.value];
- arr[index].task = [...tasks.value];
- store.commit('task/setAllTasks', arr);
- store.commit('task/setCurrRoleShowTasks', arr[index].task); // 设置当前角色的展示任务数据
- });
-
- return {
- initPlanTasks,
- getTasks,
- dataRender
- }
-}
diff --git a/pages.json b/pages.json
index a241e09..123ce7d 100644
--- a/pages.json
+++ b/pages.json
@@ -62,6 +62,12 @@
"navigationBarTitleText": "审核记录"
}
},
+ {
+ "path": "pages/detail/detail",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
{
"path": "pages/detailWebview/detailWebview",
"style": {
diff --git a/pages/detail/detail.vue b/pages/detail/detail.vue
new file mode 100644
index 0000000..1ec0820
--- /dev/null
+++ b/pages/detail/detail.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/pages/project/project 复制.vue b/pages/project/project 复制.vue
deleted file mode 100644
index 8e3e177..0000000
--- a/pages/project/project 复制.vue
+++ /dev/null
@@ -1,142 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 测试切换主题
-
-
-
-
-
-
-
diff --git a/pages/submitLog/submitLog - 副本.vue b/pages/submitLog/submitLog - 副本.vue
deleted file mode 100644
index 8f5096f..0000000
--- a/pages/submitLog/submitLog - 副本.vue
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
- {{ deliverName }}
- {{ dayjs(+item.submitTime).format('MM-DD HH:mm') }}
-
-
-
-
- 审核人
-
-
-
- {{ checkItem.checkerName }}
-
-
- {{ checkItem.remark }}
-
-
- {{ dayjs(+checkItem.checkTime).format('MM-DD HH:mm') }}
-
-
-
- 待审核
-
- 已通过
-
- {{ checkItem.score }}
-
-
- 已驳回
-
-
-
-
-
-
-
-
-
-
diff --git a/plugins/p-check-work/detail.vue b/plugins/p-check-work/detail.vue
new file mode 100644
index 0000000..a519d04
--- /dev/null
+++ b/plugins/p-check-work/detail.vue
@@ -0,0 +1,395 @@
+
+
+
+
+ 考勤管理
+
+
+ 过滤
+ 导出
+
+
+
+
+
+
+
+ 姓名
+ 早
+ 晚
+ 审核人
+
+
+
+
+ {{ list.dateTime }}
+
+
+
+ {{ item.memberName }}
+
+
+
+
+ 早打卡
+
+
+
+ 未打卡
+
+
+
+
+
+
+ {{ dayjs(+item.morning).format("HH:mm") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 晚打卡
+
+
+
+ 未打卡
+
+
+
+
+
+
+ {{ dayjs(+item.night).format("HH:mm") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.lastCheckerName ? item.lastCheckerName : item.checkerName ? item.checkerName : checkerName }}
+
+
+
+ {{ item.lastCheckerName ? item.lastCheckerName : item.checkerName ? item.checkerName : '周勇' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/p-check-work/p-check-work.vue b/plugins/p-check-work/p-check-work.vue
new file mode 100644
index 0000000..70edaec
--- /dev/null
+++ b/plugins/p-check-work/p-check-work.vue
@@ -0,0 +1,165 @@
+
+
+
+ 早打卡
+
+
+
+
+
+ {{ dayjs(+currPunchInfo.morning).format("HH:mm") }}
+
+
+
+
+
+
+
+
+
+ 晚打卡
+
+
+
+
+
+ {{ dayjs(+currPunchInfo.night).format("HH:mm") }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ checkerName ? checkerName : members[0].name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/store/index.js b/store/index.js
index 93bf9e0..30798b5 100644
--- a/store/index.js
+++ b/store/index.js
@@ -97,6 +97,7 @@ const mutations = {
*/
setDomain(state, data) {
state.domain = data;
+ uni.$storage.setStorageSync('domain', data);
},
/**