财务凭证录入是企业财务工作的核心环节之一,传统模式下依赖人工手动记账、Excel零散管理,不仅效率低下,还容易出现数据错误、查找困难、批量处理繁琐等问题。为了解决这些痛点,我基于前后端分离架构,开发了一套财务凭证录入系统,兼顾易用性、实用性和扩展性,既能满足中小企业日常财务需求,也可作为教学演示或个人记账工具,今天就把完整方案分享给大家。
一、系统核心定位与适用场景
这套财务凭证录入系统,主打「轻量化、易部署、高实用」,核心是为财务人员提供一站式凭证管理能力,无需复杂配置即可快速上手。
1、定位
- 面向财务人员:简化操作流程,降低使用门槛,表单化录入替代手动记账
- 前后端分离:前端专注交互体验,后端专注数据处理,便于后续迭代优化
- 全场景覆盖:支持单条录入、批量导入、精准查询、报表导出,覆盖凭证全生命周期管理
2、适用场景
- 中小企业财务部门:日常凭证录入、归档、统计,替代传统Excel管理模式
- 个人/小微企业:简易记账管理,满足基础财务数据留存需求
二、核心功能:覆盖凭证管理全流程
系统围绕「录入-管理-导入」三大核心场景设计,每个功能都贴合实际财务工作习惯:
1. 凭证录入:高效又精准
- 表单化录入:标准化表单覆盖凭证号、日期、摘要、借贷科目、金额等所有核心要素,无需记忆格式
- 智能辅助:借贷科目支持下拉选择,可自定义添加常用科目,减少手动输入错误
- 实时验证:录入时自动校验数据格式(如日期、金额格式),借贷平衡校验,从源头避免数据错误
- 快捷操作:支持键盘快捷键切换表单字段,批量录入时大幅提升效率
2. 凭证管理:清晰易操作
- 列表展示:表格化呈现所有凭证信息,字段对齐、样式简洁,一眼看清核心数据
- 分页浏览:支持自定义每页显示条数,应对海量凭证数据也不卡顿
- 批量处理:支持批量删除选中凭证、批量导出数据,满足批量管理需求
3. 数据导入:告别重复劳动
- Excel批量导入:支持标准Excel格式上传,一键导入数百条凭证,替代手动逐条录入
- 模板支持:提供官方导入模板,明确列名和数据格式,避免格式不匹配问题
- 导入校验:上传后自动检测数据合法性,异常数据标注错误原因,支持修正后重新导入
三、技术选型:轻量高效,易上手易维护
考虑到系统轻量化和部署便捷性,技术栈选择兼顾「开发效率」和「运行性能」,前后端分离架构也便于团队协作或个人迭代:
前端技术栈
- Vue 3:渐进式前端框架,组合式API便于逻辑复用,响应式设计适配不同屏幕
- Element Plus:企业级UI组件库,表单、表格、弹窗等组件开箱即用,快速搭建专业界面
- Axios:封装HTTP请求,统一处理前后端数据交互,支持请求拦截、异常捕获
- Vite:新一代构建工具,启动速度快、热更新高效,开发体验远超传统Webpack
后端技术栈
- Python:轻量级Web框架,代码简洁、配置简单,快速搭建RESTful API
- PyMySQL:Python连接MySQL的核心库,稳定可靠,支持数据库增删改查操作
- Flask-CORS:解决前后端跨域问题,无需复杂配置即可实现跨域请求
- Pandas:专业数据处理库,高效解析Excel文件,处理批量导入导出逻辑
数据库选型
- MySQL8.0+:成熟稳定的关系型数据库,支持事务、索引优化,满足财务数据存储需求
- 编码格式:采用utf8MB4,完整支持中文、特殊字符,避免乱码问题
- 索引优化:针对高频查询场景(凭证号、日期)建立索引,提升数据查询速度
四、项目结构:清晰规范,便于维护
项目采用前后端分离的目录结构,代码分层清晰,新手也能快速理解各模块职责:
财务凭证录入系统/
├── backend/ # 后端服务核心目录
│ ├── app.py # Flask应用入口,配置路由、数据库连接
│ ├── requirements.txt # 基础Python依赖清单
│ ├── requirements-full.txt # 完整Python依赖清单(含可选库)
│ └── uploads/ # Excel文件上传临时存储目录
├── frontend/ # 前端应用核心目录
│ ├── package.json # Node.js依赖配置
│ ├── vite.config.js # Vite构建&跨域代理配置
│ ├── index.html # 前端入口页面
│ └── src/ # 前端源代码
│ ├── main.js # Vue应用入口
│ ├── App.vue # 根组件
│ ├── api/ # API接口封装(统一管理请求)
│ │ └── voucher.js # 凭证相关接口(增删改查、导入导出)
│ └── components/ # 业务组件
│ ├── VoucherManager.vue # 凭证管理主页面(列表+筛选)
│ ├── VoucherForm.vue # 凭证录入/编辑表单
│ └── ImportDialog.vue # Excel导入弹窗
├── database/ # 数据库相关
│ └── init.sql # 数据库初始化脚本(建表、索引)
├── install.bat # Windows一键安装脚本
├── start.bat # Windows一键启动脚本
├── DEPLOYMENT.md # 详细部署文档
└── excel-template-example.csv # Excel导入模板示例
五、快速部署:两种方案,新手也能搞定
系统支持「Windows一键部署」和「手动部署」两种方式,优先推荐一键部署,适合快速体验;手动部署适合自定义配置或非Windows环境。
环境要求
方案1:Windows一键部署(推荐)
- 双击运行
install.bat,自动安装前后端依赖 - 执行数据库初始化:打开命令行,运行
mysql -u root -p < database/init.sql(输入MySQL密码) - 访问前端地址:http://localhost:3000,即可进入系统
方案2:手动部署(灵活配置)
1. 后端部署
# 进入后端目录
cd backend
# 安装Python依赖
python -m pip install -r requirements.txt
# 启动后端服务(默认端口5000)
python app.py
2. 前端部署
# 进入前端目录
cd frontend
# 安装Node.js依赖
npm install
# 启动前端开发服务(默认端口3000)
npm run dev
部署完成后,前端访问 http://localhost:3000,后端API地址为 http://localhost:5000,前后端通过代理自动连接,无需额外配置。
六、核心设计:数据库与API接口
1. 数据库设计(核心表:vouchers)
凭证表是系统核心数据表,字段设计贴合财务规范,同时兼顾查询效率:
索引优化
idx_voucher_no:凭证号索引,提升按凭证号精准查询速度idx_voucher_date:日期索引,加速按日期范围筛选的效率
2. 核心API接口(RESTful风格)
后端提供完整的凭证管理接口,前端通过Axios调用,接口简洁规范,便于扩展:
获取凭证列表(分页)
GET /api/vouchers?page=1&page_size=10
创建凭证
POST /api/vouchers
Content-Type: application/json
{
"voucher_no": "PZ001",
"voucher_date": "2026-01-01",
"summary": "收到投资款",
"debit_account": "银行存款",
"credit_account": "实收资本",
"amount": 100000.00
}
编辑/删除凭证
# 编辑
PUT /api/vouchers/{id}
# 删除
DELETE /api/vouchers/{id}
Excel导入凭证
POST /api/vouchers/import
Content-Type: multipart/form-data
七、Excel导入规范:避免格式错误
批量导入是系统核心效率功能,需严格遵循模板格式,确保导入成功:
必选列(缺一不可)
导入注意事项
- 下载项目内
excel-template-example.csv 作为模板,直接填充数据
八、常见问题排查(实战经验总结)
1. npm安装依赖失败
如果自己的电脑使用npm install出现问题,可以试试用管理员启动,重新执行npm install
2. 数据库连接失败
- 确认MySQL服务已启动(Windows可在服务中查看「MySQL」状态)
- 检查
backend/app.py 中的数据库配置(host、user、password、database是否正确)
3. Excel导入失败
- 检查文件是否为标准Excel格式(.xlsx/.csv),避免使用加密文件
4. 前后端跨域问题
确保 backend/app.py 中已配置Flask-CORS,或前端 vite.config.js 代理配置正确:
// vite.config.js 代理配置
server: {
port: 3000,
proxy: {
'/api': {
target: 'http://localhost:5000',
changeOrigin: true
}
}
}
这套基于Vue3+Flask的财务凭证录入系统,从实际财务工作痛点出发,用前后端分离架构实现了「高效录入、便捷管理、批量处理」的核心需求,不仅代码结构清晰、易部署,还具备很强的扩展性,无论是中小企业自用,还是作为技术学习案例,都非常合适。
🔮 获取和交流
需要本文源码和数据集的同学,关注公众号 + 点赞 + 在看 + 转发(三连),评论区回复 666,即可获取!
为了能随时获取最新动态,大家可以动动小手将公众号添加到“星标⭐”哦,点赞 + 关注,用时不迷路!!!!
关注公众号:IT小本本 👇