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
+13 -3
View File
@@ -13,12 +13,14 @@ type TenantRow = {
slug: string
nameFa: string
domain: string
serversCount?: number
server: {
isDedicated: boolean
expiryLevel: ExpiryLevel
expiryLabel: string
serverName?: string | null
planLabel?: string | null
serversCount?: number
}
}
@@ -62,7 +64,9 @@ onMounted(loadTenants)
</a-button>
<div style="flex: 1">
<h1 class="page-title">پنل سرور</h1>
<p class="page-sub">وضعیت اختصاصی یا مدیریت‌شده، شارژ و هشدار نزدیک پایان اعتبار</p>
<p class="page-sub">
هر نسخه می‌تواند چند سرور داشته باشد — وضعیت، شارژ و هشدار نزدیک پایان اعتبار
</p>
</div>
</div>
@@ -94,7 +98,10 @@ onMounted(loadTenants)
>
<strong>{{ t.nameFa }}</strong>
<span>{{ t.server?.expiryLabel }}</span>
<small v-if="t.server?.serverName">{{ t.server.serverName }}</small>
<small v-if="(t.serversCount || 0) > 1">
{{ t.serversCount }} سرور
</small>
<small v-else-if="t.server?.serverName">{{ t.server.serverName }}</small>
<small v-else>{{ t.domain }}</small>
</button>
<div v-if="!groupedTenants.hamkar.length" class="empty-hint">نسخه‌ای نیست</div>
@@ -117,7 +124,10 @@ onMounted(loadTenants)
>
<strong>{{ t.nameFa }}</strong>
<span>{{ t.server?.expiryLabel }}</span>
<small v-if="t.server?.serverName">{{ t.server.serverName }}</small>
<small v-if="(t.serversCount || 0) > 1">
{{ t.serversCount }} سرور
</small>
<small v-else-if="t.server?.serverName">{{ t.server.serverName }}</small>
<small v-else>{{ t.domain }}</small>
</button>
<div v-if="!groupedTenants.khanegi.length" class="empty-hint">نسخه‌ای نیست</div>