- 后端
- 前端
- 协同办公
- 即时通讯
- 企业应用
【免费下载链接】dootask
DooTask是一款开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具;同时消息功能使用非对称加密技术让你的沟通更安全。
导读
「团队管理」是 DooTask 中唯一集中处理「成员 + 部门 + 邀请」的管理员页面,涵盖全员列表、部门树编辑、邀请链接 / 邀请码生成三大块,属于管理员应用。本指南将基于官方文档与仓库源码,完整讲解它的入口路径、页面结构、每个操作的具体含义与后台校验规则,帮助系统管理员快速上手并规避常见操作误区(如删除部门失败、离职数据迁移等)。
是什么:DooTask 的管理员团队管理页
团队管理是 DooTask 唯一集中处理「成员 + 部门 + 邀请」的管理员页面,包含:
- 全员列表:搜索 / 筛选 / 增删用户、改身份(管理员 / 部门负责人 / 临时帐号)、改部门、重置密码、禁用 / 启用;
- 部门管理:创建 / 重命名 / 删除部门,拖拽调整树结构、设置部门负责人;
- 邀请加入:生成邀请链接或邀请码(受系统设置「允许注册」开关影响)。
它属于管理员应用(app-admin),需要系统管理员权限才能看到入口。与「联系人 / 部门」视图不同,团队管理是页面跳转,不是抽屉,并且普通成员看不到「团队管理」卡片,只能在「联系人」/「部门」浏览不带管理动作的视图(见 team.md)。
入口路径:桌面端与移动端
根据官方文档,入口路径如下:
| 端 | 路径 |
|---|---|
| 桌面端 | 左侧栏「应用」→ 下方「管理员」分区 →「团队管理」卡片 |
| 移动端竖屏 | 底部 Tabbar「应用」→「管理员」分区 →「团队管理」 |
| 打开方式 | 点击后跳转独立页面(非抽屉) |
在桌面端还有一条等价路径:右上角头像菜单 →「团队管理」(管理员可见),该二级菜单同时包含「导出任务统计 / 导出超期任务 / 导出签到数据」等导出入口(见 manage.vue 中path === 'team'的菜单渲染逻辑)。管理员应用的整体入口说明可参考 entry.md:「团队管理」是管理员分区中唯一以页面跳转方式打开的卡片,其余卡片(LDAP、邮件通知、APP 推送、举报管理等)均为右侧抽屉。
权限要求:admin才能看到入口,普通成员的「我的部门」查看走个人资料页(接口api/users/info/departments),最多看到自己所在的 10 个部门(见 org-department entry.md)。
页面结构:两栏布局
进入团队管理后页面分两栏(见 TeamManagement.vue 模板结构):
- 左侧部门树:顶部「默认部门」+ 全部部门按 id 升序的树形列表。每行显示:负责人头像、部门管理员头像(多人显示
+N)、部门名称、行尾「⋯」操作菜单;底部是「+ 新建部门」按钮。部门树宽度可通过中间的分隔线拖拽调整(100~900px)。 - 右侧成员列表:选中部门后展示该部门成员,支持按「关键词 = 邮箱 / 昵称 / 职位」搜索。
选中部门后,成员列表会自动带上department过滤条件,且部门负责人始终排在前面(前端通过departmentSelect传入keys.department,后端在 lists() 中依据user_departments表owner_userid命中情况排序)。
三大功能块之一:成员列表
筛选与搜索
成员列表提供以下筛选条件(前端 TeamManagement.vue 与后端 lists() 一一对应):
| 筛选项 | 可选值 / 说明 | 后端行为 |
|---|---|---|
| 关键词 | 邮箱、昵称、职位;若包含@则只匹配邮箱 | 邮箱 / 电话 / 昵称 / 职位LIKE模糊匹配 |
| 身份 | 全部 / 管理员 / 非管理员 / 临时帐号 / 非临时帐号 | 匹配 identity 字段中的admin、temp标识 |
| 在职状态 | 在职 / 离职 / 全部 | disable_at是否为 NULL |
| 邮箱认证 | 全部 / 已邮箱认证 / 未邮箱认证 | 匹配email_verity字段 |
| 人脸图片 / MAC 地址 | 仅在启用签到模式(checkinMode)时显示 | 关联user_checkin_faces、user_checkin_macs表过滤 |
默认每页 20 条,可切换每页 10/20/30/50/100 条,支持翻页、跳页。
成员行内操作
每行末尾「操作」下拉菜单包含(见 TeamManagement.vue):
| 操作 | 说明 |
|---|---|
| 打开会话窗口 | 直接打开与该成员的单聊 |
| 设为管理员 / 取消管理员 | 切换admin身份(操作需二次确认) |
| 设为临时帐号 / 取消临时身份 | 切换temp身份(临时帐号限制见系统设置) |
| 标记邮箱为已认证 / 未认证 | 手动维护邮箱认证状态 |
| 编辑用户信息 | 打开编辑弹窗,可改邮箱、电话、昵称、职位、部门等 |
| 操作离职 | 弹窗设置离职时间,可选交接人 |
| 恢复帐号(已离职) | 仅恢复帐号状态,无法恢复离职时移交的数据 |
| 删除 | 需填写删除原因(必填) |
这些操作统一调用api/users/operation接口,支持的类型完整清单见 operation() 的 API 注释:setadmin、clearadmin、settemp、cleartemp、setverity、clearverity、checkin_macs、checkin_face、department(修改部门)、setdisable(需disable_time、transfer_userid)、cleardisable、delete(需delete_reason)。
操作离职与交接人(重要)
执行「操作离职」时(见 TeamManagement.vue):
- 离职时间可从快捷选项选择(12:00 / 17:00 / 18:00 / 19:00 / 现在);
- 可指定一名交接人(留空则不执行迁移);
- 系统提示:该成员负责的部门、项目、任务和文件将移交给交接人;同时退出所有群(如果是群主则转让给交接人);
- 离职操作不可逆。
三大功能块之二:部门管理
部门树与行操作
左侧部门树顶部是系统内置的「默认部门」(表示未分配部门的成员,不能新建 / 删除 / 改名)。每个部门行尾「⋯」菜单提供(见 TeamManagement.vue):
| 操作 | 说明 |
|---|---|
| 添加子部门 | 仅level <= 3的部门可用 |
| 部门交流群 | 跳转到该部门绑定的部门群 |
| 同步部门成员 | 将子部门成员同步到当前部门 |
| 编辑 | 改名 / 改上级 / 改负责人 / 改部门管理员 |
| 删除 | 红色文字;含子部门时无法删除 |
「同步部门成员」后端逻辑见 department__sync():递归获取全部子部门 id,把子部门中未离职的成员补充进当前部门的department字段;当前部门无子部门时前端会直接提示「无需同步」。
新建 / 修改部门表单字段
新建或编辑部门时,表单字段如下(见 TeamManagement.vue):
| 字段 | 说明 |
|---|---|
| 部门名称 | 必填 |
| 上级部门 | 下拉选择;默认部门为根;只能选择层级 ≤ 3 的部门作为上级,且不能选择自己或自己的子部门 |
| 部门负责人 | 单选(UserSelect) |
| 部门管理员 | 多选,最多 20 人;部门管理员享有部门群的群管理员权限;负责人不能同时被选为管理员 |
| 群组设置(仅新建) | 部门群聊:创建部门群 / 使用现有群;使用现有群时仅支持选择个人群转为部门群 |
新建部门后,前端还会通过adddeputy/deldeputy接口把表单中勾选的部门管理员同步到后端(见 onSaveDepartment)。
部门管理后台校验规则(源码级)
部门相关操作统一走以下接口(见 routes/api-map.md),后端在 UsersController 中做了完整校验:
| 接口 | 方法 | 说明 |
|---|---|---|
api/users/department/list | GET | 部门列表(限管理员) |
api/users/department/add | GET | 新建、修改部门(限管理员) |
api/users/department/adddeputy | POST | 任命部门管理员(限管理员) |
api/users/department/deldeputy | POST | 罢免部门管理员(限管理员) |
api/users/department/del | GET | 删除部门(限管理员) |
api/users/department/sync | GET | 同步部门成员(限管理员) |
新建 / 修改部门的服务端限制(department__add()):
- 部门名称长度 2~20 个字符;
- 部门名称不能包含特殊符号(
~!@#$%^&*()+-_=.:?<>),也不能包含(M); - 全系统最多创建 200 个部门;
- 部门层级最多 3 级(根「默认部门」不算);
- 每个部门最多 20 个子部门;
- 每个用户最多担任 10 个部门的负责人;
- 不能选择自己的子部门作为上级部门。
部门负责人更换时,后端 saveDepartment() 会同步更新部门群的群主(dialog->owner_id)并调整群成员 role(负责人 role=1、旧负责人恢复 role=0)。
三大功能块之三:邀请加入
「邀请加入」用于生成邀请链接或邀请码,其可用性受系统设置「允许注册」开关影响。后端通过api/users/reg/needinvite暴露当前注册状态(reg__needinvite()):
$reg = Base::settingFind('system', 'reg', 'open'); return [ 'enabled' => $reg !== 'close', // 是否允许注册 'need' => $reg === 'invite', // 是否需要邀请码 ];即系统设置system.reg支持三档:open(开放注册,无需邀请码)、invite(需要邀请码)、close(关闭注册,此时邀请入口不可用)。注册页面对应逻辑可见登录页的邀请码输入框(login.vue):当系统要求邀请码时,注册表单会出现「邀请码」输入项,提交时携带invite参数并与系统设置的reg_invite比对(见 UsersController.php)。
团队管理页本身还提供「创建用户」与「批量导入」两个快捷入口(见 TeamManagement.vue),前者弹窗创建单个用户,后者走批量导入模板。
已知不支持的限制(边界说明)
根据官方文档,团队管理有以下明确限制:
- 不支持批量改成员部门:只能逐个改,或通过「批量导入」方式批量调整;
- 不能直接删除还有成员的部门:必须先把部门下成员转移走,否则报错(后端 department__del() 还会拦截「含有子部门无法删除」,删除成功后部门下成员将移至默认部门,前端弹窗有红色警示);
- 不支持把成员同时挂在 2 个部门下:每人最多 1 个主部门(成员字段中
department以逗号分隔存储多部门归属,但团队管理页按单主部门模型设计)。
与相关功能的关系
- 部门入口:部门树的更多操作(添加子部门、部门交流群、同步部门成员)细节见 org-department entry.md;
- 管理员应用:团队管理在「管理员」分区中的定位,见 entry.md;
- 个人设置:修改自己的资料请走右上角「个人设置」,团队管理页仅用于管理其他成员;
- 用户导入:批量导入成员的功能详见 user-account/import.md。
实操速查
- 新增成员:「应用」→「管理员」→「团队管理」→ 右上「创建用户」,或「批量导入」上传成员表;
- 调整部门结构:左侧部门树点击行尾「⋯」→ 添加子部门 / 编辑;拖拽调整结构在当前版本中体现为编辑时修改「上级部门」;
- 任命负责人 / 管理员:新建或编辑部门时选择「部门负责人」(单选)与「部门管理员」(多选,最多 20 人);
- 成员离职:成员行「操作」→「操作离职」,设置离职时间与交接人(负责的部门 / 项目 / 任务 / 文件将移交,群主身份一并转让);
- 开放邀请:先在系统设置中确认「允许注册」状态,再在团队管理中生成邀请链接 / 邀请码。
以上内容基于当前仓库v1.7.90对应的文档与实现验证(last_verified: v1.7.90),入口位置与字段细节以实际部署版本为准。
- 后端
- 前端
- 协同办公
- 即时通讯
- 企业应用
【免费下载链接】dootask
DooTask是一款开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具;同时消息功能使用非对称加密技术让你的沟通更安全。
相关推荐
Vibe Kanban组织成员管理:如何邀请和管理团队成员
Vibe Kanban组织成员管理:如何邀请和管理团队成员 Vibe Kanban是一款强大的AI编码代理管理看板工具,其组织成员管理功能让团队协作变得更加高效
后端前端AI 应用桌面应用研发协作Tabby 自托管部署账号注册完全指南:管理员创建、团队成员邀请与 IDE 连接凭证
Tabby 自托管部署账号注册完全指南:管理员创建、团队成员邀请与 IDE 连接凭证 部署完成自托管的 Tabby(Self hosted AI coding
人工智能大模型本地部署模型推理服务后端RAG交互助手Kilo Code 团队管理实战指南:成员邀请、角色权限与组织治理
Kilo Code 团队管理实战指南:成员邀请、角色权限与组织治理 Kilo Code 的 Teams / Enterprise 订阅将单机版的 AI 编程助手
人工智能大模型AI Agent代码智能体工具调用交互助手CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考