DooTask「导出管理」系统应用完全指南:二级菜单、四种导出动作与异步导出原理

发布时间:2026/10/16 2:16:23

DooTask「导出管理」系统应用完全指南:二级菜单、四种导出动作与异步导出原理 后端前端协同办公即时通讯企业应用【免费下载链接】dootaskDooTask是一款开源在线项目任务管理工具提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM文件管理等工具同时消息功能使用非对称加密技术让你的沟通更安全。项目地址https://gitcode.com/gh_mirrors/do/dootask点击查看免费下载导读本文围绕 DooTask 应用中心的「导出管理」exportManage系统应用展开完整讲解其卡片入口、二级菜单的四种导出动作任务统计、超期任务、审批数据、签到数据以及背后的异步导出与系统机器人通知机制。读完本文你将掌握如何在桌面端与移动端快速触发导出、每种导出的参数含义与范围上限并理解导出文件如何由 Swoole 协程后台生成、经系统机器人私聊下发、再通过限时下载链接取回的全过程。什么是「导出管理」应用「导出管理」是 DooTask 内置的exportManage系统应用。它不是一个独立的页面而是一张位于应用中心的快捷入口卡片点击后弹出二级菜单提供四种常用导出动作每种动作内部再走对应的导出流程生成文件 / 触发下载 / 进异步队列见原始文档 导出管理入口。在前端实现中这张卡片有独立的点击逻辑应用中心页面 application.vue 对card.system.value exportManage的卡片单独绑定了openExportMenu方法排序模式下不响应点击而非走通用的handleCardClick。openExportMenu通过 Vuex 的menu/operation弹出下拉菜单选中后由handleExport通过事件总线发出openManageExport事件application.vue主框架页 manage.vue 中的openManageExport再按类型分发到对应的导出弹窗或方法。从应用注册表看exportManage卡片被放置在「管理员应用」分区application.vue 中type: admin、show: this.userIsAdmin且所有导出接口均以User::auth(admin)校验管理员身份见下文各接口因此实际操作上只有管理员可以使用。入口与操作路径桌面端左侧导航「应用」→ 找到「导出管理」卡片并点击移动端底部 Tabbar「应用」→「导出管理」卡片。点击卡片后弹出二级菜单菜单项即四种导出动作原始文档的映射关系如下菜单选项触发动作导出任务统计openManageExport / task导出超期任务openManageExport / overdue导出审批数据openManageExport / approve导出签到数据openManageExport / checkin需要说明的是从当前仓库源码看openManageExport的 switch 分支已完整实现task打开任务导出弹窗、overdue直接调用超期任务导出接口、checkin打开签到导出弹窗三种「导出审批数据」的实际入口落在管理员区「数据导出」菜单中对应GET api/approve/export详见 管理员侧导出审批数据。操作步骤进入应用中心点击「导出管理」卡片在二级菜单中选择导出类型弹出导出配置对话框按需选择时间范围 / 成员 / 其他筛选条件提交后系统按数据量同步下载或异步生成数据量较大时一律走异步队列完成后由系统机器人通知。四种导出动作详解导出任务统计task对应弹窗组件 TaskExport.vue表单字段如下导出成员通过UserSelect多选最多 100 人前端与后端双重限制时间范围DatePicker日期区间提供「上个月 / 这个月」快捷选择导出时间类型单选taskTime任务计划时间默认或createdTime任务创建时间。提交时调用GET api/project/task/export后端接口 task__export 的参数与校验如下参数类型说明useridArray指定成员 ID 列表如[1, 2]最多 100 个超出返回「导出成员限制最多100个」timeArray时间范围如[2020-12-12, 2020-12-30]两端必须是合法日期/时间且跨度不得超过 90 天typeStringcreatedTime按创建时间筛选taskTime默认按任务计划时间筛选数据查询逻辑上接口会 JOINproject_task_usersowner 1取负责人并按导出时间类型筛选createdTime仅按创建时间范围筛选taskTime优先用任务计划时间筛选同时对“无计划时间start_at/end_at为空但在考核期内已完成complete_at落在区间内”的任务做了兜底纳入避免漏掉考核期内完成的任务ProjectController.php。数据按 100 条一批chunk处理内存可控。导出 Excel 的列定义按负责人分 Sheet包括任务ID、父级任务ID、所属项目、任务标题、任务标签、任务开始时间、任务结束时间、完成时间、归档时间、任务计划用时、实际完成用时、超时时间、开发用时、验收/测试用时、负责人、创建人、状态ProjectController.php。其中「状态」判定规则为flow_item_name以end|开头视为结束态并区分“已完成 / 已取消”非end|但complete_at有值则视为已完成未完成行状态列红色标出已完成但超期的行以蓝色标出。开发/测试用时则基于ProjectTaskFlowChange流程变更记录中test/end前缀的流转时间差累计计算。导出超期任务overdue该动作无需配置弹窗点击菜单后直接弹出确认框“你确定要导出所有超期任务吗”manage.vue确认后调用GET api/project/task/exportoverdue。后端接口 task__exportoverdue 不带参数查询条件为complete_at为空、end_at非空且end_at 当前时间的全部任务按end_at升序分批导出。导出列包括任务ID、父级任务ID、所属项目、任务标题、任务标签、任务开始时间、任务结束时间、任务计划用时、超时时间、负责人含 ID、创建人含 ID。若无数据机器人会推送“没有任何数据”的红色提示。导出审批数据approve审批导出走管理员区「数据导出」入口对应GET api/approve/export限管理员。操作要点见 管理员侧导出审批数据流程分类proc_def_name必填单次只能选一类不能一次导全部分类状态state0 全部 / 1 审批中 / 2 通过 / 3 拒绝 / 4 撤回可选「是否完成is_finished」日期范围最多35 天。导出字段覆盖申请编号、标题、申请状态、发起/完成时间、发起人工号、User ID、姓名、部门、部门 ID、部门负责人、历史审批人、历史办理人以及各模板自定义字段。后端通过审批微服务的findAllProcIns接口拉取流程实例后转写为 Excel微服务不可用时机器人会推送错误信息。导出签到数据checkin对应弹窗组件 CheckinExport.vue表单字段如下导出成员最多 100 人签到日期日期区间提供「上个月 / 这个月」快捷选择班次时间TimePicker时间区间提供8:30-18:00、9:00-18:00、9:30-18:30三个常用班次快捷选项。提交时调用GET api/system/checkin/export后端接口 checkin__export 的参数与校验如下参数类型说明useridArray成员 ID 列表最多 100 个dateArray日期范围如[2020-12-12, 2020-12-30]跨度不得超过 35 天timeArray班次时间范围如[09:00, 18:00]此外接口要求签到功能已开启读取checkinSetting配置open ! open时拒绝并读取delay延后打卡配置默认 120 分钟用于跨天打卡导出的收尾统计。导出按成员每人一个 Sheet列定义包括签到人、签到日期、班次时间、首次签到时间、首次签到结果、最后签到时间、最后签到结果、参数数据结果判定中“缺卡”以红色标注、“迟到”以蓝色标注。下载接口为GET api/system/checkin/down通过key参数换取文件。异步导出与结果通知机制所有导出动作都不是同步返回文件而是“立即返回 success 后台协程生成 机器人私聊通知”三步走见 数据导出概览触发即返回接口先做参数校验成员数、日期范围等随后用 Swoole 协程go(function () {...})把真正的导出逻辑丢到后台先Coroutine::sleep(1)等待再执行查询与文件生成同时通过WebSocketDialogMsg::sendMsg给用户私聊窗口推送一条“正在导出…请稍等…”的占位消息Excel 生成文件组装依赖 BillExport.php单 Sheet标题、表头、数据、单元格样式、可配置下拉校验与 BillMultipleExport.php多 Sheet 容器底层基于 Maatwebsite/ExcelPhpSpreadsheet打包与限时下载生成的.xls存放在storage/app/temp/类型/export/Ym/目录随后用Base::zipAddFiles压缩为 zip下载地址通过Down::cache_encode生成携带密钥的api/project/task/down?key...签到为api/system/checkin/down并用file_download类型消息推送到与系统机器人system-msg的私聊会话用户点击即可下载。由于密钥缓存在服务端链接有时效过期后文件无法再取回。与管理员区「数据导出」的区别维度应用中心「导出管理」本文主题管理员区「数据导出」可见范围应用中心内的快捷卡片源码中注册于管理员分区见上仅管理员可见组织方式按动作分类的一键导出点击卡片弹二级菜单覆盖更多导出类型与导出参数的高级配置入口典型动作任务统计、超期任务、签到数据等常用动作任务、审批、签到等全量管理导出见 数据导出入口两者共用同一套底层导出接口与机器人通知机制区别主要在于入口位置、菜单组织方式和参数深度。常见限制与注意事项一次只能导出一种类型不支持把多种导出动作合并为一次操作每次需在二级菜单中单选卡片不是历史记录页点击卡片只是触发导出动作卡片本身不展示历史导出记录或下载列表历史下载入口在系统机器人私聊消息中成员上限任务统计、签到导出的成员选择上限均为 100 人时间范围上限任务统计按时间筛选时跨度最多 90 天签到数据、审批数据的日期范围最多 35 天权限要求导出接口均限管理员User::auth(admin)涉及全局数据如审批数据的导出还会在后台再次校验管理员权限下载链接有时效机器人消息中的下载地址通过服务端缓存密钥生成过期后需重新发起导出。以上实现细节均可在仓库对应源码中验证前端入口见 application.vue 与 manage.vue导出弹窗见 TaskExport.vue 与 CheckinExport.vue后端接口见 ProjectController.php 与 SystemController.php。赞分享后端前端协同办公即时通讯企业应用【免费下载链接】dootaskDooTask是一款开源在线项目任务管理工具提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM文件管理等工具同时消息功能使用非对称加密技术让你的沟通更安全。项目地址https://gitcode.com/gh_mirrors/do/dootask点击查看免费下载相关推荐DooTask 数据导出功能全解析管理员入口定位、四类导出操作与源码级实现原理DooTask 数据导出功能全解析管理员入口定位、四类导出操作与源码级实现原理 DooTask 内置的「数据导出」是面向系统管理员的后台能力可将任务、审批、后端前端协同办公即时通讯企业应用DooTask 管理员数据导出全指南四大导出类型、操作流程与源码级实现解析DooTask 管理员数据导出全指南四大导出类型、操作流程与源码级实现解析 导读 本文面向 DooTask 的系统管理员与二次开发者系统讲解应用中心「管理员后端前端协同办公即时通讯企业应用DooTask 导出超期任务完全指南全系统逾期未完成任务的批量导出与实现原理DooTask 导出超期任务完全指南全系统逾期未完成任务的批量导出与实现原理 导读 「导出超期任务」是 DooTask 内置的管理员级数据导出功能用于一次性后端前端协同办公即时通讯企业应用上一篇Edge-TTS地域限制突破全方案从403错误到稳定服务的实战指南下一篇TileBoard主题与样式定制打造专属的Home Assistant仪表板创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/16 2:11:23

