开元1973登录入口限时优惠

数据加载中...
加载中...
'; } else if (state.error) { stateArea = '

' + state.error + '

'; } else if (!state.tableData.length) { stateArea = '
暂无数据
'; } else if (!rows.length) { stateArea = '
无匹配的专业名称
'; } else { var latestScoreYearLabel = getPlanScoreYearLabel(); var columns = state.historyScore ? '专业组' + '' + '最低分' + sortArrow('lowestScore') + '' + '平均分' + sortArrow('averageScore') + '' + '最低位次' + sortArrow('lowestRanking') + '' : '计划人数' + sortArrow('admitCount') + '' + '专业组' + '科类' + '选科' + '' + latestScoreYearLabel + '最低分' + sortArrow('lowestScore') + '' + '' + latestScoreYearLabel + '平均分' + sortArrow('averageScore') + '' + '' + latestScoreYearLabel + '最低位次' + sortArrow('lowestRanking') + ''; var middleCols = state.historyScore ? '省份年份科类类型选科' : ''; var bodyRows = rows.map(function (row) { var nameCell = renderMajorNameCell(row); var scoreCell = state.historyScore ? '' + displayNum(row.disciplineGroup) + '' + displayLowestScore(row.lowestScore) + '' + displayScore(row.averageScore) + '' + displayNum(row.lowestRanking) + '' : '' + displayNum(getPlanCount(row)) + '' + '' + displayNum(row.disciplineGroup) + '' + '' + displayNum(row.recruitSubjectName || row.recruitSubject) + '' + '' + displayNum(row.subjectSelectionName || row.subjectSelection) + '' + '' + displayLowestScore(getScoreValue(row, "lowestScore")) + '' + displayScore(getScoreValue(row, "averageScore")) + '' + displayNum(getScoreValue(row, "lowestRanking")) + ''; var middleCell = state.historyScore ? '' + (row.recruitProvinceName || getCurrentProvinceLabel()) + '' + '' + displayNum(row.recruitYear) + '' + '' + displayNum(row.recruitSubjectName) + '' + '' + displayNum(row.recruitTypeName) + '' + '' + displayNum(row.subjectSelectionName) + '' : ''; return '' + '' + nameCell + '' + middleCell + scoreCell + ''; }).join(''); stateArea = '
' + '' + middleCols + columns + '' + bodyRows + '
专业名称' + sortArrow('groupName') + '
'; } app.innerHTML = '
首页>' + getCurrentTitle() + '' + targetText + '
' + '
' + '
省份:
' + renderChips(state.options.province, state.filters.recruitProvince, 'recruitProvince', false) + '
' + '
年份:
' + renderChips(state.options.year, state.filters.recruitYear, 'recruitYear', false) + '
' + '
科类:
' + renderChips(state.options.subject, state.filters.recruitSubject, 'recruitSubject', true) + '
' + '
类型:
' + renderChips(state.options.type, state.filters.recruitType, 'recruitType', true) + '
' + '
选科:
' + renderChips(state.options.selection, state.filters.subjectSelection, 'subjectSelection', true) + '
' + '
专业组:
' + renderChips(state.options.group, state.filters.disciplineGroup, 'disciplineGroup', true) + '
' + '
' + '

' + getCurrentTitle() + '

