Files
yunrui_asset/backend/swagger_docs.yaml
T
zhang1106 73cbe4ac1b feat: 添加操作日志、危险操作确认和业务关联功能
1. 新增操作日志记录功能,记录关键操作
2. 实现危险操作确认对话框,防止误删
3. 添加业务和库房管理模块
4. 支持设备标记为空闲状态
5. 完善API文档和健康检查
6. 优化前端删除操作的确认流程
7. 添加Swagger API文档支持
8. 实现设备与业务的关联功能
9. 改进设备模型,添加空闲相关字段
10. 优化用户、角色管理操作日志
2026-03-20 17:15:14 +08:00

2597 lines
60 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
openapi: 3.0.0
info:
title: IDC设备管理系统 API
version: 1.0.0
description: |
IDC设备管理系统后端API文档
## 认证说明
除健康检查接口外,所有接口都需要在请求头中携带JWT Token:
```
Authorization: Bearer <token>
```
## 通用响应格式
### 成功响应
```json
{
"success": true,
"data": {...},
"message": "操作成功"
}
```
### 错误响应
```json
{
"success": false,
"error": "错误类型",
"message": "详细描述"
}
```
## 分页参数
列表接口支持 `page` 和 `pageSize` 参数,默认 page=1, pageSize=10
servers:
- url: http://localhost:8000
description: 开发环境服务器
security:
- bearerAuth: []
tags:
- name: health
description: 健康检查
- name: auth
description: 认证接口
- name: rooms
description: 机房管理
- name: racks
description: 机柜管理
- name: devices
description: 设备管理
- name: deviceFields
description: 设备字段
- name: device-ports
description: 设备端口
- name: network-cards
description: 网卡管理
- name: cables
description: 线缆管理
- name: tickets
description: 工单管理
- name: ticket-categories
description: 工单分类
- name: ticket-fields
description: 工单字段
- name: consumables
description: 耗材管理
- name: consumable-categories
description: 耗材分类
- name: consumable-records
description: 耗材记录
- name: users
description: 用户管理
- name: roles
description: 角色管理
- name: system-settings
description: 系统设置
- name: background
description: 背景配置
- name: inventory
description: 盘点管理
- name: statistics
description: 统计接口
- name: operation-logs
description: 操作日志
- name: backup
description: 备份管理
paths:
/health:
get:
summary: 健康检查
description: 服务状态检查接口,无需认证
tags: [health]
responses:
'200':
description: 服务正常运行
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: ok
message:
type: string
example: IDC设备管理系统后端服务正常运行
/api-docs:
get:
summary: API文档页面
description: 返回Swagger UI界面
/api/auth/login:
post:
summary: 用户登录
tags: [auth]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [username, password]
properties:
username:
type: string
description: 用户名
password:
type: string
description: 密码
responses:
'200':
description: 登录成功
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
token:
type: string
user:
type: object
properties:
userId:
type: string
username:
type: string
email:
type: string
phone:
type: string
status:
type: string
roles:
type: array
items:
type: object
message:
type: string
/api/auth/register:
post:
summary: 用户注册
tags: [auth]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [username, password]
properties:
username:
type: string
description: 用户名(3-20字符)
password:
type: string
description: 密码(6-20字符)
email:
type: string
phone:
type: string
responses:
'201':
description: 注册成功
/api/auth/me:
get:
summary: 获取当前用户信息
tags: [auth]
responses:
'200':
description: 成功
/api/rooms:
get:
summary: 获取机房列表
tags: [rooms]
parameters:
- name: keyword
in: query
schema:
type: string
description: 按名称搜索
- name: status
in: query
schema:
type: string
description: 按状态筛选
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
roomId:
type: string
name:
type: string
location:
type: string
area:
type: number
status:
type: string
post:
summary: 创建机房
tags: [rooms]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [roomId, name]
properties:
roomId:
type: string
description: 机房ID(唯一标识)
name:
type: string
description: 机房名称
location:
type: string
description: 机房位置
area:
type: number
description: 面积(平方米)
description:
type: string
description: 描述
status:
type: string
enum: [active, inactive]
responses:
'201':
description: 创建成功
/api/rooms/{roomId}:
get:
summary: 获取单个机房
tags: [rooms]
parameters:
- name: roomId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新机房
tags: [rooms]
parameters:
- name: roomId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
location:
type: string
area:
type: number
description:
type: string
status:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除机房
tags: [rooms]
parameters:
- name: roomId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/racks:
get:
summary: 获取机柜列表
tags: [racks]
parameters:
- name: roomId
in: query
schema:
type: string
description: 按机房ID筛选
- name: status
in: query
schema:
type: string
description: 按状态筛选
- name: keyword
in: query
schema:
type: string
description: 按名称搜索
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
racks:
type: array
items:
type: object
total:
type: integer
page:
type: integer
pageSize:
type: integer
post:
summary: 创建机柜
tags: [racks]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name, roomId]
properties:
name:
type: string
description: 机柜名称
height:
type: integer
description: 高度(U),默认42
maxPower:
type: integer
description: 额定功率(W)
roomId:
type: string
description: 所属机房ID
status:
type: string
enum: [active, maintenance, inactive]
description:
type: string
responses:
'201':
description: 创建成功
/api/racks/{rackId}:
get:
summary: 获取单个机柜
tags: [racks]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新机柜
tags: [racks]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除机柜
tags: [racks]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/racks/import-template:
get:
summary: 获取机柜导入模板
tags: [racks]
responses:
'200':
description: 返回Excel模板文件
content:
application/octet-stream:
schema:
type: string
format: binary
/api/racks/export:
get:
summary: 导出机柜数据
tags: [racks]
responses:
'200':
description: 返回Excel文件
content:
application/octet-stream:
schema:
type: string
format: binary
/api/racks/import:
post:
summary: 导入机柜数据
tags: [racks]
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Excel格式的机柜数据文件
responses:
'200':
description: 导入成功
/api/devices:
get:
summary: 获取设备列表
tags: [devices]
parameters:
- name: rackId
in: query
schema:
type: string
- name: type
in: query
schema:
type: string
description: 设备类型
- name: status
in: query
schema:
type: string
- name: keyword
in: query
schema:
type: string
description: 关键词搜索(名称/IP/序列号)
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
devices:
type: array
items:
type: object
total:
type: integer
page:
type: integer
pageSize:
type: integer
post:
summary: 创建设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name, type, serialNumber]
properties:
name:
type: string
description: 设备名称
type:
type: string
enum: [server, switch, router, storage, other]
description: 设备类型
model:
type: string
serialNumber:
type: string
rackId:
type: string
position:
type: integer
description: 机柜位置(从1开始)
height:
type: integer
description: 占用高度(U)
powerConsumption:
type: integer
description: 功耗(W)
ipAddress:
type: string
status:
type: string
enum: [running, maintenance, offline, fault]
purchaseDate:
type: string
format: date
warrantyExpiry:
type: string
format: date
description:
type: string
customFields:
type: object
description: 自定义字段值
responses:
'201':
description: 创建成功
/api/devices/{deviceId}:
get:
summary: 获取单个设备
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新设备
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除设备
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/devices/batch-delete:
post:
summary: 批量删除设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds]
properties:
deviceIds:
type: array
items:
type: string
description: 设备ID列表
responses:
'200':
description: 删除成功
/api/devices/delete-all:
delete:
summary: 删除所有设备
tags: [devices]
responses:
'200':
description: 删除成功
/api/devices/batch-online:
put:
summary: 批量上线设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds]
properties:
deviceIds:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/devices/batch-offline:
put:
summary: 批量下线设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds]
properties:
deviceIds:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/devices/batch-status:
put:
summary: 批量变更设备状态
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds, status]
properties:
deviceIds:
type: array
items:
type: string
status:
type: string
enum: [running, maintenance, offline, fault]
responses:
'200':
description: 操作成功
/api/devices/batch-move:
put:
summary: 批量移动设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds, targetRackId]
properties:
deviceIds:
type: array
items:
type: string
targetRackId:
type: string
description: 目标机柜ID
startPosition:
type: integer
description: 起始位置
responses:
'200':
description: 操作成功
/api/devices/import-template:
get:
summary: 获取设备导入模板
tags: [devices]
responses:
'200':
description: 返回CSV模板文件
/api/devices/export:
get:
summary: 导出设备数据
tags: [devices]
parameters:
- name: deviceIds
in: query
schema:
type: string
description: 指定导出的设备ID(逗号分隔)
responses:
'200':
description: 返回CSV文件
/api/devices/import:
post:
summary: 导入设备数据
tags: [devices]
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
csvFile:
type: string
format: binary
description: CSV格式的设备数据文件
responses:
'200':
description: 导入成功
/api/devices/enhanced-export:
get:
summary: 增强导出设备数据
tags: [devices]
parameters:
- name: deviceIds
in: query
schema:
type: string
- name: format
in: query
schema:
type: string
enum: [csv, json]
default: csv
- name: fields
in: query
schema:
type: string
description: JSON格式的字段列表
- name: fieldLabels
in: query
schema:
type: string
description: JSON格式的字段标签映射
responses:
'200':
description: 导出成功
/api/devices/{deviceId}/tickets:
get:
summary: 获取设备的工单列表
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
/api/tickets:
get:
summary: 获取工单列表
tags: [tickets]
parameters:
- name: status
in: query
schema:
type: string
description: 按状态筛选(pending/in_progress/completed/closed
- name: priority
in: query
schema:
type: string
description: 按优先级筛选(urgent/high/medium/low
- name: faultCategory
in: query
schema:
type: string
- name: deviceId
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
post:
summary: 创建工单
tags: [tickets]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [faultCategory, description]
properties:
title:
type: string
faultCategory:
type: string
description: 故障分类
faultSubCategory:
type: string
priority:
type: string
enum: [urgent, high, medium, low]
description:
type: string
deviceId:
type: string
deviceName:
type: string
serialNumber:
type: string
expectedCompletionDate:
type: string
format: date
reporterId:
type: string
reporterName:
type: string
responses:
'201':
description: 创建成功
/api/cables:
get:
summary: 获取线缆列表
tags: [cables]
parameters:
- name: sourceDeviceId
in: query
schema:
type: string
description: 源设备ID
- name: targetDeviceId
in: query
schema:
type: string
description: 目标设备ID
- name: cableType
in: query
schema:
type: string
description: 线缆类型
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建线缆
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sourceDeviceId:
type: string
description: 源设备ID
sourcePortId:
type: string
description: 源端口ID
targetDeviceId:
type: string
description: 目标设备ID
targetPortId:
type: string
description: 目标端口ID
cableType:
type: string
description: 线缆类型
fiberType:
type: string
description: 光纤类型
length:
type: number
description: 长度(米)
status:
type: string
description:
type: string
responses:
'201':
description: 创建成功
/api/cables/{cableId}:
get:
summary: 获取单个线缆
tags: [cables]
parameters:
- name: cableId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新线缆
tags: [cables]
parameters:
- name: cableId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除线缆
tags: [cables]
parameters:
- name: cableId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/cables/batch:
post:
summary: 批量创建线缆
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
cables:
type: array
items:
type: object
responses:
'201':
description: 创建成功
/api/cables/batch-delete:
post:
summary: 批量删除线缆
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
cableIds:
type: array
items:
type: string
responses:
'200':
description: 删除成功
/api/cables/device/:deviceId:
get:
summary: 获取设备关联的线缆列表
tags: [cables]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/cables/rack/:rackId:
get:
summary: 获取机柜关联的线缆列表
tags: [cables]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/cables/check-conflict:
post:
summary: 检查线缆路径冲突
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sourceDeviceId:
type: string
sourcePortId:
type: string
targetDeviceId:
type: string
targetPortId:
type: string
responses:
'200':
description: 检查成功
/api/tickets/{ticketId}:
get:
summary: 获取单个工单
tags: [tickets]
parameters:
- name: ticketId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新工单
tags: [tickets]
parameters:
- name: ticketId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除工单
tags: [tickets]
parameters:
- name: ticketId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/consumables:
get:
summary: 获取耗材列表
tags: [consumables]
parameters:
- name: category
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: keyword
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
post:
summary: 创建耗材
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name, category]
properties:
name:
type: string
category:
type: string
specification:
type: string
unit:
type: string
currentStock:
type: integer
minStock:
type: integer
maxStock:
type: integer
unitPrice:
type: number
supplier:
type: string
location:
type: string
status:
type: string
description:
type: string
responses:
'201':
description: 创建成功
/api/consumables/{id}:
get:
summary: 获取单个耗材
tags: [consumables]
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新耗材
tags: [consumables]
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除耗材
tags: [consumables]
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/deviceFields:
get:
summary: 获取设备字段列表
tags: [deviceFields]
parameters:
- name: entityType
in: query
schema:
type: string
description: 实体类型(如device
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建设备字段
tags: [deviceFields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fieldName:
type: string
description: 字段名称
fieldLabel:
type: string
description: 字段标签
fieldType:
type: string
description: 字段类型
entityType:
type: string
description: 实体类型
required:
type: boolean
defaultValue:
type: string
options:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/deviceFields/{fieldId}:
get:
summary: 获取单个设备字段
tags: [deviceFields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新设备字段
tags: [deviceFields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除设备字段
tags: [deviceFields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/deviceFields/batch:
post:
summary: 批量创建设备字段
tags: [deviceFields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fields:
type: array
items:
type: object
responses:
'201':
description: 创建成功
/api/deviceFields/reorder:
put:
summary: 重新排序设备字段
tags: [deviceFields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fieldIds:
type: array
items:
type: string
responses:
'200':
description: 更新成功
/api/device-ports:
get:
summary: 获取设备端口列表
tags: [device-ports]
parameters:
- name: deviceId
in: query
schema:
type: string
- name: portType
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建设备端口
tags: [device-ports]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
deviceId:
type: string
portName:
type: string
portType:
type: string
portNumber:
type: integer
status:
type: string
responses:
'201':
description: 创建成功
/api/device-ports/{portId}:
get:
summary: 获取单个设备端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新设备端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除设备端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/device-ports/batch:
post:
summary: 批量创建设备端口
tags: [device-ports]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
ports:
type: array
items:
type: object
responses:
'201':
description: 创建成功
/api/device-ports/{portId}/connect:
post:
summary: 连接端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
cableId:
type: string
targetPortId:
type: string
responses:
'200':
description: 连接成功
/api/device-ports/{portId}/disconnect:
post:
summary: 断开端口连接
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 断开成功
/api/network-cards:
get:
summary: 获取网卡列表
tags: [network-cards]
parameters:
- name: deviceId
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建网卡
tags: [network-cards]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
deviceId:
type: string
cardName:
type: string
cardType:
type: string
portCount:
type: integer
speed:
type: string
responses:
'201':
description: 创建成功
/api/network-cards/{cardId}:
get:
summary: 获取单个网卡
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新网卡
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除网卡
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/network-cards/{cardId}/ports:
get:
summary: 获取网卡端口列表
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/ticket-categories:
get:
summary: 获取工单分类列表
tags: [ticket-categories]
responses:
'200':
description: 成功
post:
summary: 创建工单分类
tags: [ticket-categories]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
categoryName:
type: string
description:
type: string
priority:
type: string
responses:
'201':
description: 创建成功
/api/ticket-categories/{categoryId}:
get:
summary: 获取单个工单分类
tags: [ticket-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新工单分类
tags: [ticket-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除工单分类
tags: [ticket-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/ticket-fields:
get:
summary: 获取工单字段列表
tags: [ticket-fields]
responses:
'200':
description: 成功
post:
summary: 创建工单字段
tags: [ticket-fields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fieldName:
type: string
fieldLabel:
type: string
fieldType:
type: string
required:
type: boolean
options:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/ticket-fields/{fieldId}:
get:
summary: 获取单个工单字段
tags: [ticket-fields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新工单字段
tags: [ticket-fields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除工单字段
tags: [ticket-fields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/consumables/low-stock:
get:
summary: 获取低库存耗材
tags: [consumables]
responses:
'200':
description: 成功
/api/consumables/quick-inout:
post:
summary: 快速出入库
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [consumableId, type, quantity]
properties:
consumableId:
type: string
type:
type: string
enum: [in, out]
quantity:
type: integer
operator:
type: string
reason:
type: string
notes:
type: string
snList:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/consumables/inout:
post:
summary: 出入库操作
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [consumableId, type, quantity]
properties:
consumableId:
type: string
type:
type: string
enum: [in, out]
quantity:
type: integer
operator:
type: string
reason:
type: string
recipient:
type: string
notes:
type: string
snList:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/consumables/adjust:
post:
summary: 库存调整
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [consumableId, adjustType, quantity]
properties:
consumableId:
type: string
adjustType:
type: string
enum: [add, subtract, set]
quantity:
type: integer
operator:
type: string
reason:
type: string
notes:
type: string
responses:
'200':
description: 操作成功
/api/consumables/logs:
get:
summary: 获取耗材操作日志
tags: [consumables]
parameters:
- name: consumableId
in: query
schema:
type: string
- name: operationType
in: query
schema:
type: string
- name: startDate
in: query
schema:
type: string
format: date
- name: endDate
in: query
schema:
type: string
format: date
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 20
responses:
'200':
description: 成功
/api/inventory/plans:
get:
summary: 获取盘点计划列表
tags: [inventory]
parameters:
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建盘点计划
tags: [inventory]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
planName:
type: string
description:
type: string
startDate:
type: string
format: date
endDate:
type: string
format: date
responses:
'201':
description: 创建成功
/api/inventory/plans/{planId}:
get:
summary: 获取单个盘点计划
tags: [inventory]
parameters:
- name: planId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新盘点计划
tags: [inventory]
parameters:
- name: planId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除盘点计划
tags: [inventory]
parameters:
- name: planId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/inventory/tasks:
get:
summary: 获取盘点任务列表
tags: [inventory]
parameters:
- name: planId
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建盘点任务
tags: [inventory]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
planId:
type: string
assignedTo:
type: string
deviceIds:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/inventory/tasks/{taskId}:
get:
summary: 获取单个盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/inventory/tasks/{taskId}/records:
get:
summary: 获取盘点记录列表
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/inventory/records:
get:
summary: 获取盘点记录列表
tags: [inventory]
parameters:
- name: taskId
in: query
schema:
type: string
- name: planId
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
/api/inventory/start/{taskId}:
post:
summary: 开始盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 操作成功
/api/inventory/complete/{taskId}:
post:
summary: 完成盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 操作成功
/api/operation-logs:
get:
summary: 获取操作日志列表
tags: [operation-logs]
parameters:
- name: userId
in: query
schema:
type: string
- name: action
in: query
schema:
type: string
- name: module
in: query
schema:
type: string
- name: startDate
in: query
schema:
type: string
format: date
- name: endDate
in: query
schema:
type: string
format: date
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
/api/operation-logs/export:
get:
summary: 导出操作日志
tags: [operation-logs]
responses:
'200':
description: 导出成功
/api/backup:
get:
summary: 获取备份列表
tags: [backup]
responses:
'200':
description: 成功
post:
summary: 创建备份
tags: [backup]
responses:
'201':
description: 创建成功
/api/backup/{backupId}/restore:
post:
summary: 恢复备份
tags: [backup]
parameters:
- name: backupId
in: path
required: true
schema:
type: string
responses:
'200':
description: 恢复成功
/api/backup/{backupId}:
delete:
summary: 删除备份
tags: [backup]
parameters:
- name: backupId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/backup/settings:
get:
summary: 获取备份设置
tags: [backup]
responses:
'200':
description: 成功
put:
summary: 更新备份设置
tags: [backup]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
autoBackup:
type: boolean
backupPath:
type: string
retentionDays:
type: integer
responses:
'200':
description: 更新成功
/api/statistics:
get:
summary: 获取统计数据
tags: [statistics]
responses:
'200':
description: 成功
/api/statistics/overview:
get:
summary: 获取总览统计
tags: [statistics]
responses:
'200':
description: 成功
/api/statistics/trends:
get:
summary: 获取趋势数据
tags: [statistics]
parameters:
- name: period
in: query
schema:
type: string
enum: [day, week, month, year]
responses:
'200':
description: 成功
/api/statistics/export:
get:
summary: 导出统计数据
tags: [statistics]
responses:
'200':
description: 导出成功
/api/users:
get:
summary: 获取用户列表
tags: [users]
parameters:
- name: keyword
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建用户
tags: [users]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
type: string
password:
type: string
email:
type: string
phone:
type: string
roleId:
type: string
responses:
'201':
description: 创建成功
/api/users/{userId}:
get:
summary: 获取单个用户
tags: [users]
parameters:
- name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新用户
tags: [users]
parameters:
- name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除用户
tags: [users]
parameters:
- name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/roles:
get:
summary: 获取角色列表
tags: [roles]
responses:
'200':
description: 成功
post:
summary: 创建角色
tags: [roles]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
roleName:
type: string
description:
type: string
permissions:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/roles/{roleId}:
get:
summary: 获取单个角色
tags: [roles]
parameters:
- name: roleId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新角色
tags: [roles]
parameters:
- name: roleId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除角色
tags: [roles]
parameters:
- name: roleId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/system-settings:
get:
summary: 获取系统设置
tags: [system-settings]
responses:
'200':
description: 成功
put:
summary: 更新系统设置
tags: [system-settings]
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'200':
description: 更新成功
/api/background:
get:
summary: 获取背景配置
tags: [background]
responses:
'200':
description: 成功
post:
summary: 上传背景图片
tags: [background]
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'201':
description: 上传成功
delete:
summary: 删除背景图片
tags: [background]
responses:
'200':
description: 删除成功
/api/consumable-categories:
get:
summary: 获取耗材分类列表
tags: [consumable-categories]
responses:
'200':
description: 成功
post:
summary: 创建耗材分类
tags: [consumable-categories]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description:
type: string
responses:
'201':
description: 创建成功
/api/consumable-categories/{categoryId}:
put:
summary: 更新耗材分类
tags: [consumable-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除耗材分类
tags: [consumable-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/consumable-records:
get:
summary: 获取耗材记录列表
tags: [consumable-records]
parameters:
- name: consumableId
in: query
schema:
type: string
- name: operationType
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 输入 JWT token