# 任务协同管理 **Repository Path**: simple_18/etask ## Basic Information - **Project Name**: 任务协同管理 - **Description**: No description available - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2025-08-07 - **Last Updated**: 2025-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ETask - 轻量级任务协同管理平台 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![.NET](https://img.shields.io/badge/.NET-8.0-blue.svg)](https://dotnet.microsoft.com/download/dotnet/8.0) [![Vue](https://img.shields.io/badge/Vue-3.4-green.svg)](https://vuejs.org/) [![WPF](https://img.shields.io/badge/WPF-.NET%208.0-purple.svg)](https://docs.microsoft.com/en-us/dotnet/desktop/wpf/) ## 📖 简介 ETask 是一款开源的轻量级任务协同管理平台,致力于为团队提供高效、便捷的任务管理解决方案。它采用**三端设计**,包含 Web 端、桌面客户端和服务端,满足团队成员多样化的使用需求。 - **🖥️ 桌面客户端**:以桌面助手形式常驻桌面,方便个人随时随地进行项目任务管理 - **🌐 Web 端**:便于团队管理者及成员查看项目整体进展、成员任务情况,并可快速添加新任务 - **⚙️ 服务端**:提供完整的 RESTful API 接口,支持用户管理、项目管理、任务协同等功能 > 💡 **开发背景**:作者大学毕业后从事了几年 C# 程序开发,后因工作调整,日常开发多以 Java 为主。此项目选用 C# 开发,主要是因为本人对客户端开发兴趣很大,从事的第一个项目也是采用的 WPF,也想怀念下 C# 开发的感觉。故本项目没有使用太多的语法糖,简单的代码,简单的功能,方便大家阅读理解。 ## ✨ 特性 - **🎯 双端协作**:Web 端与客户端数据实时同步,无缝切换,灵活应对不同使用场景 - **👤 个人管理便捷**:桌面客户端简洁易用,助您轻松规划个人任务,提高工作效率 - **👥 团队协同高效**:Web 端支持快速查看团队成员任务进度,便于统筹安排,促进团队协作 - **🔐 安全可靠**:JWT 身份认证,数据加密传输,确保信息安全 - **📱 响应式设计**:支持多设备访问,适配桌面、平板、手机等不同屏幕尺寸 - **🎨 现代化 UI**:基于 Element Plus 和 HandyControl,界面美观,交互流畅 - **🔧 易于扩展**:模块化设计,支持自定义扩展和二次开发 - **📦 开源自由**:完全开源,您可以自由使用、修改、分发代码,定制专属的任务管理系统 ## 🏗️ 技术架构 ### 后端技术栈 - **框架**:ASP.NET Core 8.0 - **数据库**:MySQL 8.0 - **ORM**:Entity Framework Core 8.0 - **认证**:JWT Bearer Token - **日志**:Serilog - **API文档**:Swagger/OpenAPI - **对象映射**:AutoMapper ### 前端技术栈 - **框架**:Vue 3 + TypeScript - **UI组件**:Element Plus - **状态管理**:Pinia - **路由**:Vue Router 4 - **构建工具**:Vite - **HTTP客户端**:Axios - **样式**:SCSS ### 客户端技术栈 - **框架**:WPF (.NET 8.0) - **UI组件**:HandyControl - **MVVM模式**:数据绑定和命令模式 - **JSON处理**:Newtonsoft.Json ## 📁 项目结构 ``` ETask/ ├── ETask.Api/ # 后端 API 服务 │ ├── Controllers/ # API 控制器 │ ├── Data/ # 数据访问层 │ ├── Dtos/ # 数据传输对象 │ ├── Models/ # 数据模型 │ ├── Repositories/ # 仓储模式 │ ├── Services/ # 业务逻辑层 │ └── Migrations/ # 数据库迁移 ├── ETask.Web/ # 前端 Web 应用 │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── components/ # 公共组件 │ │ ├── layout/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # 状态管理 │ │ └── views/ # 页面组件 │ └── package.json ├── ETask.Client/ # 桌面客户端 │ ├── Views/ # 视图 │ ├── ViewModels/ # 视图模型 │ ├── Models/ # 数据模型 │ └── Converters/ # 值转换器 ├── docs/ # 项目文档 └── README.md # 项目说明 ``` ## 🚀 快速开始 ### 环境要求 - **.NET 8.0 SDK** - **Node.js 16.0+** - **MySQL 8.0+** - **Visual Studio 2022** 或 **VS Code**(推荐) ### 1. 克隆项目 ```bash git clone https://gitee.com/simple_18/etask.git cd etask ``` ### 2. 数据库配置 1. 创建 MySQL 数据库 2. 修改 `ETask.Api/appsettings.json` 中的数据库连接字符串: ```json { "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=etask;Uid=root;Pwd=your_password;" } } ``` ### 3. 启动后端服务 ```bash cd ETask.Api dotnet restore dotnet ef database update dotnet run ``` 后端服务将在 `http://localhost:5114` 启动 ### 4. 启动前端服务 ```bash cd ETask.Web npm install npm run dev ``` 前端服务将在 `http://localhost:3000` 启动 ### 5. 启动桌面客户端 ```bash cd ETask.Client dotnet restore dotnet run ``` ## 📋 功能特性 ### 已实现功能 #### 🔐 用户管理 - [x] 用户注册/登录 - [x] JWT 身份认证 - [x] 用户信息管理 - [x] 部门管理 #### 📊 项目管理 - [x] 项目 CRUD 操作 - [x] 项目列表展示 - [x] 项目详情查看 - [x] 项目状态管理 #### 👥 成员管理 - [x] 项目成员添加/移除 - [x] 成员角色管理 - [x] 成员信息展示(部门、邮箱、手机号等) - [x] 成员搜索筛选 #### 📝 任务管理 - [x] 任务创建/编辑/删除 - [x] 任务状态管理 - [x] 任务优先级设置 - [x] 任务时间管理 #### 🖥️ 桌面客户端 - [x] 系统托盘集成 - [x] 任务列表展示 - [x] 任务添加功能 - [x] 项目加入功能 ### 开发中功能 #### 📈 数据统计 - [ ] 项目进度统计 - [ ] 成员工作量统计 - [ ] 任务完成率分析 #### 📄 文档管理 - [ ] 项目文档上传/下载 - [ ] 文档版本管理 - [ ] 文档在线预览 #### 📊 看板视图 - [ ] Kanban 看板 - [ ] 任务拖拽排序 - [ ] 看板自定义配置 #### 🤖 智能功能 - [ ] 大模型集成 - [ ] 智能任务推荐 - [ ] 自动生成周报 ## 🖼️ 系统截图 ### Web 端界面 #### 登录页面 ![登录页面](./docs/login.png) #### 项目列表 ![项目列表](./docs/project-list.png) #### 项目详情 ![项目详情](./docs/project-detail.png) #### 成员管理 ![成员管理](./docs/member-management.png) ### 桌面客户端 ![客户端截图](./docs/home.png) ![客户端截图](./docs/add.png) ![客户端截图](./docs/help.png) ![客户端截图](./docs/join.png) ![客户端截图](./docs/tuopan.png) ## 🔧 开发指南 ### 后端开发 1. **添加新的 API 接口**: - 在 `Controllers` 目录下创建控制器 - 在 `Services` 目录下实现业务逻辑 - 在 `Repositories` 目录下实现数据访问 2. **数据库迁移**: ```bash dotnet ef migrations add MigrationName dotnet ef database update ``` 3. **API 文档**: - 访问 `http://localhost:5114/swagger` 查看 API 文档 ### 前端开发 1. **添加新页面**: - 在 `src/views` 目录下创建 Vue 组件 - 在 `src/router/index.ts` 中添加路由配置 2. **API 接口**: - 在 `src/api` 目录下定义接口 - 使用 TypeScript 定义数据类型 3. **状态管理**: - 在 `src/stores` 目录下使用 Pinia 管理状态 ### 客户端开发 1. **添加新页面**: - 在 `Views` 目录下创建 XAML 页面 - 在 `ViewModels` 目录下创建对应的 ViewModel 2. **数据绑定**: - 使用 MVVM 模式进行数据绑定 - 在 `Converters` 目录下创建值转换器 ## 🐛 问题反馈 如果您在使用过程中遇到问题,请通过以下方式反馈: 1. **提交 Issue**:[Gitee Issues](https://gitee.com/simple_18/etask/issues) 2. **邮件联系** 1056805316@qq.com ## 🤝 贡献指南 我们欢迎更多开发者加入 ETask 的开源社区,共同完善和优化这款产品。 ### 贡献步骤 1. **Fork 本项目**到您的仓库 2. **创建新分支**进行开发:`git checkout -b feature/AmazingFeature` 3. **提交代码**:`git commit -m 'Add some AmazingFeature'` 4. **推送分支**:`git push origin feature/AmazingFeature` 5. **提交 Pull Request**,并详细描述您的修改内容 ### 代码规范 - 遵循 C# 编码规范 - 遵循 Vue.js 风格指南 - 添加必要的注释和文档 - 确保代码通过所有测试 ## 📄 许可证 本项目采用 [MIT 许可证](LICENSE),详情请查看项目根目录下的 `LICENSE` 文件。 ## 🙏 致谢 感谢所有为 ETask 项目做出贡献的开发者们! ## 📞 联系我们 - **项目地址**:[https://gitee.com/simple_18/etask](https://gitee.com/simple_18/etask) - **作者** 张教主 - **邮箱**:1056805316@qq.com --- ⭐ 如果这个项目对您有帮助,请给我们一个 Star! ## 系统截图 ### 客户端 ![客户端截图](./docs/home.png) ![客户端截图](./docs/add.png) ![客户端截图](./docs/help.png) ![客户端截图](./docs/join.png) ![客户端截图](./docs/tuopan.png) ### Web端 ...正在开发中 ## 特性 * **双端协作**:Web 端与客户端数据实时同步,无缝切换,灵活应对不同使用场景。 * **个人管理便捷**:桌面客户端简洁易用,助您轻松规划个人任务,提高工作效率。 * **团队协同高效**:Web 端支持快速查看团队成员任务进度,便于统筹安排,促进团队协作。 * **开源自由**:完全开源,您可以自由使用、修改、分发代码,定制专属的任务管理系统。 ## 贡献 我们欢迎更多开发者加入 ETask 的开源社区,共同完善和优化这款产品。如果您发现了问题或有新的功能建议,欢迎提交[Issue](https://gitee.com/simple_18/etask);若想贡献代码,可参考以下步骤: 1. Fork 本项目到您的仓库。 2. 在您的仓库中创建新分支进行开发。 3. 完成开发后,提交 Pull Request,并详细描述您的修改内容。 ## 许可证 本项目采用[MIT](LICENSE)[ 许可证](LICENSE),详情请查看项目根目录下的`LICENSE`文件。