项目介绍
Ferry 是一个基于 Gin + Vue + Element UI 构建的前后端分离的工单系统。它提供了灵活的流程配置、任务管理、权限控制等功能,旨在帮助企业高效管理工单流程。
应用场景
Ferry 工单系统适用于各种需要处理工单、任务分配、审批流程等场景的企业或组织。它可以用于:
-
IT 支持部门,管理用户提交的技术支持请求; -
人力资源部门,处理员工请假、报销等审批流程; -
项目管理部门,跟踪项目进度、任务分配和完成情况。
功能模块
流程中心
-
流程配置:通过灵活的配置流程、模版等数据,快速生成工单流程。 -
任务绑定:实现流程中的钩子操作,支持绑定邮件通知处理,也可自定义任务脚本进行通知。 -
处理情况兼容:支持串行处理、并行处理以及根据条件判断进行节点跳转。 -
变量设置:可通过变量设置处理人,如直接负责人、部门负责人等。
系统管理
-
权限控制:基于 casbin 的 RBAC 权限控制,实现用户、角色、岗位的增删查改,以及菜单目录、API 接口的权限管理。 -
用户管理:支持用户信息的增删查改、重置密码、上传管理头像等功能。 -
部门管理:实现部门的增删查改。 -
登陆日志:记录用户登陆日志,方便追踪和审计。
工单管理
-
工单提交申请:用户可提交新的工单申请。 -
工单统计:提供工单数据的统计功能。 -
多维度工单列表:包括我创建的、我相关的、我待办的、所有工单等视图。 -
任务管理:支持催办、转交、手动结单、加签等操作。 -
通知提醒:目前支持邮件通知提醒。
功能特点
-
前后端分离:采用 Gin 作为后端框架,Vue + Element UI 作为前端框架,实现前后端分离,提高开发效率。 -
灵活配置:通过流程配置和任务绑定,实现高度可定制的工单流程。 -
强大的权限控制:基于 casbin 的 RBAC 权限控制,实现细粒度的权限管理。 -
多维度管理:提供多维度的工单列表和统计功能,方便用户查看和管理工单。 -
丰富的通知方式:支持邮件通知,同时提供自定义任务脚本的接口,方便扩展其他通知方式。
项目技术栈
-
后端: -
Gin:Go 语言的高性能 Web 框架。 -
Casbin:Go 语言的 RBAC 权限控制库。 -
其他辅助库:如 gorm(ORM 框架)、logrus(日志库)等。
-
-
前端: -
Vue:渐进式 JavaScript 框架。 -
Element UI:基于 Vue 的 UI 组件库。 -
其他辅助库:如 axios(HTTP 客户端)、vuex(状态管理)等。
-
-
数据库:MySQL(或其他兼容的 SQL 数据库)。 -
部署:支持 Docker 快速部署。
Docker快速部署
拉取最新的代码
git clone https://github.com/lanyulei/ferry.git
自行编译镜像
cd ferry
同步数据
若是你没有同步过 ferry 相关的数据,则只需要在配置文件的路径下创建一个名为 needinit 的文件即可。
若是已经同步过,则必须确认在配置文件的路径下,一定要没有这个文件needinit。避免造成数据的重复同步。
启动容器
docker run -itd --name ferry -v /Users/mac/lanyulei/project/golang/ferry/config:/opt/workflow/ferry/config -p 80:8002 lanyulei/ferry:1.0.9
# 注意上面的 /Users/mac/lanyulei/project/golang/ferry/config 地址,需自行配置,此为存放配置文件的目录。
# 将 https://github.com/lanyulei/ferry/tree/master/config 下面的文件都保存到,自定义的配置文件路径下。
测试服务
若服务启动,则测试访问 http://ip:port 测试服务是否正常。
功能演示




