Support multiple servers per tenant in server panel UI.

Add server chips, create/delete flows, and show server count or name on list and home expiring cards.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-06 19:23:38 +03:30
co-authored by Cursor
parent 7889a7905f
commit 99c219e57e
3 changed files with 400 additions and 165 deletions
+9 -2
View File
@@ -26,6 +26,7 @@ type ServerSummary = {
expiryLevel: ExpiryLevel
expiryLabel: string
isDedicated?: boolean
serverName?: string | null
}
type Tenant = {
@@ -33,6 +34,7 @@ type Tenant = {
product: 'hamkar' | 'khanegi'
slug?: string
nameFa?: string
serverAccountId?: string
sms?: SmsSummary
server?: ServerSummary
}
@@ -221,14 +223,19 @@ onMounted(load)
<div class="sms-mini-grid">
<button
v-for="tenant in expiringServers"
:key="tenant.id"
:key="`${tenant.id}-${tenant.serverAccountId || tenant.server?.serverName || ''}`"
type="button"
class="sms-mini-card"
:class="serverTone(tenant.server?.expiryLevel)"
@click.stop="openServerPanel(tenant.id)"
>
<strong>{{ tenant.nameFa }}</strong>
<span>{{ tenant.product === 'hamkar' ? 'همکار' : 'خانگی' }}</span>
<span>
{{ tenant.product === 'hamkar' ? 'همکار' : 'خانگی' }}
<template v-if="tenant.server?.serverName">
· {{ tenant.server.serverName }}
</template>
</span>
<small>{{ tenant.server?.expiryLabel || 'نامشخص' }}</small>
</button>
<div v-if="!expiringServers.length" class="sms-mini-empty">