@php $canCreate = auth()->user()->can('create', \App\Models\Target::class); $canAssign = auth()->user()->can('assign', \App\Models\Target::class); $canUpdate = app(\App\Support\WorkspaceContext::class)->can(\App\Enums\PermissionEnum::TargetsUpdate); $canDelete = app(\App\Support\WorkspaceContext::class)->can(\App\Enums\PermissionEnum::TargetsDelete); $pageIds = $targets->pluck('id')->map(fn ($id) => (string) $id)->all(); $pageAllChecked = $pageIds !== [] && count(array_diff($pageIds, $selected)) === 0; $selectedCount = $selectAllMatching ? $totalMatching : count($selected); $hasFilters = filled($search) || filled($province) || filled($city) || filled($status) || filled($priority) || filled($assignee) || filled($listId) || filled($followup); @endphp

تارگت‌ها

لیست شماره‌های هدف؛ فیلتر بر اساس استان، پیگیری، تخصیص به کارشناس و اولویت‌بندی.

@if ($canCreate) دانلود فایل نمونه اکسل ورود از اکسل + تارگت جدید @endif
@if ($lastImport)

لیست «{{ $lastImport['name'] }}» وارد شد.

از {{ number_format($lastImport['total']) }} ردیف: {{ number_format($lastImport['imported']) }} تارگت جدید ثبت شد، {{ number_format($lastImport['duplicate']) }} شماره تکراری (قبلاً ثبت بود یا در فایل تکرار شده) نادیده گرفته شد، {{ number_format($lastImport['invalid']) }} شماره نامعتبر رد شد.

@endif {{-- Status chips: counts respect every other active filter --}}
@foreach (\App\Enums\TargetStatus::cases() as $case) @endforeach
{{-- Filters --}}
@if ($seesAll)
@endif
@if ($hasFilters)
@endif
{{-- Bulk actions --}} @if ($selectedCount > 0)
{{ number_format($selectedCount) }} تارگت انتخاب شده @if (! $selectAllMatching && $pageAllChecked && $totalMatching > count($pageIds)) @endif
@if ($canAssign) @endif @if ($canUpdate) @endif @if ($canDelete) @endif
@endif {{-- Desktop table --}} {{-- Mobile cards --}}
@forelse ($targets as $target)
{{ $target->status->label() }}
{{ $target->province ?: '—' }}{{ $target->city ? ' / '.$target->city : '' }} {{ $target->priority->label() }} {{ $target->assignee?->name ?: 'بدون مسئول' }}
@empty

{{ $hasFilters ? 'تارگتی با این فیلترها پیدا نشد.' : 'هنوز تارگتی ثبت نشده است.' }}

@endforelse
{{ $targets->links() }}
{{-- Import modal --}}

ورود لیست تارگت از اکسل

ردیف اول فایل باید عنوان ستون‌ها باشد: نام، موبایل، استان، شهر، شرکت، توضیحات (فقط «موبایل» الزامی است و ترتیب ستون‌ها مهم نیست). اگر ستون «نام خانوادگی» هم بگذارید، ستون «نام» به‌عنوان نام کوچک خوانده می‌شود. شماره‌های تکراری و نامعتبر خودکار رد می‌شوند. فایل‌های xlsx، xls و csv تا ۱۰ مگابایت و ۲۰٬۰۰۰ ردیف پذیرفته می‌شوند. دانلود فایل نمونه
در حال بارگذاری فایل…
@if ($canAssign)
@endif
انصراف ورود لیست در حال ورود…
{{-- Manual create modal --}}

تارگت جدید

@include('livewire.targets._form-fields')
انصراف ثبت