monitor.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. import axios from 'axios';
  2. import { DeviceMapStats, DeviceMonitorData, DeviceStatus, DeviceTreeNode, DeviceTreeStats, MapViewDevice } from "../../share/monitorTypes.ts";
  3. interface DeviceMonitorDataResponse {
  4. data: DeviceMonitorData[];
  5. total: number;
  6. page: number;
  7. pageSize: number;
  8. }
  9. interface DeviceMonitorResponse {
  10. data: DeviceMonitorData;
  11. message?: string;
  12. }
  13. interface MonitorCreateResponse {
  14. data: DeviceMonitorData;
  15. message: string;
  16. }
  17. interface MonitorUpdateResponse {
  18. data: DeviceMonitorData;
  19. message: string;
  20. }
  21. interface MonitorDeleteResponse {
  22. message: string;
  23. }
  24. // 监控API接口定义
  25. export const MonitorAPI = {
  26. // 获取监控数据
  27. getMonitorData: async (params?: {
  28. page?: number,
  29. limit?: number,
  30. device_id?: number,
  31. device_type?: string,
  32. start_time?: string,
  33. end_time?: string
  34. }): Promise<DeviceMonitorDataResponse> => {
  35. try {
  36. const response = await axios.get(`/monitor/data`, { params });
  37. return response.data;
  38. } catch (error) {
  39. throw error;
  40. }
  41. },
  42. // 获取设备树数据
  43. getDeviceTree: async (params?: {
  44. status?: string,
  45. keyword?: string
  46. }): Promise<{ data: DeviceTreeNode[] }> => {
  47. try {
  48. const response = await axios.get(`/monitor/devices/tree`, { params });
  49. return response.data;
  50. } catch (error) {
  51. throw error;
  52. }
  53. },
  54. // 获取设备树统计数据
  55. getDeviceTreeStats: async (): Promise<{ data: DeviceTreeStats }> => {
  56. try {
  57. const response = await axios.get(`/monitor/devices/tree/statistics`);
  58. return response.data;
  59. } catch (error) {
  60. throw error;
  61. }
  62. },
  63. // 获取设备地图数据
  64. getDeviceMapData: async (params?: {
  65. type_code?: string,
  66. device_status?: DeviceStatus,
  67. keyword?: string,
  68. device_id?: number
  69. }): Promise<{ data: MapViewDevice[], stats: DeviceMapStats }> => {
  70. try {
  71. const response = await axios.get(`/monitor/devices/map`, { params });
  72. return response.data;
  73. } catch (error) {
  74. throw error;
  75. }
  76. },
  77. // 获取单个监控数据
  78. getMonitor: async (id: number): Promise<DeviceMonitorResponse> => {
  79. try {
  80. const response = await axios.get(`/monitor/data/${id}`);
  81. return response.data;
  82. } catch (error) {
  83. throw error;
  84. }
  85. },
  86. // 创建监控数据
  87. createMonitor: async (data: Partial<DeviceMonitorData>): Promise<MonitorCreateResponse> => {
  88. try {
  89. const response = await axios.post(`/monitor/data`, data);
  90. return response.data;
  91. } catch (error) {
  92. throw error;
  93. }
  94. },
  95. // 更新监控数据
  96. updateMonitor: async (id: number, data: Partial<DeviceMonitorData>): Promise<MonitorUpdateResponse> => {
  97. try {
  98. const response = await axios.put(`/monitor/data/${id}`, data);
  99. return response.data;
  100. } catch (error) {
  101. throw error;
  102. }
  103. },
  104. // 删除监控数据
  105. deleteMonitor: async (id: number): Promise<MonitorDeleteResponse> => {
  106. try {
  107. const response = await axios.delete(`/monitor/data/${id}`);
  108. return response.data;
  109. } catch (error) {
  110. throw error;
  111. }
  112. }
  113. };
  114. // 获取烟雾/水浸传感器状态
  115. export async function getDeviceStatus(params: {
  116. device_id: number;
  117. device_type: 'smoke' | 'water';
  118. }): Promise<{
  119. status: 0 | 1;
  120. timestamp: string;
  121. }> {
  122. try {
  123. const response = await axios.get(`/monitor/devices/smoke-water/status`, { params });
  124. return response.data;
  125. } catch (error) {
  126. throw error;
  127. }
  128. }
  129. // 获取烟雾/水浸传感器历史数据
  130. export async function getDeviceHistory(params: {
  131. device_id: number;
  132. device_type: 'smoke' | 'water';
  133. start_time: string;
  134. end_time: string;
  135. interval?: number;
  136. }): Promise<{
  137. data: Array<{
  138. timestamp: string;
  139. status: 0 | 1;
  140. }>;
  141. }> {
  142. try {
  143. const response = await axios.get(`/monitor/devices/smoke-water/history`, { params });
  144. return response.data;
  145. } catch (error) {
  146. throw error;
  147. }
  148. }
  149. // 获取最新温湿度数据
  150. export async function getLatestTemperatureHumidity(params: {
  151. device_id?: number;
  152. } = {}): Promise<{
  153. temperature: number;
  154. humidity: number;
  155. timestamp: string;
  156. }> {
  157. try {
  158. const response = await axios.get(`/monitor/data/latest-temperature-humidity`, { params });
  159. return response.data;
  160. } catch (error) {
  161. throw error;
  162. }
  163. }