WXL
3 天以前 4c9fdc87987140e8b2c3f0dfc2f6608cdb6be774
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// /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;
}