changes of giftCard page

This commit is contained in:
2026-10-20 12:11:46 +03:30
parent 2927d64c64
commit e5b3d0c931
55 changed files with 1495 additions and 140 deletions
@@ -4,7 +4,7 @@
<MobileSheetHeader :title="sheetTitle" :show-title="isMobile">
<template #actions>
<MobileIconButton
v-if="!row.pargar_ref && !row.customer?.pargar_account_id"
v-if="can('register') && !row.pargar_ref && !row.customer?.pargar_account_id"
plain
icon="vuesax-linear:profile-add"
color="#7C3AED"
@@ -12,7 +12,7 @@
@click="$emit('register-customer', row)"
/>
<MobileIconButton
v-if="canRetry(row)"
v-if="can('send') && canRetry(row)"
plain
icon="vuesax-linear:refresh-circle"
color="#CA8A04"
@@ -88,6 +88,9 @@ import {
} from '@/pages/menuPages/accounting/utils/pargarDisplay'
import { isMobile } from '@core/utils/is'
import { toJalali } from '@core/utils/useDataTime'
import { usePageActionAccess } from '@/composables/usePageActionAccess'
const { can } = usePageActionAccess()
const props = defineProps<{
visible: boolean
@@ -4,7 +4,7 @@
<MobileSheetHeader :title="sheetTitle" :show-title="isMobile">
<template #actions>
<MobileIconButton
v-if="!row.tahesab_id && !row.customer?.moshtari_code"
v-if="can('register') && !row.tahesab_id && !row.customer?.moshtari_code"
plain
icon="vuesax-linear:profile-add"
color="#7C3AED"
@@ -12,7 +12,7 @@
@click="$emit('register-customer', row)"
/>
<MobileIconButton
v-if="canRetry(row)"
v-if="can('send') && canRetry(row)"
plain
icon="vuesax-linear:refresh-circle"
color="#CA8A04"
@@ -60,6 +60,9 @@ import {
import { canRetryTahesab, tahesabStatusLabel } from '@/pages/menuPages/accounting/utils/tahesabStatus'
import { isMobile } from '@core/utils/is'
import { toJalali } from '@core/utils/useDataTime'
import { usePageActionAccess } from '@/composables/usePageActionAccess'
const { can } = usePageActionAccess()
const props = defineProps<{
visible: boolean
@@ -4,7 +4,7 @@
<MobileSheetHeader :title="sheetTitle" :show-title="isMobile">
<template #actions>
<MobileIconButton
v-if="!row.zarin_id && !row.customer?.moshtari_code"
v-if="can('register') && !row.zarin_id && !row.customer?.moshtari_code"
plain
icon="vuesax-linear:profile-add"
color="#7C3AED"
@@ -12,7 +12,7 @@
@click="$emit('register-customer', row)"
/>
<MobileIconButton
v-if="canRetry(row)"
v-if="can('send') && canRetry(row)"
plain
icon="vuesax-linear:refresh-circle"
color="#CA8A04"
@@ -60,6 +60,9 @@ import {
import { canRetryZarin, zarinStatusLabel } from '@/pages/menuPages/accounting/utils/zarinStatus'
import { isMobile } from '@core/utils/is'
import { toJalali } from '@core/utils/useDataTime'
import { usePageActionAccess } from '@/composables/usePageActionAccess'
const { can } = usePageActionAccess()
const props = defineProps<{
visible: boolean
@@ -7,14 +7,14 @@
<div class="flex justify-center gap-2">
<!-- دکمه ۱: اطلاعات کلی (همیشه نمایان) -->
<a-tooltip placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<a-tooltip v-if="can('doc')" placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<template #title><span>اطلاعات سند</span></template>
<Icon icon="vuesax-linear:stickynote" color="#10913A" />
</a-tooltip>
<!-- دکمه ۲: ثبت مشتری در پرگار (فقط اگر سند هنوز ثبت نشده و مشتری کد ندارد) -->
<a-tooltip
v-if="canRetryPargar(record) && !record.customer?.pargar_account_id"
v-if="can('register') && canRetryPargar(record) && !record.customer?.pargar_account_id"
placement="bottom"
class="cursor-pointer"
@click="openRegister(record)"
@@ -25,7 +25,7 @@
<!-- دکمه ۳: ارسال به پرگار (فقط اگر هنوز در پرگار ثبت نشده) -->
<a-tooltip
v-if="canRetryPargar(record)"
v-if="can('send') && canRetryPargar(record)"
placement="bottom"
class="cursor-pointer"
@click="openSend(record)"
@@ -138,6 +138,9 @@ import {
} from '@/pages/menuPages/accounting/utils/pargarDisplay'
import { toJalali } from '@core/utils/useDataTime'
import { accountingPargarDocsIntro } from '@/utils/adminHelpCopy'
import { usePageActionAccess } from '@/composables/usePageActionAccess'
const { can } = usePageActionAccess()
const [submit, reload] = useBaseTable()
const mobileListRef = ref<null | { fetch: () => Promise<void> }>(null)
@@ -79,12 +79,12 @@
</template>
<template v-else-if="column.key === 'action'">
<div class="flex justify-center gap-2">
<a-tooltip placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<a-tooltip v-if="can('doc')" placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<template #title><span>جزئیات</span></template>
<Icon icon="vuesax-linear:stickynote" color="#10913A" />
</a-tooltip>
<a-tooltip
v-if="!record.tahesab_id && !record.customer?.moshtari_code && record.customer_id"
v-if="can('register') && !record.tahesab_id && !record.customer?.moshtari_code && record.customer_id"
placement="bottom"
class="cursor-pointer"
@click="openRegister(record)"
@@ -93,6 +93,7 @@
<Icon icon="vuesax-linear:profile-add" color="#7C3AED" />
</a-tooltip>
<a-button
v-if="can('send')"
type="link"
size="small"
:loading="syncingRowKey === failedRowKey(record)"
@@ -111,13 +112,13 @@
<BaseTable :key="docsView" v-bind="tblProps" @register="submit" ref="tbl">
<template #action="{ record }">
<div class="flex justify-center gap-2">
<a-tooltip placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<a-tooltip v-if="can('doc')" placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<template #title><span>اطلاعات سند</span></template>
<Icon icon="vuesax-linear:stickynote" color="#10913A" />
</a-tooltip>
<a-tooltip
v-if="!record.tahesab_id && !record.customer?.moshtari_code"
v-if="can('register') && !record.tahesab_id && !record.customer?.moshtari_code"
placement="bottom"
class="cursor-pointer"
@click="openRegister(record)"
@@ -127,7 +128,7 @@
</a-tooltip>
<a-tooltip
v-if="!record.tahesab_id"
v-if="can('send') && !record.tahesab_id"
placement="bottom"
class="cursor-pointer"
@click="openSend(record)"
@@ -221,6 +222,9 @@ import {
import { toJalali } from '@core/utils/useDataTime'
import { accountingTahesabDocsIntro } from '@/utils/adminHelpCopy'
import { useTahesabDocSyncStore } from '@/store/tahesabDocSyncStore'
import { usePageActionAccess } from '@/composables/usePageActionAccess'
const { can } = usePageActionAccess()
const docSyncStore = useTahesabDocSyncStore()
@@ -76,12 +76,12 @@
</template>
<template v-else-if="column.key === 'action'">
<div class="flex justify-center gap-2">
<a-tooltip placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<a-tooltip v-if="can('doc')" placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<template #title><span>جزئیات</span></template>
<Icon icon="vuesax-linear:stickynote" color="#10913A" />
</a-tooltip>
<a-tooltip
v-if="!record.zarin_id && !record.customer?.moshtari_code && record.customer_id"
v-if="can('register') && !record.zarin_id && !record.customer?.moshtari_code && record.customer_id"
placement="bottom"
class="cursor-pointer"
@click="openRegister(record)"
@@ -90,6 +90,7 @@
<Icon icon="vuesax-linear:profile-add" color="#7C3AED" />
</a-tooltip>
<a-button
v-if="can('send')"
type="link"
size="small"
:loading="syncingRowKey === failedRowKey(record)"
@@ -108,13 +109,13 @@
<BaseTable :key="docsView" v-bind="tblProps" @register="submit" ref="tbl">
<template #action="{ record }">
<div class="flex justify-center gap-2">
<a-tooltip placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<a-tooltip v-if="can('doc')" placement="bottom" class="cursor-pointer" @click="openInfo(record)">
<template #title><span>اطلاعات سند</span></template>
<Icon icon="vuesax-linear:stickynote" color="#10913A" />
</a-tooltip>
<a-tooltip
v-if="!record.zarin_id && !record.customer?.moshtari_code"
v-if="can('register') && !record.zarin_id && !record.customer?.moshtari_code"
placement="bottom"
class="cursor-pointer"
@click="openRegister(record)"
@@ -124,7 +125,7 @@
</a-tooltip>
<a-tooltip
v-if="!record.zarin_id"
v-if="can('send') && !record.zarin_id"
placement="bottom"
class="cursor-pointer"
@click="openSend(record)"
@@ -216,6 +217,9 @@ import {
} from '@/pages/menuPages/accounting/utils/accountingDocAmounts'
import { toJalali } from '@core/utils/useDataTime'
import { accountingZarinDocsIntro } from '@/utils/adminHelpCopy'
import { usePageActionAccess } from '@/composables/usePageActionAccess'
const { can } = usePageActionAccess()
const props = defineProps<{
customerId?: number