{"id":1880,"date":"2025-12-07T11:04:37","date_gmt":"2025-12-07T03:04:37","guid":{"rendered":"https:\/\/www.funpt.cn\/?page_id=1880"},"modified":"2026-10-28T11:35:39","modified_gmt":"2026-10-28T03:35:39","slug":"elementor-1880","status":"publish","type":"page","link":"https:\/\/www.funpt.cn\/?page_id=1880","title":{"rendered":"\u4e0b\u80a2Y-Balance\u6d4b\u8bd5"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1880\" class=\"elementor elementor-1880\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0cfc8fe e-flex e-con-boxed e-con e-parent\" data-id=\"0cfc8fe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fb57197 elementor-widget elementor-widget-html\" data-id=\"fb57197\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"app\">\n<style>\n  #app {\n    --primary: #2563eb;\n    --primary-d: #1d4ed8;\n    --primary-color: #2563eb;\n    --secondary-color: #1d4ed8;\n    --success-color: #15803d;\n    --warning-color: #b45309;\n    --danger-color: #b91c1c;\n    --ink: #0f172a;\n    --body: #334155;\n    --muted: #64748b;\n    --line: #e2e8f0;\n    --soft: #f8fafc;\n    max-width: 100%;\n    margin: 0 auto;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", sans-serif;\n    color: var(--body);\n    font-size: 14.5px;\n    line-height: 1.75;\n    -webkit-text-size-adjust: 100%;\n  }\n  #app *, #app *::before, #app *::after { box-sizing: border-box; }\n  #app h1, #app h2, #app h3, #app p, #app ul, #app li, #app label, #app table { margin: 0; padding: 0; }\n  #app ul { list-style: none; }\n  #app li { position: relative; padding-left: 15px; }\n  #app li::before {\n    content: \"\";\n    position: absolute;\n    left: 1px;\n    top: 0.72em;\n    width: 5px;\n    height: 5px;\n    border-radius: 50%;\n    background: #94a3b8;\n  }\n  #app ul ul { margin-top: 4px; }\n  #app ul ul li { color: var(--muted); font-size: 13.5px; }\n  #app strong { font-weight: 700; color: var(--ink); }\n  #app a { color: var(--primary-d); text-decoration: none; }\n\n  \/* ---------- \u5916\u58f3 ---------- *\/\n  #app .ybt-card {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 14px;\n    overflow: hidden;\n    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05);\n  }\n  #app .ybt-head {\n    background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 100%);\n    padding: 24px 28px;\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 14px;\n    flex-wrap: wrap;\n  }\n  #app .ybt-head h1 {\n    font-size: 21px;\n    font-weight: 700;\n    color: #fff;\n    line-height: 1.35;\n    letter-spacing: 0.2px;\n  }\n  #app .ybt-head p { font-size: 13.5px; color: #cbd5e1; margin-top: 6px; line-height: 1.5; }\n  #app .ybt-badge {\n    font-size: 11.5px;\n    font-weight: 600;\n    letter-spacing: 0.6px;\n    color: #dbeafe;\n    background: rgba(255, 255, 255, 0.14);\n    border: 1px solid rgba(255, 255, 255, 0.22);\n    padding: 3px 10px;\n    border-radius: 999px;\n    white-space: nowrap;\n    margin-top: 2px;\n  }\n  #app .ybt-body { padding: 6px 28px 20px; }\n  #app .ybt-foot {\n    padding: 18px 28px;\n    border-top: 1px solid #eef2f7;\n    background: var(--soft);\n    font-size: 12.5px;\n    line-height: 1.75;\n    color: var(--muted);\n  }\n  #app .ybt-foot p + p { margin-top: 6px; }\n  #app .ybt-foot a { color: var(--primary-d); font-weight: 600; }\n  #app .ybt-foot a:hover { text-decoration: underline; }\n\n  \/* ---------- \u5206\u533a ---------- *\/\n  #app .sec { padding: 22px 0; border-top: 1px solid #eef2f7; }\n  #app .sec:first-child { border-top: none; padding-top: 18px; }\n  #app .sec-title {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    font-size: 17px;\n    font-weight: 700;\n    color: var(--ink);\n    line-height: 1.35;\n    border-left: 3px solid var(--primary);\n    padding-left: 11px;\n    margin-bottom: 16px;\n  }\n  #app .sec-num {\n    font-size: 11.5px;\n    font-weight: 700;\n    color: var(--primary-d);\n    background: #eff6ff;\n    border: 1px solid #dbeafe;\n    border-radius: 5px;\n    padding: 1px 6px;\n    letter-spacing: 0.4px;\n  }\n  #app .grp-title {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 14px;\n    font-weight: 700;\n    color: var(--ink);\n    margin: 2px 0 10px;\n  }\n  #app .grp-title::before {\n    content: \"\";\n    width: 6px;\n    height: 6px;\n    background: var(--primary);\n    transform: rotate(45deg);\n    flex: 0 0 auto;\n  }\n\n  \/* ---------- \u8868\u5355 ---------- *\/\n  #app .grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }\n  #app .field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }\n  #app .field label { font-size: 13px; font-weight: 600; color: #475569; }\n  #app input[type=\"text\"], #app input[type=\"number\"], #app input[type=\"date\"],\n  #app select, #app textarea {\n    width: 100%;\n    height: 42px;\n    padding: 0 12px;\n    font-family: inherit;\n    font-size: 14px;\n    color: var(--ink);\n    background: var(--soft);\n    border: 1.5px solid #cbd5e1;\n    border-radius: 8px;\n    transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;\n    -webkit-appearance: none;\n    appearance: none;\n    line-height: normal;\n  }\n  #app textarea { height: auto; padding: 10px 12px; line-height: 1.7; resize: vertical; }\n  #app input::placeholder, #app textarea::placeholder { color: #94a3b8; }\n  #app input:focus, #app select:focus, #app textarea:focus {\n    outline: none;\n    border-color: var(--primary);\n    background: #fff;\n    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);\n  }\n  #app select {\n    padding-right: 34px;\n    background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'\/%3E%3C\/svg%3E\");\n    background-repeat: no-repeat;\n    background-position: right 12px center;\n  }\n  #app input[type=\"file\"] {\n    height: auto;\n    padding: 8px 10px;\n    background: #fff;\n    font-size: 13px;\n    color: var(--muted);\n  }\n  \/* \u4fdd\u7559\u539f\u751f\u65e5\u671f\u9009\u62e9\u5668\u4e0e\u6587\u4ef6\u9009\u62e9\u6309\u94ae\u7684\u4ea4\u4e92\u80fd\u529b *\/\n  #app input[type=\"date\"], #app input[type=\"file\"] { -webkit-appearance: auto; appearance: auto; }\n  #app .hint { font-size: 12.5px; color: var(--muted); line-height: 1.65; }\n\n  \/* ---------- \u6309\u94ae ---------- *\/\n  #app .btn, #app .btn-secondary, #app .btn-info, #app .btn-success,\n  #app .btn-danger, #app .btn-reset {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 6px;\n    height: 42px;\n    padding: 0 18px;\n    font-family: inherit;\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 1;\n    white-space: nowrap;\n    border: 1px solid transparent;\n    border-radius: 8px;\n    cursor: pointer;\n    transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;\n  }\n  #app .btn { background: var(--primary); color: #fff; }\n  #app .btn:hover { background: var(--primary-d); box-shadow: 0 2px 6px rgba(37, 99, 235, 0.25); }\n  #app .btn-secondary, #app .btn-reset {\n    background: #f1f5f9;\n    color: #334155;\n    border-color: #e2e8f0;\n  }\n  #app .btn-secondary:hover, #app .btn-reset:hover { background: #e8eef5; border-color: #cbd5e1; color: #0f172a; }\n  #app .btn-info {\n    background: #eff6ff;\n    color: var(--primary-d);\n    border-color: #bfdbfe;\n  }\n  #app .btn-info:hover { background: #dbeafe; border-color: #93c5fd; }\n  #app .btn-success { background: #15803d; color: #fff; }\n  #app .btn-success:hover { background: #166534; box-shadow: 0 2px 6px rgba(21, 128, 61, 0.25); }\n  #app .btn-danger {\n    background: #fef2f2;\n    color: #b91c1c;\n    border-color: #fecaca;\n  }\n  #app .btn-danger:hover { background: #fee2e2; border-color: #fca5a5; }\n  #app .btn-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 18px; }\n\n  \/* ---------- \u63d0\u793a\u6846 ---------- *\/\n  #app .info-box, #app .warning-box, #app .danger-box, #app .success-box {\n    border-radius: 10px;\n    border: 1px solid;\n    padding: 14px 16px;\n    font-size: 13.5px;\n    line-height: 1.75;\n    margin-bottom: 14px;\n  }\n  #app .info-box { background: var(--soft); border-color: var(--line); color: var(--body); }\n  #app .warning-box { background: #fffbeb; border-color: #fde68a; color: #92400e; }\n  #app .danger-box { background: #fef2f2; border-color: #fecaca; color: #991b1b; }\n  #app .success-box { background: #f0fdf4; border-color: #bbf7d0; color: #166534; }\n  #app .info-box p + p, #app .warning-box p + p, #app .danger-box p + p { margin-top: 8px; }\n  #app .info-box ul, #app .warning-box ul, #app .danger-box ul { margin-top: 6px; }\n  #app .warning-box strong, #app .danger-box strong, #app .info-box strong { color: inherit; }\n  #app .warning-box li::before, #app .danger-box li::before { background: currentColor; opacity: 0.55; }\n\n  \/* ---------- \u6d4b\u8bd5\u987a\u5e8f ---------- *\/\n  #app .test-sequence { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 10px; }\n  #app .test-step {\n    display: flex;\n    align-items: center;\n    gap: 7px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 8px;\n    padding: 7px 10px;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--body);\n  }\n  #app .test-step-number {\n    width: 20px;\n    height: 20px;\n    flex: 0 0 auto;\n    border-radius: 5px;\n    background: var(--primary);\n    color: #fff;\n    font-size: 11.5px;\n    font-weight: 700;\n    line-height: 20px;\n    text-align: center;\n  }\n\n  \/* ---------- \u6298\u53e0\u9762\u677f ---------- *\/\n  #app .accordion { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; margin-top: 14px; }\n  #app .accordion-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 10px;\n    padding: 12px 14px;\n    background: var(--soft);\n    font-size: 13.5px;\n    font-weight: 600;\n    color: #334155;\n    cursor: pointer;\n    user-select: none;\n    transition: background 0.15s, color 0.15s;\n  }\n  #app .accordion-header:hover { background: #f1f5f9; }\n  #app .accordion-header.active { background: #eff6ff; color: var(--primary-d); }\n  #app .accordion-header i {\n    width: 8px;\n    height: 8px;\n    flex: 0 0 auto;\n    border-right: 2px solid currentColor;\n    border-bottom: 2px solid currentColor;\n    transform: rotate(45deg);\n    margin-right: 3px;\n    margin-top: -3px;\n    transition: transform 0.25s ease, margin 0.25s ease;\n  }\n  #app .accordion-header i.fa-chevron-up { transform: rotate(-135deg); margin-top: 3px; }\n  #app .accordion-content {\n    max-height: 0;\n    overflow: hidden;\n    padding: 0 14px;\n    font-size: 13.5px;\n    line-height: 1.75;\n    transition: max-height 0.28s ease;\n  }\n  #app .accordion-content.active { max-height: 3000px; padding: 14px; }\n\n  \/* ---------- \u6570\u636e\u5f55\u5165 ---------- *\/\n  #app .leg-block { border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px 16px; margin-bottom: 14px; }\n  #app .leg-block .grp-title { margin-bottom: 12px; }\n  #app .dir-head {\n    display: grid;\n    grid-template-columns: 76px 1fr;\n    gap: 10px;\n    align-items: center;\n    padding: 0 0 6px;\n    font-size: 11.5px;\n    font-weight: 600;\n    color: var(--muted);\n    letter-spacing: 0.3px;\n  }\n  #app .dir-head .cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }\n  #app .dir-head .cols span { text-align: center; }\n  #app .dir-row { display: grid; grid-template-columns: 76px 1fr; gap: 10px; align-items: center; }\n  #app .dir-row + .dir-row { margin-top: 8px; }\n  #app .dir-name { font-size: 13px; font-weight: 600; color: #475569; }\n  #app .dir-inputs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; min-width: 0; }\n  #app .dir-inputs input { text-align: center; }\n\n  \/* ---------- \u7ed3\u679c ---------- *\/\n  #app .results-container { display: none; }\n  #app .results-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 12px;\n    flex-wrap: wrap;\n    margin-bottom: 16px;\n  }\n  #app .results-title {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    font-size: 17px;\n    font-weight: 700;\n    color: var(--ink);\n    border-left: 3px solid var(--primary);\n    padding-left: 11px;\n    line-height: 1.35;\n  }\n  #app .results-actions { display: flex; gap: 8px; flex-wrap: wrap; }\n  #app .results-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }\n  #app .result-card {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-top: 3px solid var(--primary);\n    border-radius: 10px;\n    padding: 14px 12px;\n    text-align: center;\n  }\n  #app .result-value {\n    font-size: 23px;\n    font-weight: 700;\n    color: var(--primary-d);\n    line-height: 1.25;\n    margin: 4px 0 2px;\n    font-variant-numeric: tabular-nums;\n    letter-spacing: -0.2px;\n  }\n  #app .result-label { font-size: 12px; font-weight: 600; color: var(--muted); }\n\n  \/* ---------- \u8868\u683c ---------- *\/\n  #app .tbl-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 12px 0 4px; }\n  #app table { width: 100%; border-collapse: collapse; font-size: 13px; background: #fff; }\n  #app th, #app td {\n    padding: 10px 8px;\n    text-align: center;\n    border-bottom: 1px solid #eef2f7;\n    font-variant-numeric: tabular-nums;\n  }\n  #app th {\n    background: var(--soft);\n    font-size: 12.5px;\n    font-weight: 700;\n    color: #475569;\n    border-bottom: 1px solid var(--line);\n    white-space: nowrap;\n  }\n  #app th:first-child, #app td:first-child { text-align: left; }\n  #app tbody tr:last-child td { border-bottom: none; }\n  #app tbody tr:hover td { background: #fbfdff; }\n  #app .standard-optimal { color: #15803d; font-weight: 600; }\n  #app .standard-pass { color: #b45309; font-weight: 600; }\n  #app .standard-below { color: #b91c1c; font-weight: 600; }\n  #app .history-table-container { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--line); border-radius: 10px; }\n  #app .history-table { min-width: 680px; font-size: 12.5px; }\n  #app .history-table th { font-size: 12px; }\n  #app .history-table td { padding: 9px 6px; }\n  #app .history-table .btn-secondary, #app .history-table .btn-danger {\n    height: 28px;\n    padding: 0 9px;\n    font-size: 12px;\n    border-radius: 6px;\n  }\n  #app .history-table td:last-child { white-space: nowrap; }\n\n  \/* ---------- \u7edf\u8ba1 ---------- *\/\n  #app .stats-container { margin-top: 16px; border: 1px solid var(--line); border-radius: 10px; padding: 16px; background: var(--soft); }\n  #app .stats-container > h3 { font-size: 14px; font-weight: 700; color: var(--ink); margin-bottom: 12px; }\n  #app .stats-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }\n  #app .stat-card { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; }\n  #app .stat-value { font-size: 20px; font-weight: 700; color: var(--primary-d); line-height: 1.3; margin-top: 2px; font-variant-numeric: tabular-nums; }\n  #app .stat-label { font-size: 12px; font-weight: 600; color: var(--muted); }\n\n  \/* ---------- \u5de5\u5177\u7c7b ---------- *\/\n  #app .hidden { display: none !important; }\n  #app .text-center { text-align: center; }\n  #app .mt-20 { margin-top: 20px; }\n  #app .mb-20 { margin-bottom: 20px; }\n  #app .mt-10 { margin-top: 10px; }\n  #app .mt14 { margin-top: 14px; }\n  #app .d-flex { display: flex; }\n  #app .gap-10 { gap: 10px; }\n  #app .flex-wrap { flex-wrap: wrap; }\n  #app .justify-between { justify-content: space-between; }\n  #app .align-center { align-items: center; }\n\n  \/* ---------- \u5bfc\u51fa\u7528\u7684\u62a5\u544a\u7248\u5f0f ---------- *\/\n  #app .report-container {\n    display: none;\n    position: absolute;\n    left: -9999px;\n    top: 0;\n    width: 800px;\n    padding: 40px;\n    background: #fff;\n    color: var(--body);\n    font-size: 14px;\n    line-height: 1.7;\n  }\n  #app .report-header { border-bottom: 2px solid var(--primary); padding-bottom: 18px; margin-bottom: 26px; text-align: center; }\n  #app .report-title { font-size: 26px; font-weight: 700; color: var(--primary-d); line-height: 1.35; }\n  #app .report-subtitle { font-size: 13.5px; color: var(--muted); margin-top: 6px; }\n  #app .report-section { margin-bottom: 24px; }\n  #app .report-section-title {\n    font-size: 16px;\n    font-weight: 700;\n    color: var(--ink);\n    border-left: 3px solid var(--primary);\n    padding-left: 10px;\n    margin-bottom: 12px;\n  }\n  #app .report-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }\n  #app .report-table td, #app .report-table th { padding: 9px 10px; border: 1px solid var(--line); text-align: left; }\n  #app .report-table th { background: var(--soft); font-weight: 700; color: #475569; }\n  #app .report-footer { border-top: 1px solid var(--line); padding-top: 16px; margin-top: 26px; font-size: 12.5px; color: var(--muted); text-align: center; }\n  #app .report-watermark {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%) rotate(-45deg);\n    font-size: 150px;\n    font-weight: 700;\n    letter-spacing: 6px;\n    color: var(--primary);\n    opacity: 0.035;\n    white-space: nowrap;\n    pointer-events: none;\n  }\n\n  \/* ---------- \u52a0\u8f7d\u906e\u7f69 ---------- *\/\n  #app .loading-overlay {\n    position: fixed;\n    inset: 0;\n    z-index: 9999;\n    display: none;\n    align-items: center;\n    justify-content: center;\n    flex-direction: column;\n    gap: 14px;\n    background: rgba(255, 255, 255, 0.86);\n    backdrop-filter: blur(2px);\n  }\n  #app .loading-overlay p { font-size: 13.5px; font-weight: 600; color: #334155; }\n  #app .loading-spinner {\n    width: 38px;\n    height: 38px;\n    border: 3px solid #e2e8f0;\n    border-top-color: var(--primary);\n    border-radius: 50%;\n    animation: ybtlq-spin 0.9s linear infinite;\n  }\n  @keyframes ybtlq-spin { to { transform: rotate(360deg); } }\n\n  \/* ---------- \u54cd\u5e94\u5f0f ---------- *\/\n  @media (min-width: 720px) {\n    #app .results-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n  }\n  @media (max-width: 560px) {\n    #app .ybt-head { padding: 20px 18px; }\n    #app .ybt-head h1 { font-size: 18px; }\n    #app .ybt-body { padding: 4px 18px 16px; }\n    #app .ybt-foot { padding: 16px 18px; }\n    #app .grid-2 { grid-template-columns: 1fr; gap: 12px; }\n    #app .test-sequence { grid-template-columns: repeat(2, 1fr); }\n    #app .results-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }\n    #app .result-value { font-size: 20px; }\n    #app .stats-grid { grid-template-columns: 1fr; }\n    #app .btn-row { grid-template-columns: 1fr; }\n    #app .results-header { align-items: flex-start; }\n    #app .dir-head, #app .dir-row { grid-template-columns: 62px minmax(0, 1fr); gap: 8px; }\n    #app .dir-name { font-size: 12.5px; }\n    #app .dir-inputs input { padding: 0 6px; font-size: 13px; }\n    #app .btn, #app .btn-secondary, #app .btn-info, #app .btn-success,\n    #app .btn-danger, #app .btn-reset { padding: 0 14px; font-size: 13.5px; }\n    #app table { font-size: 12.5px; }\n    #app th, #app td { padding: 9px 5px; }\n  }\n<\/style>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js\" defer><\/script>\n<div class=\"ybt-card\">\n  <div class=\"ybt-head\">\n    <div>\n      <h1>\u4e0b\u80a2 Y-Balance \u6d4b\u8bd5<\/h1>\n      <p>\u57fa\u4e8e FMS \u5b98\u65b9\u89c4\u8303\uff08YBT-LQ\uff09\u00b7 \u5b8c\u6574\u7248\u8bc4\u4f30\u5de5\u5177<\/p>\n    <\/div>\n    <span class=\"ybt-badge\">YBT-LQ<\/span>\n  <\/div>\n  <button class=\"nav-toggle\" id=\"menuToggle\" style=\"display:none\" aria-hidden=\"true\" tabindex=\"-1\"><\/button>\n  <div class=\"ybt-body\">\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">01<\/span>\u53d7\u8bd5\u8005\u4fe1\u606f<\/h2>\n      <div class=\"grid-2\">\n        <div class=\"field\"><label for=\"subjectName\">\u59d3\u540d<\/label><input type=\"text\" id=\"subjectName\" placeholder=\"\u8f93\u5165\u53d7\u8bd5\u8005\u59d3\u540d\"><\/div>\n        <div class=\"field\"><label for=\"testDate\">\u6d4b\u8bd5\u65e5\u671f<\/label><input type=\"date\" id=\"testDate\"><\/div>\n      <\/div>\n      <div class=\"grid-2 mt14\">\n        <div class=\"field\"><label for=\"age\">\u5e74\u9f84<\/label><input type=\"number\" id=\"age\" min=\"6\" max=\"100\" placeholder=\"\u5e74\u9f84\"><\/div>\n        <div class=\"field\"><label for=\"gender\">\u6027\u522b<\/label>\n          <select id=\"gender\">\n            <option value=\"\">\u9009\u62e9\u6027\u522b<\/option>\n            <option value=\"male\">\u7537\u6027<\/option>\n            <option value=\"female\">\u5973\u6027<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n      <div class=\"field mt14\"><label for=\"sportActivity\">\u8fd0\u52a8 \/ \u6d3b\u52a8\u7c7b\u578b<\/label>\n        <select id=\"sportActivity\">\n          <option value=\"\">\u9009\u62e9\u8fd0\u52a8 \/ \u6d3b\u52a8\u7c7b\u578b<\/option>\n          <option value=\"basketball\">\u7bee\u7403<\/option>\n          <option value=\"football\">\u7f8e\u5f0f\u8db3\u7403<\/option>\n          <option value=\"soccer\">\u8db3\u7403<\/option>\n          <option value=\"running\">\u8dd1\u6b65<\/option>\n          <option value=\"rowing\">\u8d5b\u8247<\/option>\n          <option value=\"general\">\u666e\u901a\u5065\u8eab<\/option>\n          <option value=\"rehabilitation\">\u5eb7\u590d\u671f<\/option>\n          <option value=\"other\">\u5176\u4ed6<\/option>\n        <\/select>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">02<\/span>\u4e0b\u80a2\u80a2\u4f53\u957f\u5ea6\u6d4b\u91cf<\/h2>\n      <div class=\"info-box\">\n        <p><strong>\u6d4b\u91cf\u65b9\u6cd5\uff1a<\/strong>\u4ece\u9ac2\u524d\u4e0a\u68d8\uff08ASIS\uff09\u5230\u5185\u8e1d\u5c16\u7684\u8ddd\u79bb\u3002\u53d7\u8bd5\u8005\u4ef0\u5367\u3001\u819d\u76d6\u4f38\u76f4\uff0c\u6d4b\u91cf\u81f3\u6700\u8fd1 0.5 \u5398\u7c73\u3002<\/p>\n      <\/div>\n      <div class=\"grid-2\">\n        <div class=\"field\"><label for=\"rightLegLength\">\u53f3\u817f\u957f\u5ea6\uff08cm\uff09<\/label><input type=\"number\" id=\"rightLegLength\" min=\"0\" step=\"0.5\" placeholder=\"\u4f8b\u5982\uff1a85.5\"><\/div>\n        <div class=\"field\"><label for=\"leftLegLength\">\u5de6\u817f\u957f\u5ea6\uff08cm\uff09<\/label><input type=\"number\" id=\"leftLegLength\" min=\"0\" step=\"0.5\" placeholder=\"\u4f8b\u5982\uff1a85.0\"><\/div>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">03<\/span>\u6d4b\u8bd5\u8bf4\u660e\u4e0e\u8bc4\u4f30\u6807\u51c6<\/h2>\n      <div class=\"info-box\">\n        <p><strong>\u6d4b\u8bd5\u987a\u5e8f\uff08FMS \u5b98\u65b9\u89c4\u8303\uff09\uff1a<\/strong><\/p>\n        <div class=\"test-sequence\">\n          <div class=\"test-step\"><span class=\"test-step-number\">1<\/span>\u53f3\u524d\u5411<\/div>\n          <div class=\"test-step\"><span class=\"test-step-number\">2<\/span>\u5de6\u524d\u5411<\/div>\n          <div class=\"test-step\"><span class=\"test-step-number\">3<\/span>\u53f3\u540e\u5185\u4fa7<\/div>\n          <div class=\"test-step\"><span class=\"test-step-number\">4<\/span>\u5de6\u540e\u5185\u4fa7<\/div>\n          <div class=\"test-step\"><span class=\"test-step-number\">5<\/span>\u53f3\u540e\u5916\u4fa7<\/div>\n          <div class=\"test-step\"><span class=\"test-step-number\">6<\/span>\u5de6\u540e\u5916\u4fa7<\/div>\n        <\/div>\n        <p class=\"mt14\"><strong>\u6ce8\u610f\uff1a<\/strong>\u6bcf\u4e2a\u65b9\u5411\u8fdb\u884c 3 \u6b21\u5c1d\u8bd5\uff0c\u8bb0\u5f55\u6700\u5927\u8ddd\u79bb\uff08\u975e\u5e73\u5747\u503c\uff09\uff0c\u8ddd\u79bb\u6d4b\u91cf\u5230\u6700\u8fd1 0.5 \u5398\u7c73\u3002<\/p>\n      <\/div>\n      <div class=\"warning-box\">\n        <p><strong>\u6d4b\u8bd5\u5931\u8d25\u6761\u4ef6\uff08\u4efb\u4f55\u4e00\u9879\u5c06\u5bfc\u81f4\u672c\u6b21\u5c1d\u8bd5\u65e0\u6548\uff09\uff1a<\/strong><\/p>\n        <ul>\n          <li>\u8e22\u63a8\u7bb1<\/li>\n          <li>\u672a\u53d7\u63a7\u8fd4\u56de\u8d77\u59cb\u4f4d\u7f6e<\/li>\n          <li>\u89e6\u5730<\/li>\n          <li>\u6d4b\u8bd5\u811a\u4ece\u7ad9\u7acb\u677f\u4e0a\u79fb\u5f00<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"accordion\">\n        <div class=\"accordion-header\" id=\"thresholdHeader\">\u67e5\u770b\u8bc4\u4f30\u6807\u51c6<i class=\"fa-chevron-down\"><\/i><\/div>\n        <div class=\"accordion-content\" id=\"thresholdContent\">\n          <p><strong>\u6839\u636e FMS \u5b98\u65b9\u6807\u51c6\uff1a<\/strong><\/p>\n          <ul>\n            <li><strong>\u524d\u5411\u4e0d\u5bf9\u79f0\uff1a<\/strong>&gt; 4 cm\uff08\u5371\u9669\u4fe1\u53f7\uff09<\/li>\n            <li><strong>\u540e\u5185\u4fa7 \/ \u540e\u5916\u4fa7\u4e0d\u5bf9\u79f0\uff1a<\/strong>&gt; 6 cm\uff08\u5371\u9669\u4fe1\u53f7\uff09<\/li>\n            <li><strong>\u590d\u5408\u5206\u6570\u9608\u503c\uff08\u53c2\u8003\uff09\uff1a<\/strong>\n              <ul>\n                <li>\u9ad8\u4e2d\u7bee\u7403\u8fd0\u52a8\u5458\uff1a94%<\/li>\n                <li>\u5927\u5b66\u8db3\u7403\u8fd0\u52a8\u5458\uff1a89.6%<\/li>\n                <li>\u5927\u5b66\u8fd0\u52a8\u5458\uff1a\u9700\u6839\u636e\u8fd0\u52a8\u9879\u76ee\u3001\u6027\u522b\u3001\u5e74\u9f84\u8c03\u6574<\/li>\n              <\/ul>\n            <\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n      <div class=\"field mt14\">\n        <label for=\"compositeThreshold\">\u81ea\u5b9a\u4e49\u590d\u5408\u5206\u6570\u9608\u503c\uff08%\uff09<\/label>\n        <input type=\"number\" id=\"compositeThreshold\" min=\"0\" max=\"150\" step=\"0.1\" value=\"94\" placeholder=\"\u8f93\u5165\u9608\u503c\u767e\u5206\u6bd4\">\n        <p class=\"hint\">\u6ce8\uff1a\u4e0d\u540c\u4eba\u7fa4\u9608\u503c\u4e0d\u540c\u3002\u9ad8\u4e2d\u7bee\u7403\u8fd0\u52a8\u5458\u4e3a 94%\uff0c\u5927\u5b66\u8db3\u7403\u8fd0\u52a8\u5458\u4e3a 89.6%\u3002<\/p>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">04<\/span>\u6d4b\u8bd5\u6570\u636e\u5f55\u5165<\/h2>\n<div class=\"leg-block\"><div class=\"grp-title\">\u53f3\u817f \u00b7 \u6d4b\u8bd5\u6570\u636e\uff08cm\uff09<\/div><div class=\"dir-head\"><span><\/span><div class=\"cols\"><span>\u5c1d\u8bd5 1<\/span><span>\u5c1d\u8bd5 2<\/span><span>\u5c1d\u8bd5 3<\/span><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u524d\u5411<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"ra1\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"ra2\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"ra3\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u540e\u5185\u4fa7<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"rpm1\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"rpm2\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"rpm3\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u540e\u5916\u4fa7<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"rpl1\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"rpl2\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"rpl3\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><\/div><\/div><\/div>\n<div class=\"leg-block\"><div class=\"grp-title\">\u5de6\u817f \u00b7 \u6d4b\u8bd5\u6570\u636e\uff08cm\uff09<\/div><div class=\"dir-head\"><span><\/span><div class=\"cols\"><span>\u5c1d\u8bd5 1<\/span><span>\u5c1d\u8bd5 2<\/span><span>\u5c1d\u8bd5 3<\/span><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u524d\u5411<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"la1\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"la2\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"la3\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u540e\u5185\u4fa7<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"lpm1\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"lpm2\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"lpm3\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u540e\u5916\u4fa7<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"lpl1\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"lpl2\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><input type=\"number\" id=\"lpl3\" min=\"0\" step=\"0.5\" placeholder=\"0.0\"><\/div><\/div><\/div>\n      <div class=\"btn-row\">\n        <button class=\"btn\" id=\"calculateBtn\">\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c<\/button>\n        <button class=\"btn-reset\" id=\"resetBtn\">\u91cd\u7f6e\u8868\u5355<\/button>\n      <\/div>\n    <\/section>\n    <section class=\"sec results-container\" id=\"resultsContainer\">\n      <div class=\"results-header\">\n        <h2 class=\"results-title\"><span class=\"sec-num\">05<\/span>\u6d4b\u8bd5\u7ed3\u679c<\/h2>\n        <div class=\"results-actions\">\n          <button class=\"btn-secondary\" id=\"exportBtn\">\u5bfc\u51fa\u7ed3\u679c<\/button>\n          <button class=\"btn-success\" id=\"saveBtn\">\u4fdd\u5b58\u7ed3\u679c<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"results-grid\">\n        <div class=\"result-card\"><div class=\"result-label\">\u53f3\u817f\u590d\u5408\u5206\u6570<\/div><div class=\"result-value\" id=\"rightComposite\">0.0<\/div><div class=\"result-label\">% \u80a2\u4f53\u957f\u5ea6<\/div><\/div>\n        <div class=\"result-card\"><div class=\"result-label\">\u5de6\u817f\u590d\u5408\u5206\u6570<\/div><div class=\"result-value\" id=\"leftComposite\">0.0<\/div><div class=\"result-label\">% \u80a2\u4f53\u957f\u5ea6<\/div><\/div>\n        <div class=\"result-card\"><div class=\"result-label\">\u524d\u5411\u4e0d\u5bf9\u79f0<\/div><div class=\"result-value\" id=\"anteriorAsymmetry\">0.0<\/div><div class=\"result-label\">\u5398\u7c73<\/div><\/div>\n        <div class=\"result-card\"><div class=\"result-label\">\u6700\u5927\u4e0d\u5bf9\u79f0<\/div><div class=\"result-value\" id=\"maxAsymmetry\">0.0<\/div><div class=\"result-label\">\u5398\u7c73<\/div><\/div>\n      <\/div>\n      <h3 class=\"grp-title mt-20\">\u8be6\u7ec6\u7ed3\u679c\u8868<\/h3>\n      <div class=\"tbl-wrap\">\n        <table class=\"results-table\">\n          <thead>\n            <tr><th>\u65b9\u5411<\/th><th>\u53f3\u817f\uff08cm\uff09<\/th><th>\u5de6\u817f\uff08cm\uff09<\/th><th>\u5dee\u5f02\uff08cm\uff09<\/th><th>\u6807\u51c6<\/th><\/tr>\n          <\/thead>\n          <tbody>\n            <tr><td>\u524d\u5411<\/td><td id=\"rightAnteriorMax\">0.0<\/td><td id=\"leftAnteriorMax\">0.0<\/td><td id=\"anteriorDiff\">0.0<\/td><td id=\"anteriorStandard\">-<\/td><\/tr>\n            <tr><td>\u540e\u5185\u4fa7<\/td><td id=\"rightPosteromedialMax\">0.0<\/td><td id=\"leftPosteromedialMax\">0.0<\/td><td id=\"posteromedialDiff\">0.0<\/td><td id=\"posteromedialStandard\">-<\/td><\/tr>\n            <tr><td>\u540e\u5916\u4fa7<\/td><td id=\"rightPosterolateralMax\">0.0<\/td><td id=\"leftPosterolateralMax\">0.0<\/td><td id=\"posterolateralDiff\">0.0<\/td><td id=\"posterolateralStandard\">-<\/td><\/tr>\n            <tr><td><strong>\u590d\u5408\u5206\u6570<\/strong><\/td><td id=\"rightCompositeScore\">0.0%<\/td><td id=\"leftCompositeScore\">0.0%<\/td><td>-<\/td><td id=\"compositeStandard\">-<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n      <\/div>\n      <div id=\"asymmetryAlert\" class=\"danger-box\" style=\"display: none;\">\n        <p><strong>\u6ce8\u610f\uff1a<\/strong>\u68c0\u6d4b\u5230\u663e\u8457\u7684\u529f\u80fd\u4e0d\u5bf9\u79f0\u3002\u524d\u5411\u4e0d\u5bf9\u79f0 &gt; 4 cm \u6216\u540e\u5185\u4fa7 \/ \u540e\u5916\u4fa7\u4e0d\u5bf9\u79f0 &gt; 6 cm\uff0c\u53ef\u80fd\u5b58\u5728\u53d7\u4f24\u98ce\u9669\u589e\u52a0\u3002<\/p>\n      <\/div>\n      <div id=\"compositeAlert\" class=\"danger-box\" style=\"display: none;\">\n        <p><strong>\u8b66\u544a\uff1a<\/strong>\u590d\u5408\u5206\u6570\u4f4e\u4e8e\u9608\u503c\u3002\u6839\u636e\u7814\u7a76\uff0c\u8fd9\u53ef\u80fd\u589e\u52a0\u4e0b\u80a2\u53d7\u4f24\u98ce\u9669\u3002<\/p>\n      <\/div>\n      <div class=\"accordion\">\n        <div class=\"accordion-header\" id=\"recommendationHeader\">\u67e5\u770b\u5efa\u8bae\u4e0e\u89e3\u91ca<i class=\"fa-chevron-down\"><\/i><\/div>\n        <div class=\"accordion-content\" id=\"recommendationContent\">\n          <div id=\"recommendations\">\n            <p>\u6839\u636e\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5efa\u8bae\uff1a<\/p>\n            <ul><li>\u5b8c\u6210\u6d4b\u8bd5\u8ba1\u7b97\u4ee5\u83b7\u53d6\u4e2a\u6027\u5316\u5efa\u8bae<\/li><\/ul>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">06<\/span>\u62a5\u544a\u5bfc\u51fa<\/h2>\n      <div class=\"info-box\">\n        <p><strong>\u4e2a\u4eba\u62a5\u544a\u5bfc\u51fa\uff1a<\/strong>\u5c06\u6d4b\u8bd5\u7ed3\u679c\u5bfc\u51fa\u4e3a\u9ad8\u8d28\u91cf PNG \u56fe\u7247\uff0c\u53ef\u7528\u4e8e\u6253\u5370\u3001\u5b58\u6863\u6216\u5206\u4eab\u3002<\/p>\n      <\/div>\n      <div class=\"field\">\n        <label for=\"reportTitle\">\u62a5\u544a\u6807\u9898<\/label>\n        <input type=\"text\" id=\"reportTitle\" placeholder=\"\u8f93\u5165\u62a5\u544a\u6807\u9898\" value=\"\u4e0b\u80a2Y-Balance\u6d4b\u8bd5\u62a5\u544a\">\n      <\/div>\n      <div class=\"field mt14\">\n        <label for=\"reportNotes\">\u5907\u6ce8\u4fe1\u606f<\/label>\n        <textarea id=\"reportNotes\" rows=\"4\" placeholder=\"\u8f93\u5165\u6d4b\u8bd5\u5907\u6ce8\u3001\u89c2\u5bdf\u7ed3\u679c\u6216\u4e2a\u6027\u5316\u5efa\u8bae...\"><\/textarea>\n      <\/div>\n      <div class=\"mt14\">\n        <button class=\"btn-info\" id=\"exportImageBtn\">\u5bfc\u51fa\u4e2a\u4eba\u62a5\u544a\u4e3a\u56fe\u7247<\/button>\n      <\/div>\n      <div class=\"warning-box mt14\">\n        <p><strong>\u63d0\u793a\uff1a<\/strong>\u62a5\u544a\u5bfc\u51fa\u9700\u5148\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c\u3002\u8bf7\u786e\u8ba4\u6d4b\u8bd5\u6570\u636e\u5df2\u586b\u5199\uff0c\u5e76\u5df2\u70b9\u51fb\u300c\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c\u300d\u3002<\/p>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">07<\/span>\u6570\u636e\u7ba1\u7406\u4e0e\u7edf\u8ba1<\/h2>\n      <div class=\"info-box\">\n        <p><strong>\u6570\u636e\u7ba1\u7406\uff1a<\/strong>\u6240\u6709\u6d4b\u8bd5\u6570\u636e\u4fdd\u5b58\u5728\u60a8\u7684\u6d4f\u89c8\u5668\u672c\u5730\u5b58\u50a8\u4e2d\uff0c\u4e0d\u4f1a\u4e0a\u4f20\u5230\u4efb\u4f55\u670d\u52a1\u5668\u3002\u60a8\u53ef\u968f\u65f6\u5bfc\u51fa\u5907\u4efd\u6216\u5bfc\u5165\u6b64\u524d\u4fdd\u5b58\u7684\u6570\u636e\u3002<\/p>\n      <\/div>\n      <div class=\"grid-2\">\n        <div class=\"field\"><label for=\"searchName\">\u6309\u59d3\u540d\u641c\u7d22<\/label><input type=\"text\" id=\"searchName\" placeholder=\"\u8f93\u5165\u59d3\u540d\u641c\u7d22\u8bb0\u5f55\"><\/div>\n        <div class=\"field\"><label for=\"searchDate\">\u6309\u65e5\u671f\u7b5b\u9009<\/label><input type=\"date\" id=\"searchDate\"><\/div>\n      <\/div>\n      <div class=\"d-flex gap-10 flex-wrap mt14\">\n        <button class=\"btn-secondary\" id=\"loadHistoryBtn\">\u52a0\u8f7d\u5386\u53f2\u8bb0\u5f55<\/button>\n        <button class=\"btn-info\" id=\"analyzeBtn\">\u8fd0\u884c\u7edf\u8ba1\u5206\u6790<\/button>\n        <button class=\"btn-success\" id=\"exportAllBtn\">\u5bfc\u51fa\u6240\u6709\u6570\u636e<\/button>\n        <button class=\"btn-danger\" id=\"clearAllBtn\">\u6e05\u7a7a\u6240\u6709\u6570\u636e<\/button>\n      <\/div>\n      <div class=\"field mt-20\">\n        <label for=\"importFile\">\u5bfc\u5165\u6570\u636e\u6587\u4ef6\uff08.json\uff09<\/label>\n        <input type=\"file\" id=\"importFile\" accept=\".json\">\n        <div class=\"mt-10\"><button class=\"btn-secondary\" id=\"importBtn\">\u5bfc\u5165\u6570\u636e<\/button><\/div>\n      <\/div>\n      <div id=\"historyContainer\" class=\"mt-20\" style=\"display: none;\">\n        <h3 class=\"grp-title\">\u5386\u53f2\u8bb0\u5f55\uff08<span id=\"recordCount\">0<\/span> \u6761\uff09<\/h3>\n        <div class=\"history-table-container\">\n          <table class=\"history-table\" id=\"historyTable\">\n            <thead>\n              <tr>\n                <th>\u59d3\u540d<\/th><th>\u65e5\u671f<\/th><th>\u5e74\u9f84<\/th><th>\u6027\u522b<\/th><th>\u8fd0\u52a8\u7c7b\u578b<\/th>\n                <th>\u53f3\u590d\u5408\u5206<\/th><th>\u5de6\u590d\u5408\u5206<\/th><th>\u524d\u5411\u4e0d\u5bf9\u79f0<\/th><th>\u98ce\u9669\u7b49\u7ea7<\/th><th>\u64cd\u4f5c<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"historyTableBody\"><\/tbody>\n          <\/table>\n        <\/div>\n      <\/div>\n      <div id=\"statsContainer\" class=\"stats-container\" style=\"display: none;\">\n        <h3>\u7edf\u8ba1\u5206\u6790\u7ed3\u679c<\/h3>\n        <div id=\"statsContent\"><\/div>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">08<\/span>\u5feb\u901f\u793a\u4f8b<\/h2>\n      <p>\u70b9\u51fb\u4e0b\u65b9\u6309\u94ae\u586b\u5145\u4e00\u4efd\u793a\u4f8b\u6570\u636e\uff0c\u7528\u4e8e\u4f53\u9a8c\u5b8c\u6574\u8ba1\u7b97\u4e0e\u62a5\u544a\u5bfc\u51fa\u6d41\u7a0b\u3002<\/p>\n      <div class=\"mt14\"><button class=\"btn-secondary\" id=\"fillSampleBtn\">\u586b\u5145\u793a\u4f8b\u6570\u636e<\/button><\/div>\n    <\/section>\n  <\/div>\n  <div class=\"ybt-foot\">\n    <p>\u00a9 2023 \u4e0b\u80a2 Y-Balance \u6d4b\u8bd5\u8ba1\u7b97\u5668 \u00b7 \u57fa\u4e8e\u529f\u80fd\u6027\u8fd0\u52a8\u7cfb\u7edf\uff08FMS\uff09\u5b98\u65b9\u89c4\u8303<\/p>\n    <p>\u4ec5\u4f9b\u4e13\u4e1a\u533b\u7597\u4eba\u5458\u4f7f\u7528\u3002\u672c\u5de5\u5177\u4ec5\u4f5c\u8f85\u52a9\u8bc4\u4f30\uff0c\u4e0d\u80fd\u66ff\u4ee3\u4e13\u4e1a\u533b\u7597\u8bca\u65ad\u3002<\/p>\n    <p>\u53c2\u8003\uff1aFunctional Movement Systems, Gray Cook &amp; Phil Plisky. <em>Y Balance Test Manual<\/em>.<\/p>\n    <p><a href=\"https:\/\/www.funpt.cn\/?page_id=1891\">\u4e0a\u80a2 Y-Balance \u6d4b\u8bd5<\/a><\/p>\n  <\/div>\n<\/div>\n<div id=\"reportForExport\" class=\"report-container\"><\/div>\n<div id=\"loadingOverlay\" class=\"loading-overlay\" style=\"display: none;\">\n  <div class=\"loading-spinner\"><\/div>\n  <p>\u6b63\u5728\u751f\u6210\u62a5\u544a\u56fe\u7247...<\/p>\n<\/div>\n<script>\/\/ \u8bbe\u7f6e\u9ed8\u8ba4\u6d4b\u8bd5\u65e5\u671f\u4e3a\u4eca\u5929\n        document.getElementById('testDate').valueAsDate = new Date();\n        \/\/ \u6298\u53e0\u9762\u677f\u529f\u80fd\n        document.getElementById('thresholdHeader').addEventListener('click', function() {\n            const content = document.getElementById('thresholdContent');\n            const icon = this.querySelector('i');\n            content.classList.toggle('active');\n            this.classList.toggle('active');\n            if (content.classList.contains('active')) {\n                icon.classList.remove('fa-chevron-down');\n                icon.classList.add('fa-chevron-up');\n            } else {\n                icon.classList.remove('fa-chevron-up');\n                icon.classList.add('fa-chevron-down');\n            }\n        });\n        document.getElementById('recommendationHeader').addEventListener('click', function() {\n            const content = document.getElementById('recommendationContent');\n            const icon = this.querySelector('i');\n            content.classList.toggle('active');\n            this.classList.toggle('active');\n            if (content.classList.contains('active')) {\n                icon.classList.remove('fa-chevron-down');\n                icon.classList.add('fa-chevron-up');\n            } else {\n                icon.classList.remove('fa-chevron-up');\n                icon.classList.add('fa-chevron-down');\n            }\n        });\n        \/\/ \u8ba1\u7b97\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('calculateBtn').addEventListener('click', calculateResults);\n        \/\/ \u91cd\u7f6e\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('resetBtn').addEventListener('click', function() {\n            if (confirm(\"\u786e\u5b9a\u8981\u91cd\u7f6e\u6240\u6709\u6d4b\u8bd5\u6570\u636e\u5417\uff1f\")) {\n                resetForm();\n            }\n        });\n        \/\/ \u5bfc\u51fa\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('exportBtn').addEventListener('click', exportResults);\n        \/\/ \u4fdd\u5b58\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('saveBtn').addEventListener('click', saveTestResult);\n        \/\/ \u5bfc\u51fa\u56fe\u7247\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('exportImageBtn').addEventListener('click', exportReportToImage);\n        \/\/ \u793a\u4f8b\u6570\u636e\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('fillSampleBtn').addEventListener('click', fillSampleData);\n        \/\/ \u5386\u53f2\u8bb0\u5f55\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('loadHistoryBtn').addEventListener('click', loadHistoryRecords);\n        \/\/ \u7edf\u8ba1\u5206\u6790\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('analyzeBtn').addEventListener('click', performStatisticalAnalysis);\n        \/\/ \u5bfc\u51fa\u6240\u6709\u6570\u636e\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('exportAllBtn').addEventListener('click', exportAllData);\n        \/\/ \u6e05\u7a7a\u6240\u6709\u6570\u636e\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('clearAllBtn').addEventListener('click', function() {\n            if (confirm(\"\u786e\u5b9a\u8981\u6e05\u7a7a\u6240\u6709\u4fdd\u5b58\u7684\u6570\u636e\u5417\uff1f\u6b64\u64cd\u4f5c\u4e0d\u53ef\u64a4\u9500\uff01\")) {\n                clearAllRecords();\n            }\n        });\n        \/\/ \u5bfc\u5165\u6570\u636e\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('importBtn').addEventListener('click', importDataFromFile);\n        \/\/ \u641c\u7d22\u529f\u80fd\n        document.getElementById('searchName').addEventListener('input', loadHistoryRecords);\n        document.getElementById('searchDate').addEventListener('change', loadHistoryRecords);\n        \/\/ \u83dc\u5355\u5207\u6362\u6309\u94ae\uff08\u79fb\u52a8\u7aef\uff09\n        document.getElementById('menuToggle').addEventListener('click', function() {\n            alert(\"\u79fb\u52a8\u7aef\u83dc\u5355\u529f\u80fd\uff08\u793a\u4f8b\uff09\");\n        });\n        \/\/ \u5168\u5c40\u53d8\u91cf\u7528\u4e8e\u5b58\u50a8\u5f53\u524d\u8ba1\u7b97\u7ed3\u679c\n        let currentResult = null;\n        \/\/ \u8ba1\u7b97YBT\u7ed3\u679c\n        function calculateResults() {\n            \/\/ \u83b7\u53d6\u53d7\u8bd5\u8005\u4fe1\u606f\n            const subjectName = document.getElementById('subjectName').value;\n            const testDate = document.getElementById('testDate').value;\n            const age = document.getElementById('age').value;\n            const gender = document.getElementById('gender').value;\n            const sportActivity = document.getElementById('sportActivity').value;\n            const rightLegLength = parseFloat(document.getElementById('rightLegLength').value);\n            const leftLegLength = parseFloat(document.getElementById('leftLegLength').value);\n            const compositeThreshold = parseFloat(document.getElementById('compositeThreshold').value);\n            \/\/ \u9a8c\u8bc1\u8f93\u5165\n            if (!subjectName) {\n                alert(\"\u8bf7\u8f93\u5165\u53d7\u8bd5\u8005\u59d3\u540d\");\n                return;\n            }\n            if (isNaN(rightLegLength) || isNaN(leftLegLength) || rightLegLength <= 0 || leftLegLength <= 0) {\n                alert(\"\u8bf7\u8f93\u5165\u6709\u6548\u7684\u4e0b\u80a2\u80a2\u4f53\u957f\u5ea6\uff08\u6b63\u6570\uff09\");\n                return;\n            }\n            \/\/ \u8ba1\u7b97\u6bcf\u4e2a\u65b9\u5411\u7684\u6700\u5927\u503c\n            const rightAnterior = Math.max(\n                parseFloat(document.getElementById('ra1').value) || 0,\n                parseFloat(document.getElementById('ra2').value) || 0,\n                parseFloat(document.getElementById('ra3').value) || 0\n            );\n            const rightPosteromedial = Math.max(\n                parseFloat(document.getElementById('rpm1').value) || 0,\n                parseFloat(document.getElementById('rpm2').value) || 0,\n                parseFloat(document.getElementById('rpm3').value) || 0\n            );\n            const rightPosterolateral = Math.max(\n                parseFloat(document.getElementById('rpl1').value) || 0,\n                parseFloat(document.getElementById('rpl2').value) || 0,\n                parseFloat(document.getElementById('rpl3').value) || 0\n            );\n            const leftAnterior = Math.max(\n                parseFloat(document.getElementById('la1').value) || 0,\n                parseFloat(document.getElementById('la2').value) || 0,\n                parseFloat(document.getElementById('la3').value) || 0\n            );\n            const leftPosteromedial = Math.max(\n                parseFloat(document.getElementById('lpm1').value) || 0,\n                parseFloat(document.getElementById('lpm2').value) || 0,\n                parseFloat(document.getElementById('lpm3').value) || 0\n            );\n            const leftPosterolateral = Math.max(\n                parseFloat(document.getElementById('lpl1').value) || 0,\n                parseFloat(document.getElementById('lpl2').value) || 0,\n                parseFloat(document.getElementById('lpl3').value) || 0\n            );\n            \/\/ \u9a8c\u8bc1\u6d4b\u8bd5\u6570\u636e\n            if (rightAnterior === 0 && rightPosteromedial === 0 && rightPosterolateral === 0) {\n                alert(\"\u8bf7\u81f3\u5c11\u8f93\u5165\u4e00\u4e2a\u65b9\u5411\u7684\u6d4b\u8bd5\u6570\u636e\");\n                return;\n            }\n            \/\/ \u8ba1\u7b97\u603b\u548c\n            const rightTotal = rightAnterior + rightPosteromedial + rightPosterolateral;\n            const leftTotal = leftAnterior + leftPosteromedial + leftPosterolateral;\n            \/\/ \u8ba1\u7b97\u590d\u5408\u5206\u6570\uff08\u767e\u5206\u6bd4\uff09\n            const rightComposite = (rightTotal \/ (3 * rightLegLength)) * 100;\n            const leftComposite = (leftTotal \/ (3 * leftLegLength)) * 100;\n            \/\/ \u8ba1\u7b97\u4e0d\u5bf9\u79f0\u6027\n            const anteriorDiff = Math.abs(rightAnterior - leftAnterior);\n            const posteromedialDiff = Math.abs(rightPosteromedial - leftPosteromedial);\n            const posterolateralDiff = Math.abs(rightPosterolateral - leftPosterolateral);\n            const maxAsymmetry = Math.max(anteriorDiff, posteromedialDiff, posterolateralDiff);\n            \/\/ \u8bc4\u4f30\u6807\u51c6\n            const anteriorStandard = anteriorDiff <= 4 ? \"optimal\" : (anteriorDiff > 4 && anteriorDiff <= 6 ? \"pass\" : \"below\");\n            const posteromedialStandard = posteromedialDiff <= 6 ? \"optimal\" : \"below\";\n            const posterolateralStandard = posterolateralDiff <= 6 ? \"optimal\" : \"below\";\n            const rightCompositeStandard = rightComposite >= compositeThreshold ? \"optimal\" : \"below\";\n            const leftCompositeStandard = leftComposite >= compositeThreshold ? \"optimal\" : \"below\";\n            const compositeStandard = rightComposite >= compositeThreshold && leftComposite >= compositeThreshold ? \"optimal\" : \"below\";\n            \/\/ \u66f4\u65b0\u7ed3\u679c\u663e\u793a\n            document.getElementById('rightComposite').textContent = rightComposite.toFixed(1);\n            document.getElementById('leftComposite').textContent = leftComposite.toFixed(1);\n            document.getElementById('anteriorAsymmetry').textContent = anteriorDiff.toFixed(1);\n            document.getElementById('maxAsymmetry').textContent = maxAsymmetry.toFixed(1);\n            \/\/ \u66f4\u65b0\u8be6\u7ec6\u6570\u636e\n            document.getElementById('rightAnteriorMax').textContent = rightAnterior.toFixed(1);\n            document.getElementById('rightPosteromedialMax').textContent = rightPosteromedial.toFixed(1);\n            document.getElementById('rightPosterolateralMax').textContent = rightPosterolateral.toFixed(1);\n            document.getElementById('leftAnteriorMax').textContent = leftAnterior.toFixed(1);\n            document.getElementById('leftPosteromedialMax').textContent = leftPosteromedial.toFixed(1);\n            document.getElementById('leftPosterolateralMax').textContent = leftPosterolateral.toFixed(1);\n            document.getElementById('anteriorDiff').textContent = anteriorDiff.toFixed(1);\n            document.getElementById('posteromedialDiff').textContent = posteromedialDiff.toFixed(1);\n            document.getElementById('posterolateralDiff').textContent = posterolateralDiff.toFixed(1);\n            document.getElementById('rightCompositeScore').textContent = rightComposite.toFixed(1) + \"%\";\n            document.getElementById('leftCompositeScore').textContent = leftComposite.toFixed(1) + \"%\";\n            \/\/ \u66f4\u65b0\u6807\u51c6\u8bc4\u4f30\n            document.getElementById('anteriorStandard').innerHTML = getStandardHTML(anteriorStandard);\n            document.getElementById('posteromedialStandard').innerHTML = getStandardHTML(posteromedialStandard);\n            document.getElementById('posterolateralStandard').innerHTML = getStandardHTML(posterolateralStandard);\n            document.getElementById('compositeStandard').innerHTML = getStandardHTML(compositeStandard);\n            \/\/ \u663e\u793a\u4e0d\u5bf9\u79f0\u6027\u8b66\u544a\n            const asymmetryAlert = document.getElementById('asymmetryAlert');\n            const compositeAlert = document.getElementById('compositeAlert');\n            if (anteriorDiff > 4 || posteromedialDiff > 6 || posterolateralDiff > 6) {\n                asymmetryAlert.style.display = 'block';\n            } else {\n                asymmetryAlert.style.display = 'none';\n            }\n            if (rightComposite < compositeThreshold || leftComposite < compositeThreshold) {\n                compositeAlert.style.display = 'block';\n            } else {\n                compositeAlert.style.display = 'none';\n            }\n            \/\/ \u663e\u793a\u7ed3\u679c\u5bb9\u5668\n            document.getElementById('resultsContainer').style.display = 'block';\n            \/\/ \u751f\u6210\u5efa\u8bae\n            generateRecommendations(rightComposite, leftComposite, anteriorDiff, compositeThreshold);\n            \/\/ \u4fdd\u5b58\u5f53\u524d\u8ba1\u7b97\u7ed3\u679c\u5230\u5168\u5c40\u53d8\u91cf\n            currentResult = {\n                subjectName,\n                testDate,\n                age,\n                gender,\n                sportActivity,\n                rightLegLength,\n                leftLegLength,\n                compositeThreshold,\n                rightAnterior,\n                rightPosteromedial,\n                rightPosterolateral,\n                leftAnterior,\n                leftPosteromedial,\n                leftPosterolateral,\n                rightComposite,\n                leftComposite,\n                anteriorDiff,\n                posteromedialDiff,\n                posterolateralDiff,\n                maxAsymmetry,\n                anteriorStandard,\n                posteromedialStandard,\n                posterolateralStandard,\n                compositeStandard,\n                timestamp: new Date().getTime(),\n                id: 'result_' + new Date().getTime() + '_' + Math.random().toString(36).substr(2, 9)\n            };\n            \/\/ \u6eda\u52a8\u5230\u7ed3\u679c\u533a\u57df\n            document.getElementById('resultsContainer').scrollIntoView({ behavior: 'smooth' });\n        }\n        \/\/ \u83b7\u53d6\u6807\u51c6HTML\n        function getStandardHTML(standard) {\n            switch(standard) {\n                case \"optimal\":\n                    return '<span class=\"standard-optimal\">\u4f18\u79c0<\/span>';\n                case \"pass\":\n                    return '<span class=\"standard-pass\">\u5408\u683c<\/span>';\n                case \"below\":\n                    return '<span class=\"standard-below\">\u9700\u6539\u8fdb<\/span>';\n                default:\n                    return \"-\";\n            }\n        }\n        \/\/ \u751f\u6210\u5efa\u8bae\n        function generateRecommendations(rightComposite, leftComposite, anteriorDiff, threshold) {\n            const recommendations = document.getElementById('recommendations');\n            let recommendationHTML = \"<p>\u6839\u636e\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5efa\u8bae\uff1a<\/p><ul>\";\n            if (anteriorDiff > 4) {\n                recommendationHTML += \"<li>\u8fdb\u884c\u524d\u5411\u4e0d\u5bf9\u79f0\u6027\u7684\u9488\u5bf9\u6027\u8bad\u7ec3\uff0c\u6539\u5584\u52a8\u6001\u5e73\u8861<\/li>\";\n            }\n            if (rightComposite < threshold || leftComposite < threshold) {\n                recommendationHTML += `<li>\u8fdb\u884c\u4e0b\u80a2\u529b\u91cf\u3001\u67d4\u97e7\u6027\u548c\u6838\u5fc3\u7a33\u5b9a\u6027\u8bad\u7ec3\u4ee5\u63d0\u9ad8\u590d\u5408\u5206\u6570\uff08\u76ee\u6807\u2265${threshold}%\uff09<\/li>`;\n            }\n            if (anteriorDiff <= 4 && rightComposite >= threshold && leftComposite >= threshold) {\n                recommendationHTML += \"<li>\u4e0b\u80a2\u529f\u80fd\u826f\u597d\uff0c\u5efa\u8bae\u7ef4\u6301\u5f53\u524d\u8bad\u7ec3\u8ba1\u5212<\/li>\";\n            }\n            if (anteriorDiff > 4 || rightComposite < threshold || leftComposite < threshold) {\n                recommendationHTML += \"<li>\u8003\u8651\u7ed3\u5408\u529f\u80fd\u6027\u52a8\u4f5c\u7b5b\u67e5(FMS)\u8fdb\u884c\u66f4\u5168\u9762\u7684\u8bc4\u4f30<\/li>\";\n                recommendationHTML += \"<li>\u5982\u6709\u6301\u7eed\u75bc\u75db\u6216\u529f\u80fd\u9650\u5236\uff0c\u5efa\u8bae\u54a8\u8be2\u7269\u7406\u6cbb\u7597\u5e08\u6216\u8fd0\u52a8\u533b\u5b66\u4e13\u5bb6<\/li>\";\n            }\n            recommendationHTML += \"<\/ul>\";\n            recommendations.innerHTML = recommendationHTML;\n            \/\/ \u786e\u4fdd\u5efa\u8bae\u9762\u677f\u5c55\u5f00\n            document.getElementById('recommendationContent').classList.add('active');\n            document.getElementById('recommendationHeader').classList.add('active');\n            document.getElementById('recommendationHeader').querySelector('i').classList.remove('fa-chevron-down');\n            document.getElementById('recommendationHeader').querySelector('i').classList.add('fa-chevron-up');\n        }\n        \/\/ \u4fdd\u5b58\u6d4b\u8bd5\u7ed3\u679c\u5230\u672c\u5730\u5b58\u50a8\n        function saveTestResult() {\n            if (!currentResult) {\n                alert(\"\u8bf7\u5148\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c\uff0c\u7136\u540e\u518d\u4fdd\u5b58\");\n                return;\n            }\n            \/\/ \u4ecelocalStorage\u83b7\u53d6\u73b0\u6709\u8bb0\u5f55\n            let records = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n            \/\/ \u6dfb\u52a0\u5f53\u524d\u8bb0\u5f55\n            records.push(currentResult);\n            \/\/ \u4fdd\u5b58\u56delocalStorage\n            localStorage.setItem('ybtRecords', JSON.stringify(records));\n            \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\n            alert(`\u6d4b\u8bd5\u7ed3\u679c\u5df2\u4fdd\u5b58\uff01\u5f53\u524d\u5171\u6709 ${records.length} \u6761\u8bb0\u5f55\u3002`);\n            \/\/ \u91cd\u65b0\u52a0\u8f7d\u5386\u53f2\u8bb0\u5f55\n            loadHistoryRecords();\n            \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\u6846\n            const resultsContainer = document.getElementById('resultsContainer');\n            const successBox = document.createElement('div');\n            successBox.className = 'success-box';\n            successBox.innerHTML = '<strong>\u6210\u529f!<\/strong> \u6d4b\u8bd5\u7ed3\u679c\u5df2\u4fdd\u5b58\u5230\u672c\u5730\u5b58\u50a8\u3002';\n            resultsContainer.insertBefore(successBox, resultsContainer.firstChild);\n            \/\/ 3\u79d2\u540e\u79fb\u9664\u6210\u529f\u6d88\u606f\n            setTimeout(() => {\n                if (successBox.parentNode) {\n                    successBox.parentNode.removeChild(successBox);\n                }\n            }, 3000);\n        }\n        \/\/ \u52a0\u8f7d\u5386\u53f2\u8bb0\u5f55\n        function loadHistoryRecords() {\n            const searchName = document.getElementById('searchName').value.toLowerCase();\n            const searchDate = document.getElementById('searchDate').value;\n            \/\/ \u4ecelocalStorage\u83b7\u53d6\u8bb0\u5f55\n            let records = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n            \/\/ \u7b5b\u9009\u8bb0\u5f55\n            let filteredRecords = records;\n            if (searchName) {\n                filteredRecords = filteredRecords.filter(record => \n                    record.subjectName && record.subjectName.toLowerCase().includes(searchName)\n                );\n            }\n            if (searchDate) {\n                filteredRecords = filteredRecords.filter(record => \n                    record.testDate === searchDate\n                );\n            }\n            \/\/ \u66f4\u65b0\u8bb0\u5f55\u6570\u91cf\n            document.getElementById('recordCount').textContent = filteredRecords.length;\n            \/\/ \u6e05\u7a7a\u8868\u683c\u5185\u5bb9\n            const tableBody = document.getElementById('historyTableBody');\n            tableBody.innerHTML = '';\n            if (filteredRecords.length === 0) {\n                tableBody.innerHTML = '<tr><td colspan=\"10\" style=\"text-align: center; padding: 20px;\">\u6682\u65e0\u8bb0\u5f55<\/td><\/tr>';\n            } else {\n                \/\/ \u6309\u65e5\u671f\u964d\u5e8f\u6392\u5e8f\uff08\u6700\u65b0\u5728\u524d\uff09\n                filteredRecords.sort((a, b) => new Date(b.testDate) - new Date(a.testDate));\n                \/\/ \u6dfb\u52a0\u8bb0\u5f55\u5230\u8868\u683c\n                filteredRecords.forEach(record => {\n                    const row = document.createElement('tr');\n                    \/\/ \u786e\u5b9a\u98ce\u9669\u7b49\u7ea7\n                    let riskLevel = \"\u4f4e\u98ce\u9669\";\n                    let riskClass = \"standard-optimal\";\n                    if (record.anteriorDiff > 4 || record.posteromedialDiff > 6 || record.posterolateralDiff > 6) {\n                        riskLevel = \"\u9ad8\u98ce\u9669\";\n                        riskClass = \"standard-below\";\n                    } else if (record.anteriorDiff > 2 || record.rightComposite < record.compositeThreshold || record.leftComposite < record.compositeThreshold) {\n                        riskLevel = \"\u4e2d\u98ce\u9669\";\n                        riskClass = \"standard-pass\";\n                    }\n                    row.innerHTML = `\n                        <td>${record.subjectName || '\u672a\u547d\u540d'}<\/td>\n                        <td>${record.testDate || '\u672a\u77e5'}<\/td>\n                        <td>${record.age || '\u672a\u77e5'}<\/td>\n                        <td>${record.gender === 'male' ? '\u7537' : record.gender === 'female' ? '\u5973' : '\u672a\u77e5'}<\/td>\n                        <td>${getSportActivityName(record.sportActivity)}<\/td>\n                        <td>${record.rightComposite ? record.rightComposite.toFixed(1) + '%' : 'N\/A'}<\/td>\n                        <td>${record.leftComposite ? record.leftComposite.toFixed(1) + '%' : 'N\/A'}<\/td>\n                        <td>${record.anteriorDiff ? record.anteriorDiff.toFixed(1) + 'cm' : 'N\/A'}<\/td>\n                        <td><span class=\"${riskClass}\">${riskLevel}<\/span><\/td>\n                        <td>\n                            <button class=\"btn-secondary\" style=\"padding: 5px 10px; font-size: 0.8rem;\" onclick=\"viewRecord('${record.id}')\">\u67e5\u770b<\/button>\n                            <button class=\"btn-danger\" style=\"padding: 5px 10px; font-size: 0.8rem;\" onclick=\"deleteRecord('${record.id}')\">\u5220\u9664<\/button>\n                        <\/td>\n                    `;\n                    tableBody.appendChild(row);\n                });\n            }\n            \/\/ \u663e\u793a\u5386\u53f2\u8bb0\u5f55\u5bb9\u5668\n            document.getElementById('historyContainer').style.display = 'block';\n        }\n        \/\/ \u67e5\u770b\u5355\u6761\u8bb0\u5f55\n        function viewRecord(recordId) {\n            const records = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n            const record = records.find(r => r.id === recordId);\n            if (!record) {\n                alert(\"\u8bb0\u5f55\u672a\u627e\u5230\");\n                return;\n            }\n            \/\/ \u586b\u5145\u8868\u5355\n            document.getElementById('subjectName').value = record.subjectName || '';\n            document.getElementById('testDate').value = record.testDate || '';\n            document.getElementById('age').value = record.age || '';\n            document.getElementById('gender').value = record.gender || '';\n            document.getElementById('sportActivity').value = record.sportActivity || '';\n            document.getElementById('rightLegLength').value = record.rightLegLength || '';\n            document.getElementById('leftLegLength').value = record.leftLegLength || '';\n            document.getElementById('compositeThreshold').value = record.compositeThreshold || 94;\n            \/\/ \u586b\u5145\u6d4b\u8bd5\u6570\u636e\n            document.getElementById('ra1').value = record.rightAnterior || '';\n            document.getElementById('ra2').value = record.rightAnterior || '';\n            document.getElementById('ra3').value = record.rightAnterior || '';\n            document.getElementById('rpm1').value = record.rightPosteromedial || '';\n            document.getElementById('rpm2').value = record.rightPosteromedial || '';\n            document.getElementById('rpm3').value = record.rightPosteromedial || '';\n            document.getElementById('rpl1').value = record.rightPosterolateral || '';\n            document.getElementById('rpl2').value = record.rightPosterolateral || '';\n            document.getElementById('rpl3').value = record.rightPosterolateral || '';\n            document.getElementById('la1').value = record.leftAnterior || '';\n            document.getElementById('la2').value = record.leftAnterior || '';\n            document.getElementById('la3').value = record.leftAnterior || '';\n            document.getElementById('lpm1').value = record.leftPosteromedial || '';\n            document.getElementById('lpm2').value = record.leftPosteromedial || '';\n            document.getElementById('lpm3').value = record.leftPosteromedial || '';\n            document.getElementById('lpl1').value = record.leftPosterolateral || '';\n            document.getElementById('lpl2').value = record.leftPosterolateral || '';\n            document.getElementById('lpl3').value = record.leftPosterolateral || '';\n            \/\/ \u91cd\u65b0\u8ba1\u7b97\u7ed3\u679c\n            calculateResults();\n            \/\/ \u6eda\u52a8\u5230\u9876\u90e8\n            window.scrollTo(0, 0);\n            alert(\"\u8bb0\u5f55\u5df2\u52a0\u8f7d\u5230\u8868\u5355\u4e2d\uff0c\u5df2\u91cd\u65b0\u8ba1\u7b97\u7ed3\u679c\");\n        }\n        \/\/ \u5220\u9664\u5355\u6761\u8bb0\u5f55\n        function deleteRecord(recordId) {\n            if (!confirm(\"\u786e\u5b9a\u8981\u5220\u9664\u8fd9\u6761\u8bb0\u5f55\u5417\uff1f\u6b64\u64cd\u4f5c\u4e0d\u53ef\u64a4\u9500\u3002\")) {\n                return;\n            }\n            let records = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n            const initialLength = records.length;\n            \/\/ \u8fc7\u6ee4\u6389\u8981\u5220\u9664\u7684\u8bb0\u5f55\n            records = records.filter(record => record.id !== recordId);\n            \/\/ \u4fdd\u5b58\u56delocalStorage\n            localStorage.setItem('ybtRecords', JSON.stringify(records));\n            \/\/ \u91cd\u65b0\u52a0\u8f7d\u5386\u53f2\u8bb0\u5f55\n            loadHistoryRecords();\n            \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\n            if (records.length < initialLength) {\n                alert(\"\u8bb0\u5f55\u5df2\u5220\u9664\");\n            }\n        }\n        \/\/ \u6e05\u7a7a\u6240\u6709\u8bb0\u5f55\n        function clearAllRecords() {\n            localStorage.removeItem('ybtRecords');\n            loadHistoryRecords();\n            alert(\"\u6240\u6709\u8bb0\u5f55\u5df2\u6e05\u7a7a\");\n        }\n        \/\/ \u6267\u884c\u7edf\u8ba1\u5206\u6790\n        function performStatisticalAnalysis() {\n            const records = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n            if (records.length === 0) {\n                alert(\"\u6ca1\u6709\u53ef\u5206\u6790\u7684\u6570\u636e\uff0c\u8bf7\u5148\u4fdd\u5b58\u4e00\u4e9b\u6d4b\u8bd5\u7ed3\u679c\");\n                return;\n            }\n            \/\/ \u8ba1\u7b97\u7edf\u8ba1\u6307\u6807\n            const totalRecords = records.length;\n            \/\/ \u590d\u5408\u5206\u6570\u7edf\u8ba1\n            const rightComposites = records.map(r => r.rightComposite || 0).filter(v => v > 0);\n            const leftComposites = records.map(r => r.leftComposite || 0).filter(v => v > 0);\n            const avgRightComposite = rightComposites.length > 0 ? \n                rightComposites.reduce((a, b) => a + b, 0) \/ rightComposites.length : 0;\n            const avgLeftComposite = leftComposites.length > 0 ? \n                leftComposites.reduce((a, b) => a + b, 0) \/ leftComposites.length : 0;\n            \/\/ \u4e0d\u5bf9\u79f0\u6027\u7edf\u8ba1\n            const anteriorDiffs = records.map(r => r.anteriorDiff || 0).filter(v => v > 0);\n            const avgAnteriorDiff = anteriorDiffs.length > 0 ? \n                anteriorDiffs.reduce((a, b) => a + b, 0) \/ anteriorDiffs.length : 0;\n            \/\/ \u98ce\u9669\u7b49\u7ea7\u7edf\u8ba1\n            let highRisk = 0, mediumRisk = 0, lowRisk = 0;\n            records.forEach(record => {\n                if (record.anteriorDiff > 4 || record.posteromedialDiff > 6 || record.posterolateralDiff > 6) {\n                    highRisk++;\n                } else if (record.anteriorDiff > 2 || \n                          (record.rightComposite && record.rightComposite < record.compositeThreshold) || \n                          (record.leftComposite && record.leftComposite < record.compositeThreshold)) {\n                    mediumRisk++;\n                } else {\n                    lowRisk++;\n                }\n            });\n            \/\/ \u6027\u522b\u5206\u5e03\n            let maleCount = 0, femaleCount = 0, unknownGender = 0;\n            records.forEach(record => {\n                if (record.gender === 'male') maleCount++;\n                else if (record.gender === 'female') femaleCount++;\n                else unknownGender++;\n            });\n            \/\/ \u8fd0\u52a8\u7c7b\u578b\u5206\u5e03\n            const sportTypeCounts = {};\n            records.forEach(record => {\n                const sport = record.sportActivity || 'unknown';\n                sportTypeCounts[sport] = (sportTypeCounts[sport] || 0) + 1;\n            });\n            \/\/ \u5e74\u9f84\u5206\u5e03\n            const ages = records.map(r => r.age || 0).filter(age => age > 0);\n            const avgAge = ages.length > 0 ? \n                ages.reduce((a, b) => a + b, 0) \/ ages.length : 0;\n            \/\/ \u751f\u6210\u7edf\u8ba1HTML\n            const statsContent = document.getElementById('statsContent');\n            statsContent.innerHTML = generateStatisticsHTML({\n                totalRecords,\n                avgRightComposite: avgRightComposite.toFixed(1),\n                avgLeftComposite: avgLeftComposite.toFixed(1),\n                avgAnteriorDiff: avgAnteriorDiff.toFixed(1),\n                highRisk,\n                mediumRisk,\n                lowRisk,\n                maleCount,\n                femaleCount,\n                unknownGender,\n                sportTypeCounts,\n                avgAge: avgAge.toFixed(1),\n                minAge: ages.length > 0 ? Math.min(...ages) : 'N\/A',\n                maxAge: ages.length > 0 ? Math.max(...ages) : 'N\/A'\n            });\n            \/\/ \u663e\u793a\u7edf\u8ba1\u5bb9\u5668\n            document.getElementById('statsContainer').style.display = 'block';\n            \/\/ \u6eda\u52a8\u5230\u7edf\u8ba1\u533a\u57df\n            document.getElementById('statsContainer').scrollIntoView({ behavior: 'smooth' });\n        }\n        \/\/ \u751f\u6210\u7edf\u8ba1HTML\n        function generateStatisticsHTML(data) {\n            const sportTypes = Object.entries(data.sportTypeCounts)\n                .map(([type, count]) => `${getSportActivityName(type)}: ${count}\u4eba (${(count\/data.totalRecords*100).toFixed(1)}%)`)\n                .join('<br>');\n            return `\n                <div class=\"stats-grid\">\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u603b\u6d4b\u8bd5\u4eba\u6570<\/div>\n                        <div class=\"stat-value\">${data.totalRecords}<\/div>\n                    <\/div>\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u5e73\u5747\u53f3\u817f\u590d\u5408\u5206<\/div>\n                        <div class=\"stat-value\">${data.avgRightComposite}%<\/div>\n                    <\/div>\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u5e73\u5747\u5de6\u817f\u590d\u5408\u5206<\/div>\n                        <div class=\"stat-value\">${data.avgLeftComposite}%<\/div>\n                    <\/div>\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u5e73\u5747\u524d\u5411\u4e0d\u5bf9\u79f0<\/div>\n                        <div class=\"stat-value\">${data.avgAnteriorDiff}cm<\/div>\n                    <\/div>\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u9ad8\u98ce\u9669\u4eba\u6570<\/div>\n                        <div class=\"stat-value\" style=\"color: var(--danger-color);\">${data.highRisk}<\/div>\n                        <div class=\"stat-label\">${data.totalRecords > 0 ? (data.highRisk\/data.totalRecords*100).toFixed(1) : 0}%<\/div>\n                    <\/div>\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u4f4e\u98ce\u9669\u4eba\u6570<\/div>\n                        <div class=\"stat-value\" style=\"color: var(--success-color);\">${data.lowRisk}<\/div>\n                        <div class=\"stat-label\">${data.totalRecords > 0 ? (data.lowRisk\/data.totalRecords*100).toFixed(1) : 0}%<\/div>\n                    <\/div>\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u5e73\u5747\u5e74\u9f84<\/div>\n                        <div class=\"stat-value\">${data.avgAge}<\/div>\n                        <div class=\"stat-label\">\u8303\u56f4: ${data.minAge} - ${data.maxAge}\u5c81<\/div>\n                    <\/div>\n                    <div class=\"stat-card\">\n                        <div class=\"stat-label\">\u6027\u522b\u5206\u5e03<\/div>\n                        <div class=\"stat-value\">\u7537: ${data.maleCount} \u5973: ${data.femaleCount}<\/div>\n                        <div class=\"stat-label\">\u672a\u77e5: ${data.unknownGender}<\/div>\n                    <\/div>\n                <\/div>\n                <h4 style=\"margin-top: 20px;\">\u8fd0\u52a8\u7c7b\u578b\u5206\u5e03<\/h4>\n                <div class=\"info-box\">\n                    ${sportTypes}\n                <\/div>\n                <h4 style=\"margin-top: 20px;\">\u98ce\u9669\u7b49\u7ea7\u5206\u5e03<\/h4>\n                <div class=\"info-box\">\n                    <div style=\"display: flex; align-items: center; gap: 15px; margin-bottom: 10px;\">\n                        <div style=\"display: flex; align-items: center;\">\n                            <div style=\"width: 15px; height: 15px; background-color: var(--danger-color); margin-right: 8px;\"><\/div>\n                            <span>\u9ad8\u98ce\u9669: ${data.highRisk}\u4eba (${data.totalRecords > 0 ? (data.highRisk\/data.totalRecords*100).toFixed(1) : 0}%)<\/span>\n                        <\/div>\n                        <div style=\"display: flex; align-items: center;\">\n                            <div style=\"width: 15px; height: 15px; background-color: var(--warning-color); margin-right: 8px;\"><\/div>\n                            <span>\u4e2d\u98ce\u9669: ${data.mediumRisk}\u4eba (${data.totalRecords > 0 ? (data.mediumRisk\/data.totalRecords*100).toFixed(1) : 0}%)<\/span>\n                        <\/div>\n                        <div style=\"display: flex; align-items: center;\">\n                            <div style=\"width: 15px; height: 15px; background-color: var(--success-color); margin-right: 8px;\"><\/div>\n                            <span>\u4f4e\u98ce\u9669: ${data.lowRisk}\u4eba (${data.totalRecords > 0 ? (data.lowRisk\/data.totalRecords*100).toFixed(1) : 0}%)<\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            `;\n        }\n        \/\/ \u5bfc\u51fa\u6240\u6709\u6570\u636e\n        function exportAllData() {\n            const records = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n            if (records.length === 0) {\n                alert(\"\u6ca1\u6709\u53ef\u5bfc\u51fa\u7684\u6570\u636e\");\n                return;\n            }\n            const exportData = {\n                exportDate: new Date().toISOString(),\n                recordCount: records.length,\n                records: records\n            };\n            const dataStr = JSON.stringify(exportData, null, 2);\n            const dataBlob = new Blob([dataStr], { type: 'application\/json' });\n            const url = URL.createObjectURL(dataBlob);\n            const link = document.createElement('a');\n            link.href = url;\n            link.download = `ybt_data_export_${new Date().toISOString().slice(0, 10)}.json`;\n            document.body.appendChild(link);\n            link.click();\n            document.body.removeChild(link);\n            URL.revokeObjectURL(url);\n            alert(`\u6210\u529f\u5bfc\u51fa ${records.length} \u6761\u8bb0\u5f55`);\n        }\n        \/\/ \u4ece\u6587\u4ef6\u5bfc\u5165\u6570\u636e\n        function importDataFromFile() {\n            const fileInput = document.getElementById('importFile');\n            if (!fileInput.files.length) {\n                alert(\"\u8bf7\u5148\u9009\u62e9\u8981\u5bfc\u5165\u7684\u6587\u4ef6\");\n                return;\n            }\n            const file = fileInput.files[0];\n            const reader = new FileReader();\n            reader.onload = function(e) {\n                try {\n                    const importedData = JSON.parse(e.target.result);\n                    if (!importedData.records || !Array.isArray(importedData.records)) {\n                        throw new Error(\"\u6587\u4ef6\u683c\u5f0f\u4e0d\u6b63\u786e\");\n                    }\n                    \/\/ \u4ecelocalStorage\u83b7\u53d6\u73b0\u6709\u8bb0\u5f55\n                    let existingRecords = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n                    \/\/ \u5408\u5e76\u8bb0\u5f55\uff0c\u907f\u514d\u91cd\u590dID\n                    const existingIds = new Set(existingRecords.map(r => r.id));\n                    const newRecords = importedData.records.filter(record => !existingIds.has(record.id));\n                    \/\/ \u6dfb\u52a0\u65b0\u8bb0\u5f55\n                    existingRecords.push(...newRecords);\n                    \/\/ \u4fdd\u5b58\u56delocalStorage\n                    localStorage.setItem('ybtRecords', JSON.stringify(existingRecords));\n                    \/\/ \u91cd\u65b0\u52a0\u8f7d\u5386\u53f2\u8bb0\u5f55\n                    loadHistoryRecords();\n                    alert(`\u6210\u529f\u5bfc\u5165 ${newRecords.length} \u6761\u65b0\u8bb0\u5f55\u3002\u5f53\u524d\u5171\u6709 ${existingRecords.length} \u6761\u8bb0\u5f55\u3002`);\n                    \/\/ \u6e05\u7a7a\u6587\u4ef6\u8f93\u5165\n                    fileInput.value = '';\n                } catch (error) {\n                    alert(\"\u5bfc\u5165\u5931\u8d25: \" + error.message);\n                }\n            };\n            reader.onerror = function() {\n                alert(\"\u8bfb\u53d6\u6587\u4ef6\u65f6\u53d1\u751f\u9519\u8bef\");\n            };\n            reader.readAsText(file);\n        }\n        \/\/ \u5bfc\u51fa\u4e2a\u4eba\u62a5\u544a\u4e3a\u56fe\u7247\n        function exportReportToImage() {\n            if (typeof html2canvas === 'undefined') {\n                alert('\u62a5\u544a\u5bfc\u51fa\u7ec4\u4ef6\u5c1a\u672a\u52a0\u8f7d\u5b8c\u6210\uff0c\u8bf7\u786e\u8ba4\u7f51\u7edc\u7545\u901a\u540e\u91cd\u8bd5\u3002');\n                return;\n            }\n            if (!currentResult) {\n                alert(\"\u8bf7\u5148\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c\uff0c\u7136\u540e\u518d\u5bfc\u51fa\u62a5\u544a\");\n                return;\n            }\n            \/\/ \u663e\u793a\u52a0\u8f7d\u52a8\u753b\n            document.getElementById('loadingOverlay').style.display = 'flex';\n            \/\/ \u83b7\u53d6\u62a5\u544a\u6807\u9898\u548c\u5907\u6ce8\n            const reportTitle = document.getElementById('reportTitle').value || \"\u4e0b\u80a2Y-Balance\u6d4b\u8bd5\u62a5\u544a\";\n            const reportNotes = document.getElementById('reportNotes').value || \"\";\n            \/\/ \u751f\u6210\u62a5\u544aHTML\n            const reportHTML = generateReportHTML(reportTitle, reportNotes);\n            \/\/ \u5c06\u62a5\u544aHTML\u63d2\u5165\u5230\u9690\u85cf\u7684\u5bb9\u5668\u4e2d\n            const reportContainer = document.getElementById('reportForExport');\n            reportContainer.innerHTML = reportHTML;\n            reportContainer.style.display = 'block';\n            \/\/ \u4f7f\u7528html2canvas\u751f\u6210\u56fe\u7247\n            setTimeout(() => {\n                html2canvas(reportContainer, {\n                    scale: 2, \/\/ \u63d0\u9ad8\u56fe\u7247\u6e05\u6670\u5ea6\n                    backgroundColor: '#ffffff',\n                    useCORS: true,\n                    logging: false\n                }).then(canvas => {\n                    \/\/ \u5c06canvas\u8f6c\u6362\u4e3a\u56fe\u7247\n                    const imageData = canvas.toDataURL('image\/png');\n                    \/\/ \u521b\u5efa\u4e0b\u8f7d\u94fe\u63a5\n                    const link = document.createElement('a');\n                    link.href = imageData;\n                    const fileName = `YBT\u62a5\u544a_${currentResult.subjectName || '\u53d7\u8bd5\u8005'}_${currentResult.testDate || new Date().toISOString().slice(0, 10)}.png`;\n                    link.download = fileName;\n                    \/\/ \u89e6\u53d1\u4e0b\u8f7d\n                    document.body.appendChild(link);\n                    link.click();\n                    document.body.removeChild(link);\n                    \/\/ \u9690\u85cf\u52a0\u8f7d\u52a8\u753b\n                    document.getElementById('loadingOverlay').style.display = 'none';\n                    \/\/ \u9690\u85cf\u62a5\u544a\u5bb9\u5668\n                    reportContainer.style.display = 'none';\n                    \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\n                    alert(`\u62a5\u544a\u5df2\u6210\u529f\u5bfc\u51fa\u4e3a\u56fe\u7247: ${fileName}`);\n                }).catch(error => {\n                    \/\/ \u9690\u85cf\u52a0\u8f7d\u52a8\u753b\n                    document.getElementById('loadingOverlay').style.display = 'none';\n                    \/\/ \u9690\u85cf\u62a5\u544a\u5bb9\u5668\n                    reportContainer.style.display = 'none';\n                    console.error('\u751f\u6210\u56fe\u7247\u65f6\u51fa\u9519:', error);\n                    alert('\u5bfc\u51fa\u56fe\u7247\u65f6\u53d1\u751f\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5\u6216\u68c0\u67e5\u6d4f\u89c8\u5668\u517c\u5bb9\u6027\u3002');\n                });\n            }, 500);\n        }\n        \/\/ \u751f\u6210\u62a5\u544aHTML\n        function generateReportHTML(title, notes) {\n            \/\/ \u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\n            let riskLevel = \"\u4f4e\u98ce\u9669\";\n            let riskClass = \"standard-optimal\";\n            if (currentResult.anteriorDiff > 4 || currentResult.posteromedialDiff > 6 || currentResult.posterolateralDiff > 6) {\n                riskLevel = \"\u9ad8\u98ce\u9669\";\n                riskClass = \"standard-below\";\n            } else if (currentResult.anteriorDiff > 2 || currentResult.rightComposite < currentResult.compositeThreshold || currentResult.leftComposite < currentResult.compositeThreshold) {\n                riskLevel = \"\u4e2d\u98ce\u9669\";\n                riskClass = \"standard-pass\";\n            }\n            \/\/ \u83b7\u53d6\u4e2d\u6587\u65e5\u671f\n            const chineseDate = getChineseDate(currentResult.testDate);\n            \/\/ \u751f\u6210\u62a5\u544aHTML\n            return `\n                <div class=\"report-watermark\">YBT-LQ<\/div>\n                <div class=\"report-header\">\n                    <h1 class=\"report-title\">${title}<\/h1>\n                    <p class=\"report-subtitle\">\u57fa\u4e8e\u529f\u80fd\u6027\u8fd0\u52a8\u7cfb\u7edf(FMS)Y-Balance\u6d4b\u8bd5\u89c4\u8303<\/p>\n                <\/div>\n                <div class=\"report-body\">\n                    <div class=\"report-section\">\n                        <h2 class=\"report-section-title\">\u53d7\u8bd5\u8005\u4fe1\u606f<\/h2>\n                        <table class=\"report-table\">\n                            <tr>\n                                <td style=\"width: 25%;\"><strong>\u59d3\u540d<\/strong><\/td>\n                                <td style=\"width: 25%;\">${currentResult.subjectName || '\u672a\u586b\u5199'}<\/td>\n                                <td style=\"width: 25%;\"><strong>\u5e74\u9f84<\/strong><\/td>\n                                <td style=\"width: 25%;\">${currentResult.age || '\u672a\u586b\u5199'} \u5c81<\/td>\n                            <\/tr>\n                            <tr>\n                                <td><strong>\u6027\u522b<\/strong><\/td>\n                                <td>${currentResult.gender === 'male' ? '\u7537\u6027' : currentResult.gender === 'female' ? '\u5973\u6027' : '\u672a\u586b\u5199'}<\/td>\n                                <td><strong>\u6d4b\u8bd5\u65e5\u671f<\/strong><\/td>\n                                <td>${chineseDate}<\/td>\n                            <\/tr>\n                            <tr>\n                                <td><strong>\u8fd0\u52a8\u7c7b\u578b<\/strong><\/td>\n                                <td>${getSportActivityName(currentResult.sportActivity)}<\/td>\n                                <td><strong>\u6d4b\u8bd5\u4eba\u5458<\/strong><\/td>\n                                <td>YBT\u4e13\u4e1a\u8bc4\u4f30\u7cfb\u7edf<\/td>\n                            <\/tr>\n                        <\/table>\n                    <\/div>\n                    <div class=\"report-section\">\n                        <h2 class=\"report-section-title\">\u6d4b\u8bd5\u7ed3\u679c\u6982\u89c8<\/h2>\n                        <div style=\"display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; margin-bottom: 20px;\">\n                            <div style=\"background-color: #eff6ff; padding: 15px; border-radius: 8px; text-align: center;\">\n                                <div style=\"font-size: 14px; color: #64748b; margin-bottom: 5px;\">\u53f3\u817f\u590d\u5408\u5206\u6570<\/div>\n                                <div style=\"font-size: 28px; font-weight: bold; color: #1d4ed8;\">${currentResult.rightComposite.toFixed(1)}%<\/div>\n                            <\/div>\n                            <div style=\"background-color: #eff6ff; padding: 15px; border-radius: 8px; text-align: center;\">\n                                <div style=\"font-size: 14px; color: #64748b; margin-bottom: 5px;\">\u5de6\u817f\u590d\u5408\u5206\u6570<\/div>\n                                <div style=\"font-size: 28px; font-weight: bold; color: #1d4ed8;\">${currentResult.leftComposite.toFixed(1)}%<\/div>\n                            <\/div>\n                        <\/div>\n                        <div style=\"display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; margin-bottom: 20px;\">\n                            <div style=\"background-color: #eff6ff; padding: 15px; border-radius: 8px; text-align: center;\">\n                                <div style=\"font-size: 14px; color: #64748b; margin-bottom: 5px;\">\u524d\u5411\u4e0d\u5bf9\u79f0<\/div>\n                                <div style=\"font-size: 28px; font-weight: bold; color: ${currentResult.anteriorDiff > 4 ? '#b91c1c' : '#1d4ed8'};\">${currentResult.anteriorDiff.toFixed(1)} cm<\/div>\n                            <\/div>\n                            <div style=\"background-color: #eff6ff; padding: 15px; border-radius: 8px; text-align: center;\">\n                                <div style=\"font-size: 14px; color: #64748b; margin-bottom: 5px;\">\u98ce\u9669\u7b49\u7ea7<\/div>\n                                <div style=\"font-size: 28px; font-weight: bold; color: ${riskLevel === '\u9ad8\u98ce\u9669' ? '#b91c1c' : riskLevel === '\u4e2d\u98ce\u9669' ? '#b45309' : '#15803d'};\">${riskLevel}<\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"report-section\">\n                        <h2 class=\"report-section-title\">\u8be6\u7ec6\u6d4b\u8bd5\u6570\u636e<\/h2>\n                        <table class=\"report-table\">\n                            <thead>\n                                <tr>\n                                    <th>\u6d4b\u8bd5\u65b9\u5411<\/th>\n                                    <th>\u53f3\u817f (cm)<\/th>\n                                    <th>\u5de6\u817f (cm)<\/th>\n                                    <th>\u5dee\u5f02 (cm)<\/th>\n                                    <th>\u8bc4\u4f30<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody>\n                                <tr>\n                                    <td>\u524d\u5411<\/td>\n                                    <td>${currentResult.rightAnterior.toFixed(1)}<\/td>\n                                    <td>${currentResult.leftAnterior.toFixed(1)}<\/td>\n                                    <td>${currentResult.anteriorDiff.toFixed(1)}<\/td>\n                                    <td>${currentResult.anteriorStandard === 'optimal' ? '\u4f18\u79c0' : currentResult.anteriorStandard === 'pass' ? '\u5408\u683c' : '\u9700\u6539\u8fdb'}<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td>\u540e\u5185\u4fa7<\/td>\n                                    <td>${currentResult.rightPosteromedial.toFixed(1)}<\/td>\n                                    <td>${currentResult.leftPosteromedial.toFixed(1)}<\/td>\n                                    <td>${currentResult.posteromedialDiff.toFixed(1)}<\/td>\n                                    <td>${currentResult.posteromedialStandard === 'optimal' ? '\u4f18\u79c0' : '\u9700\u6539\u8fdb'}<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td>\u540e\u5916\u4fa7<\/td>\n                                    <td>${currentResult.rightPosterolateral.toFixed(1)}<\/td>\n                                    <td>${currentResult.leftPosterolateral.toFixed(1)}<\/td>\n                                    <td>${currentResult.posterolateralDiff.toFixed(1)}<\/td>\n                                    <td>${currentResult.posterolateralStandard === 'optimal' ? '\u4f18\u79c0' : '\u9700\u6539\u8fdb'}<\/td>\n                                <\/tr>\n                                <tr style=\"font-weight: bold;\">\n                                    <td>\u590d\u5408\u5206\u6570<\/td>\n                                    <td>${currentResult.rightComposite.toFixed(1)}%<\/td>\n                                    <td>${currentResult.leftComposite.toFixed(1)}%<\/td>\n                                    <td>-<\/td>\n                                    <td>${currentResult.compositeStandard === 'optimal' ? '\u4f18\u79c0' : '\u9700\u6539\u8fdb'}<\/td>\n                                <\/tr>\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                    <div class=\"report-section\">\n                        <h2 class=\"report-section-title\">\u4e13\u4e1a\u5efa\u8bae<\/h2>\n                        <div style=\"background-color: #f8fafc; padding: 15px; border-radius: 8px;\">\n                            ${generateRecommendationsText()}\n                        <\/div>\n                    <\/div>\n                    ${notes ? `\n                    <div class=\"report-section\">\n                        <h2 class=\"report-section-title\">\u5907\u6ce8\u4fe1\u606f<\/h2>\n                        <div style=\"background-color: #f8fafc; padding: 15px; border-radius: 8px; white-space: pre-wrap;\">\n                            ${notes}\n                        <\/div>\n                    <\/div>\n                    ` : ''}\n                <\/div>\n                <div class=\"report-footer\">\n                    <p>\u62a5\u544a\u751f\u6210\u65e5\u671f: ${getChineseDate(new Date().toISOString().slice(0, 10))}<\/p>\n                    <p>\u00a9 2023 \u4e0b\u80a2Y-Balance\u6d4b\u8bd5\u8ba1\u7b97\u5668 | \u57fa\u4e8e\u529f\u80fd\u6027\u8fd0\u52a8\u7cfb\u7edf(FMS)\u5b98\u65b9\u89c4\u8303<\/p>\n                    <p style=\"font-size: 12px; margin-top: 5px;\">\u672c\u62a5\u544a\u4ec5\u4f9b\u53c2\u8003\uff0c\u4e0d\u80fd\u66ff\u4ee3\u4e13\u4e1a\u533b\u7597\u8bc4\u4f30\u3002\u5982\u6709\u7591\u95ee\uff0c\u8bf7\u54a8\u8be2\u4e13\u4e1a\u533b\u7597\u4eba\u5458\u3002<\/p>\n                <\/div>\n            `;\n        }\n        \/\/ \u751f\u6210\u5efa\u8bae\u6587\u672c\n        function generateRecommendationsText() {\n            let recommendations = \"<p><strong>\u6839\u636e\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5efa\u8bae\uff1a<\/strong><\/p><ul>\";\n            if (currentResult.anteriorDiff > 4) {\n                recommendations += \"<li>\u8fdb\u884c\u524d\u5411\u4e0d\u5bf9\u79f0\u6027\u7684\u9488\u5bf9\u6027\u8bad\u7ec3\uff0c\u6539\u5584\u52a8\u6001\u5e73\u8861<\/li>\";\n            }\n            if (currentResult.rightComposite < currentResult.compositeThreshold || currentResult.leftComposite < currentResult.compositeThreshold) {\n                recommendations += `<li>\u8fdb\u884c\u4e0b\u80a2\u529b\u91cf\u3001\u67d4\u97e7\u6027\u548c\u6838\u5fc3\u7a33\u5b9a\u6027\u8bad\u7ec3\u4ee5\u63d0\u9ad8\u590d\u5408\u5206\u6570\uff08\u76ee\u6807\u2265${currentResult.compositeThreshold}%\uff09<\/li>`;\n            }\n            if (currentResult.anteriorDiff <= 4 && currentResult.rightComposite >= currentResult.compositeThreshold && currentResult.leftComposite >= currentResult.compositeThreshold) {\n                recommendations += \"<li>\u4e0b\u80a2\u529f\u80fd\u826f\u597d\uff0c\u5efa\u8bae\u7ef4\u6301\u5f53\u524d\u8bad\u7ec3\u8ba1\u5212<\/li>\";\n            }\n            if (currentResult.anteriorDiff > 4 || currentResult.rightComposite < currentResult.compositeThreshold || currentResult.leftComposite < currentResult.compositeThreshold) {\n                recommendations += \"<li>\u8003\u8651\u7ed3\u5408\u529f\u80fd\u6027\u52a8\u4f5c\u7b5b\u67e5(FMS)\u8fdb\u884c\u66f4\u5168\u9762\u7684\u8bc4\u4f30<\/li>\";\n                recommendations += \"<li>\u5982\u6709\u6301\u7eed\u75bc\u75db\u6216\u529f\u80fd\u9650\u5236\uff0c\u5efa\u8bae\u54a8\u8be2\u7269\u7406\u6cbb\u7597\u5e08\u6216\u8fd0\u52a8\u533b\u5b66\u4e13\u5bb6<\/li>\";\n            }\n            recommendations += \"<\/ul>\";\n            return recommendations;\n        }\n        \/\/ \u83b7\u53d6\u4e2d\u6587\u65e5\u671f\n        function getChineseDate(dateString) {\n            if (!dateString) return \"\u672a\u586b\u5199\";\n            const date = new Date(dateString);\n            const year = date.getFullYear();\n            const month = date.getMonth() + 1;\n            const day = date.getDate();\n            return `${year}\u5e74${month}\u6708${day}\u65e5`;\n        }\n        \/\/ \u91cd\u7f6e\u8868\u5355\n        function resetForm() {\n            \/\/ \u91cd\u7f6e\u8f93\u5165\u5b57\u6bb5\n            const inputs = document.querySelectorAll('#app input[type=\"text\"], #app input[type=\"number\"], #app input[type=\"date\"]');\n            inputs.forEach(input => {\n                if (input.id !== 'compositeThreshold' && input.id !== 'testDate' && \n                    input.id !== 'searchName' && input.id !== 'searchDate' &&\n                    input.id !== 'reportTitle') {\n                    input.value = '';\n                }\n            });\n            \/\/ \u91cd\u7f6e\u9009\u62e9\u5b57\u6bb5\n            document.getElementById('gender').value = '';\n            document.getElementById('sportActivity').value = '';\n            \/\/ \u91cd\u7f6e\u6587\u672c\u57df\n            document.getElementById('reportNotes').value = '';\n            \/\/ \u8bbe\u7f6e\u9ed8\u8ba4\u65e5\u671f\n            document.getElementById('testDate').valueAsDate = new Date();\n            \/\/ \u9690\u85cf\u7ed3\u679c\u5bb9\u5668\n            document.getElementById('resultsContainer').style.display = 'none';\n            \/\/ \u91cd\u7f6e\u5f53\u524d\u7ed3\u679c\n            currentResult = null;\n        }\n        \/\/ \u5bfc\u51fa\u5f53\u524d\u7ed3\u679c\n        function exportResults() {\n            if (!currentResult) {\n                alert(\"\u8bf7\u5148\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c\");\n                return;\n            }\n            const subjectName = currentResult.subjectName || \"\u672a\u547d\u540d\u53d7\u8bd5\u8005\";\n            const testDate = currentResult.testDate || new Date().toISOString().split('T')[0];\n            const age = currentResult.age || \"\u672a\u6307\u5b9a\";\n            const gender = currentResult.gender === \"male\" ? \"\u7537\u6027\" : \n                          currentResult.gender === \"female\" ? \"\u5973\u6027\" : \"\u672a\u6307\u5b9a\";\n            const sportActivity = getSportActivityName(currentResult.sportActivity) || \"\u672a\u6307\u5b9a\";\n            let exportContent = `\u4e0b\u80a2Y-Balance\u6d4b\u8bd5\u62a5\u544a\\n`;\n            exportContent += `====================\\n\\n`;\n            exportContent += `\u53d7\u8bd5\u8005\u4fe1\u606f:\\n`;\n            exportContent += `\u59d3\u540d: ${subjectName}\\n`;\n            exportContent += `\u6d4b\u8bd5\u65e5\u671f: ${testDate}\\n`;\n            exportContent += `\u5e74\u9f84: ${age}\\n`;\n            exportContent += `\u6027\u522b: ${gender}\\n`;\n            exportContent += `\u8fd0\u52a8\/\u6d3b\u52a8\u7c7b\u578b: ${sportActivity}\\n`;\n            exportContent += `\u53f3\u817f\u957f\u5ea6: ${currentResult.rightLegLength} cm\\n`;\n            exportContent += `\u5de6\u817f\u957f\u5ea6: ${currentResult.leftLegLength} cm\\n\\n`;\n            exportContent += `\u6d4b\u8bd5\u6570\u636e:\\n`;\n            exportContent += `-----------------\\n`;\n            exportContent += `\u53f3\u817f\u524d\u5411: ${currentResult.rightAnterior} cm\\n`;\n            exportContent += `\u53f3\u817f\u540e\u5185\u4fa7: ${currentResult.rightPosteromedial} cm\\n`;\n            exportContent += `\u53f3\u817f\u540e\u5916\u4fa7: ${currentResult.rightPosterolateral} cm\\n`;\n            exportContent += `\u5de6\u817f\u524d\u5411: ${currentResult.leftAnterior} cm\\n`;\n            exportContent += `\u5de6\u817f\u540e\u5185\u4fa7: ${currentResult.leftPosteromedial} cm\\n`;\n            exportContent += `\u5de6\u817f\u540e\u5916\u4fa7: ${currentResult.leftPosterolateral} cm\\n\\n`;\n            exportContent += `\u6d4b\u8bd5\u7ed3\u679c:\\n`;\n            exportContent += `-----------------\\n`;\n            exportContent += `\u53f3\u817f\u590d\u5408\u5206\u6570: ${currentResult.rightComposite.toFixed(1)}%\\n`;\n            exportContent += `\u5de6\u817f\u590d\u5408\u5206\u6570: ${currentResult.leftComposite.toFixed(1)}%\\n`;\n            exportContent += `\u524d\u5411\u4e0d\u5bf9\u79f0: ${currentResult.anteriorDiff.toFixed(1)} cm\\n`;\n            exportContent += `\u540e\u5185\u4fa7\u4e0d\u5bf9\u79f0: ${currentResult.posteromedialDiff.toFixed(1)} cm\\n`;\n            exportContent += `\u540e\u5916\u4fa7\u4e0d\u5bf9\u79f0: ${currentResult.posterolateralDiff.toFixed(1)} cm\\n`;\n            exportContent += `\u6700\u5927\u4e0d\u5bf9\u79f0: ${currentResult.maxAsymmetry.toFixed(1)} cm\\n\\n`;\n            exportContent += `\u8bc4\u4f30\u6807\u51c6:\\n`;\n            exportContent += `-----------------\\n`;\n            exportContent += `\u524d\u5411\u4e0d\u5bf9\u79f0: ${currentResult.anteriorStandard === 'optimal' ? '\u4f18\u79c0' : currentResult.anteriorStandard === 'pass' ? '\u5408\u683c' : '\u9700\u6539\u8fdb'}\\n`;\n            exportContent += `\u540e\u5185\u4fa7\u4e0d\u5bf9\u79f0: ${currentResult.posteromedialStandard === 'optimal' ? '\u4f18\u79c0' : '\u9700\u6539\u8fdb'}\\n`;\n            exportContent += `\u540e\u5916\u4fa7\u4e0d\u5bf9\u79f0: ${currentResult.posterolateralStandard === 'optimal' ? '\u4f18\u79c0' : '\u9700\u6539\u8fdb'}\\n`;\n            exportContent += `\u590d\u5408\u5206\u6570: ${currentResult.compositeStandard === 'optimal' ? '\u4f18\u79c0' : '\u9700\u6539\u8fdb'}\\n\\n`;\n            exportContent += `\u6ce8: \u672c\u62a5\u544a\u57fa\u4e8e\u529f\u80fd\u6027\u8fd0\u52a8\u7cfb\u7edf(FMS)Y-Balance\u6d4b\u8bd5\u89c4\u8303\u751f\u6210\u3002\\n`;\n            exportContent += `\u7ed3\u679c\u4ec5\u4f9b\u53c2\u8003\uff0c\u4e0d\u80fd\u66ff\u4ee3\u4e13\u4e1a\u533b\u7597\u8bc4\u4f30\u3002\\n`;\n            exportContent += `\u62a5\u544a\u751f\u6210\u65e5\u671f: ${new Date().toLocaleDateString('zh-CN')}\\n`;\n            \/\/ \u521b\u5efa\u4e0b\u8f7d\u94fe\u63a5\n            const blob = new Blob([exportContent], { type: 'text\/plain;charset=utf-8' });\n            const url = URL.createObjectURL(blob);\n            const a = document.createElement('a');\n            a.href = url;\n            a.download = `YBT-LQ_${subjectName}_${testDate}.txt`;\n            document.body.appendChild(a);\n            a.click();\n            document.body.removeChild(a);\n            URL.revokeObjectURL(url);\n            \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\n            alert('\u6d4b\u8bd5\u7ed3\u679c\u5df2\u5bfc\u51fa\u4e3a\u6587\u672c\u6587\u4ef6\uff01');\n        }\n        \/\/ \u586b\u5145\u793a\u4f8b\u6570\u636e\n        function fillSampleData() {\n            \/\/ \u53d7\u8bd5\u8005\u4fe1\u606f\n            document.getElementById('subjectName').value = '\u5f20\u660e';\n            document.getElementById('age').value = '25';\n            document.getElementById('gender').value = 'male';\n            document.getElementById('sportActivity').value = 'basketball';\n            \/\/ \u4e0b\u80a2\u957f\u5ea6\n            document.getElementById('rightLegLength').value = '86.5';\n            document.getElementById('leftLegLength').value = '86.0';\n            \/\/ \u4e0b\u80a2\u6d4b\u8bd5\u6570\u636e\n            document.getElementById('ra1').value = '65.5';\n            document.getElementById('ra2').value = '66.0';\n            document.getElementById('ra3').value = '65.0';\n            document.getElementById('rpm1').value = '105.0';\n            document.getElementById('rpm2').value = '106.5';\n            document.getElementById('rpm3').value = '104.5';\n            document.getElementById('rpl1').value = '102.0';\n            document.getElementById('rpl2').value = '103.5';\n            document.getElementById('rpl3').value = '101.5';\n            document.getElementById('la1').value = '64.0';\n            document.getElementById('la2').value = '64.5';\n            document.getElementById('la3').value = '63.5';\n            document.getElementById('lpm1').value = '103.0';\n            document.getElementById('lpm2').value = '104.5';\n            document.getElementById('lpm3').value = '102.5';\n            document.getElementById('lpl1').value = '100.0';\n            document.getElementById('lpl2').value = '101.5';\n            document.getElementById('lpl3').value = '99.5';\n            \/\/ \u62a5\u544a\u4fe1\u606f\n            document.getElementById('reportTitle').value = '\u5f20\u660e - \u4e0b\u80a2Y-Balance\u6d4b\u8bd5\u62a5\u544a';\n            document.getElementById('reportNotes').value = '\u53d7\u8bd5\u8005\u5b8c\u6210\u6d4b\u8bd5\u8fc7\u7a0b\u826f\u597d\uff0c\u65e0\u75bc\u75db\u62a5\u544a\u3002\u5efa\u8bae\u8fdb\u884c\u52a8\u6001\u5e73\u8861\u8bad\u7ec3\u3002';\n            \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\n            alert('\u793a\u4f8b\u6570\u636e\u5df2\u586b\u5145\uff01\u73b0\u5728\u53ef\u4ee5\u70b9\u51fb\"\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c\"\u6309\u94ae\u67e5\u770b\u793a\u4f8b\u7ed3\u679c\u3002');\n        }\n        \/\/ \u8f85\u52a9\u51fd\u6570\uff1a\u83b7\u53d6\u8fd0\u52a8\u7c7b\u578b\u540d\u79f0\n        function getSportActivityName(value) {\n            const sportMap = {\n                'basketball': '\u7bee\u7403',\n                'football': '\u7f8e\u5f0f\u8db3\u7403',\n                'soccer': '\u8db3\u7403',\n                'running': '\u8dd1\u6b65',\n                'rowing': '\u8d5b\u8247',\n                'general': '\u666e\u901a\u5065\u8eab',\n                'rehabilitation': '\u5eb7\u590d\u671f',\n                'other': '\u5176\u4ed6',\n                'unknown': '\u672a\u77e5'\n            };\n            return sportMap[value] || value;\n        }\n        \/\/ \u9875\u9762\u52a0\u8f7d\u65f6\u6267\u884c\n        window.addEventListener('load', function() {\n            \/\/ \u8bbe\u7f6e\u9ed8\u8ba4\u6d4b\u8bd5\u65e5\u671f\n            document.getElementById('testDate').valueAsDate = new Date();\n            \/\/ \u79fb\u52a8\u7aef\u4f18\u5316\uff1a\u8c03\u6574\u8f93\u5165\u6846\u7c7b\u578b\u4ee5\u663e\u793a\u6570\u5b57\u952e\u76d8\n            const numberInputs = document.querySelectorAll('#app input[type=\"number\"]');\n            numberInputs.forEach(input => {\n                input.setAttribute('inputmode', 'decimal');\n            });\n            \/\/ \u6dfb\u52a0\u89e6\u6478\u53cd\u9988\u6548\u679c\n            const buttons = document.querySelectorAll('#app .btn, #app .btn-secondary, #app .btn-info, #app .btn-success, #app .btn-danger, #app .btn-reset');\n            buttons.forEach(button => {\n                button.addEventListener('touchstart', function() {\n                    this.style.transform = 'scale(0.98)';\n                });\n                button.addEventListener('touchend', function() {\n                    this.style.transform = '';\n                });\n            });\n            \/\/ \u52a0\u8f7d\u5386\u53f2\u8bb0\u5f55\u6570\u91cf\n            const records = JSON.parse(localStorage.getItem('ybtRecords')) || [];\n            if (records.length > 0) {\n                document.getElementById('recordCount').textContent = records.length;\n            }\n        });\n    <\/script>\n<\/body>\n<\/html><\/script>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u4e0b\u80a2Y-Balance\u6d4b\u8bd5 (YBT-LQ) | FMS\u5b98\u65b9\u89c4\u8303 \u4e0b\u80a2Y-Balance\u6d4b\u8bd5 \u57fa\u4e8eFMS\u5b98\u65b9\u89c4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1886,"parent":1307,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1880","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1880"}],"version-history":[{"count":19,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1880\/revisions"}],"predecessor-version":[{"id":2158,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1880\/revisions\/2158"}],"up":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1307"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/media\/1886"}],"wp:attachment":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}