|
|
|
|
@ -182,6 +182,24 @@
|
|
|
|
|
color: var(--text-color-secondary);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.status-badge {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
padding: 2px 8px;
|
|
|
|
|
border-radius: var(--radius-full);
|
|
|
|
|
font-size: var(--font-size-xs);
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.status-active {
|
|
|
|
|
background-color: color-mix(in srgb, var(--color-success), transparent 85%);
|
|
|
|
|
color: var(--color-success);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.status-inactive {
|
|
|
|
|
background-color: color-mix(in srgb, var(--text-color-disabled), transparent 85%);
|
|
|
|
|
color: var(--text-color-secondary);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.loading-state {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
@ -267,6 +285,18 @@
|
|
|
|
|
<span class="info-label">ID</span>
|
|
|
|
|
<span class="info-value">{{ org.id }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
<span class="info-label">{{ $t('org.code') }}</span>
|
|
|
|
|
<span class="info-value">{{ org.code }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
<span class="info-label">{{ $t('common.status') }}</span>
|
|
|
|
|
<span class="info-value">
|
|
|
|
|
<span class="status-badge" :class="org.status === 1 ? 'status-active' : 'status-inactive'">
|
|
|
|
|
{{ org.status === 1 ? 'Active' : 'Inactive' }}
|
|
|
|
|
</span>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
<span class="info-label">{{ $t('org.created_at') }}</span>
|
|
|
|
|
<span class="info-value">{{ formatDate(org.created_at) }}</span>
|
|
|
|
|
@ -299,6 +329,8 @@
|
|
|
|
|
<th>{{ $t('user.username') }}</th>
|
|
|
|
|
<th>{{ $t('user.email') }}</th>
|
|
|
|
|
<th>{{ $t('user.role') }}</th>
|
|
|
|
|
<th>{{ $t('common.status') }}</th>
|
|
|
|
|
<th>{{ $t('org.joined_at') }}</th>
|
|
|
|
|
<th>{{ $t('common.actions') }}</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
@ -307,10 +339,16 @@
|
|
|
|
|
<td>{{ member.username }}</td>
|
|
|
|
|
<td>{{ member.email || '-' }}</td>
|
|
|
|
|
<td>
|
|
|
|
|
<span class="role-badge" :class="member.role === 'admin' ? 'role-admin' : 'role-member'">
|
|
|
|
|
{{ member.role || 'member' }}
|
|
|
|
|
<span class="role-badge" :class="member.role_ids === 'admin' ? 'role-admin' : 'role-member'">
|
|
|
|
|
{{ member.role_ids || 'member' }}
|
|
|
|
|
</span>
|
|
|
|
|
</td>
|
|
|
|
|
<td>
|
|
|
|
|
<span class="status-badge" :class="member.status === 1 ? 'status-active' : 'status-inactive'">
|
|
|
|
|
{{ member.status === 1 ? 'Active' : 'Inactive' }}
|
|
|
|
|
</span>
|
|
|
|
|
</td>
|
|
|
|
|
<td>{{ formatDate(member.joined_at) }}</td>
|
|
|
|
|
<td>
|
|
|
|
|
<v-btn size="sm" color="danger" variant="outline" :click="() => removeMember(member)"
|
|
|
|
|
v-if="member.id !== currentUserId">
|
|
|
|
|
@ -347,6 +385,7 @@
|
|
|
|
|
orgId = $router.params.id;
|
|
|
|
|
org = null;
|
|
|
|
|
members = [];
|
|
|
|
|
totalMembers = 0;
|
|
|
|
|
loading = false;
|
|
|
|
|
currentUserId = $env.$vbase.user?.id;
|
|
|
|
|
|
|
|
|
|
@ -366,6 +405,7 @@
|
|
|
|
|
]);
|
|
|
|
|
org = orgRes;
|
|
|
|
|
members = membersRes.items || [];
|
|
|
|
|
totalMembers = membersRes.total || 0;
|
|
|
|
|
} catch (e) {
|
|
|
|
|
$message.error(e.message);
|
|
|
|
|
if (e.status === 404) {
|
|
|
|
|
|