Files
boursecu_admin/src/pages/menuPages/accounting/components/PargarMobileCardList.vue
T
2026-07-05 16:41:45 +03:30

80 lines
2.1 KiB
Vue

<template>
<MobileCardList
v-model:search="search"
:loading="loading"
:has-more="hasMore"
:show-empty="!loading && items.length === 0"
empty-text="سندی یافت نشد"
@search="reload"
@load-more="loadMore"
>
<PargarMobileListItem
v-for="item in items"
:key="item.id"
:item="item"
@open="openSheet"
/>
</MobileCardList>
<PargarMobileDetailSheet
v-model:visible="sheetVisible"
:item="selectedItem"
@retry="openRetry"
@register-customer="openRegister"
/>
<PargarRetryModal
v-model="retryVisible"
mode="retry-sanad"
:pargar-id="selectedItem?.id"
@success="onRetrySuccess"
/>
<PargarRetryModal
v-model="registerVisible"
mode="register-customer"
:customer-id="selectedItem?.customer_id"
:customer-name="selectedItem?.customer?.name"
@success="onRetrySuccess"
/>
</template>
<script setup lang="ts">
import { getPargarTable, type PargarRecord } from '@/api/pargar'
import MobileCardList from '@/components/mobile/MobileCardList.vue'
import { useMobileDetailSheet } from '@/components/mobile/composables/useMobileDetailSheet'
import { useMobileTableList } from '@/components/mobile/composables/useMobileTableList'
import PargarRetryModal from '@/components/PargarRetryModal.vue'
import PargarMobileDetailSheet from './PargarMobileDetailSheet.vue'
import PargarMobileListItem from './PargarMobileListItem.vue'
const { sheetVisible, selectedItem, openSheet, syncSelectedItem } = useMobileDetailSheet<PargarRecord>()
const retryVisible = ref(false)
const registerVisible = ref(false)
const { loading, search, items, hasMore, reload, loadMore, fetch } = useMobileTableList<PargarRecord>({
fetchApi: getPargarTable,
onFetched: (rows) => syncSelectedItem(rows)
})
function openRetry(item: PargarRecord) {
selectedItem.value = item
sheetVisible.value = false
retryVisible.value = true
}
function openRegister(item: PargarRecord) {
selectedItem.value = item
sheetVisible.value = false
registerVisible.value = true
}
async function onRetrySuccess() {
await fetch()
}
onMounted(() => reload())
defineExpose({ fetch })
</script>