4.8 KiB
4.8 KiB
车险报价与投保系统
基于 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