mi-assessment/server/MiAssessment/src/MiAssessment.Api/Pages/Report/FullReport.cshtml
2026-03-17 11:11:05 +08:00

76 lines
2.4 KiB
Plaintext

@page "/report/full"
@model MiAssessment.Api.Pages.Report.FullReportModel
@{
ViewData["Title"] = "测评报告完整预览";
Layout = null;
}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>测评报告完整预览</title>
<link rel="stylesheet" href="@(Configuration["AppSettings:CdnPrefix"])/css/pages/full-report.css" />
</head>
<body>
@if (!string.IsNullOrEmpty(Model.ErrorMessage))
{
<div class="full-error">
<p>@Model.ErrorMessage</p>
</div>
}
else
{
<div class="full-container">
<div class="full-header">
<span class="full-header-title">测评报告预览</span>
<span class="full-header-count">共 @Model.Pages.Count 页</span>
</div>
<div class="full-pages">
@foreach (var item in Model.Pages)
{
<div class="full-page-wrapper">
<div class="full-page-frame">
<iframe class="full-page-iframe"
data-src="@Model.BuildPageUrl(item.RouteUrl!)"
frameborder="0"
scrolling="no"
title="@item.Title"></iframe>
</div>
</div>
}
</div>
</div>
}
<script>
// IntersectionObserver 懒加载 iframe
(function () {
var iframes = document.querySelectorAll('iframe.full-page-iframe[data-src]');
if (!iframes.length) return;
var observer = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
var iframe = entry.target;
if (!iframe.src) {
iframe.src = iframe.getAttribute('data-src');
}
observer.unobserve(iframe);
}
});
}, {
rootMargin: '500px 0px'
});
iframes.forEach(function (iframe) {
observer.observe(iframe);
});
})();
</script>
</body>
</html>