Ascend C 高阶 API Arange 实战:基于 arange 样例实现片上等差数列生成

人工智能深度学习算子库CANNAscend 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址&…

2026/10/16 3:36:27

两数之和与哈希表:从暴力O(n²)到O(n)的思维转换

我第一次认认真真刷题,翻开的第一道就是“两数之和”。那时候觉得简单,两层 for 循环套上去,半小时写出代码,还挺得意。后来去面试,面试官把这道题原封不动出给我,我条件反射写了暴力解,他追问了…

2026/10/16 3:36:27

wget高级用法实战:断点续传、限速与递归镜像

前阵子在机房处理一个迁移任务,需要从内部对象存储拉下来一个将近 8GB 的压缩包,机器带宽明明有 1Gbps,可 wget 默认跑起来速度一直上不去,进度条纹丝不动,最后还因为 SSH 会话断开导致下载中断,又得从头再…

2026/10/16 3:36:27

SpringBoot2+Vue3政务管理系统开发实战与避坑指南

做政务管理系统这几年,我带过好几个类似的项目,从最早SSH那套老古董,到后来SpringBootVue前后端分离,踩过的坑可以写一本书。最近正好把一个完整的“Java Web政务管理系统”源码整理出来,技术栈是SpringBoot2 Vue3 M…

2026/10/16 3:36:27

Linux组调度与带宽控制:cgroup CPU限额实战

前几篇聊CFS的时候,我一直默认“调度单位是一个任务”。在桌面机上这个假设没问题,但把它搬到几十核的服务器上,尤其上面还跑着很多互相隔离的服务或容器时,问题就暴露得很明显:任务级公平并不等于组级公平。这篇文章专…

2026/10/16 3:31:27

分布式与集群的区别:架构设计选型核心指南

做架构设计这几年,不管是在团队内部评审、技术分享,还是面试候选人时,我总会被同一个问题反复问到:“分布式和集群到底有什么区别?”一开始我觉得只是个概念题,后来发现事情没那么简单。不少人简历上写着精…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