device.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. /**
  2. * 设备管理相关API
  3. */
  4. import {
  5. http,
  6. Method
  7. } from '@/utils/request.js';
  8. import storage from "@/utils/storage.js";
  9. import api from "@/config/api.js";
  10. import config from "@/config/config.js";
  11. // const request = http.request;
  12. const userInfo = storage.getUserInfo()
  13. export function loginWvp() {
  14. return uni.request({
  15. url: `/wvp/api/user/login?username=${config.wvpUsername}&password=${config.wvpPassword}`,
  16. method: Method.GET,
  17. needToken: false,
  18. });
  19. }
  20. export async function getChannels(deviceId) {
  21. try {
  22. const loginRes = await loginWvp();
  23. console.log("WVP登录结果:", loginRes);
  24. if (loginRes.code === 0) {
  25. console.log("WVP登录成功");
  26. storage.setWvpAccessToken(loginRes.data.accessToken);
  27. const channelsRes = await uni.request({
  28. url: `/wvp/api/device/query/devices/${deviceId}/channels`,
  29. method: Method.GET,
  30. data: {
  31. page: 1,
  32. count: 10,
  33. online: true,
  34. },
  35. header: {
  36. 'Authorization': `access-token ${storage.getWvpAccessToken()}`,
  37. },
  38. });
  39. console.log("获取通道结果:", channelsRes);
  40. return channelsRes;
  41. } else {
  42. console.error("WVP登录失败", loginRes);
  43. throw new Error("WVP登录失败");
  44. }
  45. } catch (error) {
  46. console.error("获取通道失败", error);
  47. throw error;
  48. }
  49. }
  50. export async function playStart(deviceId, channelId) {
  51. return await uni.request({
  52. url: `/wvp/api/play/start/${deviceId}/${channelId}`,
  53. method: Method.GET,
  54. header: {
  55. 'Authorization': `access-token ${storage.getWvpAccessToken()}`,
  56. },
  57. })
  58. }
  59. export async function pause(deviceId, channelId) {
  60. return await uni.request({
  61. url: `/wvp/api/play/stop/{deviceId}/{channelId}`,
  62. method: Method.GET,
  63. header: {
  64. 'Authorization': `access-token ${storage.getWvpAccessToken()}`,
  65. },
  66. })
  67. }
  68. /**
  69. * 获取设备概览数据
  70. * @param {string} fieldId - 地块ID,可选
  71. * @returns {Promise} 设备概览数据
  72. */
  73. export function fetchDeviceOverview(fieldId) {
  74. const params = {};
  75. console.log("userInfo请求:",userInfo);
  76. if (userInfo.userid) params.userId = userInfo.userid;
  77. if (fieldId) params.fieldId = fieldId;
  78. return http.request({
  79. url: 'uniapp/device/overview',
  80. method: Method.POST,
  81. needToken: true,
  82. data: params
  83. });
  84. }
  85. /**
  86. * 根据设备类型获取设备列表
  87. * @param {string} type - 设备类型(monitor-监控设备,sensor-采集设备,control-控制设备,irrigation-灌溉设备,tractor-农机设备)
  88. * @param {Object} params - 查询参数
  89. * @returns {Promise} 设备列表
  90. */
  91. export function fetchDevicesByType(params) {
  92. if (userInfo.userid) params.userId = userInfo.userid;
  93. return http.request({
  94. url: `uniapp/device/typeList`,
  95. method: Method.POST,
  96. needToken: true,
  97. data: params
  98. });
  99. }
  100. /**
  101. * 获取所有设备列表
  102. * @param {Object} params - 查询参数
  103. * @param {number} params.pageNum - 页码
  104. * @param {number} params.pageSize - 每页数量
  105. * @param {string} params.deviceName - 设备名称,可选
  106. * @param {string} params.deviceTypeId - 设备类型ID,可选
  107. * @param {number} params.status - 设备状态,可选
  108. * @returns {Promise} 设备列表
  109. */
  110. export function fetchDeviceList(params = {}) {
  111. return http.request({
  112. url: 'uniapp/device/list',
  113. method: Method.GET,
  114. needToken: true,
  115. params: params
  116. });
  117. }
  118. /**
  119. * 获取设备详情
  120. * @param {number} id - 设备ID
  121. * @returns {Promise} 设备详情
  122. */
  123. export function getDeviceDetail(id) {
  124. return http.request({
  125. url: `uniapp/device/${id}`,
  126. needToken: true,
  127. method: Method.GET
  128. });
  129. }
  130. /**
  131. * 获取设备采集器详情(包含气象/土壤数据和告警信息)
  132. * @param {number} id - 设备编码
  133. * @param {string} code - 设备编码,可选,用于判断设备类型
  134. * @returns {Promise} 设备详情数据
  135. */
  136. export function getDeviceCollectorDetail(deviceId, code) {
  137. return http.request({
  138. url: `uniapp/device/collector/detail/${deviceId}`,
  139. method: Method.GET,
  140. needToken: true,
  141. params: code ? { code } : {}
  142. });
  143. }
  144. /**
  145. * 添加设备
  146. * @param {Object} data - 设备信息
  147. * @returns {Promise} 添加结果
  148. */
  149. export function addDevice(data) {
  150. return http.request({
  151. url: 'uniapp/device',
  152. method: Method.POST,
  153. needToken: true,
  154. data: data
  155. });
  156. }
  157. /**
  158. * 更新设备信息
  159. * @param {Object} data - 设备信息
  160. * @returns {Promise} 更新结果
  161. */
  162. export function updateDevice(data) {
  163. return http.request({
  164. url: 'uniapp/device',
  165. method: Method.PUT,
  166. needToken: true,
  167. data: data
  168. });
  169. }
  170. /**
  171. * 删除设备
  172. * @param {number|number[]} ids - 设备ID或ID数组
  173. * @returns {Promise} 删除结果
  174. */
  175. export function deleteDevice(ids) {
  176. const idStr = Array.isArray(ids) ? ids.join(',') : ids;
  177. return http.request({
  178. url: `uniapp/device/${idStr}`,
  179. needToken: true,
  180. method: Method.DELETE
  181. });
  182. }
  183. /**
  184. * 根据用户ID获取关联的设备列表
  185. * @param {Object} params - 查询参数
  186. * @returns {Promise} 设备列表
  187. */
  188. export function fetchUserDeviceList(params = {}) {
  189. const user = storage.getUserInfo();
  190. return http.request({
  191. url: 'uniapp/device/user/list',
  192. method: Method.GET,
  193. params: {
  194. ...params,
  195. userId: user.userId
  196. },
  197. needToken: true,
  198. });
  199. }
  200. /**
  201. * 根据地块ID获取设备列表
  202. * @param {string} fieldId - 地块ID
  203. * @param {Object} params - 其他查询参数
  204. * @returns {Promise} 设备列表
  205. */
  206. export function fetchFieldDeviceList(fieldId, params = {}) {
  207. return http.request({
  208. url: 'uniapp/device/list',
  209. method: Method.GET,
  210. params: {
  211. ...params,
  212. fieldId: fieldId
  213. },
  214. needToken: true
  215. });
  216. }
  217. /**
  218. * 获取设备类型统计数据
  219. * @param {string} fieldId - 地块ID,可选
  220. * @returns {Promise} 设备类型统计数据
  221. */
  222. export function fetchDeviceTypeStats(fieldId) {
  223. const params = {};
  224. if (fieldId) params.fieldId = fieldId;
  225. return http.request({
  226. url: 'uniapp/device/stats/type',
  227. method: Method.GET,
  228. params: params,
  229. needToken: true,
  230. });
  231. }