index.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import request, { IWorkspaceResponse, IListWorkspaceResponse } from '/@/api/http/request'
  2. import { DeviceValue, DOMAIN } from '/@/types/device'
  3. import { DeviceLogUploadStatusEnum } from '/@/types/device-log'
  4. import { getWorkspaceId } from '/@/utils/index';
  5. const MNG_API_PREFIX = '/manage/api/v1'
  6. export interface GetDeviceUploadLogListParams {
  7. device_sn: string,
  8. page: number,
  9. page_size: number,
  10. begin_time?: number, // 开始时间
  11. end_time?: number, // 结束时间
  12. status?: DeviceLogUploadStatusEnum, // 日志上传状态
  13. logs_information?: string // 搜索内容
  14. }
  15. export interface BriefDeviceInfo {
  16. sn: string,
  17. device_model: DeviceValue,
  18. device_callsign: string
  19. }
  20. export interface DeviceLogProgressInfo {
  21. device_sn: string,
  22. device_model_domain: DOMAIN,
  23. progress: number, // 进度
  24. result: number, // 上传结果
  25. upload_rate: number, // 上传速率
  26. status: DeviceLogUploadStatusEnum // 上传状态
  27. }
  28. export interface DeviceLogItem {
  29. boot_index: number, // 日志id
  30. start_time: number, // 日志开始时间
  31. end_time: number, // 日志结束时间
  32. size: number // 日志大小
  33. }
  34. export interface DeviceLogFileInfo {
  35. device_sn: string,
  36. module: DOMAIN,
  37. result: number,
  38. object_key: string,
  39. file_id: string,
  40. list: DeviceLogItem[]
  41. }
  42. export interface DeviceLogFileListInfo {
  43. files: DeviceLogFileInfo[]
  44. }
  45. export interface GetDeviceUploadLogListRsp {
  46. logs_id: string, // 记录id
  47. happen_time: string, // 发生时间
  48. user_name: string, // 用户
  49. logs_information: string, // 异常描述
  50. create_time: string, // 上传时间
  51. status: DeviceLogUploadStatusEnum, // 日志上传状态
  52. device_topo: { // 设备topo
  53. hosts: BriefDeviceInfo[],
  54. parents: BriefDeviceInfo[]
  55. },
  56. logs_progress: DeviceLogProgressInfo[], // 日志上传进度
  57. device_logs: DeviceLogFileListInfo // 设备日志
  58. }
  59. /**
  60. * 获取设备上传日志列表信息
  61. * @param params
  62. * @returns
  63. */
  64. export async function getDeviceUploadLogList(params: GetDeviceUploadLogListParams): Promise<IListWorkspaceResponse<GetDeviceUploadLogListRsp>> {
  65. const resp = await request.get(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${params.device_sn}/logs-uploaded`, {
  66. params: params
  67. })
  68. return resp.data
  69. }
  70. export interface GetDeviceLogListParams {
  71. device_sn: string,
  72. domain: DOMAIN[]
  73. }
  74. /**
  75. * 获取设备日志列表信息
  76. * @param params
  77. * @returns
  78. */
  79. export async function getDeviceLogList(params: GetDeviceLogListParams): Promise<IWorkspaceResponse<DeviceLogFileListInfo>> {
  80. const domain = params.domain ? params.domain : []
  81. const resp = await request.get(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${params.device_sn}/logs`, {
  82. params: {
  83. domain_list: domain.join(',')
  84. }
  85. })
  86. return resp.data
  87. }
  88. export interface UploadDeviceLogBody {
  89. device_sn: string
  90. happen_time: string // 发生时间
  91. logs_information: string // 异常描述
  92. files: {
  93. list: DeviceLogItem[],
  94. device_sn: string,
  95. module: DOMAIN
  96. }[]
  97. }
  98. /**
  99. * 上传设备日志
  100. * @param body
  101. * @returns
  102. */
  103. export async function postDeviceUpgrade(body: UploadDeviceLogBody): Promise<IWorkspaceResponse<{}>> {
  104. const resp = await request.post(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${body.device_sn}/logs`, body)
  105. return resp.data
  106. }
  107. export type DeviceLogUploadAction = 'cancel'
  108. export interface CancelDeviceLogUploadBody {
  109. device_sn: string
  110. status: DeviceLogUploadAction
  111. module_list: DOMAIN[]
  112. }
  113. // 取消上传
  114. export async function cancelDeviceLogUpload(body: CancelDeviceLogUploadBody): Promise<IWorkspaceResponse<{}>> {
  115. const url = `${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${body.device_sn}/logs`
  116. const result = await request.delete(url, {
  117. data: body
  118. })
  119. return result.data
  120. }
  121. export interface DeleteDeviceLogUploadBody {
  122. device_sn: string
  123. logs_id: string
  124. }
  125. // 取消上传
  126. export async function deleteDeviceLogUpload(body: DeleteDeviceLogUploadBody): Promise<IWorkspaceResponse<{}>> {
  127. const url = `${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${body.device_sn}/logs/${body.logs_id}`
  128. const result = await request.delete(url, {
  129. data: body
  130. })
  131. return result.data
  132. }
  133. export interface GetUploadDeviceLogUrlParams {
  134. logs_id: string,
  135. file_id: string,
  136. }
  137. // export interface GetUploadDeviceLogRsp{
  138. // url: string
  139. // }
  140. /**
  141. * 获取设备上传日志url
  142. * @param params
  143. * @returns
  144. */
  145. export async function getUploadDeviceLogUrl(params: GetUploadDeviceLogUrlParams): Promise<IWorkspaceResponse<string>> {
  146. const resp = await request.get(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/logs/${params.logs_id}/url/${params.file_id}`)
  147. return resp.data
  148. }