import request from '@/utils/request/index.js' import { timeFormat } from '@/utils/utils.js' /** * 气象墒情模块 */ // 气象墒情数据请求父类函数 const weatherRequest = async (url, data) => { const res = await request.post(`api/api_gateway?method=weather.weather.${url}`, data); return res?.data; } // 气象站、墒情站设备列表 export const getWeatherDeviceList = (data) => weatherRequest('qxz_page', data); // 气象站、墒情站设备详情 export const getWeatherDeviceDetail = async (params) => { const { dat, conf } = await weatherRequest('qxz_status', params); let result = []; for (let key in dat) { if (dat[key] && key != 'uptime') { console.log(dat[key]); const datArray = dat[key].split('#'); const confArray = conf[key].split('#'); result.push({ el: key, // 通道 markId: datArray[1], // 标识 text: `${confArray[0]} ${confArray[1]}`, // 标题 value: `${datArray[0]}` }) } } return result; }; /** * 气象站、墒情站历史数据 * @param {*} params */ export const getWeatherHistory = async (params) => { let { data, nums, conf, rainFall } = await weatherRequest('qxz_detail', params); let headers = [{ text: '日期', value: 'date', }]; // 组装数据头部列表 for (let key in conf) { if (conf[key]) { let confArray = conf[key].split('#'); headers.push({ text: confArray[0] + confArray[1], value: key }); } } let list = []; //历史列表数据 数据项格式 {date:日期,e1:'',e2:'',e3:'',e4:'',} for (let i = 0; i < data.length; i++) { let listItem = { date: timeFormat(data[i].time, 'yyyy-mm-dd hh:MM:ss') }; for (let key in data[i].dat) { if (data[i].dat[key]) { let datArray = data[i].dat[key].split('#'); listItem[key] = datArray[0] } } list.push(listItem); } return { headers: headers, //历史数据表头数据 list: list, // 历史列表数据 nums: nums, // 数据总数 rainFall: rainFall, //气象设备是否具有日雨量累计因子,有返回1,无返回0 } } // 气象站、墒情站折线图 export const getWeatherChart = async (params) => { const { data, conf } = await weatherRequest('qxz_data_chart', params) if (!data) { return; } let times = []; // 时间数组 // 下拉框数据 let pickes = []; let charts = {}; Object.keys(conf).forEach(key => { if (conf[key]) { pickes.push({ text: conf[key].split('#').join(' '), value: key }) charts[key] = []; //统计图 } }) // 处理统计图数据 格式:通道号:列表 {e1:list,e2:list,e3:list} // if(data.length = 10;) for (let i = 0; i < data.length; i++) { for (let key in charts) { let dat = data[i].dat[key]; if (dat) { let num = dat.split('#')[0]; charts[key].push(parseFloat(num)); } } times.push(timeFormat(data[i].time, 'mm月dd日')); } return { times, // 日期列表 pickes, // 下拉框列表 charts, // 统计数据 } }; /** * 气象站、墒情站24小时数据 * @param {*} data */ export const getWeatherDayData = async (data) => { let res = await weatherRequest('qxz_day_data', data); return res; }; // 气象站、墒情站预警 export const getWeatherWarning = (data) => weatherRequest('qxz_warning', data);