SpringBoot+Vue构建凭证档案管理系统全流程实操

一、开发环境准备

在开始编码前,请确保本地已安装以下基础环境,版本过低可能导致依赖冲突。

1. JDK 17 安装与验证

后端采用 Spring Boot 3.x 版本,强制要求 JDK 17 及以上。打开终端输入以下命令验证版本:

java -version

若未安装或版本过低,请前往 Oracle 官网或 OpenJDK 下载对应安装包并配置环境变量。

2. Node.js 18 安装与验证

前端构建工具 Vite 需要 Node.js 版本不低于 18。终端输入以下命令验证:

node -v
npm -v

3. MySQL 8.0 数据库准备

确保 MySQL 服务已启动,并拥有 root 权限或具备建表权限的账号。终端输入:

mysql -u root -p

二、数据库设计与初始化

凭证档案管理系统的核心在于对电子凭证的元数据管理。我们将创建一个名为 voucher_db 的数据库,并建立 voucher_archive 主表。

请在 MySQL 客户端或 Navicat 等工具中执行以下 SQL 脚本:

-- 创建数据库
CREATE DATABASE IF NOT EXISTS voucher_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE voucher_db;
-- 创建凭证档案表
CREATE TABLE IF NOT EXISTS voucher_archive (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
voucher_no VARCHAR(64) NOT NULL COMMENT '凭证编号',
title VARCHAR(255) NOT NULL COMMENT '凭证标题',
category VARCHAR(50) DEFAULT 'general' COMMENT '凭证分类',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '归档时间',
file_url VARCHAR(500) COMMENT '文件存储路径',
status TINYINT DEFAULT 1 COMMENT '状态:1-正常,0-删除',
INDEX idx_voucher_no (voucher_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='凭证档案表';
-- 插入测试数据
INSERT INTO voucher_archive (voucher_no, title, category, file_url) VALUES
('PZ20231001001', '2023年度Q1财务报销凭证', 'finance', '/uploads/2023/10/pz001.pdf'),
('PZ20231001002', '员工入职合同档案', 'hr', '/uploads/2023/10/contract_001.pdf');

三、后端服务搭建

后端使用 Spring Boot 3.1.5 结合 MyBatis Plus 快速构建数据持久层。

1. 项目初始化

访问 Spring Initializr 页面 https://start.spring.io/,选择以下配置生成项目并下载解压:

  • Project: Maven
  • Language: Java
  • Spring Boot: 3.1.5
  • Dependencies: Spring Web, MySQL Driver, Lombok

在项目根目录的 pom.xml 中手动添加 MyBatis Plus 依赖(版本 3.5.3.2):


com.baomidou
mybatis-plus-boot-starter
3.5.3.2

2. 配置数据源

打开 src/main/resources/application.yml,删除默认内容,替换为以下完整配置:

server
port: 8080
spring:
application:
name: voucher-system
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/voucher_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: 123456  请替换为本地数据库密码
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: status
logic-delete-value: 0
logic-not-delete-value: 1

3. 编写实体类

src/main/java/com/example/vouchersystem/entity 目录下创建 VoucherArchive.java

package com.example.vouchersystem.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class VoucherArchive {
@TableId(type = IdType.AUTO)
private Long id;
private String voucherNo;
private String title;
private String category;
private LocalDateTime createTime;
private String fileUrl;
@TableLogic
private Integer status;
}

4. 编写持久层与业务层

Mapper 接口继承 BaseMapper 即可获得基础 CRUD 能力。创建 src/main/java/com/example/vouchersystem/mapper/VoucherArchiveMapper.java

package com.example.vouchersystem.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.vouchersystem.entity.VoucherArchive;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VoucherArchiveMapper extends BaseMapper {
}

Service 层同理。创建 src/main/java/com/example/vouchersystem/service/VoucherArchiveService.java

SpringBoot+Vue构建凭证档案管理系统全流程实操

package com.example.vouchersystem.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.vouchersystem.entity.VoucherArchive;
public interface VoucherArchiveService extends IService {
}

创建实现类 src/main/java/com/example/vouchersystem/service/impl/VoucherArchiveServiceImpl.java

package com.example.vouchersystem.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.vouchersystem.entity.VoucherArchive;
import com.example.vouchersystem.mapper.VoucherArchiveMapper;
import com.example.vouchersystem.service.VoucherArchiveService;
import org.springframework.stereotype.Service;
@Service
public class VoucherArchiveServiceImpl extends ServiceImpl implements VoucherArchiveService {
// 暂无特殊业务逻辑,使用父类默认方法即可
}

5. 编写控制层

创建 src/main/java/com/example/vouchersystem/controller/VoucherArchiveController.java,实现列表查询和新增接口,并配置跨域支持:

package com.example.vouchersystem.controller;
import com.example.vouchersystem.entity.VoucherArchive;
import com.example.vouchersystem.service.VoucherArchiveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.List;
@RestController
@RequestMapping("/api/vouchers")
public class VoucherArchiveController {
@Autowired
private VoucherArchiveService voucherArchiveService;
// 跨域配置 Bean,解决前后端分离开发时的跨域问题
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("");
config.setAllowCredentials(true);
config.addAllowedMethod("");
config.addAllowedHeader("");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/", config);
return new CorsFilter(source);
}
@GetMapping
public List list() {
return voucherArchiveService.list();
}
@PostMapping
public boolean save(@RequestBody VoucherArchive voucher) {
return voucherArchiveService.save(voucher);
}
}

四、前端页面搭建

前端使用 Vue 3 配合 Element Plus 组件库实现管理界面。

1. 初始化 Vue 项目

在终端执行以下命令创建项目:

npm create vue@latest voucher-admin
cd voucher-admin
npm install

安装 Element Plus 和 Axios:

npm install element-plus axios

2. 配置入口文件

修改 src/main.js,引入 Element Plus 样式和组件:

import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
const app = createApp(App)
app.use(ElementPlus)
app.mount('app')

3. 封装 API 请求

src 目录下创建 utils/request.js

import axios from 'axios'
const request = axios.create({
baseURL: 'http://localhost:8080',
timeout: 5000
})
export default request

创建 src/api/voucher.js

import request from '../utils/request'
export const getVoucherList = () => {
return request({
url: '/api/vouchers',
method: 'get'
})
}
export const addVoucher = (data) => {
return request({
url: '/api/vouchers',
method: 'post',
data
})
}

4. 编写主页面组件

修改 src/App.vue,编写完整的列表展示和新增功能代码:


五、运行与测试

1. 启动后端服务

在 IDE 中运行 VoucherSystemApplication 主类,或在项目根目录执行:

mvn spring-boot:run

看到控制台输出 Started VoucherSystemApplication 表示后端启动成功。

2. 启动前端服务

在终端进入前端项目目录 voucher-admin,执行:

npm run dev

终端会输出访问地址,通常是 http://localhost:5173。使用浏览器访问该地址,即可看到凭证档案管理系统的主界面。点击“新增凭证”输入数据,确认后表格将实时刷新显示最新数据。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统