-
-
{{ child.name }}
+
+
+
+ {{ rel.child.nickname?.charAt(0) }}
+
+
+ {{ rel.child.nickname }}
+ @{{ rel.child.username }}
+
+
- {{ child.gender === 'male' ? '男' : '女' }}
- {{ child.grade }}
- {{ child.city }}
- {{ child.schoolName }}
+ {{ rel.child.gender === 'male' ? '男' : '女' }}
+ {{ rel.child.city }}
+ {{ relationshipLabel(rel.relationship) }}
+
+ {{ rel.child.status === 'enabled' ? '正常' : '禁用' }}
+
@@ -311,7 +321,7 @@ const activeType = ref
('')
const statsItems = computed(() => [
{ type: '', label: '全部', count: stats.value.total, icon: TeamOutlined, color: '#6366f1', bgColor: 'rgba(99,102,241,0.1)' },
- { type: 'platform', label: '平台', count: stats.value.platform, icon: CrownOutlined, color: '#3b82f6', bgColor: 'rgba(59,130,246,0.1)' },
+ { type: 'platform', label: '运营团队', count: stats.value.platform, icon: CrownOutlined, color: '#3b82f6', bgColor: 'rgba(59,130,246,0.1)' },
{ type: 'org', label: '机构', count: stats.value.org, icon: BankOutlined, color: '#10b981', bgColor: 'rgba(16,185,129,0.1)' },
{ type: 'judge', label: '评委', count: stats.value.judge, icon: AuditOutlined, color: '#f59e0b', bgColor: 'rgba(245,158,11,0.1)' },
{ type: 'public', label: '公众', count: stats.value.public, icon: UserOutlined, color: '#8b5cf6', bgColor: 'rgba(139,92,246,0.1)' },
@@ -433,7 +443,7 @@ function getUserTypeKey(user: User): string {
function getUserTypeTag(user: User) {
const map: Record = {
- platform: { label: '平台', color: 'blue' },
+ platform: { label: '运营团队', color: 'blue' },
org: { label: '机构', color: 'green' },
judge: { label: '评委', color: 'orange' },
public: { label: '公众', color: 'purple' },
@@ -531,6 +541,8 @@ const handlePasswordSubmit = async () => {
// ========== 工具函数 ==========
const formatDate = (d?: string) => (d ? dayjs(d).format('YYYY-MM-DD HH:mm') : '-')
const genderLabel = (g?: string) => (g === 'male' ? '男' : g === 'female' ? '女' : '-')
+const relationshipLabel = (r?: string) =>
+ ({ father: '父亲', mother: '母亲', guardian: '监护人' }[r || ''] || r || '-')
const regStateLabel = (s: string) =>
({ pending: '待审核', passed: '已通过', rejected: '已拒绝', withdrawn: '已撤回' }[s] || s)
const regStateColor = (s: string) =>
@@ -721,14 +733,38 @@ $primary: #6366f1;
display: flex;
align-items: center;
justify-content: space-between;
- padding: 8px 12px;
+ padding: 10px 12px;
background: #faf9fe;
border-radius: 8px;
margin-bottom: 8px;
- .child-name {
- font-weight: 600;
- color: #1e1b4b;
+ .child-info {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+
+ .child-avatar {
+ background: linear-gradient(135deg, #8b5cf6, #ec4899);
+ font-weight: 700;
+ font-size: 12px;
+ flex-shrink: 0;
+ }
+
+ .child-detail {
+ display: flex;
+ flex-direction: column;
+
+ .child-name {
+ font-weight: 600;
+ color: #1e1b4b;
+ font-size: 13px;
+ }
+
+ .child-username {
+ font-size: 11px;
+ color: #9ca3af;
+ }
+ }
}
}
}