@php $directoryRows = $rows ?? collect(); $directoryFields = $directory['fields'] ?? []; $isInventoryReportPage = ($page['slug'] ?? '') === 'inventory-report'; $inventoryWarehouseMappings = $isInventoryReportPage ? ($inventoryWarehouseMappings ?? collect()) : collect(); $warehouseMappingPreview = $isInventoryReportPage ? session('warehouse_mapping_preview') : null; // “最近三个月销量”必须是三个独立的月份列;月份按当前月向前取三个完整月份。 // 保留原字段名作为兼容契约,渲染时展开为 *_1、*_2、*_3 三个值。 $directoryFields = collect($directoryFields)->flatMap(function (array $field): array { if (($field['name'] ?? null) !== 'recent_three_month_sales') { return [$field]; } return collect(range(3, 1))->map(function (int $monthsAgo): array { $month = now()->startOfMonth()->subMonthsNoOverflow($monthsAgo); return [ 'name' => 'recent_three_month_sales_' . (4 - $monthsAgo), 'label' => $month->format('n月') . '销量', 'kind' => 'number', ]; })->all(); })->values()->all(); $directoryIsPaginated = is_object($directoryRows) && method_exists($directoryRows, 'total'); $directoryTotal = $directoryIsPaginated ? $directoryRows->total() : (is_countable($directoryRows) ? count($directoryRows) : 0); $directoryCurrentPage = $directoryIsPaginated ? $directoryRows->currentPage() : 1; $directoryLastPage = $directoryIsPaginated ? $directoryRows->lastPage() : 1; $directoryPerPage = $directoryIsPaginated ? $directoryRows->perPage() : 0; // 页面配置在部分导航上下文中会省略父级 slug,优先使用当前路由参数避免功能开关失配。 $directoryRouteSection = request()->route('section') ?: request()->segment(3) ?: ($section['slug'] ?? ''); $directoryRoutePage = request()->route('page') ?: request()->segment(4) ?: ($page['slug'] ?? ''); $directoryPageKey = (string) $directoryRouteSection . '/' . (string) $directoryRoutePage; $directoryUsesFieldQuery = in_array($directoryPageKey, [ 'company-management/basic-information', 'store-management/basic-information', 'trademark-management/information', 'store-management/store-accounts', 'store-management/store-report', 'company-management/subject-operating-report', 'company-management/company-cost-arrangement', 'company-management/personnel-inventory', ], true); $directoryQueryPageDescriptions = [ 'company-management/basic-information' => '公司主体、状态和登记资料的查询与导出', 'store-management/basic-information' => '店铺主体、平台和经营资料的查询与导出', 'trademark-management/information' => '商标主体、状态和登记资料的查询与导出', 'store-management/store-accounts' => '店铺账号资料的查询与安全状态导出', 'store-management/store-report' => '按店铺、主体和月份销量查询经营数据并导出', 'company-management/subject-operating-report' => '按主体和收入月份查询经营汇总并导出', 'company-management/company-cost-arrangement' => '按公司类型和发票类型查询成本安排字段', 'company-management/personnel-inventory' => '按人员、职位和公司类型查询人员盘点字段', ]; @endphp
@if ($directoryUsesFieldQuery)
{{ $page['title'] ?? $section['title'] }}

{{ $directoryQueryPageDescriptions[$directoryPageKey] ?? '基础资料的查询与导出' }}

{{ $directory['status'] ?? '尚未同步' }}
@if (!empty($upstreamError)) @elseif ($directoryTotal > 0 && in_array($directoryPageKey, ['store-management/store-accounts', 'store-management/store-report', 'company-management/subject-operating-report', 'company-management/company-cost-arrangement', 'company-management/personnel-inventory'], true))
已从共享业务镜像读取 {{ $directoryTotal }} 条数据,当前页面为只读展示。
@endif @else @if ($isInventoryReportPage)
@else
{{ $page['title'] ?? $section['title'] }} · 字段结构 @if (!empty($directory['description']))

{{ $directory['description'] }}

