ui(admin-panel): responsive users, offers, reports, finance, sms, config, notify and branch menus

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
s.esmaeili
2026-10-13 10:30:25 +03:30
co-authored by Cursor
parent c1b3e90b9b
commit 5a30024548
35 changed files with 260 additions and 81 deletions
+18 -1
View File
@@ -12,7 +12,7 @@
one here too — each slide uses the shared ImageUploadInput, which posts to the
ported `file/create` endpoint and stores the returned URL.
-->
<a-card v-if="hasPermission('config.statics')" title="مدیریت ثابت ها">
<a-card v-if="hasPermission('config.statics')" title="مدیریت ثابت ها" class="page-card table-scroll">
<a-spin :spinning="loading">
<a-tabs>
<!-- برندها -->
@@ -380,4 +380,21 @@ onMounted(async () => {
.mt-4 {
margin-top: 1rem;
}
@media (max-width: 575px) {
/* the add-row input fills what the button leaves instead of a fixed 260px */
.row > .ant-input {
flex: 1 1 140px;
max-width: none !important;
}
.slide {
padding: 10px;
}
.slide .row > * {
flex: 1 1 100%;
}
.mt-4 {
margin-top: 12px;
}
}
</style>
@@ -7,7 +7,7 @@
the server only ever says whether one is set, never what it is.
-->
<div>
<a-card v-if="hasPermission('config.accounting')" title="اتصال به نرم‌افزار حسابداری">
<a-card v-if="hasPermission('config.accounting')" title="اتصال به نرم‌افزار حسابداری" class="page-card table-scroll">
<template #extra>
<a-space>
<a-tag v-if="overview?.busy" color="processing">همگام‌سازی در حال اجرا</a-tag>
@@ -766,4 +766,32 @@ pre {
white-space: pre-wrap;
word-break: break-all;
}
@media (max-width: 575px) {
.mb-4 {
margin-bottom: 12px;
}
.mt-4 {
margin-top: 12px;
}
/* toolbars above the log/links/movement tables: wrap instead of overflowing */
:deep(.ant-space) {
flex-wrap: wrap;
}
:deep(.ant-tabs-tabpane > .ant-space .ant-select),
:deep(.ant-tabs-tabpane > .ant-space .ant-input-search),
:deep(.ant-tabs-tabpane > .ant-space .ant-input) {
width: 100% !important;
}
:deep(.ant-tabs-tabpane > .ant-space > .ant-space-item) {
flex: 1 1 140px;
}
:deep(.ant-alert) {
padding: 10px 12px;
}
:deep(.ant-alert-with-description .ant-alert-icon) {
font-size: 18px;
margin-inline-end: 8px;
}
}
</style>
+13 -1
View File
@@ -3,7 +3,7 @@
Ported from legacy henza_admin/src/views/manage/report.vue — a shortcut board
of report links, read from the `dashboard.links` setting.
-->
<a-card title="مدیریت گزارشات">
<a-card title="مدیریت گزارشات" class="page-card">
<a-empty v-if="links.length === 0" description="هنوز لینکی تعریف نشده است" />
<div v-else class="links">
<a v-for="(l, i) in links" :key="i" :href="l.url" target="_blank" class="link-card">
@@ -39,4 +39,16 @@ onMounted(async () => {
color: #1c2d56;
}
.link-card:hover { border-color: #1c2d56; }
@media (max-width: 575px) {
.links {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
}
.link-card {
padding: 12px;
text-align: center;
}
}
</style>
+15 -1
View File
@@ -9,7 +9,7 @@
draft side by side → the admin confirms the sample is right → «تأیید و
ثبت». The approved sample is kept with the formula as its reference.
-->
<div v-if="hasPermission('config.wage')" class="wage">
<div v-if="hasPermission('config.wage')" class="wage page-card">
<a-spin :spinning="loading">
<!-- ── status ─────────────────────────────────────────── -->
<a-card class="mb-4" :bordered="false">
@@ -498,4 +498,18 @@ onMounted(async () => {
.hist { padding: 8px 0; border-bottom: 1px solid #f5f5f5; }
.hist__meta { font-size: 12px; color: #888; }
@media (max-width: 575px) {
.mb-4 { margin-bottom: 12px; }
.mt-4 { margin-top: 12px; }
.wage :deep(.ant-row) { row-gap: 12px !important; }
.status__title { font-size: 14px; }
.formula { padding: 10px 12px; font-size: 13px; line-height: 2; }
.chip { padding: 0 8px; line-height: 24px; }
.num { width: 100%; flex: 1 1 140px; }
.limit .num { width: auto; flex: 1 1 140px; }
.sample { grid-template-columns: 1fr 1fr; gap: 10px; }
.cmp { font-size: 12px; }
.cmp th, .cmp td { padding: 6px; }
}
</style>
+3 -3
View File
@@ -8,7 +8,7 @@
active tab — so the visually-second tab opens first.
-->
<div>
<a-card v-if="hasPermission('config.wallet')" title="مدیریت کیف پول">
<a-card v-if="hasPermission('config.wallet')" title="مدیریت کیف پول" class="page-card">
<a-tabs default-active-key="1">
<a-tab-pane key="2" tab="تاریخ تولد" force-render>
<a-spin :spinning="loading" tip="لطفا کمی تامل کنید">
@@ -29,7 +29,7 @@
<a-input-number v-model:value="form2.birthday_credit" class="w-full" :min="0" />
</a-form-item>
</div>
<a-button type="primary" class="mb-4 mt-4 mr-4" @click="setWallet2">ارسال</a-button>
<a-button type="primary" class="mb-4 mt-4 mr-4 form-submit" @click="setWallet2">ارسال</a-button>
</a-form>
</a-spin>
</a-tab-pane>
@@ -60,7 +60,7 @@
/>
</a-form-item>
</div>
<a-button type="primary" class="mb-4 mt-4 mr-4" @click="setWallet1">ارسال</a-button>
<a-button type="primary" class="mb-4 mt-4 mr-4 form-submit" @click="setWallet1">ارسال</a-button>
</a-form>
</a-spin>
</a-tab-pane>