2026-03-10 16:19:47 +08:00

147 lines
3.4 KiB
TypeScript

import api from './index'
import type {
BorrowRecord,
PaginatedResponse,
ApiResponse,
EquipmentStatus,
StorageLocation
} from '@/types'
export interface ScanBorrowResult {
id: number
equipment_code: string
equipment_name: string
borrow_time: string
status: string
remaining_quantity?: number
equipment_status?: EquipmentStatus
storage_location_id?: number | null
storageLocation?: StorageLocation | null
}
// 借用设备
export const borrowEquipment = async (data: {
equipment_id?: number
equipment_code?: string
person_id: number
expected_return_time?: string
notes?: string
is_long_term?: boolean
}) => {
const response = await api.post<ApiResponse<BorrowRecord>>('/borrow', data)
return response.data
}
// 扫码出库
export const scanBorrow = async (data: {
equipment_code: string
person_id: number
expected_return_time?: string
notes?: string
is_long_term?: boolean
}) => {
const response = await api.post<ApiResponse<ScanBorrowResult>>('/borrow/scan', data)
return response.data
}
// 批量扫码出库
export const scanBorrowBatch = async (data: {
equipment_codes: string[]
person_id: number
expected_return_time?: string
notes?: string
is_long_term?: boolean
}) => {
const response = await api.post<ApiResponse<{
success_count: number
failed_count: number
results: Array<{
equipment_code: string
status: string
message: string
}>
}>>('/borrow/scan-batch', data)
return response.data
}
// 归还设备
export const returnEquipment = async (data: {
equipment_id: number
equipment_code: string
return_condition?: string
notes?: string
}) => {
const response = await api.post<ApiResponse<BorrowRecord>>('/return', data)
return response.data
}
// 扫码入库
export const scanReturn = async (data: {
equipment_code: string
return_condition?: string
notes?: string
person_id?: number
borrow_record_id?: number
}) => {
const response = await api.post<
ApiResponse<{
id: number
equipment_code: string
equipment_name: string
return_time: string
status: string
person_id?: number
}>
>('/return/scan', data)
return response.data
}
// 批量扫码入库
export const scanReturnBatch = async (data: {
equipment_codes: string[]
return_condition?: string
notes?: string
}) => {
const response = await api.post<ApiResponse<{
success_count: number
failed_count: number
results: Array<{
equipment_code: string
status: string
message: string
}>
}>>('/return/scan-batch', data)
return response.data
}
// 根据设备编码查询借用记录
export const getBorrowRecordByCode = async (equipmentCode: string) => {
const response = await api.get<ApiResponse<{
equipment_code: string
equipment_name: string
unit_price: number
equipment_value: number
storage_location_id?: number | null
storageLocation?: StorageLocation | null
borrow_records: BorrowRecord[]
can_return: boolean
message: string
}>>(`/borrow/scan/${equipmentCode}`)
return response.data
}
// 获取借用记录列表
export const getBorrowRecordList = async (params: {
page?: number
pageSize?: number
status?: string
person_name?: string
person_id?: number
}) => {
const response = await api.get<ApiResponse<PaginatedResponse<BorrowRecord>>>('/borrow/records', {
params
})
return response.data
}