// /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;
|
}
|