|
@@ -14,7 +14,7 @@ const CONFIGS: Record<OperationsListKind, ListConfig> = {
|
|
|
relations: { title: '陪练与代理关系', eyebrow: 'USER RELATIONS', description: '核对用户、所属代理及直属关系', operationLabel: '关系记录', rowKey: 'userObjectId', columns: [{ key: 'displayName', label: '用户' }, { key: 'userId', label: '用户 ID' }, { key: 'groupName', label: '用户组' }, { key: 'parentDisplayName', label: '所属代理' }, { key: 'parentUserId', label: '代理 ID' }, { key: 'registeredAt', label: '注册时间', format: 'date' }] },
|
|
relations: { title: '陪练与代理关系', eyebrow: 'USER RELATIONS', description: '核对用户、所属代理及直属关系', operationLabel: '关系记录', rowKey: 'userObjectId', columns: [{ key: 'displayName', label: '用户' }, { key: 'userId', label: '用户 ID' }, { key: 'groupName', label: '用户组' }, { key: 'parentDisplayName', label: '所属代理' }, { key: 'parentUserId', label: '代理 ID' }, { key: 'registeredAt', label: '注册时间', format: 'date' }] },
|
|
|
'course-bindings': { title: '用户课程绑定', eyebrow: 'COURSE BINDINGS', description: '查看学员课程、学习进度和绑定状态', operationLabel: '绑定记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'studentId', label: '学员 ID' }, { key: 'courseName', label: '课程' }, { key: 'learnedCount', label: '已学', format: 'number' }, { key: 'openedCount', label: '课程内容量', format: 'number' }, { key: 'progressStage', label: '进度' }, { key: 'statusLabel', label: '状态', format: 'status' }, { key: 'createdAt', label: '绑定时间', format: 'date' }] },
|
|
'course-bindings': { title: '用户课程绑定', eyebrow: 'COURSE BINDINGS', description: '查看学员课程、学习进度和绑定状态', operationLabel: '绑定记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'studentId', label: '学员 ID' }, { key: 'courseName', label: '课程' }, { key: 'learnedCount', label: '已学', format: 'number' }, { key: 'openedCount', label: '课程内容量', format: 'number' }, { key: 'progressStage', label: '进度' }, { key: 'statusLabel', label: '状态', format: 'status' }, { key: 'createdAt', label: '绑定时间', format: 'date' }] },
|
|
|
appointments: { title: '预约排课', eyebrow: 'APPOINTMENTS', description: '按学员、陪练、课程和状态核对预约', operationLabel: '预约记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'coachName', label: '陪练' }, { key: 'courseName', label: '课程' }, { key: 'appointmentAt', label: '预约时间', format: 'date' }, { key: 'classTypeLabel', label: '课程类型' }, { key: 'billingTypeLabel', label: '计费方式' }, { key: 'statusLabel', label: '状态', format: 'status' }] },
|
|
appointments: { title: '预约排课', eyebrow: 'APPOINTMENTS', description: '按学员、陪练、课程和状态核对预约', operationLabel: '预约记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'coachName', label: '陪练' }, { key: 'courseName', label: '课程' }, { key: 'appointmentAt', label: '预约时间', format: 'date' }, { key: 'classTypeLabel', label: '课程类型' }, { key: 'billingTypeLabel', label: '计费方式' }, { key: 'statusLabel', label: '状态', format: 'status' }] },
|
|
|
- lessons: { title: '上课记录', eyebrow: 'LESSON RECORDS', description: '查看学员、陪练、课程、评价和上课时间', operationLabel: '上课记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'coachName', label: '陪练' }, { key: 'courseName', label: '课程' }, { key: 'classTypeLabel', label: '课程类型' }, { key: 'score', label: '评分', format: 'number' }, { key: 'comment', label: '评价' }, { key: 'lessonAt', label: '上课时间', format: 'date' }] },
|
|
|
|
|
|
|
+ lessons: { title: '训练记录', eyebrow: 'LESSON RECORDS', description: '查看学员、陪练、课程、评价和训练时间', operationLabel: '训练记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'coachName', label: '陪练' }, { key: 'courseName', label: '课程' }, { key: 'classTypeLabel', label: '课程类型' }, { key: 'score', label: '评分', format: 'number' }, { key: 'comment', label: '评价' }, { key: 'lessonAt', label: '训练时间', format: 'date' }] },
|
|
|
'learning-records': { title: '每日学习记录', eyebrow: 'LEARNING RECORDS', description: '跟踪学员学习、掌握和待复习情况', operationLabel: '学习记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'courseName', label: '课程' }, { key: 'studyDate', label: '学习日期', format: 'date' }, { key: 'learned', label: '学习数量', format: 'number' }, { key: 'mastered', label: '已掌握', format: 'number' }, { key: 'reviewDue', label: '待复习', format: 'number' }, { key: 'statusLabel', label: '状态', format: 'status' }] },
|
|
'learning-records': { title: '每日学习记录', eyebrow: 'LEARNING RECORDS', description: '跟踪学员学习、掌握和待复习情况', operationLabel: '学习记录', rowKey: 'targetId', columns: [{ key: 'studentName', label: '学员' }, { key: 'courseName', label: '课程' }, { key: 'studyDate', label: '学习日期', format: 'date' }, { key: 'learned', label: '学习数量', format: 'number' }, { key: 'mastered', label: '已掌握', format: 'number' }, { key: 'reviewDue', label: '待复习', format: 'number' }, { key: 'statusLabel', label: '状态', format: 'status' }] },
|
|
|
finance: { title: '用户课时与余额', eyebrow: 'PERIODS & BALANCES', description: '核对用户 30/60 分钟课时、经验和积分', operationLabel: '用户余额', rowKey: 'userObjectId', columns: [{ key: 'displayName', label: '用户' }, { key: 'userId', label: '用户 ID' }, { key: 'periods30', label: '30 分钟', format: 'number' }, { key: 'periods60', label: '60 分钟', format: 'number' }, { key: 'trialPeriods', label: '体验/经验', format: 'number' }, { key: 'userPoint', label: '积分', format: 'number' }, { key: 'statusLabel', label: '账号状态', format: 'status' }] },
|
|
finance: { title: '用户课时与余额', eyebrow: 'PERIODS & BALANCES', description: '核对用户 30/60 分钟课时、经验和积分', operationLabel: '用户余额', rowKey: 'userObjectId', columns: [{ key: 'displayName', label: '用户' }, { key: 'userId', label: '用户 ID' }, { key: 'periods30', label: '30 分钟', format: 'number' }, { key: 'periods60', label: '60 分钟', format: 'number' }, { key: 'trialPeriods', label: '体验/经验', format: 'number' }, { key: 'userPoint', label: '积分', format: 'number' }, { key: 'statusLabel', label: '账号状态', format: 'status' }] },
|
|
|
'money-logs': { title: '资金积分流水', eyebrow: 'FINANCE LEDGER', description: '查看课时、余额、经验和积分变动记录', operationLabel: '流水记录', rowKey: 'targetId', columns: [{ key: 'userName', label: '用户' }, { key: 'userId', label: '用户 ID' }, { key: 'moneyTypeLabel', label: '项目' }, { key: 'score', label: '变动', format: 'number' }, { key: 'scoreBefore', label: '变动前', format: 'number' }, { key: 'detail', label: '说明' }, { key: 'occurredAt', label: '时间', format: 'date' }] },
|
|
'money-logs': { title: '资金积分流水', eyebrow: 'FINANCE LEDGER', description: '查看课时、余额、经验和积分变动记录', operationLabel: '流水记录', rowKey: 'targetId', columns: [{ key: 'userName', label: '用户' }, { key: 'userId', label: '用户 ID' }, { key: 'moneyTypeLabel', label: '项目' }, { key: 'score', label: '变动', format: 'number' }, { key: 'scoreBefore', label: '变动前', format: 'number' }, { key: 'detail', label: '说明' }, { key: 'occurredAt', label: '时间', format: 'date' }] },
|
|
@@ -74,7 +74,7 @@ export class OperationsListComponent implements OnInit {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
nextAppointmentStatus(status: number): number | null { return status === 0 ? 10 : status === 10 ? 11 : status === 11 ? 20 : status === 20 ? 30 : null; }
|
|
nextAppointmentStatus(status: number): number | null { return status === 0 ? 10 : status === 10 ? 11 : status === 11 ? 20 : status === 20 ? 30 : null; }
|
|
|
- nextAppointmentLabel(status: number): string { return status === 0 ? '开始上课' : status === 10 ? '完成课程' : status === 11 ? '确认完成' : status === 20 ? '归档' : ''; }
|
|
|
|
|
|
|
+ nextAppointmentLabel(status: number): string { return status === 0 ? '开始训练' : status === 10 ? '完成课程' : status === 11 ? '确认完成' : status === 20 ? '归档' : ''; }
|
|
|
|
|
|
|
|
private async mutate(operation: string, targetId: string, payload: Record<string, unknown>, success: string, expectedUpdatedAt = ''): Promise<void> {
|
|
private async mutate(operation: string, targetId: string, payload: Record<string, unknown>, success: string, expectedUpdatedAt = ''): Promise<void> {
|
|
|
this.saving.set(true); this.error.set(''); this.message.set('');
|
|
this.saving.set(true); this.error.set(''); this.message.set('');
|