device.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /**
  2. * 设备管理相关API
  3. */
  4. import {
  5. http,
  6. Method
  7. } from '@/utils/request.js';
  8. import storage from "@/utils/storage.js";
  9. const request = http.request;
  10. const userInfo = storage.getUserInfo()
  11. /**
  12. * 获取设备概览数据
  13. * @param {string} fieldId - 地块ID,可选
  14. * @returns {Promise} 设备概览数据
  15. */
  16. export function fetchDeviceOverview(fieldId) {
  17. const params = {};
  18. console.log("userInfo请求:",userInfo);
  19. if (userInfo.userid) params.userId = userInfo.userid;
  20. if (fieldId) params.fieldId = fieldId;
  21. return http.request({
  22. url: 'uniapp/device/overview',
  23. method: Method.POST,
  24. needToken: true,
  25. data: params
  26. });
  27. }
  28. /**
  29. * 根据设备类型获取设备列表
  30. * @param {string} type - 设备类型(monitor-监控设备,sensor-采集设备,control-控制设备,irrigation-灌溉设备,tractor-农机设备)
  31. * @param {Object} params - 查询参数
  32. * @returns {Promise} 设备列表
  33. */
  34. export function fetchDevicesByType(params) {
  35. if (userInfo.userid) params.userId = userInfo.userid;
  36. return http.request({
  37. url: `uniapp/device/typeList`,
  38. method: Method.POST,
  39. needToken: true,
  40. data: params
  41. });
  42. }
  43. /**
  44. * 获取所有设备列表
  45. * @param {Object} params - 查询参数
  46. * @param {number} params.pageNum - 页码
  47. * @param {number} params.pageSize - 每页数量
  48. * @param {string} params.deviceName - 设备名称,可选
  49. * @param {string} params.deviceTypeId - 设备类型ID,可选
  50. * @param {number} params.status - 设备状态,可选
  51. * @returns {Promise} 设备列表
  52. */
  53. export function fetchDeviceList(params = {}) {
  54. return http.request({
  55. url: 'uniapp/device/list',
  56. method: Method.GET,
  57. needToken: true,
  58. params: params
  59. });
  60. }
  61. /**
  62. * 获取设备详情
  63. * @param {number} id - 设备ID
  64. * @returns {Promise} 设备详情
  65. */
  66. export function getDeviceDetail(id) {
  67. return http.request({
  68. url: `uniapp/device/${id}`,
  69. needToken: true,
  70. method: Method.GET
  71. });
  72. }
  73. /**
  74. * 获取设备采集器详情(包含气象/土壤数据和告警信息)
  75. * @param {number} id - 设备编码
  76. * @param {string} code - 设备编码,可选,用于判断设备类型
  77. * @returns {Promise} 设备详情数据
  78. */
  79. export function getDeviceCollectorDetail(deviceId, code) {
  80. return http.request({
  81. url: `uniapp/device/collector/detail/${deviceId}`,
  82. method: Method.GET,
  83. needToken: true,
  84. params: code ? { code } : {}
  85. });
  86. }
  87. /**
  88. * 添加设备
  89. * @param {Object} data - 设备信息
  90. * @returns {Promise} 添加结果
  91. */
  92. export function addDevice(data) {
  93. return http.request({
  94. url: 'uniapp/device',
  95. method: Method.POST,
  96. needToken: true,
  97. data: data
  98. });
  99. }
  100. /**
  101. * 更新设备信息
  102. * @param {Object} data - 设备信息
  103. * @returns {Promise} 更新结果
  104. */
  105. export function updateDevice(data) {
  106. return http.request({
  107. url: 'uniapp/device',
  108. method: Method.PUT,
  109. needToken: true,
  110. data: data
  111. });
  112. }
  113. /**
  114. * 删除设备
  115. * @param {number|number[]} ids - 设备ID或ID数组
  116. * @returns {Promise} 删除结果
  117. */
  118. export function deleteDevice(ids) {
  119. const idStr = Array.isArray(ids) ? ids.join(',') : ids;
  120. return http.request({
  121. url: `uniapp/device/${idStr}`,
  122. needToken: true,
  123. method: Method.DELETE
  124. });
  125. }
  126. /**
  127. * 根据用户ID获取关联的设备列表
  128. * @param {Object} params - 查询参数
  129. * @returns {Promise} 设备列表
  130. */
  131. export function fetchUserDeviceList(params = {}) {
  132. const user = storage.getUserInfo();
  133. return http.request({
  134. url: 'uniapp/device/user/list',
  135. method: Method.GET,
  136. params: {
  137. ...params,
  138. userId: user.userId
  139. },
  140. needToken: true,
  141. });
  142. }
  143. /**
  144. * 根据地块ID获取设备列表
  145. * @param {string} fieldId - 地块ID
  146. * @param {Object} params - 其他查询参数
  147. * @returns {Promise} 设备列表
  148. */
  149. export function fetchFieldDeviceList(fieldId, params = {}) {
  150. return http.request({
  151. url: 'uniapp/device/list',
  152. method: Method.GET,
  153. params: {
  154. ...params,
  155. fieldId: fieldId
  156. },
  157. needToken: true
  158. });
  159. }
  160. /**
  161. * 获取设备类型统计数据
  162. * @param {string} fieldId - 地块ID,可选
  163. * @returns {Promise} 设备类型统计数据
  164. */
  165. export function fetchDeviceTypeStats(fieldId) {
  166. const params = {};
  167. if (fieldId) params.fieldId = fieldId;
  168. return http.request({
  169. url: 'uniapp/device/stats/type',
  170. method: Method.GET,
  171. params: params,
  172. needToken: true,
  173. });
  174. }