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:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user