' + '
左右滑动表格,查看更多数据
' + '
' + stateArea + '
'; bindEvents(); if (keepSearchFocus) { var restoredInput = document.getElementById("search-input"); if (restoredInput) { restoredInput.focus(); var pos = searchCursor == null ? restoredInput.value.length : Math.min(searchCursor, restoredInput.value.length); try { restoredInput.setSelectionRange(pos, pos); } catch (e) {} } } playMobileHint(); } function clearHintTimers() { if (!state.hintTimers) return; state.hintTimers.forEach(function (id) { clearTimeout(id); }); state.hintTimers = []; } function playMobileHint() { if (state.hasPlayedHint || window.innerWidth > 768) return; var tableScroll = document.getElementById("table-scroll"); if (!tableScroll) return; var maxScrollLeft = tableScroll.scrollWidth - tableScroll.clientWidth; if (maxScrollLeft <= 24) return; state.hasPlayedHint = true; try { localStorage.setItem(MOBILE_HINT_CACHE_KEY, "1"); } catch (e) {} clearHintTimers(); tableScroll.scrollLeft = 0; state.hintTimers = []; state.hintTimers.push(setTimeout(function () { tableScroll.scrollTo({ left: maxScrollLeft, behavior: "smooth" }); }, 500)); state.hintTimers.push(setTimeout(function () { tableScroll.scrollTo({ left: 0, behavior: "smooth" }); }, 1700)); } async function loadPageData(isInit) { state.loading = true; state.error = ""; renderTable(); try { if (isInit) await loadFilterOptions(); await loadTableData(); } catch (e) { state.error = "加载失败,请稍后重试"; console.error(e); } finally { state.loading = false; renderTable(); } } async function onFilterChange(key, value) { if (String(state.filters[key]) === String(value)) return; state.filters[key] = value; if (key === "recruitProvince") { syncUrlState(); state.filters.recruitYear = ""; state.filters.recruitSubject = ""; state.filters.recruitType = ""; state.filters.subjectSelection = ""; state.filters.disciplineGroup = ""; await loadPageData(true); return; } if (key === "recruitYear") { state.filters.recruitSubject = ""; state.filters.recruitType = ""; state.filters.subjectSelection = ""; state.filters.disciplineGroup = ""; await Promise.all([ loadSubordinateOptions("recruitYear"), loadTableData() ]); renderTable(); return; } if (key === "recruitSubject") { state.filters.recruitType = ""; state.filters.subjectSelection = ""; state.filters.disciplineGroup = ""; await Promise.all([ loadSubordinateOptions("recruitSubject"), loadTableData() ]); renderTable(); return; } if (key === "recruitType") { state.filters.subjectSelection = ""; state.filters.disciplineGroup = ""; await Promise.all([ loadSubordinateOptions("recruitType"), loadTableData() ]); renderTable(); return; } if (key === "subjectSelection") { state.filters.disciplineGroup = ""; await Promise.all([ loadSubordinateOptions("subjectSelection"), loadTableData() ]); renderTable(); return; } await loadTableData(); renderTable(); } function toggleSort(key) { if (state.sortKey !== key) { state.sortKey = key; state.sortDir = "desc"; } else if (state.sortDir === "desc") { state.sortDir = "asc"; } else { state.sortKey = null; state.sortDir = null; } renderTable(); } function bindEvents() { var app = document.getElementById("recruit-app"); if (!app) return; app.querySelectorAll(".chip").forEach(function (btn) { btn.addEventListener("click", function () { onFilterChange(btn.getAttribute("data-field"), btn.getAttribute("data-value")); }); }); var searchInput = document.getElementById("search-input"); var clearBtn = document.getElementById("search-clear-btn"); if (searchInput) { searchInput.addEventListener("compositionstart", function () { state.composing = true; }); searchInput.addEventListener("compositionend", function () { state.composing = false; state.searchKeyword = searchInput.value || ""; renderTable({ keepSearchFocus: true, searchCursor: searchInput.selectionStart }); }); searchInput.addEventListener("input", function () { state.searchKeyword = searchInput.value || ""; if (!state.composing) { renderTable({ keepSearchFocus: true, searchCursor: searchInput.selectionStart }); } }); } if (clearBtn) { clearBtn.addEventListener("click", function () { state.searchKeyword = ""; renderTable({ keepSearchFocus: true, searchCursor: 0 }); }); } app.querySelectorAll("[data-sort]").forEach(function (th) { th.addEventListener("click", function () { toggleSort(th.getAttribute("data-sort")); }); }); var retry = document.getElementById("retry-btn"); if (retry) { retry.addEventListener("click", function () { loadPageData(true); }); } } function initRecruitApp() { try { state.hasPlayedHint = localStorage.getItem(MOBILE_HINT_CACHE_KEY) === "1"; } catch (e) { state.hasPlayedHint = false; } syncUrlState(); state.options.province = Object.keys(PROVINCE_MAP).map(function (label) { return { label: label, value: String(PROVINCE_MAP[label]) }; }); renderTable(); loadPageData(true); } initRecruitApp(); // 搜索拼音库仅在初始化完成后异步加载,不阻塞首屏渲染 (function () { var s = document.createElement("script"); s.src="/js/pinyin-pro-3.18.2.js"; s.async = true; document.body.appendChild(s); })(); })();
页面按栏目组织。可先看导读,再进入相关篇目或返回列表。