feat(versions): shared identity/UI/settings tabs and denser desktop form
Keep the same pill nav on all three Khanegi version pages, tighten the identity form on desktop, and split catalog add/delete into separate modals. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import { useRoute, useRouter } from 'vue-router'
|
||||
import { message } from 'ant-design-vue'
|
||||
import { ArrowRightOutlined } from '@ant-design/icons-vue'
|
||||
import api from '@/api/http'
|
||||
import VersionPageTabs from '@/components/VersionPageTabs.vue'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
|
||||
const route = useRoute()
|
||||
@@ -153,34 +154,41 @@ onMounted(load)
|
||||
<a-button type="text" @click="router.push({ name: 'product-versions', params: { product: 'khanegi' } })">
|
||||
<ArrowRightOutlined />
|
||||
</a-button>
|
||||
<div style="flex: 1">
|
||||
<div class="head-text">
|
||||
<h1 class="page-title">ظاهر اپ خانگی — ماژولار</h1>
|
||||
<p class="page-sub">
|
||||
{{ tenantName || 'نسخه' }}
|
||||
<template v-if="domain"> · {{ domain }}</template>
|
||||
</p>
|
||||
</div>
|
||||
<a-space>
|
||||
<a-select
|
||||
:value="uiVariant"
|
||||
style="width: 180px"
|
||||
:options="[
|
||||
{ value: 'modular', label: 'Modular' },
|
||||
{ value: 'newTheme', label: 'New theme' },
|
||||
]"
|
||||
:disabled="!canWrite || switching || saving || loading"
|
||||
@change="(v: string) => v === 'newTheme' && switchToNewTheme()"
|
||||
<div class="head-aside">
|
||||
<VersionPageTabs
|
||||
active="ui"
|
||||
:tenant-id="String(route.params.id)"
|
||||
ui-route-name="version-ui-modular"
|
||||
/>
|
||||
<a-button
|
||||
v-if="canWrite"
|
||||
type="primary"
|
||||
size="large"
|
||||
:loading="saving"
|
||||
@click="save"
|
||||
>
|
||||
ذخیره
|
||||
</a-button>
|
||||
</a-space>
|
||||
<a-space wrap>
|
||||
<a-select
|
||||
:value="uiVariant"
|
||||
style="width: 180px"
|
||||
:options="[
|
||||
{ value: 'modular', label: 'Modular' },
|
||||
{ value: 'newTheme', label: 'New theme' },
|
||||
]"
|
||||
:disabled="!canWrite || switching || saving || loading"
|
||||
@change="(v: string) => v === 'newTheme' && switchToNewTheme()"
|
||||
/>
|
||||
<a-button
|
||||
v-if="canWrite"
|
||||
type="primary"
|
||||
size="large"
|
||||
:loading="saving"
|
||||
@click="save"
|
||||
>
|
||||
ذخیره
|
||||
</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a-spin :spinning="loading || switching">
|
||||
@@ -269,8 +277,20 @@ onMounted(load)
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.head-text {
|
||||
flex: 1 1 180px;
|
||||
min-width: 0;
|
||||
}
|
||||
.head-aside {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
margin-inline-start: auto;
|
||||
}
|
||||
.hint {
|
||||
color: #64748b;
|
||||
margin: 0 0 16px;
|
||||
|
||||
Reference in New Issue
Block a user