博主介绍:✌ 专注于VUE,小程序,安卓,Java,python,物联网专业, 从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。
一、研究目的
本研究旨在构建一套基于SpringBoot与Vue技术栈的科研项目申报与管理系统,以期实现科研项目管理流程的数字化、标准化与高效化。当前高校及科研机构在项目申报、评审、执行及成果归档等环节普遍存在信息孤岛、流程繁琐、人力成本高昂等问题,导致项目审批周期延长、资源配置不均衡、科研成果利用率低下。通过搭建统一的在线平台,可实现项目申报材料的电子化上传、自动化校验与归档,显著降低纸质文件管理负担,并为评审专家提供实时数据查询与评审记录追溯功能,从而提升审批透明度与决策质量。
系统设计将聚焦于模块化架构,以满足科研项目全生命周期的管理需求。首先,用户管理模块将实现多角色权限控制,包括项目负责人、评审专家、财务审核员及系统管理员等,确保信息安全与职责分明;其次,项目申报模块将提供统一的申报表单模板与动态字段配置功能,支持多学科、多项目类型的灵活申报;再次,评审与审批模块将实现工作流引擎的集成,使评审意见、审批结果可在系统内形成完整链路,便于追踪与复盘;最后,数据统计与报表模块将利用SpringBoot后端的数据聚合能力与Vue前端可视化组件,生成项目进度、经费使用、成果产出等多维度报表,为管理层提供决策支持。
研究的技术创新点在于将SpringBoot的微服务架构与Vue的单页面应用特性相结合,形成前后端分离、模块可插拔的系统框架。后端采用SpringBoot进行业务逻辑处理、数据库访问与安全认证,前端则利用Vue实现响应式界面与高效状态管理。两者通过RESTful API进行交互,确保系统可扩展性与维护性;同时引入JWT鉴权机制与RBAC模型,提升系统安全保障水平。通过这种技术组合,可在保证系统性能的前提下,实现快速迭代与功能扩展。
本研究的最终目标是为科研管理提供一套完整、可持续、易于推广的解决方案。实现后,科研机构将能够在项目申报阶段实现材料标准化、流程自动化;在评审阶段实现专家资源高效匹配、评审结果可追溯;在执行阶段实现经费使用透明化、成果产出可视化;在归档与评价阶段实现数据完整性与可复用性。通过系统的落地应用,可显著提升科研项目管理效率,优化资源配置,促进科研创新活力,为我国科研事业的发展提供技术与管理双重支撑。
二、研究意义
本研究所提出的基于SpringBoot与Vue技术栈的科研项目申报与管理系统,具有重要的理论与实践意义。首先,在理论层面,该系统通过将前后端分离、微服务架构与单页面应用技术相结合,为科研管理信息化提供了可复制、可扩展的技术范式,填补了现有研究中对科研项目全生命周期数字化管理工具缺乏系统性设计与实现的空白。其次,在实践层面,该系统能够显著降低科研项目申报与审批过程中的人工成本与时间成本,提升工作效率;通过统一的数据平台实现项目进度、经费使用、成果产出等多维度信息的实时可视化,为管理者提供数据驱动的决策支持,促进资源配置的科学化与公平化。
此外,该系统在保障科研信息安全方面具有重要意义。采用JWT鉴权机制与基于角色的访问控制模型,能够实现细粒度权限管理,确保项目资料、评审意见等敏感信息仅在授权范围内流转;同时,通过对数据访问日志的完整记录,为后续审计与追溯提供可靠依据,有助于提升科研管理的透明度与合规性。系统的模块化设计还为后续功能扩展与技术升级提供了便利,能够适应不同学科、不同项目类型的多样化需求,具有较高的可推广性。
从宏观层面来看,该系统的落地应用将促进科研管理模式的转型升级。通过实现项目申报材料电子化、评审流程自动化与成果归档数字化,能够有效消除传统纸质文件管理带来的信息孤岛与传递延迟问题;同时,系统所提供的统计分析与报表功能,将为科研机构提供项目绩效评估、经费使用监控等多维度数据支持,帮助科研管理部门精准识别项目风险、优化资源配置。最终,该系统将为提升国家科研创新体系的整体效率与竞争力发挥积极作用,为实现科研管理数字化转型目标提供有力技术支撑。
三、国内外研究现状
国内在科研项目申报与管理系统方面的研究起步较早,主要集中在高校、科研院所及政府部门。以高校为例,许多学校已构建基于传统关系型数据库的项目管理平台,采用Java EE技术或.NET技术实现基本的申报、审批、经费管理功能;近年来,随着云计算与大数据技术的发展,一批基于SpringBoot、MyBatis等开源框架的微服务化平台开始涌现,这些平台在提升系统可维护性与扩展性的同时,也为多学科项目提供了统一的数据接口。与此同时,国内科研管理系统在数据标准化、流程自动化方面取得了一定进展,部分高校通过引入BPMN工作流引擎实现了申报材料的自动校验与审批路径的可视化;在成果归档与知识共享方面,也出现了基于DSpace或EPrints的开放获取模块,进一步完善了科研信息生命周期管理。
国际上,科研项目管理系统的发展更为成熟,尤其在欧美国家。美国多所大型研究型大学已部署集成化的Research Administration System,该系统采用Python或Django技术栈,支持从项目立项、预算编制、进度跟踪到成果发布的全流程管理;欧洲则普遍采用基于Java EE的Open Source RIMS,并通过RESTful API与科研数据仓库实现深度集成。除此之外,国际学术界还探索了区块链技术在科研项目资金透明化与成果溯源方面的应用,部分试点项目已实现基于智能合约的经费支付与成果验证。
从研究方向来看,国内外学者普遍关注流程自动化、数据可视化与智能决策支持三大主题。流程自动化方面,工作流引擎的集成与模型化已成为主流;数据可视化则强调利用BI工具与图表库实现项目进度、经费使用等关键指标的实时监控;智能决策支持则聚焦于机器学习算法在项目评审、资源配置与风险预警中的应用。近年来,国内外已有若干成果值得关注:在流程自动化方面,一些高校通过引入Camunda BPM实现了多级审批的动态路由;在数据可视化方面,部分系统集成了ECharts或Highcharts,实现了交互式仪表盘;在智能决策支持方面,已有研究利用随机森林与聚类算法对项目申报材料进行质量评估与匹配推荐。
四、预期达到目标及解决的关键问题
本研究的预期目标在于构建一套功能完备、可扩展、易维护的科研项目申报与管理系统,并通过系统部署与案例验证,证明其在提升科研管理效率、降低人工成本、保障信息安全方面的显著效果。首先,系统应实现项目全生命周期管理功能,包括项目立项申报、评审审批、经费预算与支付、进度跟踪与风险预警以及成果归档与开放获取等模块;其次,系统需支持多角色权限控制与细粒度访问管理,确保信息安全与合规性;再次,系统应具备数据可视化与统计分析能力,为科研管理者提供实时决策支持;最后,系统需采用微服务架构与前后端分离技术,保证高并发、易扩展的性能表现,并为后续功能迭代提供便利。
在实现上述目标过程中,将面临若干关键问题。首先是业务流程与信息化模型的匹配问题,科研项目管理涉及多学科、多部门协同,如何将复杂的审批链路与动态工作流模型相结合,并兼顾灵活性与规范性,是系统设计的核心挑战之一。其次是数据标准化与互操作性问题,科研项目申报材料、经费凭证、成果文档等数据来源多样,如何统一数据格式、建立共享数据字典,并通过RESTful API实现与现有科研信息平台的无缝对接,是系统集成的重要考量。再次是安全与合规性问题,科研项目涉及敏感信息与资金管理,系统必须满足身份鉴权、权限细分、日志审计等安全要求,并符合国家关于科研经费管理的法规与标准。第四是性能与可扩展性问题,随着项目数量和并发用户的增长,系统需保证响应时间在可接受范围内,并支持水平扩容与微服务拆分,以适应未来业务增长。最后是用户体验与培训成本问题,科研人员对信息系统的接受度直接影响系统落地效果,如何通过简洁直观的界面、智能化的提示与自动化的流程,降低用户学习成本,并提供完善的使用文档与技术支持,是实现系统推广的重要因素。
为解决上述关键问题,本研究将采用基于BPMN的工作流引擎进行流程建模,利用SpringBoot与Vue实现前后端分离;通过JWT鉴权与RBAC模型实现安全控制;采用统一数据接口标准(如OpenAPI)并使用数据字典管理数据一致性;利用分布式缓存与消息队列提升系统性能;并结合用户研究方法优化界面交互设计,降低学习成本。通过上述技术与方法的综合应用,预期能够实现科研项目申报与管理的数字化、标准化与智能化,为科研机构提供一套可持续发展的信息化解决方案。
五、研究内容
本研究的整体内容围绕基于SpringBoot与Vue技术栈的科研项目申报与管理系统的设计、实现与评估展开,旨在通过模块化架构与微服务化部署实现科研项目全生命周期的信息化管理。首先,在系统架构层面,采用前后端分离模式,后端采用SpringBoot框架搭建RESTful API服务,并利用Spring Cloud实现微服务治理、配置中心与服务注册发现;前端则使用Vue3结合Vue Router与Pinia状态管理,实现单页面应用的响应式交互;两端通过JWT鉴权机制与OAuth2.0协议实现安全通信。其次,在功能模块层面,系统分为用户管理、项目申报、评审审批、经费管理、进度跟踪、成果归档与开放获取以及数据统计与报表等七大核心模块。用户管理模块通过基于RBAC的权限体系实现多角色(项目负责人、评审专家、财务审核员、系统管理员)细粒度访问控制;项目申报模块提供动态表单配置与文件上传功能,并集成Camunda BPMN工作流引擎实现审批流程的可视化与自动化;评审审批模块支持多轮评审意见收集、加权评分与冲突检测;经费管理模块实现预算编制、支付申请与账务核对,并通过Spring Batch定时任务完成报销凭证的批量校验;进度跟踪模块利用前端图表库ECharts展示甘特图与里程碑进度,后端通过MyBatis对项目任务进行CRUD操作;成果归档与开放获取模块支持PDF、Word、数据集等多种文件格式的存储,并通过Dublin Core元数据标准实现检索与共享;数据统计与报表模块利用Spring Boot Actuator与ELK日志堆栈进行系统监控,并提供可定制化仪表盘。第三,在技术实现层面,系统采用MySQL数据库进行业务数据持久化,Redis缓存提升热点数据访问速度,Kafka消息队列实现异步任务与事件驱动;前端利用TypeScript加强类型安全,并通过Vite构建工具实现模块热更新与快速打包;系统安全方面,结合Spring Security实现细粒度权限校验、CSRF防护与密码加盐存储,并对所有敏感接口开启HTTPS传输。第四,在数据治理层面,系统引入统一数据字典与元数据管理模块,采用JSON Schema定义表单字段与业务实体,实现前后端数据模型的一致性;同时通过OpenAPI规范生成接口文档,支持第三方系统的对接。第五,在用户体验层面,系统遵循人机交互设计原则,采用响应式布局与可视化组件库Element Plus提升界面友好度;在流程设计上提供拖拽式工作流编辑器,使非技术人员即可自定义审批路径;并通过弹窗提示与实时校验减少用户操作错误。第六,在系统评估层面,研究将采用实验室环境与真实科研项目数据进行功能测试、性能基准测试与安全渗透测试;通过收集项目负责人、评审专家与财务人员的使用反馈,进行问卷调查与深度访谈,量化系统在效率提升、成本降低与用户满意度方面的效果。最后,研究将撰写技术规范与使用手册,为后续系统部署与维护提供参考,并将研究成果以开源形式发布,以促进国内科研管理信息化的技术共享与推广。
六、需求分析
用户需求方面,本研究聚焦于科研项目管理系统的主要使用者,包括项目负责人、评审专家、财务审核员以及系统管理员等多类角色。项目负责人需要能够快速完成项目立项申报,填写项目基本信息、预算明细以及附件材料,并在系统中随时查看申报进度与审批结果;评审专家则期望通过在线评审界面获取完整的项目资料,进行评分、撰写评审意见,并对同一项目进行多轮评审;财务审核员需要能够对预算申请进行核对、审批以及经费支付流程的跟踪,确保资金使用合规;系统管理员则负责用户权限管理、系统配置与维护,保障系统安全与稳定运行。所有用户都期望系统界面简洁直观,操作流程清晰明了,并能够在移动设备上随时访问,以适应科研人员繁忙的工作节奏。除此之外,用户还对系统的安全性提出高要求,包括数据加密传输、细粒度权限控制、日志审计以及合规性报告等功能,以确保项目资料与经费信息不被未授权访问或篡改。系统还需提供多语言支持与可视化报表,帮助用户快速获取项目进展、预算执行情况以及成果产出等关键指标,从而做出及时决策。
功能需求方面,系统整体架构采用前后端分离的微服务模式,后端使用SpringBoot框架实现RESTful API,并通过Spring Cloud进行服务治理与配置管理;前端则基于Vue3实现单页面应用,并利用Pinia进行状态管理。系统主要功能模块包括:用户管理模块,实现基于角色的访问控制、密码加盐存储以及多因素身份验证;项目申报模块,支持动态表单生成、文件上传与版本控制,并集成Camunda BPMN工作流引擎完成审批路径的可视化与自动化;评审审批模块提供多轮评审功能,支持评分标准配置、加权计算以及冲突检测,并通过实时通知提醒评审专家及时完成评审;经费管理模块实现预算编制、支付申请、报销凭证上传与账务核对,并通过Spring Batch定时任务完成凭证批量校验;进度跟踪模块利用ECharts展示甘特图与里程碑进度,支持任务分配、状态更新与风险预警;成果归档与开放获取模块支持多种文件格式存储,采用Dublin Core元数据标准实现检索,并通过权限控制实现成果的开放共享;数据统计与报表模块提供可定制化仪表盘,支持 KPI 指标监控、财务报表生成以及项目绩效评估。系统还需具备日志审计、异常监控与性能指标采集功能,以满足运维与安全合规需求。通过上述功能实现,系统能够覆盖科研项目申报、评审、经费管理、进度跟踪及成果归档等全生命周期,为科研管理提供一站式信息化解决方案。
七、可行性分析
经济可行性方面,本研究所采用的技术栈主要基于开源框架SpringBoot、Vue、MySQL、Redis以及Kafka等,整体软件成本相对较低,仅需投入服务器租赁或云主机费用以及数据库与消息队列的运维费用。相比传统商业科研管理系统的授权费用与定制开发成本,系统实现可显著降低初始投资与后期维护支出;同时,模块化设计与微服务架构使得功能扩展与版本迭代可在不影响整体运行的前提下完成,进一步降低了升级成本。若将系统推广至多所高校或科研机构,可通过共享资源与统一维护实现规模经济,进一步提升投入产出比。社会可行性方面,科研项目管理是高校与科研院所日常运营的核心环节,系统的落地能够提升项目申报与审批效率、降低人力成本、提高经费使用透明度,从而增强科研管理的公平性与公开性。随着国家对科研经费管理规范化、信息化要求的不断提升,系统能够满足政府监管部门对数据可追溯性与合规性的需求,促进科研治理现代化。社会层面还需考虑用户培训与文化适应问题,科研人员习惯于纸质材料与传统流程,系统的推广需要配套培训、使用手册以及技术支持,以降低抵触情绪并提升系统接受度。技术可行性方面,所选技术栈在国内外均已得到广泛应用与成熟验证,SpringBoot与Vue均拥有活跃的社区生态与丰富的插件生态,能够满足项目的业务需求;微服务架构与容器化部署(如Docker、Kubernetes)提供了弹性伸缩、故障隔离与持续集成的技术保障;工作流引擎Camunda BPMN在科研项目审批流程建模中已被多所机构验证,能够实现动态审批路径与自动化任务分配;数据安全方面,可通过JWT鉴权、OAuth2.0授权、HTTPS传输以及数据库加密等手段满足信息安全要求。技术层面仍需解决的挑战包括多租户数据隔离、权限细粒度控制的实现、跨系统数据同步与接口兼容性,以及大规模并发访问下的性能调优。通过引入缓存层、消息队列与异步任务处理,可有效缓解性能瓶颈。综上所述,经济成本可控、社会效益显著且技术实现具备成熟基础,系统在三维度上均具备较高的可行性,为后续研发与推广奠定了坚实基础。
八、功能分析
系统功能模块设计基于科研项目全生命周期管理需求,逻辑上分为七大核心模块,每个模块内部又细化为若干子功能,以实现从立项申报到成果归档的完整信息化流程。首先,用户管理模块负责系统中所有角色的身份认证与权限授权,包括项目负责人、评审专家、财务审核员及系统管理员等;该模块实现基于RBAC的细粒度权限控制、密码加盐存储以及多因素身份验证,并提供用户信息维护、角色分配与日志审计功能。其次,项目申报模块为科研人员提供在线填写项目基本信息、预算明细与附件上传的表单界面,支持动态表单字段配置与版本管理;同时,该模块通过RESTful接口将申报数据推送至工作流引擎,以触发后续审批流程。第三,工作流与审批模块采用Camunda BPMN实现多轮评审与审批路径的可视化设计,支持评审意见收集、加权评分、冲突检测与自动化任务分配;该模块还提供评审进度跟踪、通知推送以及最终审批结果归档。第四,财务管理模块涵盖预算编制、经费支付申请、报销凭证上传与账务核对功能;通过Spring Batch定时任务完成凭证批量校验,并与项目进度模块联动,确保经费使用与项目执行同步。第五,进度跟踪模块利用ECharts展示甘特图与里程碑进度,支持任务分配、状态更新、风险预警与变更管理;该模块提供实时进度查询、延期预警推送以及进度报告生成。第六,成果归档与开放获取模块支持多种文件格式存储,采用Dublin Core元数据标准实现检索,并通过权限控制实现成果的内部共享或对外开放;该模块还提供成果发布公告、下载统计与版权信息管理。最后,数据统计与报表模块为科研管理者提供可定制化仪表盘,支持 KPI 指标监控、财务报表生成、项目绩效评估以及系统使用情况分析;该模块通过ELK日志堆栈进行性能监控,并提供导出功能以满足合规报告需求。上述七大模块通过前后端分离的微服务架构相互协作,形成完整、可扩展且易维护的科研项目申报与管理系统。
九、数据库设计
表:t_user
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|用户编号|11|INT(11)|主键||
username|登录用户名|50|VARCHAR(50)|唯一||
password_hash|密码哈希值|255|VARCHAR(255)||加密存储密码,使用bcrypt或argon2算法||
email|电子邮件地址|100|VARCHAR(100)||可为空,支持邮件通知||
phone|联系电话|20|VARCHAR(20)||可为空,支持短信通知||
status|账号状态(0禁用1启用)|1|TINYINT(1)|默认1||
表:t_role
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|角色编号|11|INT(11)|主键||
name|角色名称(如项目负责人、评审专家、财务审核员、系统管理员)|50|VARCHAR(50)|唯一||
表:t_user_role
字段名(英文)|说明(中文)|大小|类型|主外键|备注
user_id|用户编号|11|INT(11)|外键→t_user.id||
role_id|角色编号|11|INT(11)|外键→t_role.id||
表:t_project
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|项目编号|11|INT(11)|主键||
title|项目名称|200|VARCHAR(200)||必填,唯一约束||
abstract|项目摘要(可多行)|5000|TEXT||可为空||
lead_id|项目负责人编号(用户)|11|INT(11)|外键→t_user.id||
start_date|项目开始日期|10|DATE||必填||
end_date|项目结束日期(预估)|10|DATE||可为空,实际结束后更新||
status|项目状态(0草稿1申报中2审批中3执行中4已完成)|1|TINYINT(1)|默认0||
表:t_project_budget
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|预算编号|11|INT(11)|主键||
project_id|所属项目编号|11|INT(11)|外键→t_project.id||
item_description|预算项目描述(如设备费、人工费等)|200|VARCHAR(200)||必填||
amount|金额(人民币)|10,2|DECIMAL(10,2)||必填||
表:t_project_expenditure
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|支出编号|11|INT(11)|主键||
project_id|所属项目编号|11|INT(11)|外键→t_project.id||
date|支出日期|10|DATE||必填||
description|支出说明(可多行)|5000|TEXT||可为空||
amount|金额(人民币)|10,2|DECIMAL(10,2)||必填||
表:t_task
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|任务编号|11|INT(11)|主键||
project_id|所属项目编号|11|INT(11)|外键→t_project.id||
name|任务名称(如实验设计、数据分析等)|200|VARCHAR(200)||必填||
description|任务描述(可多行)|5000|TEXT||可为空||
assignee_id|执行人编号(用户)|11|INT(11)|外键→t_user.id||
start_date|任务开始日期|10|DATE||可为空,实际开始后更新||
end_date|任务结束日期(预估)|10|DATE||可为空,实际结束后更新||
status|任务状态(0未开始1进行中2已完成3延期)|1|TINYINT(1)|默认0||
表:t_document
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|文件编号|11|INT(11)|主键||
project_id|所属项目编号(若与项目相关)|11|INT(11)|外键→t_project.id||
task_id|所属任务编号(若与任务相关)|11|INT(11)|外键→t_task.id||
filename|文件名(原始上传名)|255|VARCHAR(255)||必填||
file_path|服务器存储路径(相对或绝对)|500|VARCHAR(500)||必填||
upload_time|上传时间戳|19|DATETIME||默认CURRENT_TIMESTAMP||
表:t_evaluation
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|评审编号|11|INT(11)|主键||
project_id|所属项目编号|11|INT(11)|外键→t_project.id||
evaluator_id|评审专家编号(用户)|11|INT(11)|外键→t_user.id||
score|评分(0-100)|3|TINYINT(3)||必填||
comments|评审意见(可多行)|5000|TEXT||可为空||
eval_time|评审时间戳|19|DATETIME||默认CURRENT_TIMESTAMP||
表:t_approval_flow
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|流程编号|11|INT(11)|主键||
project_id|所属项目编号|11|INT(11)|外键→t_project.id||
step_order|步骤顺序(1、2、3…)|3|TINYINT(3)||必填||
role_required|所需角色(如评审专家、财务审核员等)|50|VARCHAR(50)||必填||
status|当前步骤状态(0待审批1已通过2已驳回)|1|TINYINT(1)|默认0||
表:t_permission
字段名(英文)|说明(中文)|大小|类型|主外键|备注
id|权限编号|11|INT(11)|主键||
role_id|所属角色编号(用户角色)|11|INT(11)|外键→t_role.id||
resource_name|资源名称(如项目管理、财务报表等)|100|VARCHAR(100)||必填||
action_type|操作类型(如查看、编辑、删除等)|50|VARCHAR(50)||必填||
十、建表语句
CREATE DATABASE IF NOT EXISTS research_mgmt CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE research_mgmt;
-- 1. 用户表
CREATE TABLE t_user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password_hash VARCHAR(255) NOT NULL,
email VARCHAR(100) DEFAULT NULL,
phone VARCHAR(20) DEFAULT NULL,
status TINYINT(1) NOT NULL DEFAULT 1 COMMENT '0禁用 1启用',
PRIMARY KEY (id),
UNIQUE KEY uq_user_username (username),
UNIQUE KEY uq_user_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
-- 2. 角色表
CREATE TABLE t_role (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uq_role_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色信息表';
-- 3. 用户角色关联表
CREATE TABLE t_user_role (
user_id INT(11) NOT NULL,
role_id INT(11) NOT NULL,
PRIMARY KEY (user_id, role_id),
KEY idx_user_role_user (user_id),
KEY idx_user_role_role (role_id),
CONSTRAINT fk_ur_user FOREIGN KEY (user_id) REFERENCES t_user(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_ur_role FOREIGN KEY (role_id) REFERENCES t_role(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
-- 4. 项目表
CREATE TABLE t_project (
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(200) NOT NULL,
abstract TEXT,
lead_id INT(11) NOT NULL,
start_date DATE NOT NULL,
end_date DATE DEFAULT NULL,
status TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0草稿 1申报中 2审批中 3执行中 4已完成',
PRIMARY KEY (id),
UNIQUE KEY uq_project_title (title),
KEY idx_project_lead (lead_id),
CONSTRAINT fk_project_lead FOREIGN KEY (lead_id) REFERENCES t_user(id) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='科研项目表';
-- 5. 项目预算表
CREATE TABLE t_project_budget (
id INT(11) NOT NULL AUTO_INCREMENT,
project_id INT(11) NOT NULL,
item_description VARCHAR(200) NOT NULL,
amount DECIMAL(10,2) NOT NULL,
PRIMARY KEY (id),
KEY idx_budget_project (project_id),
CONSTRAINT fk_budget_project FOREIGN KEY (project_id) REFERENCES t_project(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目预算明细表';
-- 6. 项目支出表
CREATE TABLE t_project_expenditure (
id INT(11) NOT NULL AUTO_INCREMENT,
project_id INT(11) NOT NULL,
date DATE NOT NULL,
description TEXT,
amount DECIMAL(10,2) NOT NULL,
PRIMARY KEY (id),
KEY idx_expenditure_project (project_id),
CONSTRAINT fk_expenditure_project FOREIGN KEY (project_id) REFERENCES t_project(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目支出记录表';
-- 7. 任务表
CREATE TABLE t_task (
id INT(11) NOT NULL AUTO_INCREMENT,
project_id INT(11) NOT NULL,
name VARCHAR(200) NOT NULL,
description TEXT,
assignee_id INT(11) DEFAULT NULL,
start_date DATE DEFAULT NULL,
end_date DATE DEFAULT NULL,
status TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0未开始 1进行中 2已完成 3延期',
PRIMARY KEY (id),
KEY idx_task_project (project_id),
KEY idx_task_assignee (assignee_id),
CONSTRAINT fk_task_project FOREIGN KEY (project_id) REFERENCES t_project(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_task_assignee FOREIGN KEY (assignee_id) REFERENCES t_user(id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目任务表';
-- 8. 文档表
CREATE TABLE t_document (
id INT(11) NOT NULL AUTO_INCREMENT,
project_id INT(11) DEFAULT NULL,
task_id INT(11) DEFAULT NULL,
filename VARCHAR(255) NOT NULL,
file_path VARCHAR(500) NOT NULL,
upload_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_doc_project (project_id),
KEY idx_doc_task (task_id),
CONSTRAINT fk_doc_project FOREIGN KEY (project_id) REFERENCES t_project(id) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT fk_doc_task FOREIGN KEY (task_id) REFERENCES t_task(id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目文档表';
-- 9. 评审表
CREATE TABLE t_evaluation (
id INT(11) NOT NULL AUTO_INCREMENT,
project_id INT(11) NOT NULL,
evaluator_id INT(11) NOT NULL,
score TINYINT(3) NOT NULL,
comments TEXT,
eval_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_eval_project (project_id),
KEY idx_eval_evaluator (evaluator_id),
CONSTRAINT fk_eval_project FOREIGN KEY (project_id) REFERENCES t_project(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_eval_evaluator FOREIGN KEY (evaluator_id) REFERENCES t_user(id) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目评审表';
-- 10. 审批流程表
CREATE TABLE t_approval_flow (
id INT(11) NOT NULL AUTO_INCREMENT,
project_id INT(11) NOT NULL,
step_order TINYINT(3) NOT NULL,
role_required VARCHAR(50) NOT NULL,
status TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0待审批 1已通过 2已驳回',
PRIMARY KEY (id),
KEY idx_flow_project (project_id),
CONSTRAINT fk_flow_project FOREIGN KEY (project_id) REFERENCES t_project(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目审批流程表';
-- 11. 权限表
CREATE TABLE t_permission (
id INT(11) NOT NULL AUTO_INCREMENT,
role_id INT(11) NOT NULL,
resource_name VARCHAR(100) NOT NULL,
action_type VARCHAR(50) NOT NULL,
PRIMARY KEY (id),
KEY idx_perm_role (role_id),
CONSTRAINT fk_perm_role FOREIGN KEY (role_id) REFERENCES t_role(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限表';
-- 索引补充(若需要进一步优化)
-- 例如对项目状态、任务状态等字段可加索引
CREATE INDEX idx_project_status ON t_project(status);
CREATE INDEX idx_task_status ON t_task(status);
CREATE INDEX idx_evaluation_score ON t_evaluation(score);
-- 结束语
-- 所有表均采用 InnoDB 引擎,支持外键约束与事务处理,满足数据库范式设计原则。
文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方👇🏻获取联系方式👇🏻