const version = "0.1.9";
//公式相关
function toggleAccordion(header) {
const content = header.nextElementSibling;
const isOpen = content.style.maxHeight !== '0px' && content.style.maxHeight !== '';
// 关闭所有其他面板
document.querySelectorAll('.accordion-content').forEach(item => {
item.style.maxHeight = '0px';
});
// 切换当前面板
if (!isOpen) {
content.style.maxHeight = content.scrollHeight + 'px';
}
}
// 展开或者关闭公式
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
});
// 获取页面中的版本号元素
const versionElement = document.querySelector('.version');
// 更新内容(拼接版本号)
if (versionElement) {
versionElement.textContent = `版本号: ${version}`;
}
//console.log(window.weatherData);
downloadpdf(window.weatherData, version);
});
// 下载按钮
function downloadpdf(data, version) {
const areaTypeMap = {
urban: "城市",
rural: "农村",
};
// 假设你的HTML字符串是这样的
var htmlString = `
总体适宜度测量报表
总体适宜度测量报表
检测类型:
${data.inspectiontype}
委托单号:
${data.assignmentnumber}
经纬度:
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, 10).join(',')}
十次风向值:
${data.windDirection.slice(0, 10).join(',')}
${data.hasSpotCheckWindSpeed ? `
抽测风速值:
${data.windSpeed.slice(10, 15).map(val => val ?? '').join(',')}
抽测风向值:
${data.windDirection.slice(10, 15).map(val => val ?? '').join(',')}
` : ''}
是否有抽测风速:${data.hasSpotCheckWindSpeed ? '是' : '否'}
`
// 根据条件显示相应的数据
if (data.hasMeasuredWindSpeed === true) {
htmlString+=`
实测风速:
${data.measuredWindSpeed} m/s
转换风速:
${data.convertedWindSpeed} m/s
`
} else {
htmlString+=`
区域类型:
${areaTypeMap[data.areaType]}
测点高度:
${data.measurementHeight} m
点位风速:
${data.pointWindSpeed} m/s
推算风速:
${data.calculatedwindspeed} m/s
`
}
htmlString += `
`
const filename = `${data.id}-${version}.pdf`
var opt = {
margin: 10,
filename: filename,
image: {
type: 'jpeg',
quality: 0.98
},
html2canvas: {
scale: 2
},
jsPDF: {
unit: 'mm',
format: 'a4',
orientation: 'portrait'
}
};
// 执行下载,使用htmlString作为内容源
html2pdf().set(opt).from(htmlString).save();
};
// 工具函数
// 函数用于将日期格式化为 xxxx-xx-xx 形式
function formatDateToYYYYMMDD(date) {
// 使用Date对象解析这个日期字符串
var date = new Date(date);
var year = date.getFullYear(); // 获取年份
var month = (date.getMonth() + 1).toString().padStart(2, '0'); // 获取月份,并确保两位数
var day = date.getDate().toString().padStart(2, '0'); // 获取日期,并确保两位数
return year + '-' + month + '-' + day; // 组合成 xxxx-xx-xx 形式
}
//稳定度描述映射
function replaceSuitabilityText(data, type) {
// 定义映射关系
const suitabilityMap = {
'a': '不利于污染物的扩散和稀释,适宜于进行无组织排放监测',
'b': '较不利于污染物的扩散和稀释,较适宜于进行无组织排放监测',
'c': '有利于污染物的扩散和稀释,较不适宜于进行无组织排放监测',
'd': '很有利于污染物的扩散和稀释,不适宜于进行无组织排放监测',
'wind0': '静风',
'overall0': '取消监测或改期'
};
// 将输入转换为小写(或大写)以实现大小写不敏感
const normalizedData = String(data).toLowerCase();
// 处理特殊类型
if (type === 'wind' && normalizedData === '0')
return suitabilityMap['wind0'];
if (type === 'overall' && normalizedData === '0')
return suitabilityMap['overall0'];
// 处理普通类型
if (type === 'normal' || type === "wind" || type === "overall") {
// 检查映射表中是否存在转换后的小写字段
if (suitabilityMap[normalizedData]) {
return suitabilityMap[normalizedData];
}
// 如果找不到,返回原值
return data;
}
// 默认返回原值
return data;
}
// 显示通知
function showNotification(message, type = 'success') {
const notification = document.getElementById('notification');
notification.textContent = message;
notification.style.backgroundColor = type === 'success' ? '#4CAF50' : '#f44336';
notification.style.display = 'block';
setTimeout(() => {
notification.style.display = 'none';
}, 3000);
}