| | |
| | | // 处理 data 字段解析 |
| | | function parseDataField(dataStr) { |
| | | if (typeof dataStr !== "string") return []; |
| | | // console.log(dataStr, '方案详情内的降雨数据'); |
| | | |
| | | try { |
| | | const parsed = JSON.parse(dataStr); |
| | | const fields = { |
| | | total: "降雨总量(mm):", |
| | | duration: "降雨时长(小时):", |
| | | intensity: "降雨强度(mm/小时):", // 统一为 mm/h |
| | | intensity: "降雨强度(mm/小时):", |
| | | prediction: "降雨场次:", |
| | | model: "降雨模式:", |
| | | history: "历史降雨:", |
| | | }; |
| | | |
| | | let { total, duration, intensity, intensityUnit } = parsed; |
| | | |
| | | // 根据 intensityUnit 确定转换系数 |
| | | let factor = 1; |
| | | switch (intensityUnit) { |
| | | case "mm/min": |
| | | factor = 60; |
| | | break; |
| | | case "mm/5min": |
| | | factor = 12; |
| | | break; |
| | | case "mm/h": |
| | | factor = 1; |
| | | break; |
| | | default: |
| | | factor = 1; |
| | | } |
| | | |
| | | // 转换单位:将 intensity 和 total 统一为按小时计算的值 |
| | | intensity = intensity != null ? (intensity * factor).toFixed(2) : "无"; |
| | | total = total != null ? (total * factor).toFixed(2) : "无"; |
| | | |
| | | // 控制台输出你需要的关键字段 |
| | | // console.log('转换后的降雨强度(mm/h):', intensity); |
| | | // console.log('转换后的降雨总量(mm):', total); |
| | | |
| | | // 处理 duration,如果非数字则设为默认值 |
| | | duration = duration != null ? parseInt(duration) : "无"; |
| | | |
| | | const result = Object.entries(parsed) |
| | | .filter(([k]) => fields[k]) |
| | | .map(([k, v]) => { |
| | | let displayValue = v || "无"; |
| | | if (k === "total") displayValue = total; |
| | | if (k === "duration") displayValue = duration; |
| | | if (k === "intensity") displayValue = intensity; |
| | | |
| | | return { |
| | | name: fields[k], |
| | | value: displayValue, |
| | | }; |
| | | }); |
| | | .map(([k, v]) => ({ |
| | | name: fields[k], |
| | | value: v || "无", |
| | | })); |
| | | |
| | | // 处理雨量计数据 |
| | | if (parsed.type == 2 && parsed.gauges && Array.isArray(parsed.gauges)) { |
| | |
| | | |
| | | return result; |
| | | } catch (e) { |
| | | console.error("解析 dataStr 出错:", e); |
| | | return [{ name: "数据:", value: dataStr || "无" }]; |
| | | } |
| | | } |