/** * 设备管理相关API */ import { http, Method } from '@/utils/request.js'; import storage from "@/utils/storage.js"; import api from "@/config/api.js"; // const request = http.request; // const userInfo = storage.getUserInfo() /* wvp用户/密码(MD5) */ const wvpUsername = "admin" // 用户名 const wvpPassword = "af7b951b3a30e898e2684ffe8d20a961" // 密码(MD5加密) const wvpServer = "https://nxy.gbdfarm.com:9000/pro-uniapp/wvp"// WVP服务器地址 /** * 登录wvp获取token */ export function loginWvp() { return uni.request({ url: `${api.wvpServer}/api/user/login?username=${wvpUsername}&password=${wvpPassword}`, method: Method.GET, needToken: false, }); } /** * 获取通道列表 */ export async function getChannels(deviceId) { try { // 登录获取token const loginRes = await loginWvp(); console.log("WVP登录结果 code:", loginRes.code); console.log("WVP登录结果 msg:", loginRes.msg); console.log("WVP登录结果 data:", loginRes.data); // uni.request 返回格式: [err, res] if (!loginRes.data.data) { // 处理错误 console.error('登录失败', loginRes); throw new Error('登录失败'); } const response = loginRes.data; console.log("WVP登录响应数据:", response); if (response.code === 0) { console.log("WVP登录成功"); storage.setWvpAccessToken(response.data.accessToken); // 查询通道列表 const channelsRes = await uni.request({ url: `${api.wvpServer}/api/device/query/devices/${deviceId}/channels`, method: Method.GET, data: { page: 1, count: 10, online: true, }, header: { 'Access-Token': `${storage.getWvpAccessToken()}`, }, }); console.log("获取通道结果:", channelsRes); return channelsRes; } else { console.error("WVP登录失败,响应码:", response.code, "消息:", response.msg); throw new Error(`WVP登录失败: ${response.msg || '未知错误'}`); } } catch (error) { console.error("获取通道失败", error); throw error; } } /** * 开始点播 */ export async function playStart(deviceId, channelId) { return await uni.request({ url: `${api.wvpServer}/api/play/start/${deviceId}/${channelId}`, method: Method.GET, header: { 'Access-Token': `${storage.getWvpAccessToken()}`, }, }) } /** * 暂停点播 */ export async function pause(deviceId, channelId) { return await uni.request({ url: `${api.wvpServer}/api/play/stop/${deviceId}/${channelId}`, method: Method.GET, header: { 'Access-Token': `${storage.getWvpAccessToken()}`, }, }) } /** * 获取设备概览数据 * @param {string} fieldId - 地块ID,可选 * @returns {Promise} 设备概览数据 */ // export function fetchDeviceOverview(fieldId) { // const params = {}; // console.log("userInfo请求:",userInfo); // if (userInfo.userid) params.userId = userInfo.userid; // if (fieldId) params.fieldId = fieldId; // return http.request({ // url: '/base/device/overview', // method: Method.POST, // needToken: true, // data: params // }); // } /** * 根据设备类型获取设备列表 * @param {string} type - 设备类型(monitor-监控设备,sensor-采集设备,control-控制设备,irrigation-灌溉设备,tractor-农机设备) * @param {Object} params - 查询参数 * @returns {Promise} 设备列表 */ // export function fetchDevicesByType(params) { // if (userInfo.userid) params.userId = userInfo.userid; // return http.request({ // url: `/base/device/typeList`, // method: Method.POST, // needToken: true, // data: params // }); // } /** * 获取所有设备列表 * @param {Object} params - 查询参数 * @param {number} params.pageNum - 页码 * @param {number} params.pageSize - 每页数量 * @param {string} params.deviceName - 设备名称,可选 * @param {string} params.deviceTypeId - 设备类型ID,可选 * @param {number} params.status - 设备状态,可选 * @returns {Promise} 设备列表 */ export function fetchDeviceList(params = {}) { return http.request({ url: 'uniapp/device/list', method: Method.GET, needToken: true, params: params }); } /** * 获取设备详情 * @param {number} id - 设备ID * @returns {Promise} 设备详情 */ export function getDeviceDetail(id) { return http.request({ url: `uniapp/device/${id}`, needToken: true, method: Method.GET }); } /** * 获取设备采集器详情(包含气象/土壤数据和告警信息) * @param {number} id - 设备编码 * @param {string} code - 设备编码,可选,用于判断设备类型 * @returns {Promise} 设备详情数据 */ export function getDeviceCollectorDetail(deviceId, code) { return http.request({ url: `/base/device/collector/detail/${deviceId}`, method: Method.GET, needToken: true, params: code ? { code } : {} }); } /** * 添加设备 * @param {Object} data - 设备信息 * @returns {Promise} 添加结果 */ export function addDevice(data) { return http.request({ url: 'uniapp/device', method: Method.POST, needToken: true, data: data }); } /** * 更新设备信息 * @param {Object} data - 设备信息 * @returns {Promise} 更新结果 */ export function updateDevice(data) { return http.request({ url: 'uniapp/device', method: Method.PUT, needToken: true, data: data }); } /** * 删除设备 * @param {number|number[]} ids - 设备ID或ID数组 * @returns {Promise} 删除结果 */ export function deleteDevice(ids) { const idStr = Array.isArray(ids) ? ids.join(',') : ids; return http.request({ url: `uniapp/device/${idStr}`, needToken: true, method: Method.DELETE }); } /** * 根据用户ID获取关联的设备列表 * @param {Object} params - 查询参数 * @returns {Promise} 设备列表 */ export function fetchUserDeviceList(params = {}) { const user = storage.getUserInfo(); return http.request({ url: 'uniapp/device/user/list', method: Method.GET, params: { ...params, userId: user.userId }, needToken: true, }); } /** * 根据地块ID获取设备列表 * @param {string} fieldId - 地块ID * @param {Object} params - 其他查询参数 * @returns {Promise} 设备列表 */ export function fetchFieldDeviceList(fieldId, params = {}) { return http.request({ url: 'uniapp/device/list', method: Method.GET, params: { ...params, fieldId: fieldId }, needToken: true }); } /** * 获取设备类型统计数据 * @param {string} fieldId - 地块ID,可选 * @returns {Promise} 设备类型统计数据 */ export function fetchDeviceTypeStats(fieldId) { const params = {}; if (fieldId) params.fieldId = fieldId; return http.request({ url: 'uniapp/device/stats/type', method: Method.GET, params: params, needToken: true, }); }