这是一个香港客户的工程企业管理系统的订单,对方报价35000港币,但是一直拖了几个月,估计要黄,希望别黄。
一个功能完整的工程项目管理系统,适用于建筑、施工等工程行业的全流程数字化管理。
- 项目追踪:完整的项目生命周期管理,从创建到完工
- 客户管理:客户信息、联系人维护
- 任务管理:项目任务分配、进度跟踪
- 发票管理:项目发票开具、状态追踪
- 附件管理:项目相关文档、图纸管理
- 物料分类:按类别组织物料
- 库存跟踪:实时库存数量、状态监控
- 采购管理:采购订单、供应商管理
- 物料消耗:任务物料使用记录
- 用户管理:员工信息、角色权限
- 考勤系统:签到签退、加班、培训等考勤类型
- 工作记录:员工工作日志、照片上传
- 申请审批:请假、报销等申请流程
- 供应商档案:供应商基本信息维护
- 联系人管理:供应商联系人信息
- 采购历史:供应商采购记录查询
- 框架:Go + Gin Web Framework
- 数据库:MySQL (使用 GORM ORM)
- 缓存:Redis
- 存储:阿里云 OSS
- 认证:JWT Token
- 框架:Vue 3 + TypeScript
- 路由:Vue Router
- 状态管理:Pinia
- 国际化:支持中文简体、繁体、英文
系统包含以下核心数据表:
- 项目相关:客户、项目、任务、发票、附件
- 物料相关:分类、物料、采购、供应商
- 人员相关:用户、角色、考勤、工作记录、申请
- 关联表:任务物料、采购物料、用户角色、用户考勤
- Go 1.19+
- Node.js 16+
- MySQL 8.0+
- Redis 6.0+
cd backend
# 安装依赖
go mod download
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库、Redis、OSS 等信息
# 初始化数据库
mysql -u root -p < smart_engi.sql
# 运行项目
go run main.go
# 或使用提供的启动脚本
./run.shcd frontend
# 安装依赖
npm install
# 开发模式运行
npm run dev
# 生产构建
npm run buildengi/
├── backend/ # 后端代码
│ ├── main.go # 主入口
│ ├── router.go # 路由配置
│ ├── tables.go # 数据模型定义
│ ├── with_auth_bind.go # 认证中间件
│ ├── *_status.go # 各类状态枚举
│ ├── *.go # 各业务模块实现
│ ├── go.mod # Go 依赖
│ └── smart_engi.sql # 数据库初始化脚本
│
└── frontend/ # 前端代码
└── src/
├── views/ # 页面组件
│ ├── project/ # 项目相关页面
│ ├── task/ # 任务相关页面
│ ├── user/ # 用户相关页面
│ ├── material/# 物料相关页面
│ └── ... # 其他业务模块
├── components/ # 公共组件
│ └── editor/ # 编辑器组件
├── stores/ # 状态管理
├── locale/ # 国际化文件
├── utils/ # 工具函数
└── router.ts # 路由配置
系统支持基于角色的权限控制(RBAC):
- 管理员可配置不同角色的访问权限
- 通过 Redis 缓存权限规则,提高查询效率
- JWT Token 实现用户认证和授权
后端采用 RESTful API 设计:
- 统一的响应格式:
{ message: string, data: any } - 路径参数和查询参数绑定
- 自动的请求体 JSON 解析
- 统一的错误处理
- 使用泛型函数
gorm.G[T]进行类型安全的数据库操作 WithAuthBind中间件处理认证和参数绑定- 所有外键设置级联删除或限制删除策略
- 使用全文索引支持中文搜索(ngram parser)
- TypeScript 严格模式
- Vue 3 Composition API
- 组件化开发,复用编辑器组件
- 嵌套路由实现详情页 Tab 切换
- 响应式设计,支持多种设备
- 状态使用不同颜色标识(如:红、橙、绿、蓝等)
- 列表页支持搜索、筛选、分页
- 详情页使用 Tab 展示关联数据
- 表单验证和错误提示
[在此添加您的许可证信息]
欢迎提交 Issue 和 Pull Request!
[在此添加您的联系方式]
⭐ 如果这个项目对您有帮助,欢迎 Star!
