首页 / 资讯中心 / 文章详情

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

DooTask「导出管理」系统应用完全指南:二级菜单、四种导出动作与异步导出原理 ★ FEATURED ARTICLE
后端前端协同办公即时通讯企业应用【免费下载链接】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),仅供参考
阅读完成 · 觉得有帮助?
咨询建站