147 lines
3.4 KiB
TypeScript
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
|
|
}
|
|
|