@endif
{{ $directory['status'] ?? '尚未同步' }}
@endif @if (!empty($upstreamError)) @elseif (($directory['status'] ?? null) === '演示数据' && $directoryTotal > 0)
已按附件模板导入 {{ $directoryTotal }} 条演示数据,当前页面为只读展示。
@elseif ($directoryTotal > 0)
已从共享业务镜像读取 {{ $directoryTotal }} 条数据,当前页面为只读展示。
@elseif (($directory['status'] ?? null) === '既有只读上游')
当前页面只读显示既有上游资料;未匹配的 Excel 字段保留为空,不代表业务上没有数据。
@elseif (($directory['status'] ?? null) === '共享镜像' && $directoryTotal > 0)
当前显示团队共享业务镜像数据,分页和汇总均基于已同步镜像。
@else
{{ $directory['empty'] ?? '数据尚未同步,当前只展示已确认的字段结构。' }}
@endif @endif @if (!empty($directoryFields)) @php $directoryQueryFields = $directoryPageKey === 'company-management/basic-information' ? [ ['name' => 'unified_social_credit_code', 'label' => '统一社会信用代码', 'placeholder' => '输入完整或部分代码'], ['name' => 'company_name', 'label' => '公司名称', 'placeholder' => '输入公司名称关键词'], ['name' => 'taxpayer_type', 'label' => '纳税人类型'], ['name' => 'company_status', 'label' => '公司状态'], ['name' => 'legal_representative', 'label' => '法人', 'placeholder' => '按姓名查询'], ['name' => 'city', 'label' => '城市', 'placeholder' => '城市较多,使用搜索'], ['name' => 'related_people', 'label' => '相关人员', 'placeholder' => '输入人员姓名,模糊匹配'], ['name' => 'company_type', 'label' => '公司类型'], ] : $directoryFields; $directoryExcludedQueryFields = match ($directoryPageKey) { 'store-management/basic-information' => ['opened_at', 'renewed_at'], 'trademark-management/information' => ['registration_date', 'expiry_date'], default => [], }; if (!empty($directoryExcludedQueryFields)) { $directoryQueryFields = collect($directoryQueryFields) ->reject(fn (array $field): bool => in_array( $field['name'], $directoryExcludedQueryFields, true, )) ->values() ->all(); } $directoryMoreQueryFields = collect($directoryQueryFields) ->filter(function (array $field) use ($directoryPageKey): bool { $kind = $field['kind'] ?? 'text'; return in_array($directoryPageKey, [ 'store-management/store-report', 'company-management/subject-operating-report', 'company-management/company-cost-arrangement', 'company-management/personnel-inventory', ], true) && in_array($kind, ['date', 'number', 'integer', 'secret', 'secret_status'], true); }) ->values() ->all(); $directoryPrimaryQueryFields = collect($directoryQueryFields) ->reject(fn (array $field): bool => in_array($field['name'], array_column($directoryMoreQueryFields, 'name'), true)) ->values() ->all(); $directorySelectFields = match (($section['slug'] ?? '') . '/' . ($page['slug'] ?? '')) { 'company-management/basic-information' => ['taxpayer_type', 'company_status', 'company_type'], 'store-management/basic-information' => ['platform', 'store_status', 'withdrawal_account'], 'trademark-management/information' => ['trademark_status'], 'store-management/store-accounts' => ['account_type', 'password_configured'], 'store-management/store-report' => ['status', 'can_change', 'company_type'], 'company-management/subject-operating-report' => ['company_type', 'can_change_entity'], 'company-management/company-cost-arrangement' => ['company_type', 'invoice_type'], 'company-management/personnel-inventory' => ['company_type'], default => [], }; $directoryColumnNames = collect($directoryFields)->pluck('name')->all(); $requestedDirectoryColumns = array_values(array_intersect( array_filter(explode(',', (string) request('columns', ''))), $directoryColumnNames, )); $visibleDirectoryColumns = request()->has('columns') ? $requestedDirectoryColumns : $directoryColumnNames; $directoryQueryFormId = 'directory-query-form-' . ($page['slug'] ?? 'page'); @endphp @if ($directoryUsesFieldQuery)
查询条件 类型较少的字段直接选择,内容较多的字段支持关键词搜索
@if (request()->has('columns')) @endif @foreach ($directoryPrimaryQueryFields as $field) @php $kind = $field['kind'] ?? 'text'; @endphp @continue($kind === 'secret' && $field['name'] !== 'withdrawal_account') @continue(($page['slug'] ?? '') === 'store-accounts' && in_array($field['name'], [ 'account', 'password_configured', 'bound_phone', 'verification_contact', 'account_group_name', 'created_at', 'updated_at', ], true)) @endforeach @if ($directoryMoreQueryFields !== [])
更多查询条件({{ count($directoryMoreQueryFields) }})
@foreach ($directoryMoreQueryFields as $field) @php $kind = $field['kind'] ?? 'text'; @endphp @continue($kind === 'secret' && $field['name'] !== 'withdrawal_account') @continue(($page['slug'] ?? '') === 'store-accounts' && in_array($field['name'], [ 'account', 'password_configured', 'bound_phone', 'verification_contact', 'account_group_name', 'created_at', 'updated_at', ], true)) @endforeach
@endif
筛选字段
勾选需要显示的表头,可重复调整。 @foreach ($directoryFields as $field) @endforeach
导出 Excel
默认全选,可取消不需要导出的表头。 @foreach ($directoryFields as $field) @endforeach
@endif @if (($page['slug'] ?? '') === 'store-report' && ! $directoryUsesFieldQuery)
@php $storeFilterTextFields = [ ['name' => 'store_name', 'label' => '店铺名称:'], ['name' => 'store_id', 'label' => '店铺ID:'], ['name' => 'profit_center', 'label' => '利润中心:'], ['name' => 'store_manager', 'label' => '店铺负责人:'], ['name' => 'department_manager', 'label' => '部门负责人:'], ['name' => 'entity', 'label' => '主体:'], ['name' => 'company_type', 'label' => '公司类型:'], ]; $storeFilterDateFields = [ ['name' => 'opened_at', 'label' => '开店时间:'], ['name' => 'effective_at', 'label' => '生效时间:'], ['name' => 'invalid_at', 'label' => '失效时间:'], ]; @endphp @foreach ($storeFilterTextFields as $filter) @endforeach @foreach ($storeFilterDateFields as $filter) @endforeach
清除
@elseif (($page['slug'] ?? '') === 'inventory-report')
清除
@endif @if (! $directoryUsesFieldQuery)
@if (($page['slug'] ?? '') === 'inventory-report') @else
@endif
@endif
@foreach ($directoryFields as $field) @endforeach @forelse ($directoryRows as $rowIndex => $row) @foreach ($directoryFields as $field) @php $source = array_key_exists('source', $field) ? $field['source'] : $field['name']; $value = $source ? data_get($row, $source) : null; $kind = $field['kind'] ?? 'text'; $display = $value; if ($kind === 'secret') { $display = filled($value) ? '已配置' : '—'; } elseif ($kind === 'secret_status') { $display = $value === null || $value === '' ? '状态未同步' : ($value ? '已设置' : '未设置'); } elseif ($kind === 'date' && filled($value)) { $display = substr((string) $value, 0, 10); } elseif ($kind === 'number' && is_numeric($value)) { $display = number_format((float) $value, 2); } elseif ($kind === 'integer' && is_numeric($value)) { $display = number_format((int) $value); } elseif ($kind === 'boolean' && $value !== null && $value !== '') { $display = in_array($value, [true, 1, '1', '是', '✔'], true) ? '是' : '否'; } @endphp @endforeach @empty @endforelse
# @if ($directoryUsesFieldQuery) @php $isSorted = request('sort') === $field['name']; $direction = $isSorted ? request('direction', 'asc') : null; $nextDirection = $isSorted && $direction === 'asc' ? 'desc' : 'asc'; @endphp
{{ $field['label'] }}
升序 降序
@elseif ($isInventoryReportPage && $field['name'] === 'warehouse_short_name') @else {{ $field['label'] }} @endif
{{ $rowIndex + 1 + (($directoryCurrentPage - 1) * $directoryPerPage) }} @if (($page['slug'] ?? '') === 'store-accounts' && $field['name'] === 'password_configured') {{ filled($display) ? $display : '—' }} @if ($value === false) 未设置 @else 读取中… @endif @else {{ filled($display) ? $display : ($isInventoryReportPage && $field['name'] === 'warehouse_short_name' ? '' : '—') }} @endif
{{ !empty($upstreamError) ? '资料暂时无法读取,请按上方提示检查连接;这不代表业务数据为 0。' : ($directory['empty'] ?? '尚未同步数据。') }}
@if ($directoryIsPaginated && empty($upstreamError))
共 {{ $directoryTotal }} 条 · 第 {{ $directoryCurrentPage }} / {{ $directoryLastPage }} 页 @if ($directoryRows->onFirstPage()) 上一页 @else 上一页 @endif · @if ($directoryRows->hasMorePages()) 下一页 @else 下一页 @endif
@endif @if ($isInventoryReportPage)
@endif @if (($page['slug'] ?? '') === 'subject-operating-report') @endif @endif
@if (($page['slug'] ?? '') === 'store-accounts') @include('business.pages.partials.store-account-password') @endif @once @endonce