export function createAdmissionViews(context) { const { state, app, h, formatDate, badge, icons, api, renderError, requireLogin, brand } = context; const nav = [['dashboard','工作台','home'],['plans','招生计划','exam'],['placements','投档审核','check']]; function shell(page, content, title, description) { return `
招生学校/${h(title)}
${h((state.user?.displayName || '招').slice(0,1))}${h(state.user?.displayName)}招生学校账号

SCHOOL ADMISSION

${h(title)}

${h(description)}

${content}
`; } async function renderAdmission(page) { if (state.user?.role !== 'admission_school') return requireLogin(); if (!nav.some(item => item[0] === page)) page = 'dashboard'; const meta = { dashboard:['招生工作台','查看本校计划与待审核投档概况。'], plans:['本校招生计划','上传本年度普通生、特长生计划及指标分配,提交后由超级管理员审核。'], placements:['投档考生审核','查看投档考生资料和本场成绩;无特殊理由不得申请退档。'] }; app.innerHTML = shell(page, '
正在读取数据
', ...meta[page]); try { const endpoint = page === 'dashboard' ? 'context' : page; const data = await api(`/api/admission/${endpoint}`); state.pageData = data; const content = page === 'dashboard' ? dashboard(data) : page === 'plans' ? plans(data) : placements(data); app.innerHTML = shell(page, content, ...meta[page]); } catch (error) { renderError(error); } } function dashboard(data) { return `
ADMISSION OFFICE

${h(data.school.name)}

学校只接收超级管理员正式投档的数据,不可查看考生完整志愿表。

本校工作入口

${data.exams.length} 场启用志愿
`; } function plans(data) { return `

提交本校招生计划

按招生类别设置计划人数、特长资格和各生源校指标,提交后由超级管理员审核。

${admissionCategoriesEditor(h, data.sourceSchools)}
${data.plans.map(plan => ``).join('') || ''}
考试类别计划指标分配状态审核意见
${h(data.exams.find(exam => exam.id === plan.examId)?.name || plan.examId)}${plan.payload.categories.map(item => `${h(item.name)} ${h(item.quota)} 人${h(specialtyLabel(item.specialtyCategory, item.specialtyType) || '普通 / 政策类')}`).join('')}${plan.payload.categories.flatMap(category => (category.indicatorAllocations || []).map(allocation => `${h(data.sourceSchools.find(item => item.id === allocation.sourceSchoolId)?.name || allocation.sourceSchoolId)} ${h(allocation.quota)} 人`)).join('
') || '无定向指标'}
${badge(plan.status)}${h(plan.payload.reviewNote || '等待审核')}
尚未提交计划
`; } function placements(data) { const exportBar = data.completedExams?.length ? `
FINAL ROSTER正式录取考生信息 Excel仅录取工作结束后开放,包含本校全部正式录取考生资料与当次成绩。
` : ''; const exams = [...new Map(data.placements.map(item => [item.examId, item.examName])).entries()]; const categories = [...new Set(data.placements.map(item => item.payload.categoryName).filter(Boolean))]; const pendingCount = data.placements.filter(item => item.status === 'school_review').length; const rows = data.placements.map(item => `${h(item.candidate.name)}${h(item.candidate.registrationNumber)} · ${h(item.candidate.idNumberMasked)}${h(item.examName)}${h(item.candidate.specialtyLabel || '普通生')}${h(item.candidate.specialtyCertificate || '')}${h(item.candidate.policyEligibility || '')}${item.results.map(result => `${h(result.subjectName)} ${h(result.score)}`).join('
')}投档分 ${h(item.payload.totalScore)} · 特征分 ${h(item.featureScore || 0)}${h(item.payload.categoryName)}第 ${h(item.payload.preferenceOrder)} 志愿${badge(item.status)}${item.status === 'school_review' ? `
` : `${h(item.payload.schoolDecisionNote || '已处理')}`}`).join(''); return `${exportBar}

本校投档审核台账

可搜索、筛选和多选批量处理;仅待审核记录可被选中。

${pendingCount} 人待审 / 共 ${data.placements.length} 人
已选 0 人
${rows || ''}
选择考生 / 考试资格当次成绩投档类别状态单人审核
暂无投档考生
`; } return { renderAdmission }; } import { admissionCategoriesEditor } from './admission-plan-editor.mjs'; import { specialtyLabel } from '../data/specialty-types.mjs';