// /opo/totals/* 统计接口公共工具 // 接口请求体为 Totals(opo统计) 对象,响应为 RuoYi Result { code, msg, data, total } // data 可能是 Totals 数组、单个 Totals 对象,或包了一层 {list/rows} 的对象 // 归一化返回结果为 Totals 数组 export function toTotalsList(result) { const data = result && result.data; if (!data) return []; if (Array.isArray(data)) return data; if (Array.isArray(data.list)) return data.list; if (Array.isArray(data.rows)) return data.rows; // 单个统计对象 return [data]; } // 组装查询条件,只传有值的字段 // area: 地区名称(中文);startTime/endTime: yyyy-MM;ageGroup/sex/boodType/organName 为筛选维度 export function buildTotalsQuery({ area, startTime, endTime, ageGroup, sex, boodType, organName } = {}) { const q = {}; if (area) q.area = area; if (startTime) q.startTime = startTime; if (endTime) q.endTime = endTime; if (ageGroup) q.ageGroup = ageGroup; if (sex) q.sex = sex; if (boodType) q.boodType = boodType; if (organName) q.organName = organName; return q; } // 月份/时间字符串统一成 yyyy-MM export function toMonth(value) { if (!value) return ''; const s = String(value); const m = s.match(/(\d{4})-(\d{2})/); return m ? `${m[1]}-${m[2]}` : s; } // 数字安全取整 export function toNum(v) { const n = Number(v); return Number.isFinite(n) ? n : 0; }