1. 项目概述
这个Web项目申报管理系统是我去年为某高校科研处开发的一套信息化解决方案。系统采用前后端分离架构,后端基于SpringBoot框架,前端使用Vue.js,数据库选用MySQL,通过MyBatis实现数据持久化。整个开发周期约3个月,目前已稳定运行半年多,日均处理200+项目申报流程。
提示:系统完整源码已开源,文末会提供获取方式。建议先收藏再阅读,本文包含大量实战经验和避坑指南。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术栈选型分析
后端技术栈:
- SpringBoot 2.7.3:简化配置,内置Tomcat服务器
- MyBatis-Plus 3.5.1:增强CRUD操作
- Shiro 1.9.0:权限控制框架
- Lombok:简化实体类开发
- Hutool 5.8.5:Java工具包
前端技术栈:
- Vue 2.6.14:主流前端框架
- Element UI 2.15.6:UI组件库
- Axios 0.26.1:HTTP请求库
- ECharts 5.3.2:数据可视化
数据库:
- MySQL 8.0.28:关系型数据库
- Redis 6.2.6:缓存会话数据
选择这套技术组合主要基于以下考虑:
- 高校IT环境普遍支持Java技术栈
- Vue+ElementUI开发效率高,适合快速迭代
- MyBatis-Plus能减少80%的常规SQL编写
- 系统需要支持高并发申报(如国家级项目集中申报期)
2.2 系统模块划分
mermaid复制graph TD
A[申报系统] --> B[用户模块]
A --> C[项目模块]
A --> D[评审模块]
A --> E[统计模块]
B --> B1[教职工]
B --> B2[院系管理员]
B --> B3[科研处]
C --> C1[申报书填写]
C --> C2[附件上传]
C --> C3[进度查询]
D --> D1[专家分配]
D --> D2[在线评审]
D --> D3[结果汇总]
E --> E1[项目统计]
E --> E2[经费分析]
E --> E3[导出报表]
3. 核心功能实现
3.1 多级审批流程设计
系统采用状态机模式管理申报流程:
java复制public enum ProjectStatus {
DRAFT("草稿", 0),
DEPARTMENT_REVIEW("院系审核", 1),
SCHOOL_REVIEW("学校审核", 2),
EXPERT_REVIEW("专家评审", 3),
FINALIZED("立项", 4),
REJECTED("驳回", -1);
// 省略getter/setter
}
状态转换规则:
- 教职工可提交草稿→院系审核
- 院系管理员可:
- 通过→学校审核
- 驳回→草稿(需填写驳回原因)
- 科研处可:
- 分配专家→专家评审
- 直接立项(小额项目)
- 专家评审通过后自动进入立项状态
3.2 动态表单实现
申报书字段需要支持各学院自定义,解决方案:
- 数据库设计:
sql复制CREATE TABLE form_template (
id BIGINT PRIMARY KEY,
college_id BIGINT,
template_json LONGTEXT,
versi
