This commit is contained in:
2026-07-20 18:04:10 +08:00 Unverified
parent a30477bb58
commit 67863e7ebf
16 changed files with 211 additions and 57 deletions
+25 -2
View File
@@ -397,7 +397,14 @@ function examRegistrationView(db, registration) {
const subjects = (exam?.subjects || []).filter(subject => registration.subjectIds.includes(subject.id));
const instance = db.workflowInstances.find(item => item.businessType === 'registration_review' && item.businessId === registration.id && item.status === 'pending')
|| db.workflowInstances.filter(item => item.businessType === 'registration_review' && item.businessId === registration.id)[0];
return { ...registration, exam, subjects, workflow: workflowView(db, instance) };
return {
...registration,
exam,
subjects,
amountDue: Number(subjects.reduce((sum, subject) => sum + Number(subject.fee || 0), 0).toFixed(2)),
paidByName: db.users.find(item => item.id === registration.paidBy)?.displayName || '',
workflow: workflowView(db, instance)
};
}
function logAction(db, user, action, detail) {
@@ -409,7 +416,7 @@ function logAction(db, user, action, detail) {
const excelResourceNames = {
classes: '班级台账', class_admins: '班级管理员', account_quotas: '报名号班级配额',
account_results: '报名号下发结果', candidates: '考生资料', centers: '考点考场档案', results: '成绩台账',
account_results: '报名号下发结果', candidates: '考生资料', payments: '考试缴费名单', centers: '考点考场档案', results: '成绩台账',
admit_cards: '准考证信息台账'
};
@@ -474,6 +481,22 @@ function excelRowsForResource(db, user, resource, searchParams) {
address: profile.address, className: db.classes.find(item => item.id === profile.classId)?.name || profile.grade,
ethnicity: profile.ethnicity, birthDate: profile.birthDate, postalCode: profile.postalCode, guardianName: profile.guardianName, guardianPhone: profile.guardianPhone
}));
if (resource === 'payments') return db.registrations.filter(item => item.status === 'approved' && registrationInScope(db, user, item)).map(registration => {
const profile = db.candidateProfiles.find(item => item.userId === registration.userId) || {};
const account = db.users.find(item => item.id === registration.userId) || {};
const exam = db.exams.find(item => item.id === registration.examId) || { subjects: [] };
const subjects = exam.subjects.filter(subject => registration.subjectIds.includes(subject.id));
return {
examCode: exam.code || '', examName: exam.name || '',
schoolName: db.schools.find(item => item.id === profile.schoolId)?.name || profile.school || '',
className: db.classes.find(item => item.id === profile.classId)?.name || profile.grade || '',
candidateNumber: account.candidateNumber || registration.registrationNumber || '', candidateName: profile.name || account.displayName || '',
subjectNames: subjects.map(subject => subject.name).join('、'),
amountDue: Number(subjects.reduce((sum, subject) => sum + Number(subject.fee || 0), 0).toFixed(2)),
paymentStatus: registration.paymentStatus === 'paid' ? '已缴费' : '待缴费', paidAt: registration.paidAt || '',
paidByName: db.users.find(item => item.id === registration.paidBy)?.displayName || ''
};
});
if (resource === 'centers') return db.testCenters.filter(center => schools.some(school => school.id === center.schoolId)).flatMap(center => {
const rooms = db.testRooms.filter(room => room.centerId === center.id);
return (rooms.length ? rooms : [{}]).map(room => ({