Files
saasshop/resources/views/admin/platform_leads/index.blade.php

160 lines
6.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('admin.layouts.app')
@section('title', '开通线索')
@section('page_title', '开通线索')
@section('content')
@php
// back 参数用于“返回上一页(保留上下文)”,但 back 本身不应再包含 back避免无限嵌套导致 URL 膨胀)
$currentQuery = request()->query();
unset($currentQuery['back']);
$selfWithoutBack = '/' . ltrim(request()->path(), '/');
if (count($currentQuery) > 0) {
$selfWithoutBack .= '?' . \Illuminate\Support\Arr::query($currentQuery);
}
// 从线索直达“创建平台订单”入口:预填 plan_id/remark并带 back 回到当前线索列表(保留筛选)
// 备注:如果线索 meta 中包含 merchant_id也会一并预填用于“已存在站点但需补单/续费”的场景)
$buildCreatePlatformOrderUrl = function (\App\Models\PlatformLead $l) use ($selfWithoutBack) {
$remarkParts = array_filter([
'线索#' . $l->id,
$l->name,
$l->mobile,
$l->company,
$l->email,
// 后续可用于“从线索追溯来源页/入口”
$l->source ? ('src:' . $l->source) : '',
], fn ($v) => (string) $v !== '');
$q = [
'order_type' => 'new_purchase',
'back' => $selfWithoutBack,
'remark' => mb_substr(implode(' / ', $remarkParts), 0, 220),
// 轻量联动:从线索创建订单后,把线索标记为已转化(后续可再升级为“创建成功后回写”)
'lead_id' => (int) $l->id,
];
if ((int) $l->plan_id > 0) {
$q['plan_id'] = (int) $l->plan_id;
}
$meta = is_array($l->meta) ? $l->meta : [];
$merchantId = (int) ($meta['merchant_id'] ?? 0);
if ($merchantId > 0) {
$q['merchant_id'] = $merchantId;
}
return '/admin/platform-orders/create?' . \Illuminate\Support\Arr::query($q);
};
@endphp
<div class="card mb-20">
<p class="muted muted-tight">对外平台(/platform收集的开通意向线索用于前期 A站点开通型人工运营承接。</p>
<p class="muted">后续会在此处逐步接入:一键生成站点/订阅/平台订单、跟进记录、转化漏斗与治理提示。</p>
</div>
<div class="card mb-20">
<h3>筛选</h3>
<form method="get" action="/admin/platform-leads" class="grid-3">
<select name="status">
<option value="">全部状态</option>
@foreach(($statusLabels ?? []) as $v => $label)
<option value="{{ $v }}" @selected(($filters['status'] ?? '') === $v)>{{ $label }}</option>
@endforeach
</select>
<input name="keyword" placeholder="关键词:姓名/手机号/邮箱/公司" value="{{ $filters['keyword'] ?? '' }}">
<div>
<button type="submit">应用筛选</button>
</div>
</form>
</div>
<div class="card">
<h3>线索列表</h3>
<div class="muted mb-10">当前阶段仅提供查询与筛选;已补“从线索创建订单”入口,先把收费闭环跑起来。</div>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>状态</th>
<th>姓名</th>
<th>手机号</th>
<th>邮箱</th>
<th>公司</th>
<th>套餐ID</th>
<th>来源</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
@forelse($leads as $l)
<tr>
<td>{{ $l->id }}</td>
<td>
<div class="actions">
<span>{{ $statusLabels[$l->status] ?? $l->status }}</span>
@php
// 轻量运营流转:仅展示“下一步可能动作”,减少噪音/误点。
$nextActions = [];
switch ((string) $l->status) {
case 'new':
$nextActions = ['contacted', 'converted', 'closed'];
break;
case 'contacted':
$nextActions = ['qualified', 'converted', 'closed'];
break;
case 'qualified':
$nextActions = ['converted', 'closed'];
break;
case 'converted':
$nextActions = ['closed'];
break;
default:
$nextActions = [];
}
$actionLabels = [
'contacted' => ['text' => '标记已联系', 'class' => 'btn-secondary btn-sm'],
'qualified' => ['text' => '标记已确认需求', 'class' => 'btn-secondary btn-sm'],
'converted' => ['text' => '标记已转化', 'class' => 'btn btn-sm'],
'closed' => ['text' => '关闭', 'class' => 'btn-danger btn-sm'],
];
@endphp
@foreach($nextActions as $status)
<form method="post" action="/admin/platform-leads/{{ $l->id }}/set-status" class="inline-form">
@csrf
<input type="hidden" name="status" value="{{ $status }}">
<button type="submit" class="{{ $actionLabels[$status]['class'] ?? 'btn-secondary btn-sm' }}">{{ $actionLabels[$status]['text'] ?? $status }}</button>
</form>
@endforeach
</div>
</td>
<td>{{ $l->name }}</td>
<td>{{ $l->mobile }}</td>
<td>{{ $l->email }}</td>
<td>{{ $l->company }}</td>
<td>{{ $l->plan_id ?: '-' }}</td>
<td>{{ $l->source }}</td>
<td>{{ optional($l->created_at)->format('Y-m-d H:i:s') }}</td>
<td>
<a class="btn btn-sm" href="{!! $buildCreatePlatformOrderUrl($l) !!}">创建订单</a>
</td>
</tr>
@empty
<tr>
<td colspan="10" class="muted">暂无线索</td>
</tr>
@endforelse
</tbody>
</table>
<div class="mt-10">
{{ $leads->links() }}
</div>
</div>
@endsection