diff --git a/static/js/afterbody.js b/static/js/afterbody.js
index 4fb2838..3283c2f 100644
--- a/static/js/afterbody.js
+++ b/static/js/afterbody.js
@@ -1,279 +1,125 @@
-//公式相关
+const WeatherReport = (function () {
+ const BASE_WIND_COUNT = 10;
+ const SPOT_CHECK_COUNT = 5;
-const BASE_WIND_COUNT = 10;
-const SPOT_CHECK_COUNT = 5;
-
-// 展开或者关闭公式
-function toggleFormula(element) {
- const content = element.nextElementSibling;
- content.style.display = content.style.display === "none" ? "block" : "none";
- element.textContent = element.textContent.includes("▶")
- ? element.textContent.replace("▶", "▼")
- : element.textContent.replace("▼", "▶");
-}
-
-// 加载时运行
-document.addEventListener('DOMContentLoaded', function() {
- renderMathInElement(document.body, {
- delimiters: [
- {left: "$$", right: "$$", display: true},
- {left: "$", right: "$", display: false}
- ],
- throwOnError: false
- });
-
- // 确保数据已加载
- if (window.weatherData) {
- const versionElement = document.querySelector('.version');
- const dbVersion = window.weatherData.version || 'default';
-
- // 更新页面显示
- if (versionElement) {
- versionElement.textContent = `版本号: ${dbVersion}`;
- }
-
- downloadpdf(window.weatherData);
- } else {
- console.error("错误:window.weatherData 未定义");
- }
-});
-
-// 下载按钮
-function downloadpdf(data) {
-
- const areaTypeMap = {
+ const AREA_TYPE_MAP = {
urban: "城市",
rural: "农村",
};
- let htmlString = `
-
+ const SUITABILITY_MAP = {
+ a: "不利于污染物的扩散和稀释,适宜于进行无组织排放监测",
+ b: "较不利于污染物的扩散和稀释,较适宜于进行无组织排放监测",
+ c: "有利于污染物的扩散和稀释,较不适宜于进行无组织排放监测",
+ d: "很有利于污染物的扩散和稀释,不适宜于进行无组织排放监测",
+ wind0: "静风",
+ overall0: "取消监测或改期",
+ };
+
+ function formatDate(dateStr) {
+ const d = new Date(dateStr);
+ const y = d.getFullYear();
+ const m = String(d.getMonth() + 1).padStart(2, "0");
+ const day = String(d.getDate()).padStart(2, "0");
+ return `${y}-${m}-${day}`;
+ }
+
+ function getSuitabilityText(value, type) {
+ const normalized = String(value).toLowerCase();
+ if (type === "wind" && normalized === "0") return SUITABILITY_MAP.wind0;
+ if (type === "overall" && normalized === "0") return SUITABILITY_MAP.overall0;
+ return SUITABILITY_MAP[normalized] || value;
+ }
+
+ function formatTime(hours, min) {
+ return `${hours}:${String(min).padStart(2, "0")}`;
+ }
+
+ function joinWithComma(arr, start, end) {
+ return arr.slice(start, end).map((v) => v ?? "").join(",");
+ }
+
+ function buildReportHTML(data) {
+ const staticPrefix = window.staticPrefix || '/static';
+ const timeStr = `${formatDate(data.date)} ${formatTime(data.hours, data.min)}`;
+ const version = data.version || "unknown";
+
+ let html = `
总体适宜度测量报表
-
+
总体适宜度测量报表
-
-
-
-
-
-
检测类型:
-
${data.inspectiontype}
-
-
-
-
委托单号:
-
${data.assignmentnumber}
-
-
-
-
项目名称:
-
${data.title}
-
-
-
-
经纬度:
-
E ${data.longitude}, N ${data.latitude}
-
-
-
-
测试时间:
-
${formatDateToYYYYMMDD(data.date)} ${data.hours}:${data.min}
-
-
-
-
-
-
-
-
日期序数:
-
${data.daySinceJanFirst}
-
-
-
太阳倾角:
-
${data.solarDeclination}°
-
-
-
太阳高度角:
-
${data.sunAltitude}°
-
-
-
总云量:
-
${data.overallCloudiness}
-
-
-
低云量:
-
${data.lowCloudiness}
-
-
-
辐射等级:
-
${data.solarRadiationLevel}
-
-
-
平均风速:
-
${data.averageWindSpeed}m/s
-
-
-
风速适宜度:
-
${data.windSpeedSuitability}
-
-
-
平均风向:
-
${data.averageWindDirection}°
-
-
-
风向标准差:
-
${data.windDirectionStandardDeviation}°
-
-
-
风向适宜度:
-
${data.windDirectionSuitability}
-
-
-
大气稳定度:
-
${data.atmosphericStability}
-
-
-
稳定度适宜度:
-
${data.suitabilityDegree}
-
-
-
总体适宜度:
-
${replaceSuitabilityText(data.overallSuitability, "overall")}
-
-
-
-
-
-
-
-
-
十次风速值:
-
-
${data.windSpeed.slice(0, BASE_WIND_COUNT).join(',')}
+
+
+
+
检测类型:
+
${data.inspectionType || "-"}
+
+
+
委托单号:
+
${data.assignmentNumber || "-"}
+
+
+
项目名称:
+
${data.title || "-"}
+
+
+
经纬度:
+
E ${data.longitude || "-"}, N ${data.latitude || "-"}
+
+
-
-
-
十次风向值:
-
-
${data.windDirection.slice(0, BASE_WIND_COUNT).join(',')}
-
-
-
-
-${data.hasSpotCheckWindSpeed ? `
-
-
-
抽测风速值:
-
-
${data.windSpeed.slice(BASE_WIND_COUNT, BASE_WIND_COUNT + SPOT_CHECK_COUNT).map(val => val ?? '').join(',')}
-
-
-
-
抽测风向值:
-
-
${data.windDirection.slice(BASE_WIND_COUNT, BASE_WIND_COUNT + SPOT_CHECK_COUNT).map(val => val ?? '').join(',')}
-
-
-
-` : ''}
+
-
-
是否有抽测风速:${data.hasSpotCheckWindSpeed ? '是' : '否'}
-
+
+
+
日期序数:
+
${data.daySinceJanFirst}
+
+
+
太阳倾角:
+
${Number(data.solarDeclination).toFixed(2)}°
+
+
+
太阳高度角:
+
${Number(data.sunAltitude).toFixed(2)}°
+
+
+
总云量:
+
${data.overallCloudiness}
+
+
+
低云量:
+
${data.lowCloudiness}
+
+
+
辐射等级:
+
${data.solarRadiationLevel}
+
+
+
平均风速:
+
${data.averageWindSpeed}m/s
+
+
+
风速适宜度:
+
${data.windSpeedSuitability}
+
`;
-
-
-
-`
- // 根据条件显示相应的数据
- if (data.hasMeasuredWindSpeed === true) {
- htmlString+=`
+ if (data.hasMeasuredWindSpeed === true) {
+ html += `
实测风速:
${data.measuredWindSpeed} m/s
@@ -281,13 +127,12 @@ ${data.hasSpotCheckWindSpeed ? `
转换风速:
${data.convertedWindSpeed} m/s
-
- `
- } else {
- htmlString+=`
+
`;
+ } else {
+ html += `
区域类型:
-
${areaTypeMap[data.areaType]}
+
${AREA_TYPE_MAP[data.areaType] || data.areaType || "-"}
测点高度:
@@ -300,92 +145,156 @@ ${data.hasSpotCheckWindSpeed ? `
推算风速:
${data.calculatedWindSpeed} m/s
+
`;
+ }
+
+ html += `
+
+
平均风向:
+
${data.averageWindDirection}°
- `
+
+
风向标准差:
+
${data.windDirectionStandardDeviation}°
+
+
+
风向适宜度:
+
${data.windDirectionSuitability}
+
+
+
大气稳定度:
+
${data.atmosphericStability}
+
+
+
稳定度适宜度:
+
${data.suitabilityDegree}
+
+
+
总体适宜度:
+
${getSuitabilityText(data.overallSuitability, "overall")}
+
+
+
+
+
+
+
+
十次风速值:
+
+
${joinWithComma(data.windSpeed, 0, BASE_WIND_COUNT)}
+
+
+
+
十次风向值:
+
+
${joinWithComma(data.windDirection, 0, BASE_WIND_COUNT)}
+
+
+
`;
+
+ if (data.hasSpotCheckWindSpeed) {
+ html += `
+
+
+
抽测风速值:
+
+
${joinWithComma(data.windSpeed, BASE_WIND_COUNT, BASE_WIND_COUNT + SPOT_CHECK_COUNT)}
+
+
+
+
抽测风向值:
+
+
${joinWithComma(data.windDirection, BASE_WIND_COUNT, BASE_WIND_COUNT + SPOT_CHECK_COUNT)}
+
+
+
`;
+ }
+
+ html += `
+
+
是否有抽测风速:${data.hasSpotCheckWindSpeed ? "是" : "否"}
+
+
+
+
+
+
+`;
+
+ return html;
}
- htmlString += `
-
-
-
-