Files
2026-08-23 20:33:12 +08:00
..
2026-08-23 20:33:12 +08:00
2026-08-21 11:19:36 +08:00
2026-08-23 20:33:12 +08:00
2026-08-21 11:19:36 +08:00
2026-08-21 11:19:36 +08:00

车险报价与投保系统

基于 Vue 3 + Element Plus + Node.js + Express + TypeScript 的全栈车险报价与投保管理系统。

功能特性

车主管理(M1)

  • 车主信息的增删改查
  • 身份证号、手机号格式校验
  • 关键字搜索(姓名/身份证号/手机号)
  • 分页查询

车辆管理(M2)

  • 车辆信息的增删改查
  • 品牌车型联动选择
  • 购置价、座位数等字段校验
  • 关键字搜索(车牌号/品牌/车型)
  • 可选关联车主

报价管理(M3)

  • 报价创建(自动计算保费)
  • 交强险、车损险、三者险、盗抢险险种选择
  • NCD 系数自动计算
  • 报价审核流程(通过/驳回/完成/重新提交)
  • 状态流转历史记录
  • 报价删除

技术栈

后端

  • Node.js + Express 5
  • TypeScript
  • JSON 文件持久化存储(无需数据库配置)

前端

  • Vue 3 (Composition API)
  • Element Plus UI 组件库
  • Vue Router 4
  • Axios
  • Vite 构建工具

快速开始

环境要求

  • Node.js 18+
  • npm 9+

1. 启动后端服务

cd backend
npm install
npm run dev

后端服务运行在 http://localhost:3000。

2. 启动前端服务

cd frontend
npm install
npm run dev

前端服务运行在 http://localhost:5173。

3. 访问系统

浏览器访问 http://localhost:5173 即可使用系统。

保费计算规则

交强险

  • 6 座及以下:950 元
  • 6 座以上:1100 元

商业险

险种 计算方式
车损险 购置价 × 1.5%
第三者责任险 50万保额:800元;100万保额:1200元;200万保额:1800元
盗抢险 购置价 × 0.5%

NCD 系数(无赔款优待系数)

上年出险次数 NCD 系数
0 次 0.7
1 次 0.8
2 次 1.0
3 次 1.1
4 次及以上 1.2

总保费计算

总保费 = (交强险保费 + 商业险保费) × NCD 系数

报价状态流转

PENDING(待处理) → APPROVED(已通过) → COMPLETED(已完成)
PENDING(待处理) → REJECTED(已驳回) → PENDING(重新提交)

API 接口

车主管理 /api/customers

方法 路径 说明
GET /api/customers 获取车主列表(支持关键字、分页)
GET /api/customers/:id 获取车主详情
POST /api/customers 新增车主
PUT /api/customers/:id 编辑车主
DELETE /api/customers/:id 删除车主

车辆管理 /api/vehicles

方法 路径 说明
GET /api/vehicles 获取车辆列表(支持关键字、分页)
GET /api/vehicles/brands 获取品牌列表
GET /api/vehicles/brands/:brand/models 获取某品牌车型列表
GET /api/vehicles/:id 获取车辆详情
POST /api/vehicles 新增车辆
PUT /api/vehicles/:id 编辑车辆
DELETE /api/vehicles/:id 删除车辆

报价管理 /api/quotes

方法 路径 说明
GET /api/quotes 获取报价列表(支持状态、关键字、分页)
GET /api/quotes/:id 获取报价详情(含状态历史)
POST /api/quotes 创建报价(自动计算保费)
PUT /api/quotes/:id 编辑报价
DELETE /api/quotes/:id 删除报价
POST /api/quotes/:id/approve 通过报价
POST /api/quotes/:id/reject 驳回报价
POST /api/quotes/:id/complete 完成报价
POST /api/quotes/:id/resubmit 重新提交报价

项目结构

├── backend/                 # 后端工程
│   ├── src/
│   │   ├── types/           # TypeScript 类型定义
│   │   ├── data/            # 数据库连接与存储层(MySQL)
│   │   ├── services/        # 业务逻辑(保费计算)
│   │   ├── controllers/     # 控制器
│   │   └── routes/          # 路由定义
│   └── sql/                 # MySQL 初始化脚本(可选)
├── frontend/                # 前端工程
│   └── src/
│       ├── api/             # API 请求封装
│       ├── components/      # 通用组件
│       ├── views/           # 页面组件
│       │   ├── customer/    # 车主管理
│       │   ├── vehicle/     # 车辆管理
│       │   └── quote/       # 报价管理
│       ├── router/          # 路由配置
│       └── types/           # TypeScript 类型定义
└── deliveries/              # 4p12s 交付文档

数据库说明

系统使用 MySQL 进行数据持久化,无需手动执行初始化脚本——应用启动时会自动读取 backend/sql/init.sql,完成建库、建表和示例数据写入(幂等)。

连接配置位于 backend/.env:

DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=insurance_quote_db