master
lion 1 week ago
parent 89f0071b61
commit c2b406fefd

@ -0,0 +1,23 @@
<?php
namespace App\Console\Commands;
use App\Models\Activity;
use Illuminate\Console\Command;
class ActivitiesClearHotForEndedCommand extends Command
{
protected $signature = 'activities:clear-hot-ended';
protected $description = '将已结束活动的热门标记自动置为否(与日历「已结束」规则一致)';
public function handle(): int
{
$n = Activity::clearHotFlagsForEndedActivities();
if ($n > 0) {
$this->info("已将 {$n} 条已结束活动的热门标记取消。");
}
return self::SUCCESS;
}
}

@ -14,6 +14,7 @@ class Kernel extends ConsoleKernel
{
$schedule->command('reservations:sync-no-show-blacklist')->dailyAt('01:00');
$schedule->command('ticket-grab:sync-carry')->dailyAt('00:10');
$schedule->command('activities:clear-hot-ended')->dailyAt('00:15');
}
/**

@ -16,7 +16,7 @@ class ActivityController extends Controller
{
public function index(Request $request): JsonResponse
{
$query = Activity::with('venue:id,name')->orderByDesc('id');
$query = Activity::with('venue:id,name')->orderByHotThenScheduleStatusPriority();
$this->restrictByVenue($request, $query);
if ($request->filled('keyword')) {
@ -41,11 +41,14 @@ class ActivityController extends Controller
$pageSize = max(1, min(100, (int) $request->input('page_size', 10)));
$page = $query->paginate($pageSize);
$page->getCollection()->transform(function (Activity $a) {
$page->getCollection()->transform(function (Activity $a) use ($request) {
$a->setAttribute(
'schedule_status',
Activity::computeScheduleStatusFromBounds($a->start_at, $a->end_at)
);
if (! $request->user()?->isSuperAdmin()) {
$a->makeHidden(['is_hot']);
}
return $a;
});
@ -64,6 +67,7 @@ class ActivityController extends Controller
Activity::RESERVATION_TYPE_PHONE,
Activity::RESERVATION_TYPE_WECHAT_MP,
Activity::RESERVATION_TYPE_OFFLINE_VISIT,
Activity::RESERVATION_TYPE_NONE,
])],
'location' => ['required', 'string', 'max:500'],
'specific_time' => ['nullable', 'string', 'max:2000'],
@ -91,7 +95,11 @@ class ActivityController extends Controller
'open_time' => ['nullable', 'string'],
'sort' => ['nullable', 'integer', 'min:0'],
'is_active' => ['boolean'],
'is_hot' => ['sometimes', 'boolean'],
]);
if (! $request->user()?->isSuperAdmin()) {
unset($data['is_hot']);
}
$data = $this->applyReservationTypeDefaults($data);
$this->assertTicketNoteWhenNeeded($data, null);
$this->assertOfflineMethodWhenNeeded($data, null);
@ -125,7 +133,12 @@ class ActivityController extends Controller
}
VerifyPortalCode::ensureForActivity($activity);
return response()->json($activity->load('venue:id,name'), 201);
$act = $activity->load('venue:id,name');
if (! $request->user()?->isSuperAdmin()) {
$act->makeHidden(['is_hot']);
}
return response()->json($act, 201);
}
public function update(Request $request, Activity $activity): JsonResponse
@ -141,6 +154,7 @@ class ActivityController extends Controller
Activity::RESERVATION_TYPE_PHONE,
Activity::RESERVATION_TYPE_WECHAT_MP,
Activity::RESERVATION_TYPE_OFFLINE_VISIT,
Activity::RESERVATION_TYPE_NONE,
])],
'location' => ['required', 'string', 'max:500'],
'specific_time' => ['nullable', 'string', 'max:2000'],
@ -168,6 +182,7 @@ class ActivityController extends Controller
'open_time' => ['nullable', 'string'],
'sort' => ['nullable', 'integer', 'min:0'],
'is_active' => ['boolean'],
'is_hot' => ['sometimes', 'boolean'],
]);
$data = $this->applyReservationTypeDefaults($data, $activity);
$this->assertTicketNoteWhenNeeded($data, $activity);
@ -179,7 +194,8 @@ class ActivityController extends Controller
}
$user = $request->user();
if (! $user?->isSuperAdmin()) {
unset($data['sort']);
unset($data['sort'], $data['is_hot']);
/** 场馆编辑(含已结束、已退回)后均进入待审核,由超级管理员再次审核 */
$data['audit_status'] = Activity::AUDIT_PENDING;
$data['audit_remark'] = null;
} else {
@ -200,7 +216,12 @@ class ActivityController extends Controller
$activity->save();
}
return response()->json($activity->fresh()->load('venue:id,name'));
$fresh = $activity->fresh()->load('venue:id,name');
if (! $request->user()?->isSuperAdmin()) {
$fresh->makeHidden(['is_hot']);
}
return response()->json($fresh);
}
public function approve(Request $request, Activity $activity): JsonResponse
@ -208,9 +229,51 @@ class ActivityController extends Controller
abort_unless($request->user()?->isSuperAdmin(), 403, '仅超级管理员可审核');
$this->ensureVenuePermission($request, $activity->venue_id);
$data = $request->validate([
'mark_hot' => ['required', 'boolean'],
]);
$activity->audit_status = Activity::AUDIT_APPROVED;
$activity->audit_remark = null;
$activity->last_approved_snapshot = null;
$activity->is_hot = (bool) $data['mark_hot'];
$activity->save();
return response()->json($activity->fresh()->load('venue:id,name'));
}
public function updateBehindScenes(Request $request, Activity $activity): JsonResponse
{
$this->ensureVenuePermission($request, $activity->venue_id);
$status = Activity::computeScheduleStatusFromBounds($activity->start_at, $activity->end_at);
abort_unless($status === 'ended', 422, '仅已结束活动可上传花絮');
$data = $request->validate([
'behind_scenes_media' => ['present', 'array'],
'behind_scenes_media.*.type' => ['required', 'in:image'],
'behind_scenes_media.*.url' => ['required', 'string', 'max:255'],
]);
$activity->behind_scenes_media = array_values($data['behind_scenes_media'] ?? []);
$activity->save();
$fresh = $activity->fresh()->load('venue:id,name');
if (! $request->user()?->isSuperAdmin()) {
$fresh->makeHidden(['is_hot']);
}
return response()->json($fresh);
}
public function setHotFlag(Request $request, Activity $activity): JsonResponse
{
abort_unless($request->user()?->isSuperAdmin(), 403, '仅超级管理员可设置热门活动');
$this->ensureVenuePermission($request, $activity->venue_id);
$data = $request->validate([
'is_hot' => ['required', 'boolean'],
]);
$activity->is_hot = (bool) $data['is_hot'];
$activity->save();
return response()->json($activity->fresh()->load('venue:id,name'));
@ -334,6 +397,9 @@ class ActivityController extends Controller
} elseif ($t === Activity::RESERVATION_TYPE_ONLINE) {
$data['offline_reservation_method'] = null;
$data['external_url'] = null;
} elseif ($t === Activity::RESERVATION_TYPE_NONE) {
$data['external_url'] = null;
$data['offline_reservation_method'] = null;
}
return $data;
@ -344,6 +410,9 @@ class ActivityController extends Controller
*/
private function assertTicketNoteWhenNeeded(array $data, ?Activity $existing = null): void
{
if (($data['reservation_type'] ?? '') === Activity::RESERVATION_TYPE_NONE) {
return;
}
$newTypes = [Activity::RESERVATION_TYPE_PHONE, Activity::RESERVATION_TYPE_WECHAT_MP, Activity::RESERVATION_TYPE_OFFLINE_VISIT];
if (! in_array(($data['reservation_type'] ?? ''), $newTypes, true)) {
return;

@ -8,6 +8,7 @@ use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\Password;
class AdminUserController extends Controller
{
@ -30,7 +31,7 @@ class AdminUserController extends Controller
'username' => ['required', 'string', 'max:50', 'unique:users,username'],
'name' => ['required', 'string', 'max:100'],
'email' => ['nullable', 'email', 'max:100', 'unique:users,email'],
'password' => ['required', 'string', 'min:6'],
'password' => ['required', 'string', Password::min(8)->letters()->mixedCase()->symbols()],
'role' => ['required', 'string', Rule::exists('admin_roles', 'slug')],
'is_active' => ['boolean'],
'venue_ids' => ['array'],
@ -61,7 +62,7 @@ class AdminUserController extends Controller
$data = $request->validate([
'name' => ['sometimes', 'string', 'max:100'],
'email' => ['nullable', 'email', 'max:100', 'unique:users,email,' . $user->id],
'password' => ['nullable', 'string', 'min:6'],
'password' => ['nullable', 'string', Password::min(8)->letters()->mixedCase()->symbols()],
'role' => ['sometimes', 'string', Rule::exists('admin_roles', 'slug')],
'is_active' => ['sometimes', 'boolean'],
'venue_ids' => ['sometimes', 'array'],

@ -8,6 +8,7 @@ use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules\Password;
class AuthController extends Controller
{
@ -80,6 +81,44 @@ class AuthController extends Controller
return response()->json(['message' => '已退出登录']);
}
public function updateProfile(Request $request): JsonResponse
{
$user = $request->user();
if (! $user instanceof User) {
return response()->json(['message' => '用户不存在'], 404);
}
$data = $request->validate([
'name' => ['required', 'string', 'max:100'],
'password' => [
'nullable',
'string',
Password::min(8)
->letters()
->mixedCase()
->symbols(),
],
], [
'password.min' => '密码长度至少 8 位',
'password.letters' => '密码需包含字母',
'password.mixed' => '密码需包含大小写字母',
'password.symbols' => '密码需包含特殊字符',
]);
$user->name = trim((string) $data['name']);
if (isset($data['password']) && trim((string) $data['password']) !== '') {
$user->password = Hash::make((string) $data['password']);
}
$user->save();
return response()->json([
'id' => $user->id,
'username' => $user->username,
'name' => $user->name,
'role' => $user->role,
]);
}
/**
* @param array<string, mixed> $payload
*/

@ -206,9 +206,14 @@ class DashboardController extends Controller
];
}
$activityPublishRanking = $this->buildActivityPublishRanking($scopeVenueIds);
/** 场馆管理员的排行榜口径与超级管理员一致(全场馆),仅隐藏其核心统计/待办展示。 */
$rankingScopeVenueIds = $user->role === 'venue_admin'
? Venue::query()->pluck('id')
: $scopeVenueIds;
$activityPublishRanking = $this->buildActivityPublishRanking($rankingScopeVenueIds);
$livePeoplePayload = $this->fetchLivePeopleMapWithStatus();
$livePeopleRanking = $this->buildLivePeopleRanking($scopeVenueIds, $livePeoplePayload['map']);
$livePeopleRanking = $this->buildLivePeopleRanking($rankingScopeVenueIds, $livePeoplePayload['map']);
return response()->json([
'scope' => [

@ -41,7 +41,7 @@ class H5ContentController extends Controller
$q->whereComputedScheduleStatus($st);
}
})
->orderByScheduleStatusPriority()
->orderByHotThenScheduleStatusPriority()
->paginate($size);
$rows->getCollection()->transform(function ($a) {
@ -68,6 +68,8 @@ class H5ContentController extends Controller
'tags' => array_values($a->tags ?? []),
'is_bookable' => $isBookable,
'reservation_type' => $a->reservation_type ?? Activity::RESERVATION_TYPE_ONLINE,
'has_behind_scenes' => $this->activityHasBehindScenes($a),
'is_hot' => (bool) ($a->is_hot ?? false),
];
});
@ -150,6 +152,8 @@ class H5ContentController extends Controller
'external_link_click_count' => (int) ($a->external_link_click_count ?? 0),
'venue_type_color' => $this->resolveVenueTypeColor($a->venue?->venue_type, $a->venue?->venue_types),
'booking_days' => $onlineBookable ? $bookingDays : [],
'behind_scenes_media' => $this->normalizeBehindScenesForH5(is_array($a->behind_scenes_media) ? $a->behind_scenes_media : []),
'has_behind_scenes' => $this->activityHasBehindScenes($a),
];
if ($this->activitySupportsOnlineBooking($a)) {
@ -404,10 +408,10 @@ class H5ContentController extends Controller
$payload['activities'] = Activity::query()
->where('venue_id', $v->id)
->visibleOnH5()
->orderForH5Listing()
->orderByHotThenScheduleStatusPriority()
->with('venue:id,cover_image')
->limit(50)
->get(['id', 'title', 'summary', 'cover_image', 'start_at', 'end_at', 'registered_count', 'address', 'location', 'venue_id'])
->get(['id', 'title', 'summary', 'cover_image', 'start_at', 'end_at', 'registered_count', 'address', 'location', 'venue_id', 'behind_scenes_media', 'is_hot'])
->map(function (Activity $a) {
return [
'id' => $a->id,
@ -419,6 +423,7 @@ class H5ContentController extends Controller
'schedule_status' => Activity::computeScheduleStatusFromBounds($a->start_at, $a->end_at),
'registered_count' => (int) ($a->registered_count ?? 0),
'address' => $a->location ?: $a->address,
'has_behind_scenes' => $this->activityHasBehindScenes($a),
];
})
->values()
@ -465,6 +470,42 @@ class H5ContentController extends Controller
return $payload;
}
private function activityHasBehindScenes(Activity $a): bool
{
$m = $a->behind_scenes_media;
if (! is_array($m)) {
return false;
}
foreach ($m as $row) {
if (is_array($row) && trim((string) ($row['url'] ?? '')) !== '') {
return true;
}
}
return false;
}
/**
* @param list<array<string, mixed>> $raw
* @return list<array{type: string, url: string}>
*/
private function normalizeBehindScenesForH5(array $raw): array
{
$out = [];
foreach ($raw as $row) {
if (! is_array($row)) {
continue;
}
$url = trim((string) ($row['url'] ?? ''));
if ($url === '') {
continue;
}
$out[] = ['type' => 'image', 'url' => $url];
}
return $out;
}
private function activitySupportsOnlineBooking(Activity $a): bool
{
$t = (string) ($a->reservation_type ?? Activity::RESERVATION_TYPE_ONLINE);
@ -476,7 +517,12 @@ class H5ContentController extends Controller
{
return match ((string) ($type ?? Activity::RESERVATION_TYPE_ONLINE)) {
Activity::RESERVATION_TYPE_OFFLINE => '线下预约',
Activity::RESERVATION_TYPE_OFFLINE_VISIT => '线下预约',
Activity::RESERVATION_TYPE_OTHER => '外链跳转预约',
Activity::RESERVATION_TYPE_PHONE => '电话预约',
Activity::RESERVATION_TYPE_WECHAT_MP => '公众号预约',
Activity::RESERVATION_TYPE_NONE => '无需预约',
Activity::RESERVATION_TYPE_ONLINE => '线上预约',
default => '线上预约',
};
}
@ -678,6 +724,8 @@ class H5ContentController extends Controller
'tags' => array_values($a->tags ?? []),
'is_bookable' => $isBookable,
'reservation_type' => $a->reservation_type ?? Activity::RESERVATION_TYPE_ONLINE,
'is_hot' => (bool) ($a->is_hot ?? false),
'has_behind_scenes' => $this->activityHasBehindScenes($a),
];
})->merge($grabs->map(function (TicketGrabEvent $e) {
$firstVenue = $e->venues->first();
@ -702,11 +750,18 @@ class H5ContentController extends Controller
'is_bookable' => $this->heuristicTicketGrabBookable($e),
'can_grab_today' => $e->canGrabToday(),
'venue_count' => $e->venues->count(),
'is_hot' => false,
'has_behind_scenes' => false,
];
}))->values();
$items = $items->sort(function (array $x, array $y) {
$t = Carbon::now((string) config('app.timezone'))->toDateString();
$hx = (($x['list_kind'] ?? 'activity') === 'activity' && ! empty($x['is_hot'])) ? 0 : 1;
$hy = (($y['list_kind'] ?? 'activity') === 'activity' && ! empty($y['is_hot'])) ? 0 : 1;
if ($hx !== $hy) {
return $hx <=> $hy;
}
$sx = $this->scheduleRankForSort(
$x['start_at'] ? Carbon::parse($x['start_at'])->toDateString() : null,
$x['end_at'] ? Carbon::parse($x['end_at'])->toDateString() : null,

@ -107,27 +107,30 @@ class H5HomeController extends Controller
->with('venue:id,name,cover_image')
->with('activityDays')
->visibleOnH5()
->get(['id', 'venue_id', 'title', 'summary', 'cover_image', 'start_at', 'end_at', 'registered_count', 'address', 'tags', 'sort'])
->orderByHotThenScheduleStatusPriority()
->get(['id', 'venue_id', 'title', 'summary', 'cover_image', 'start_at', 'end_at', 'registered_count', 'address', 'tags', 'sort', 'behind_scenes_media', 'is_hot'])
->map(function ($a) {
$isBookable = $a->activityDays->contains(
fn (ActivityDay $d) => $d->isCurrentlyBookable()
);
return [
'list_kind' => 'activity',
'id' => $a->id,
'title' => $a->title,
'summary' => $a->summary,
'image' => ActivityH5View::listCover($a),
'venue_name' => $a->venue?->name,
'address' => $a->address,
'start_at' => optional($a->start_at)?->toIso8601String(),
'end_at' => optional($a->end_at)?->toIso8601String(),
'schedule_status' => Activity::computeScheduleStatusFromBounds($a->start_at, $a->end_at),
'registered_count' => (int) ($a->registered_count ?? 0),
'is_bookable' => $isBookable,
'tags' => array_values($a->tags ?? []),
];
return [
'list_kind' => 'activity',
'id' => $a->id,
'title' => $a->title,
'summary' => $a->summary,
'image' => ActivityH5View::listCover($a),
'venue_name' => $a->venue?->name,
'address' => $a->address,
'start_at' => optional($a->start_at)?->toIso8601String(),
'end_at' => optional($a->end_at)?->toIso8601String(),
'schedule_status' => Activity::computeScheduleStatusFromBounds($a->start_at, $a->end_at),
'registered_count' => (int) ($a->registered_count ?? 0),
'is_bookable' => $isBookable,
'tags' => array_values($a->tags ?? []),
'is_hot' => (bool) ($a->is_hot ?? false),
'has_behind_scenes' => $this->activityHasBehindScenes($a),
];
});
$tgRows = TicketGrabEvent::query()
->with('venues')
@ -162,6 +165,11 @@ class H5HomeController extends Controller
$controller = $this;
$today = Carbon::now((string) config('app.timezone'))->toDateString();
$hotActivities = $actRows->merge($tgRows)->sort(function (array $x, array $y) use ($today, $controller) {
$hx = (($x['list_kind'] ?? 'activity') === 'activity' && ! empty($x['is_hot'])) ? 0 : 1;
$hy = (($y['list_kind'] ?? 'activity') === 'activity' && ! empty($y['is_hot'])) ? 0 : 1;
if ($hx !== $hy) {
return $hx <=> $hy;
}
$sx = $controller->homeScheduleRank($x['start_at'] ?? null, $x['end_at'] ?? null, $today);
$sy = $controller->homeScheduleRank($y['start_at'] ?? null, $y['end_at'] ?? null, $today);
if ($sx !== $sy) {
@ -232,6 +240,21 @@ class H5HomeController extends Controller
]);
}
private function activityHasBehindScenes(Activity $a): bool
{
$m = $a->behind_scenes_media;
if (! is_array($m)) {
return false;
}
foreach ($m as $row) {
if (is_array($row) && trim((string) ($row['url'] ?? '')) !== '') {
return true;
}
}
return false;
}
/**
* 与活动列表 H5 混合排序0 进行中/未结束, 1 未开始, 2 已结束.
*/

@ -27,6 +27,9 @@ class Activity extends Model
public const RESERVATION_TYPE_OFFLINE_VISIT = 'offline_visit';
/** 无需预约 */
public const RESERVATION_TYPE_NONE = 'none';
/** 门票说明:写入 offline_reservation_method取值 free / paid */
public const TICKET_FREE = 'free';
@ -54,11 +57,13 @@ class Activity extends Model
'detail_html',
'cover_image',
'gallery_media',
'behind_scenes_media',
'tags',
'reservation_notice',
'open_time',
'sort',
'is_active',
'is_hot',
'schedule_status',
'booking_audience',
'total_quota',
@ -83,9 +88,11 @@ class Activity extends Model
'lat' => 'float',
'lng' => 'float',
'gallery_media' => 'array',
'behind_scenes_media' => 'array',
'tags' => 'array',
'sort' => 'integer',
'is_active' => 'boolean',
'is_hot' => 'boolean',
'total_quota' => 'integer',
'min_people_per_order' => 'integer',
'max_people_per_order' => 'integer',
@ -94,6 +101,30 @@ class Activity extends Model
'external_link_click_count' => 'integer',
];
protected static function booted(): void
{
static::saving(function (Activity $activity) {
if (self::computeScheduleStatusFromBounds($activity->start_at, $activity->end_at) === 'ended') {
$activity->is_hot = false;
}
});
}
/**
* 已结束活动不应保留热门标记(与列表/首页规则一致)。用于定时任务批量纠正无人保存的记录。
*/
public static function clearHotFlagsForEndedActivities(): int
{
$tz = (string) config('app.timezone');
$today = Carbon::now($tz)->toDateString();
return (int) static::query()
->where('is_hot', true)
->whereNotNull('end_at')
->whereDate('end_at', '<', $today)
->update(['is_hot' => false]);
}
/** 活动待审期间若用快照会与 activity_days 不一致,故前台仅展示已审核通过的记录。 */
public function scopeVisibleOnH5(Builder $query): Builder
{
@ -153,6 +184,28 @@ class Activity extends Model
->orderByDesc('id');
}
/**
* 热门优先,其次进行中 → 未开始 → 已结束组内按开始时间、id。
*/
public function scopeOrderByHotThenScheduleStatusPriority(Builder $query): Builder
{
$today = Carbon::now((string) config('app.timezone'))->toDateString();
return $query
->orderByDesc('is_hot')
->orderByRaw(
'CASE
WHEN end_at IS NOT NULL AND DATE(end_at) < ? THEN 2
WHEN start_at IS NOT NULL AND DATE(start_at) > ? THEN 1
ELSE 0
END ASC',
[$today, $today]
)
->orderByRaw('start_at IS NULL ASC')
->orderBy('start_at', 'asc')
->orderByDesc('id');
}
/**
* 按活动开始/结束日(应用时区下的日历日)计算「未开始 / 进行中 / 已结束」,与后台列表筛选一致。
*/

@ -69,7 +69,17 @@ final class AdminAuditOperationDescriber
}
}
if (preg_match('#^activities/(\d+)/audit/approve$#', $path, $m)) {
return '审核通过活动ID:'.$m[1].''.$fail;
$hot = $payload['mark_hot'] ?? null;
return '审核通过活动ID:'.$m[1].''.($hot === true ? '·设为热门' : '').$fail;
}
if (preg_match('#^activities/(\d+)/behind-scenes$#', $path, $m) && ($method === 'PUT' || $method === 'PATCH')) {
return '更新活动幕后花絮ID:'.$m[1].''.$fail;
}
if (preg_match('#^activities/(\d+)/hot-flag$#', $path, $m) && $method === 'POST') {
$on = $payload['is_hot'] ?? null;
return '设置活动热门标记ID:'.$m[1].''.($on === true ? '·是' : ($on === false ? '·否' : '')).$fail;
}
if (preg_match('#^activities/(\d+)/audit/reject$#', $path, $m)) {
return '驳回活动审核ID:'.$m[1].''.$fail;

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('activities', function (Blueprint $table) {
if (! Schema::hasColumn('activities', 'is_hot')) {
$table->boolean('is_hot')->default(false)->after('is_active');
}
if (! Schema::hasColumn('activities', 'behind_scenes_media')) {
$table->json('behind_scenes_media')->nullable()->after('gallery_media');
}
});
}
public function down(): void
{
Schema::table('activities', function (Blueprint $table) {
if (Schema::hasColumn('activities', 'behind_scenes_media')) {
$table->dropColumn('behind_scenes_media');
}
if (Schema::hasColumn('activities', 'is_hot')) {
$table->dropColumn('is_hot');
}
});
}
};

@ -1 +0,0 @@
.activity-address-coord-row[data-v-6d92b548]{flex-wrap:wrap;align-items:center;gap:12px;width:100%;display:flex}.activity-address-coord-row__address[data-v-6d92b548]{flex:45%;min-width:320px;max-width:100%}.activity-address-coord-row__lng[data-v-6d92b548],.activity-address-coord-row__lat[data-v-6d92b548]{flex:180px;width:200px;min-width:180px}.activity-address-coord-row__map[data-v-6d92b548]{flex-shrink:0}.activity-cover-carousel-wrap[data-v-6d92b548]{flex-wrap:wrap;align-items:flex-start;gap:20px;width:100%;display:flex}.activity-cover-carousel-row__col[data-v-6d92b548]{flex:320px;min-width:min(100%,320px)}.activity-cover-carousel-row__sub[data-v-6d92b548]{color:var(--color-text-1);margin-bottom:8px;font-weight:500}.activity-cover-thumb[data-v-6d92b548]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-grid[data-v-6d92b548]{flex-wrap:wrap;align-items:flex-start;gap:12px;width:100%;display:flex}.activity-gallery-item[data-v-6d92b548]{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.activity-gallery-thumb[data-v-6d92b548]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-thumb--video[data-v-6d92b548]{display:block}.activity-form-tags[data-v-6d92b548]{max-width:520px}.activity-form-tags__line[data-v-6d92b548]{flex-flow:row;align-items:center;gap:8px;width:100%;display:flex}.activity-form-tags__input[data-v-6d92b548]{flex:auto;min-width:0}.activity-form-tags__input[data-v-6d92b548] .arco-input-wrapper{width:100%}.activity-form-tags__save[data-v-6d92b548]{flex-shrink:0}.activity-form-tags__chips[data-v-6d92b548]{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.activity-form-tags__empty[data-v-6d92b548]{color:#86909c;font-size:12px}

@ -0,0 +1 @@
.activity-address-coord-row[data-v-5c58a30c]{flex-wrap:wrap;align-items:center;gap:12px;width:100%;display:flex}.activity-address-coord-row__address[data-v-5c58a30c]{flex:45%;min-width:320px;max-width:100%}.activity-address-coord-row__lng[data-v-5c58a30c],.activity-address-coord-row__lat[data-v-5c58a30c]{flex:180px;width:200px;min-width:180px}.activity-address-coord-row__map[data-v-5c58a30c]{flex-shrink:0}.activity-cover-carousel-wrap[data-v-5c58a30c]{flex-wrap:wrap;align-items:flex-start;gap:20px;width:100%;display:flex}.activity-cover-carousel-row__col[data-v-5c58a30c]{flex:320px;min-width:min(100%,320px)}.activity-cover-carousel-row__sub[data-v-5c58a30c]{color:var(--color-text-1);margin-bottom:8px;font-weight:500}.activity-cover-thumb[data-v-5c58a30c]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-grid[data-v-5c58a30c]{flex-wrap:wrap;align-items:flex-start;gap:12px;width:100%;display:flex}.activity-gallery-item[data-v-5c58a30c]{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.activity-gallery-thumb[data-v-5c58a30c]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-thumb--video[data-v-5c58a30c]{display:block}.activity-form-tags[data-v-5c58a30c]{max-width:520px}.activity-form-tags__line[data-v-5c58a30c]{flex-flow:row;align-items:center;gap:8px;width:100%;display:flex}.activity-form-tags__input[data-v-5c58a30c]{flex:auto;min-width:0}.activity-form-tags__input[data-v-5c58a30c] .arco-input-wrapper{width:100%}.activity-form-tags__save[data-v-5c58a30c]{flex-shrink:0}.activity-form-tags__chips[data-v-5c58a30c]{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.activity-form-tags__empty[data-v-5c58a30c]{color:#86909c;font-size:12px}.activity-form-tags__chips--readonly[data-v-5c58a30c]{margin-top:0}.activity-form-tags__chips--inline[data-v-5c58a30c]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.activity-audit-inline[data-v-5c58a30c]{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px;padding-bottom:4px;display:grid}.activity-audit-inline-row[data-v-5c58a30c]{align-items:flex-start;gap:12px;min-width:0;font-size:14px;line-height:1.5715;display:flex}.activity-audit-inline-row--tags[data-v-5c58a30c]{align-items:center}.activity-audit-inline-label[data-v-5c58a30c]{color:var(--color-text-3);text-align:right;flex:0 0 74px}.activity-audit-inline-value[data-v-5c58a30c]{min-width:0;color:var(--color-text-1);word-break:break-word;flex:1}.activity-audit-stack[data-v-5c58a30c]{margin-top:20px}.activity-audit-stack__label[data-v-5c58a30c]{color:var(--color-text-1);margin-bottom:8px;font-size:14px;font-weight:500}.activity-audit-stack__body[data-v-5c58a30c]{min-width:0}@media (width<=1400px){.activity-audit-inline[data-v-5c58a30c]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=980px){.activity-audit-inline[data-v-5c58a30c]{grid-template-columns:minmax(0,1fr)}}.activity-audit-static-text[data-v-5c58a30c]{color:var(--color-text-1);word-break:break-word;font-size:14px;line-height:1.5715}.activity-audit-static-text--fill[data-v-5c58a30c]{border:1px solid var(--color-neutral-3);border-radius:var(--border-radius-small);background:var(--color-fill-2);box-sizing:border-box;align-items:center;min-height:32px;padding:4px 11px;display:flex}.activity-audit-static-coord[data-v-5c58a30c]{border:1px solid var(--color-neutral-3);border-radius:var(--border-radius-small);background:var(--color-fill-2);box-sizing:border-box;min-height:32px;color:var(--color-text-2);font-variant-numeric:tabular-nums;align-items:center;padding:4px 11px;font-size:14px;line-height:1.5715;display:flex}.activity-audit-muted[data-v-5c58a30c]{color:var(--color-text-3);font-size:13px}.activity-audit-break[data-v-5c58a30c]{word-break:break-word}.activity-audit-rich[data-v-5c58a30c]{color:var(--color-text-1);background:#fafafa;border:1px solid #e5e6eb;border-radius:8px;max-height:380px;padding:12px;font-size:13px;line-height:1.7;overflow-y:auto}.activity-audit-rich[data-v-5c58a30c] img{vertical-align:top;max-width:100%;height:auto}.activity-audit-rich[data-v-5c58a30c] video{max-width:100%}.bts-preview-grid[data-v-5c58a30c]{flex-wrap:wrap;gap:16px;width:100%;display:flex}.bts-preview-item[data-v-5c58a30c]{box-sizing:border-box;flex:none;width:220px}.bts-preview-img[data-v-5c58a30c]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:8px;width:220px;height:220px;display:block}.bts-preview-actions[data-v-5c58a30c]{flex-flow:row;align-items:center;gap:8px;width:100%;margin-top:8px;display:flex}.bts-preview-actions[data-v-5c58a30c] .bts-act-btn.arco-btn-size-mini{flex:1 1 0;min-width:0;padding-left:6px;padding-right:6px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,it as s,kt as c,nt as l,u,ut as d,v as f,y as p}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as m}from"./http-LCi9aT1G.js";import{u as h}from"./index-CUH3hGCJ.js";import{t as g}from"./listTableRowIndex-ConJ8Gia.js";import{t as _}from"./datetime-CIT_BIAD.js";var v={class:`audit-api-endpoint`},y=1280,b=h(p({__name:`AuditLogs`,setup(p){let h=s(!1),b=s([]),x=l({current:1,pageSize:20,total:0}),S=l({keyword:``,method:`all`,status_code:void 0,dateRange:[]});async function C(){h.value=!0;try{let{data:e}=await m.get(`/audit-logs`,{params:{keyword:S.keyword||void 0,method:S.method,status_code:S.status_code||void 0,start_date:S.dateRange?.[0]||void 0,end_date:S.dateRange?.[1]||void 0,page:x.current,page_size:x.pageSize}});b.value=e.data,x.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载操作日志失败`)}finally{h.value=!1}}function w(){x.current=1,C()}function T(e){x.current=e,C()}function E(e){return e.operation_summary&&String(e.operation_summary).trim()!==``?e.operation_summary:e.action&&String(e.action).trim()!==``?e.action:``}function D(e){let t=(e.method||``).toUpperCase()||``,n=(e.path||``).trim();return!n||n===`/`?t+``:(n.startsWith(`/`)||(n=`/`+n),`${t} ${n}`)}return n(C),(e,n)=>{let s=r(`a-alert`),l=r(`a-input`),p=r(`a-option`),m=r(`a-select`),C=r(`a-input-number`),O=r(`a-range-picker`),k=r(`a-button`),A=r(`a-space`),j=r(`a-table-column`),M=r(`a-table`),N=r(`a-card`);return t(),o(N,{title:`用户与权限 / 操作日志`},{default:i(()=>[f(s,{type:`info`,style:{"margin-bottom":`12px`},closable:``},{default:i(()=>[...n[4]||=[a(` 此处为「操作日志」(写操作审计)。系统设置里的「系统日志」页面用于查看服务器 Laravel 日志文件,不是本页。列表不包含 GET 类查询请求。 `,-1)]]),_:1}),f(A,{wrap:``,size:12,style:{"margin-bottom":`12px`}},{default:i(()=>[f(l,{modelValue:S.keyword,"onUpdate:modelValue":n[0]||=e=>S.keyword=e,placeholder:`操作人 / 操作项`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),f(m,{modelValue:S.method,"onUpdate:modelValue":n[1]||=e=>S.method=e,style:{width:`120px`}},{default:i(()=>[f(p,{value:`all`},{default:i(()=>[...n[5]||=[a(`全部方法`,-1)]]),_:1}),f(p,{value:`POST`},{default:i(()=>[...n[6]||=[a(`POST`,-1)]]),_:1}),f(p,{value:`PUT`},{default:i(()=>[...n[7]||=[a(`PUT`,-1)]]),_:1}),f(p,{value:`PATCH`},{default:i(()=>[...n[8]||=[a(`PATCH`,-1)]]),_:1}),f(p,{value:`DELETE`},{default:i(()=>[...n[9]||=[a(`DELETE`,-1)]]),_:1})]),_:1},8,[`modelValue`]),f(C,{modelValue:S.status_code,"onUpdate:modelValue":n[2]||=e=>S.status_code=e,min:100,max:599,placeholder:`状态码`,style:{width:`120px`}},null,8,[`modelValue`]),f(O,{modelValue:S.dateRange,"onUpdate:modelValue":n[3]||=e=>S.dateRange=e,style:{width:`260px`}},null,8,[`modelValue`]),f(k,{type:`primary`,onClick:w},{default:i(()=>[...n[10]||=[a(`查询`,-1)]]),_:1})]),_:1}),f(M,{class:`list-data-table`,scroll:{x:y},data:b.value,loading:h.value,"row-key":`id`,pagination:{current:x.current,pageSize:x.pageSize,total:x.total,showTotal:!0},onPageChange:T},{columns:i(()=>[f(j,{title:``,width:52,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(c(d(g)(e,x.current,x.pageSize)),1)]),_:1}),f(j,{title:`操作人`,"data-index":`username`,width:140,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.username||``),1)]),_:1}),f(j,{title:`操作时间`,width:178},{cell:i(({record:e})=>[a(c(d(_)(e.created_at)),1)]),_:1}),f(j,{title:`接口`,width:320,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[u(`span`,v,c(D(e)),1)]),_:1}),f(j,{title:`操作项`,"min-width":320,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(E(e)),1)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})}}}),[[`__scopeId`,`data-v-f4d2ff07`]]);export{b as default};
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,it as s,kt as c,nt as l,u,ut as d,v as f,y as p}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as m}from"./http-LCi9aT1G.js";import{u as h}from"./index-DWQkWGTP.js";import{t as g}from"./listTableRowIndex-ConJ8Gia.js";import{t as _}from"./datetime-CIT_BIAD.js";var v={class:`audit-api-endpoint`},y=1280,b=h(p({__name:`AuditLogs`,setup(p){let h=s(!1),b=s([]),x=l({current:1,pageSize:20,total:0}),S=l({keyword:``,method:`all`,status_code:void 0,dateRange:[]});async function C(){h.value=!0;try{let{data:e}=await m.get(`/audit-logs`,{params:{keyword:S.keyword||void 0,method:S.method,status_code:S.status_code||void 0,start_date:S.dateRange?.[0]||void 0,end_date:S.dateRange?.[1]||void 0,page:x.current,page_size:x.pageSize}});b.value=e.data,x.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载操作日志失败`)}finally{h.value=!1}}function w(){x.current=1,C()}function T(e){x.current=e,C()}function E(e){return e.operation_summary&&String(e.operation_summary).trim()!==``?e.operation_summary:e.action&&String(e.action).trim()!==``?e.action:``}function D(e){let t=(e.method||``).toUpperCase()||``,n=(e.path||``).trim();return!n||n===`/`?t+``:(n.startsWith(`/`)||(n=`/`+n),`${t} ${n}`)}return n(C),(e,n)=>{let s=r(`a-alert`),l=r(`a-input`),p=r(`a-option`),m=r(`a-select`),C=r(`a-input-number`),O=r(`a-range-picker`),k=r(`a-button`),A=r(`a-space`),j=r(`a-table-column`),M=r(`a-table`),N=r(`a-card`);return t(),o(N,{title:`用户与权限 / 操作日志`},{default:i(()=>[f(s,{type:`info`,style:{"margin-bottom":`12px`},closable:``},{default:i(()=>[...n[4]||=[a(` 此处为「操作日志」(写操作审计)。系统设置里的「系统日志」页面用于查看服务器 Laravel 日志文件,不是本页。列表不包含 GET 类查询请求。 `,-1)]]),_:1}),f(A,{wrap:``,size:12,style:{"margin-bottom":`12px`}},{default:i(()=>[f(l,{modelValue:S.keyword,"onUpdate:modelValue":n[0]||=e=>S.keyword=e,placeholder:`操作人 / 操作项`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),f(m,{modelValue:S.method,"onUpdate:modelValue":n[1]||=e=>S.method=e,style:{width:`120px`}},{default:i(()=>[f(p,{value:`all`},{default:i(()=>[...n[5]||=[a(`全部方法`,-1)]]),_:1}),f(p,{value:`POST`},{default:i(()=>[...n[6]||=[a(`POST`,-1)]]),_:1}),f(p,{value:`PUT`},{default:i(()=>[...n[7]||=[a(`PUT`,-1)]]),_:1}),f(p,{value:`PATCH`},{default:i(()=>[...n[8]||=[a(`PATCH`,-1)]]),_:1}),f(p,{value:`DELETE`},{default:i(()=>[...n[9]||=[a(`DELETE`,-1)]]),_:1})]),_:1},8,[`modelValue`]),f(C,{modelValue:S.status_code,"onUpdate:modelValue":n[2]||=e=>S.status_code=e,min:100,max:599,placeholder:`状态码`,style:{width:`120px`}},null,8,[`modelValue`]),f(O,{modelValue:S.dateRange,"onUpdate:modelValue":n[3]||=e=>S.dateRange=e,style:{width:`260px`}},null,8,[`modelValue`]),f(k,{type:`primary`,onClick:w},{default:i(()=>[...n[10]||=[a(`查询`,-1)]]),_:1})]),_:1}),f(M,{class:`list-data-table`,scroll:{x:y},data:b.value,loading:h.value,"row-key":`id`,pagination:{current:x.current,pageSize:x.pageSize,total:x.total,showTotal:!0},onPageChange:T},{columns:i(()=>[f(j,{title:``,width:52,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(c(d(g)(e,x.current,x.pageSize)),1)]),_:1}),f(j,{title:`操作人`,"data-index":`username`,width:140,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.username||``),1)]),_:1}),f(j,{title:`操作时间`,width:178},{cell:i(({record:e})=>[a(c(d(_)(e.created_at)),1)]),_:1}),f(j,{title:`接口`,width:320,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[u(`span`,v,c(D(e)),1)]),_:1}),f(j,{title:`操作项`,"min-width":320,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(E(e)),1)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})}}}),[[`__scopeId`,`data-v-f4d2ff07`]]);export{b as default};

@ -1 +0,0 @@
.venue-time-line[data-v-9529d580]{color:var(--color-text-2);margin:2px 0;font-size:12px;line-height:1.5}

@ -0,0 +1 @@
.venue-time-line[data-v-ccd3c3d6]{color:var(--color-text-2);margin:2px 0;font-size:12px;line-height:1.5}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dynamicAdminRoutes-dR6Px8ij.js","assets/dynamicAdminRoutes-CKJGwpkH.js","assets/preload-helper-BIjWqNH5.js","assets/http-LCi9aT1G.js","assets/axios-CiYFffbI.js","assets/runtime-core.esm-bundler-CnFWH3R5.js"])))=>i.map(i=>d[i]);
import{n as e}from"./axios-CiYFffbI.js";import{I as t,V as n,Y as r,_ as i,it as a,nt as o,p as s,v as c,y as l}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as u,t as d}from"./http-LCi9aT1G.js";import{t as f}from"./preload-helper-BIjWqNH5.js";import{c as p,s as m}from"./index-CUH3hGCJ.js";var h={style:{height:`100vh`,display:`grid`,"place-items":`center`,background:`var(--color-fill-2)`}},g=l({__name:`Login`,setup(l){let g=p(),_=m(),v=a(!1),y=o({username:`admin`,password:`admin123456`});async function b(){v.value=!0;try{let{data:t}=await u.post(`/auth/login`,y);localStorage.setItem(d,t.token),e.success(`登录成功`);let{getFirstMenuPath:n}=await f(async()=>{let{getFirstMenuPath:e}=await import(`./dynamicAdminRoutes-dR6Px8ij.js`);return{getFirstMenuPath:e}},__vite__mapDeps([0,1,2,3,4,5])),r=typeof _.query.redirect==`string`?_.query.redirect.trim():``,i=r&&r.startsWith(`/`)&&!r.startsWith(`//`)?r:await n();g.replace(i)}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{v.value=!1}}return(e,a)=>{let o=n(`a-input`),l=n(`a-form-item`),u=n(`a-input-password`),d=n(`a-button`),f=n(`a-form`),p=n(`a-card`);return t(),s(`div`,h,[c(p,{title:`苏州市科普场馆地图后台管理系统登录`,style:{width:`380px`}},{default:r(()=>[c(f,{model:y,layout:`vertical`,onSubmitSuccess:b},{default:r(()=>[c(l,{field:`username`,label:`用户名`},{default:r(()=>[c(o,{modelValue:y.username,"onUpdate:modelValue":a[0]||=e=>y.username=e,placeholder:`请输入用户名`},null,8,[`modelValue`])]),_:1}),c(l,{field:`password`,label:`密码`},{default:r(()=>[c(u,{modelValue:y.password,"onUpdate:modelValue":a[1]||=e=>y.password=e,placeholder:`请输入密码`},null,8,[`modelValue`])]),_:1}),c(d,{type:`primary`,long:``,loading:v.value,onClick:b},{default:r(()=>[...a[2]||=[i(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`])]),_:1})])}}});export{g as default};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dynamicAdminRoutes-D2qqyfZu.js","assets/dynamicAdminRoutes-Cxqb4u0k.js","assets/preload-helper-BIjWqNH5.js","assets/http-LCi9aT1G.js","assets/axios-CiYFffbI.js","assets/runtime-core.esm-bundler-CnFWH3R5.js"])))=>i.map(i=>d[i]);
import{n as e}from"./axios-CiYFffbI.js";import{I as t,V as n,Y as r,_ as i,it as a,nt as o,p as s,v as c,y as l}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as u,t as d}from"./http-LCi9aT1G.js";import{t as f}from"./preload-helper-BIjWqNH5.js";import{c as p,s as m}from"./index-DWQkWGTP.js";var h={style:{height:`100vh`,display:`grid`,"place-items":`center`,background:`var(--color-fill-2)`}},g=l({__name:`Login`,setup(l){let g=p(),_=m(),v=a(!1),y=o({username:`admin`,password:`admin123456`});async function b(){v.value=!0;try{let{data:t}=await u.post(`/auth/login`,y);localStorage.setItem(d,t.token),e.success(`登录成功`);let{getFirstMenuPath:n}=await f(async()=>{let{getFirstMenuPath:e}=await import(`./dynamicAdminRoutes-D2qqyfZu.js`);return{getFirstMenuPath:e}},__vite__mapDeps([0,1,2,3,4,5])),r=typeof _.query.redirect==`string`?_.query.redirect.trim():``,i=r&&r.startsWith(`/`)&&!r.startsWith(`//`)?r:await n();g.replace(i)}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{v.value=!1}}return(e,a)=>{let o=n(`a-input`),l=n(`a-form-item`),u=n(`a-input-password`),d=n(`a-button`),f=n(`a-form`),p=n(`a-card`);return t(),s(`div`,h,[c(p,{title:`苏州市科普场馆地图后台管理系统登录`,style:{width:`380px`}},{default:r(()=>[c(f,{model:y,layout:`vertical`,onSubmitSuccess:b},{default:r(()=>[c(l,{field:`username`,label:`用户名`},{default:r(()=>[c(o,{modelValue:y.username,"onUpdate:modelValue":a[0]||=e=>y.username=e,placeholder:`请输入用户名`},null,8,[`modelValue`])]),_:1}),c(l,{field:`password`,label:`密码`},{default:r(()=>[c(u,{modelValue:y.password,"onUpdate:modelValue":a[1]||=e=>y.password=e,placeholder:`请输入密码`},null,8,[`modelValue`])]),_:1}),c(d,{type:`primary`,long:``,loading:v.value,onClick:b},{default:r(()=>[...a[2]||=[i(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`])]),_:1})])}}});export{g as default};

@ -1 +1 @@
import{I as e,V as t,Y as n,_ as r,d as i,v as a}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{u as o}from"./index-CUH3hGCJ.js";var s={};function c(o,s){let c=t(`a-alert`),l=t(`a-descriptions-item`),u=t(`a-descriptions`),d=t(`a-card`);return e(),i(d,{title:`系统设置 / 地图与第三方配置`},{default:n(()=>[a(c,{type:`info`,style:{"margin-bottom":`12px`}},{default:n(()=>[...s[0]||=[r(` 当前后台场馆地图选点已使用腾讯地图,坐标统一为 GCJ-02火星坐标系`,-1)]]),_:1}),a(u,{column:1,bordered:``},{default:n(()=>[a(l,{label:`前端地图Key`},{default:n(()=>[...s[1]||=[r(" 在 `code/szkp-map-web/.env` 配置 `VITE_TENCENT_MAP_KEY=你的腾讯地图JS_KEY` ",-1)]]),_:1}),a(l,{label:`地图外链 referer`},{default:n(()=>[...s[2]||=[r(" 在 `code/szkp-map-web/.env` 配置 `VITE_TENCENT_MAP_REFERER=你的应用标识` ",-1)]]),_:1}),a(l,{label:`后端服务Key`},{default:n(()=>[...s[3]||=[r(" 在 `code/szkp-map-service/.env` 配置 `TENCENT_MAP_SERVER_KEY=你的腾讯地图WebService_KEY` ",-1)]]),_:1})]),_:1})]),_:1})}var l=o(s,[[`render`,c]]);export{l as default};
import{I as e,V as t,Y as n,_ as r,d as i,v as a}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{u as o}from"./index-DWQkWGTP.js";var s={};function c(o,s){let c=t(`a-alert`),l=t(`a-descriptions-item`),u=t(`a-descriptions`),d=t(`a-card`);return e(),i(d,{title:`系统设置 / 地图与第三方配置`},{default:n(()=>[a(c,{type:`info`,style:{"margin-bottom":`12px`}},{default:n(()=>[...s[0]||=[r(` 当前后台场馆地图选点已使用腾讯地图,坐标统一为 GCJ-02火星坐标系`,-1)]]),_:1}),a(u,{column:1,bordered:``},{default:n(()=>[a(l,{label:`前端地图Key`},{default:n(()=>[...s[1]||=[r(" 在 `code/szkp-map-web/.env` 配置 `VITE_TENCENT_MAP_KEY=你的腾讯地图JS_KEY` ",-1)]]),_:1}),a(l,{label:`地图外链 referer`},{default:n(()=>[...s[2]||=[r(" 在 `code/szkp-map-web/.env` 配置 `VITE_TENCENT_MAP_REFERER=你的应用标识` ",-1)]]),_:1}),a(l,{label:`后端服务Key`},{default:n(()=>[...s[3]||=[r(" 在 `code/szkp-map-service/.env` 配置 `TENCENT_MAP_SERVER_KEY=你的腾讯地图WebService_KEY` ",-1)]]),_:1})]),_:1})]),_:1})}var l=o(s,[[`render`,c]]);export{l as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.study-tour-table[data-v-6374a884] .arco-table-th,.study-tour-table[data-v-6374a884] .arco-table-td{padding-left:8px;padding-right:8px}.study-tour-cover-thumb[data-v-6374a884]{object-fit:contain;border:1px solid #e5e6eb;border-radius:4px;width:auto;max-width:120px;height:auto;max-height:80px}.study-tour-tags-field[data-v-6374a884]{width:100%}.study-tour-tags-input-row[data-v-6374a884]{flex-wrap:nowrap;align-items:center;gap:8px;width:100%;display:flex}.study-tour-tags-input[data-v-6374a884]{flex:1;min-width:0}.study-tour-tags-list[data-v-6374a884]{flex-wrap:wrap;gap:8px;width:100%;margin-top:8px;display:flex}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
.study-tour-table[data-v-e826a8f0] .arco-table-th,.study-tour-table[data-v-e826a8f0] .arco-table-td{padding-left:8px;padding-right:8px}.study-tour-cover-thumb[data-v-e826a8f0]{object-fit:contain;border:1px solid #e5e6eb;border-radius:4px;width:auto;max-width:120px;height:auto;max-height:80px}.study-tour-tags-field[data-v-e826a8f0]{width:100%}.study-tour-tags-input-row[data-v-e826a8f0]{flex-wrap:nowrap;align-items:center;gap:8px;width:100%;display:flex}.study-tour-tags-input[data-v-e826a8f0]{flex:1;min-width:0}.study-tour-tags-list[data-v-e826a8f0]{flex-wrap:wrap;gap:8px;width:100%;margin-top:8px;display:flex}

@ -1,2 +1,2 @@
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,O as r,V as i,Y as a,_ as o,d as s,f as c,i as l,it as u,kt as d,l as f,p,q as m,u as h,ut as g,v as _,y as v,z as y}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as b}from"./http-LCi9aT1G.js";import{u as x}from"./index-CUH3hGCJ.js";import{t as S}from"./datetime-CIT_BIAD.js";var C={key:0,class:`system-logs-pre`},w={key:1,class:`system-logs-empty`},T=x(v({__name:`SystemLogs`,setup(v){let x=u(!1),T=u(``),E=u(400),D=u(``),O=u([]),k=u([]),A=u(null),j=u(null),M=u(!1),N=f(()=>{let e=T.value.trim().toLowerCase();return e?k.value.filter(t=>t.toLowerCase().includes(e)):k.value});function P(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`}async function F(){await r();let e=j.value;e&&(e.scrollTop=e.scrollHeight)}async function I(){x.value=!0,A.value=null;try{let{data:e}=await b.get(`/system-logs`,{params:{file:D.value||void 0,lines:E.value}});O.value=e.files??[],M.value=!0,D.value=e.file??``,await r(),M.value=!1,k.value=e.lines??[],A.value=e.error??null,await F()}catch(t){e.error(t?.response?.data?.message??`加载系统日志失败`),k.value=[],M.value=!1}finally{x.value=!1}}return m(D,()=>{M.value||I()}),n(I),(e,n)=>{let r=i(`a-alert`),u=i(`a-option`),f=i(`a-select`),m=i(`a-input-number`),v=i(`a-input`),b=i(`a-button`),k=i(`a-space`),M=i(`a-spin`),F=i(`a-card`);return t(),s(F,{title:`系统设置 / 系统日志`},{default:a(()=>[_(r,{type:`warning`,style:{"margin-bottom":`12px`}},{default:a(()=>[...n[3]||=[o(` 展示服务器 `,-1),h(`code`,null,`storage/logs`,-1),o(` 下 Laravel 应用日志文件尾部(按行)。仅超级管理员可访问;请勿将日志内容外传。 `,-1)]]),_:1}),_(k,{wrap:``,size:12,style:{"margin-bottom":`12px`}},{default:a(()=>[n[5]||=h(`span`,{class:`system-logs-tool-label`},`日志文件`,-1),_(f,{modelValue:D.value,"onUpdate:modelValue":n[0]||=e=>D.value=e,"allow-clear":``,placeholder:`选择文件`,style:{width:`260px`},loading:x.value},{default:a(()=>[(t(!0),p(l,null,y(O.value,e=>(t(),s(u,{key:e.name,value:e.name},{default:a(()=>[o(d(e.name)+``+d(P(e.size_bytes))+``+d(g(S)(e.modified_at))+` `,1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`loading`]),n[6]||=h(`span`,{class:`system-logs-tool-label`},`尾部行数`,-1),_(m,{modelValue:E.value,"onUpdate:modelValue":n[1]||=e=>E.value=e,min:50,max:5e3,step:50,style:{width:`120px`}},null,8,[`modelValue`]),_(v,{modelValue:T.value,"onUpdate:modelValue":n[2]||=e=>T.value=e,placeholder:`在行内筛选关键字`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),_(b,{type:`primary`,loading:x.value,onClick:I},{default:a(()=>[...n[4]||=[o(`刷新`,-1)]]),_:1},8,[`loading`])]),_:1}),A.value?(t(),s(r,{key:0,type:`error`,style:{"margin-bottom":`8px`}},{default:a(()=>[o(d(A.value),1)]),_:1})):c(``,!0),h(`div`,{ref_key:`scrollEl`,ref:j,class:`system-logs-panel`,tabindex:`0`,role:`region`,"aria-label":`日志内容`},[_(M,{loading:x.value,style:{display:`block`,"min-height":`120px`}},{default:a(()=>[N.value.length?(t(),p(`pre`,C,d(N.value.join(`
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,O as r,V as i,Y as a,_ as o,d as s,f as c,i as l,it as u,kt as d,l as f,p,q as m,u as h,ut as g,v as _,y as v,z as y}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as b}from"./http-LCi9aT1G.js";import{u as x}from"./index-DWQkWGTP.js";import{t as S}from"./datetime-CIT_BIAD.js";var C={key:0,class:`system-logs-pre`},w={key:1,class:`system-logs-empty`},T=x(v({__name:`SystemLogs`,setup(v){let x=u(!1),T=u(``),E=u(400),D=u(``),O=u([]),k=u([]),A=u(null),j=u(null),M=u(!1),N=f(()=>{let e=T.value.trim().toLowerCase();return e?k.value.filter(t=>t.toLowerCase().includes(e)):k.value});function P(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`}async function F(){await r();let e=j.value;e&&(e.scrollTop=e.scrollHeight)}async function I(){x.value=!0,A.value=null;try{let{data:e}=await b.get(`/system-logs`,{params:{file:D.value||void 0,lines:E.value}});O.value=e.files??[],M.value=!0,D.value=e.file??``,await r(),M.value=!1,k.value=e.lines??[],A.value=e.error??null,await F()}catch(t){e.error(t?.response?.data?.message??`加载系统日志失败`),k.value=[],M.value=!1}finally{x.value=!1}}return m(D,()=>{M.value||I()}),n(I),(e,n)=>{let r=i(`a-alert`),u=i(`a-option`),f=i(`a-select`),m=i(`a-input-number`),v=i(`a-input`),b=i(`a-button`),k=i(`a-space`),M=i(`a-spin`),F=i(`a-card`);return t(),s(F,{title:`系统设置 / 系统日志`},{default:a(()=>[_(r,{type:`warning`,style:{"margin-bottom":`12px`}},{default:a(()=>[...n[3]||=[o(` 展示服务器 `,-1),h(`code`,null,`storage/logs`,-1),o(` 下 Laravel 应用日志文件尾部(按行)。仅超级管理员可访问;请勿将日志内容外传。 `,-1)]]),_:1}),_(k,{wrap:``,size:12,style:{"margin-bottom":`12px`}},{default:a(()=>[n[5]||=h(`span`,{class:`system-logs-tool-label`},`日志文件`,-1),_(f,{modelValue:D.value,"onUpdate:modelValue":n[0]||=e=>D.value=e,"allow-clear":``,placeholder:`选择文件`,style:{width:`260px`},loading:x.value},{default:a(()=>[(t(!0),p(l,null,y(O.value,e=>(t(),s(u,{key:e.name,value:e.name},{default:a(()=>[o(d(e.name)+``+d(P(e.size_bytes))+``+d(g(S)(e.modified_at))+` `,1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`loading`]),n[6]||=h(`span`,{class:`system-logs-tool-label`},`尾部行数`,-1),_(m,{modelValue:E.value,"onUpdate:modelValue":n[1]||=e=>E.value=e,min:50,max:5e3,step:50,style:{width:`120px`}},null,8,[`modelValue`]),_(v,{modelValue:T.value,"onUpdate:modelValue":n[2]||=e=>T.value=e,placeholder:`在行内筛选关键字`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),_(b,{type:`primary`,loading:x.value,onClick:I},{default:a(()=>[...n[4]||=[o(`刷新`,-1)]]),_:1},8,[`loading`])]),_:1}),A.value?(t(),s(r,{key:0,type:`error`,style:{"margin-bottom":`8px`}},{default:a(()=>[o(d(A.value),1)]),_:1})):c(``,!0),h(`div`,{ref_key:`scrollEl`,ref:j,class:`system-logs-panel`,tabindex:`0`,role:`region`,"aria-label":`日志内容`},[_(M,{loading:x.value,style:{display:`block`,"min-height":`120px`}},{default:a(()=>[N.value.length?(t(),p(`pre`,C,d(N.value.join(`
`)),1)):x.value?c(``,!0):(t(),p(`div`,w,`暂无日志内容或无权限读取文件`))]),_:1},8,[`loading`])],512)]),_:1})}}}),[[`__scopeId`,`data-v-00758b3f`]]);export{T as default};

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.tg-venue-block[data-v-2022327e]{width:100%}.tg-venue-block__add[data-v-2022327e]{margin-bottom:10px}.tg-venue-table-scroll[data-v-2022327e]{box-sizing:border-box;width:100%;max-width:100%;overflow-x:auto}.tg-venue-table[data-v-2022327e]{width:100%;min-width:0}.tg-venue-quota-input[data-v-2022327e] .arco-input-wrapper{min-width:120px}.tg-venue-actions[data-v-2022327e]{box-sizing:border-box;flex-wrap:nowrap;justify-content:center;align-items:center;gap:0;width:100%;display:inline-flex}.tg-venue-actions[data-v-2022327e] .arco-btn-size-small{padding-left:4px;padding-right:4px}.tg-list-actions[data-v-2022327e]{flex-wrap:wrap;justify-content:flex-start;row-gap:2px;max-width:100%}.activity-cover-carousel-wrap[data-v-2022327e]{flex-wrap:wrap;align-items:flex-start;gap:20px;width:100%;display:flex}.activity-cover-carousel-row__col[data-v-2022327e]{flex:320px;min-width:min(100%,320px)}.activity-cover-carousel-row__sub[data-v-2022327e]{color:var(--color-text-1);margin-bottom:8px;font-weight:500}.activity-cover-thumb[data-v-2022327e]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-grid[data-v-2022327e]{flex-wrap:wrap;align-items:flex-start;gap:12px;width:100%;display:flex}.activity-gallery-item[data-v-2022327e]{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.activity-gallery-thumb[data-v-2022327e]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:80px}.activity-gallery-thumb--video[data-v-2022327e]{cursor:default}.activity-address-coord-row[data-v-2022327e]{flex-wrap:wrap;align-items:center;gap:12px;width:100%;display:flex}.activity-address-coord-row__address[data-v-2022327e]{flex:45%;min-width:220px;max-width:100%}.activity-address-coord-row__lng[data-v-2022327e],.activity-address-coord-row__lat[data-v-2022327e]{flex:180px;width:200px;min-width:160px}.activity-address-coord-row__map[data-v-2022327e]{flex-shrink:0}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
.tg-venue-block[data-v-74e84811]{width:100%}.tg-venue-block__add[data-v-74e84811]{margin-bottom:10px}.tg-venue-table-scroll[data-v-74e84811]{box-sizing:border-box;width:100%;max-width:100%;overflow-x:auto}.tg-venue-table[data-v-74e84811]{width:100%;min-width:0}.tg-venue-quota-input[data-v-74e84811] .arco-input-wrapper{min-width:120px}.tg-venue-actions[data-v-74e84811]{box-sizing:border-box;flex-wrap:nowrap;justify-content:center;align-items:center;gap:0;width:100%;display:inline-flex}.tg-venue-actions[data-v-74e84811] .arco-btn-size-small{padding-left:4px;padding-right:4px}.tg-list-actions[data-v-74e84811]{flex-wrap:wrap;justify-content:flex-start;row-gap:2px;max-width:100%}.activity-cover-carousel-wrap[data-v-74e84811]{flex-wrap:wrap;align-items:flex-start;gap:20px;width:100%;display:flex}.activity-cover-carousel-row__col[data-v-74e84811]{flex:320px;min-width:min(100%,320px)}.activity-cover-carousel-row__sub[data-v-74e84811]{color:var(--color-text-1);margin-bottom:8px;font-weight:500}.activity-cover-thumb[data-v-74e84811]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-grid[data-v-74e84811]{flex-wrap:wrap;align-items:flex-start;gap:12px;width:100%;display:flex}.activity-gallery-item[data-v-74e84811]{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.activity-gallery-thumb[data-v-74e84811]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:80px}.activity-gallery-thumb--video[data-v-74e84811]{cursor:default}.activity-address-coord-row[data-v-74e84811]{flex-wrap:wrap;align-items:center;gap:12px;width:100%;display:flex}.activity-address-coord-row__address[data-v-74e84811]{flex:45%;min-width:220px;max-width:100%}.activity-address-coord-row__lng[data-v-74e84811],.activity-address-coord-row__lat[data-v-74e84811]{flex:180px;width:200px;min-width:160px}.activity-address-coord-row__map[data-v-74e84811]{flex-shrink:0}

@ -1 +0,0 @@
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,i as s,it as c,kt as l,nt as u,p as d,u as f,ut as p,v as m,y as h,z as g}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as _}from"./http-LCi9aT1G.js";import{t as v}from"./listTableRowIndex-ConJ8Gia.js";import{n as y,t as b}from"./datetime-CIT_BIAD.js";import{t as x}from"./bookingType-kbWaE8S4.js";import{t as S}from"./reservationStatus-B1UqUzhU.js";var C={style:{"font-family":`monospace`,"font-size":`12px`}},w=1680,T=h({__name:`TicketGrabRegistrations`,setup(h){let T=c(!1),E=c(`all`),D=c(``),O=c(void 0),k=c([]),A=u({current:1,pageSize:10,total:0}),j=c([]),M=c([]);async function N(){try{let{data:e}=await _.get(`/ticket-grab-events/options`,{params:{limit:2e3}});M.value=e.data??[]}catch{M.value=[]}}async function P(){T.value=!0;try{let{data:e}=await _.get(`/activity-registrations`,{params:{reservation_kind:`ticket_grab`,ticket_grab_event_id:O.value||void 0,status:E.value,keyword:D.value||void 0,start_date:k.value?.[0]||void 0,end_date:k.value?.[1]||void 0,page:A.current,page_size:A.pageSize}});j.value=e.data,A.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载失败`)}finally{T.value=!1}}function F(e){A.current=e,P()}function I(e){A.pageSize=e,A.current=1,P()}return n(async()=>{await N(),await P()}),(e,n)=>{let c=r(`a-option`),u=r(`a-select`),h=r(`a-radio`),_=r(`a-radio-group`),N=r(`a-input`),L=r(`a-range-picker`),R=r(`a-button`),z=r(`a-space`),B=r(`a-table-column`),V=r(`a-tag`),H=r(`a-table`),U=r(`a-card`);return t(),o(U,{title:`抢票管理 / 抢票报名`,bordered:!1},{default:i(()=>[m(z,{direction:`vertical`,fill:``},{default:i(()=>[m(z,{wrap:``,size:12},{default:i(()=>[m(u,{modelValue:O.value,"onUpdate:modelValue":n[0]||=e=>O.value=e,"allow-clear":``,placeholder:`抢票活动(全部)`,style:{width:`260px`},"allow-search":``,onChange:n[1]||=()=>{A.current=1,P()}},{default:i(()=>[(t(!0),d(s,null,g(M.value,e=>(t(),o(c,{key:e.id,value:e.id},{default:i(()=>[a(l(e.title),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),m(_,{modelValue:E.value,"onUpdate:modelValue":n[2]||=e=>E.value=e,type:`button`,size:`small`,onChange:P},{default:i(()=>[m(h,{value:`all`},{default:i(()=>[...n[7]||=[a(`全部`,-1)]]),_:1}),m(h,{value:`pending`},{default:i(()=>[...n[8]||=[a(`待核销`,-1)]]),_:1}),m(h,{value:`verified`},{default:i(()=>[...n[9]||=[a(`已核销`,-1)]]),_:1}),m(h,{value:`cancelled`},{default:i(()=>[...n[10]||=[a(`已取消`,-1)]]),_:1}),m(h,{value:`expired`},{default:i(()=>[...n[11]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),m(N,{modelValue:D.value,"onUpdate:modelValue":n[3]||=e=>D.value=e,placeholder:`姓名 / 身份证 / token`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),m(L,{modelValue:k.value,"onUpdate:modelValue":n[4]||=e=>k.value=e,style:{width:`260px`}},null,8,[`modelValue`]),m(R,{type:`primary`,onClick:n[5]||=()=>{A.current=1,P()}},{default:i(()=>[...n[12]||=[a(` 查询 `,-1)]]),_:1}),m(R,{onClick:n[6]||=()=>{E.value=`all`,D.value=``,O.value=void 0,k.value=[],A.current=1,P()}},{default:i(()=>[...n[13]||=[a(` 重置 `,-1)]]),_:1})]),_:1}),m(H,{scroll:{x:w},data:j.value,loading:T.value,"row-key":`id`,pagination:{current:A.current,pageSize:A.pageSize,total:A.total,showTotal:!0,onChange:F,onPageSizeChange:I}},{columns:i(()=>[m(B,{title:``,width:50,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(l(p(v)(e,A.current,A.pageSize)),1)]),_:1}),m(B,{title:`抢票活动`,width:200,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(l(e.ticket_grab_event?.title??`-`),1)]),_:1}),m(B,{title:`场馆`,width:160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(l(e.venue?.name??`-`),1)]),_:1}),m(B,{title:`姓名`,"data-index":`visitor_name`,width:100}),m(B,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),m(B,{title:`入馆日`,width:120},{cell:i(({record:e})=>[a(l(e.entry_date?p(y)(String(e.entry_date)):`-`),1)]),_:1}),m(B,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(l(p(x)(e.booking_type,e.ticket_count)),1)]),_:1}),m(B,{title:`票数`,width:80},{cell:i(({record:e})=>[a(l(e.ticket_count??1),1)]),_:1}),m(B,{title:`状态`,width:100},{cell:i(({record:e})=>[m(V,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:`gray`},{default:i(()=>[a(l(p(S)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),m(B,{title:`下单时间`,width:170},{cell:i(({record:e})=>[a(l(p(b)(e.created_at)),1)]),_:1}),m(B,{title:`核销时间`,width:170},{cell:i(({record:e})=>[a(l(e.verified_at?p(b)(String(e.verified_at)):`-`),1)]),_:1}),m(B,{title:`核销 Token`,width:220,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[f(`span`,C,l(e.qr_token),1)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})]),_:1})}}});export{T as default};

@ -0,0 +1 @@
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,i as s,it as c,kt as l,nt as u,p as d,u as f,ut as p,v as m,y as h,z as g}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as _}from"./http-LCi9aT1G.js";import{t as v}from"./listTableRowIndex-ConJ8Gia.js";import{n as y,t as b}from"./datetime-CIT_BIAD.js";import{t as x}from"./bookingType-kbWaE8S4.js";import{t as S}from"./reservationStatus-B1UqUzhU.js";var C={style:{"font-family":`monospace`,"font-size":`12px`}},w=1680,T=h({__name:`TicketGrabRegistrations`,setup(h){let T=c(!1),E=c(`all`),D=c(``),O=c(void 0),k=c([]),A=u({current:1,pageSize:10,total:0}),j=c([]),M=c([]);async function N(){try{let{data:e}=await _.get(`/ticket-grab-events/options`,{params:{limit:2e3}});M.value=e.data??[]}catch{M.value=[]}}async function P(){T.value=!0;try{let{data:e}=await _.get(`/activity-registrations`,{params:{reservation_kind:`ticket_grab`,ticket_grab_event_id:O.value||void 0,status:E.value,keyword:D.value||void 0,start_date:k.value?.[0]||void 0,end_date:k.value?.[1]||void 0,page:A.current,page_size:A.pageSize}});j.value=e.data,A.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载失败`)}finally{T.value=!1}}function F(e){A.current=e,P()}function I(e){A.pageSize=e,A.current=1,P()}return n(async()=>{await N(),await P()}),(e,n)=>{let c=r(`a-option`),u=r(`a-select`),h=r(`a-radio`),_=r(`a-radio-group`),N=r(`a-input`),L=r(`a-range-picker`),R=r(`a-button`),z=r(`a-space`),B=r(`a-table-column`),V=r(`a-tag`),H=r(`a-table`),U=r(`a-card`);return t(),o(U,{title:`抢票管理 / 抢票报名`,bordered:!1},{default:i(()=>[m(z,{direction:`vertical`,fill:``},{default:i(()=>[m(z,{wrap:``,size:12},{default:i(()=>[m(u,{modelValue:O.value,"onUpdate:modelValue":n[0]||=e=>O.value=e,"allow-clear":``,placeholder:`抢票活动(全部)`,style:{width:`260px`},"allow-search":``,onChange:n[1]||=()=>{A.current=1,P()}},{default:i(()=>[(t(!0),d(s,null,g(M.value,e=>(t(),o(c,{key:e.id,value:e.id},{default:i(()=>[a(l(e.title),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),m(_,{modelValue:E.value,"onUpdate:modelValue":n[2]||=e=>E.value=e,type:`button`,size:`small`,onChange:P},{default:i(()=>[m(h,{value:`all`},{default:i(()=>[...n[6]||=[a(`全部`,-1)]]),_:1}),m(h,{value:`pending`},{default:i(()=>[...n[7]||=[a(`待核销`,-1)]]),_:1}),m(h,{value:`verified`},{default:i(()=>[...n[8]||=[a(`已核销`,-1)]]),_:1}),m(h,{value:`cancelled`},{default:i(()=>[...n[9]||=[a(`已取消`,-1)]]),_:1}),m(h,{value:`expired`},{default:i(()=>[...n[10]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),m(N,{modelValue:D.value,"onUpdate:modelValue":n[3]||=e=>D.value=e,placeholder:`姓名 / 身份证 / token`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),m(L,{modelValue:k.value,"onUpdate:modelValue":n[4]||=e=>k.value=e,style:{width:`260px`}},null,8,[`modelValue`]),m(R,{type:`primary`,onClick:n[5]||=()=>{A.current=1,P()}},{default:i(()=>[...n[11]||=[a(` 查询 `,-1)]]),_:1})]),_:1}),m(H,{scroll:{x:w},data:j.value,loading:T.value,"row-key":`id`,pagination:{current:A.current,pageSize:A.pageSize,total:A.total,showTotal:!0,onChange:F,onPageSizeChange:I}},{columns:i(()=>[m(B,{title:``,width:50,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(l(p(v)(e,A.current,A.pageSize)),1)]),_:1}),m(B,{title:`抢票活动`,width:200,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(l(e.ticket_grab_event?.title??`-`),1)]),_:1}),m(B,{title:`场馆`,width:160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(l(e.venue?.name??`-`),1)]),_:1}),m(B,{title:`姓名`,"data-index":`visitor_name`,width:100}),m(B,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),m(B,{title:`入馆日`,width:120},{cell:i(({record:e})=>[a(l(e.entry_date?p(y)(String(e.entry_date)):`-`),1)]),_:1}),m(B,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(l(p(x)(e.booking_type,e.ticket_count)),1)]),_:1}),m(B,{title:`票数`,width:80},{cell:i(({record:e})=>[a(l(e.ticket_count??1),1)]),_:1}),m(B,{title:`状态`,width:100},{cell:i(({record:e})=>[m(V,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:`gray`},{default:i(()=>[a(l(p(S)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),m(B,{title:`下单时间`,width:170},{cell:i(({record:e})=>[a(l(p(b)(e.created_at)),1)]),_:1}),m(B,{title:`核销时间`,width:170},{cell:i(({record:e})=>[a(l(e.verified_at?p(b)(String(e.verified_at)):`-`),1)]),_:1}),m(B,{title:`核销 Token`,width:220,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[f(`span`,C,l(e.qr_token),1)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})]),_:1})}}});export{T as default};

@ -1 +1 @@
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,it as s,kt as c,nt as l,u,ut as d,v as f,y as p}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as m}from"./http-LCi9aT1G.js";import{u as h}from"./index-CUH3hGCJ.js";import{t as g}from"./listTableRowIndex-ConJ8Gia.js";import{n as _,t as v}from"./datetime-CIT_BIAD.js";import{t as y}from"./bookingType-kbWaE8S4.js";import{t as b}from"./reservationStatus-B1UqUzhU.js";var x={class:`verify-list-toolbar`},S=1780,C=h(p({__name:`TicketGrabVerify`,setup(p){let h=s(!1),C=s([]),w=s(``),T=s(!1),E=s(`all`),D=s(``),O=s([]),k=l({current:1,pageSize:10});async function A(){h.value=!0;try{let e={status:E.value,keyword:D.value||void 0,reservation_kind:`ticket_grab`};O.value?.length===2&&(e.start_date=O.value[0],e.end_date=O.value[1],e.date_field=`entry_date`);let{data:t}=await m.get(`/reservations`,{params:e});C.value=t,k.current=1}catch(t){e.error(t?.response?.data?.message??`加载预约列表失败`)}finally{h.value=!1}}function j(){A()}function M(){E.value=`all`,D.value=``,O.value=[],A()}async function N(){if(!w.value){e.warning(`请输入二维码 token`);return}T.value=!0;try{await m.post(`/reservations/verify`,{qr_token:w.value}),e.success(`核销成功`),w.value=``,await A()}catch(t){e.error(t?.response?.data?.message??`核销失败`)}finally{T.value=!1}}return n(A),(e,n)=>{let s=r(`a-alert`),l=r(`a-input`),p=r(`a-button`),m=r(`a-space`),P=r(`a-radio`),F=r(`a-radio-group`),I=r(`a-range-picker`),L=r(`a-table-column`),R=r(`a-tag`),z=r(`a-table`),B=r(`a-card`);return t(),o(B,{title:`抢票管理 / 抢票核销`,bordered:!1},{default:i(()=>[f(m,{direction:`vertical`,fill:``},{default:i(()=>[f(s,null,{default:i(()=>[...n[5]||=[a(`抢票预约按「入馆日」为当天方可核销。输入二维码 token 核销。`,-1)]]),_:1}),f(m,{wrap:``,size:12},{default:i(()=>[f(l,{modelValue:w.value,"onUpdate:modelValue":n[0]||=e=>w.value=e,style:{width:`min(100%, 420px)`},placeholder:`请输入二维码 token`,"allow-clear":``},null,8,[`modelValue`]),f(p,{type:`primary`,loading:T.value,onClick:N},{default:i(()=>[...n[6]||=[a(`立即核销`,-1)]]),_:1},8,[`loading`])]),_:1}),u(`div`,x,[f(m,{wrap:``,size:12},{default:i(()=>[f(F,{modelValue:E.value,"onUpdate:modelValue":n[1]||=e=>E.value=e,type:`button`,size:`small`,onChange:A},{default:i(()=>[f(P,{value:`all`},{default:i(()=>[...n[7]||=[a(`全部`,-1)]]),_:1}),f(P,{value:`pending`},{default:i(()=>[...n[8]||=[a(`待核销`,-1)]]),_:1}),f(P,{value:`verified`},{default:i(()=>[...n[9]||=[a(`已核销`,-1)]]),_:1}),f(P,{value:`cancelled`},{default:i(()=>[...n[10]||=[a(`已取消`,-1)]]),_:1}),f(P,{value:`expired`},{default:i(()=>[...n[11]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),f(l,{modelValue:D.value,"onUpdate:modelValue":n[2]||=e=>D.value=e,placeholder:`姓名 / 手机 / 身份证 / token`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),f(I,{modelValue:O.value,"onUpdate:modelValue":n[3]||=e=>O.value=e,style:{width:`260px`}},null,8,[`modelValue`]),f(p,{type:`primary`,onClick:j},{default:i(()=>[...n[12]||=[a(`查询`,-1)]]),_:1}),f(p,{onClick:M},{default:i(()=>[...n[13]||=[a(`重置`,-1)]]),_:1}),f(p,{onClick:A},{default:i(()=>[...n[14]||=[a(`刷新列表`,-1)]]),_:1})]),_:1})]),f(z,{class:`list-data-table verify-table`,scroll:{x:S},data:C.value,loading:h.value,"row-key":`id`,pagination:{current:k.current,pageSize:k.pageSize,total:C.value.length,showTotal:!0},onPageChange:n[4]||=e=>k.current=e},{columns:i(()=>[f(L,{title:``,width:50,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(c(d(g)(e,k.current,k.pageSize)),1)]),_:1}),f(L,{title:`预约场次`,width:220,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.ticket_grab_event?.title??`-`),1)]),_:1}),f(L,{title:`场馆`,width:180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.venue?.name??`-`),1)]),_:1}),f(L,{title:`姓名`,"data-index":`visitor_name`,width:100}),f(L,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),f(L,{title:`手机号`,"data-index":`visitor_phone`,width:120}),f(L,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(c(d(y)(e.booking_type,e.ticket_count)),1)]),_:1}),f(L,{title:`场次时间`,width:140},{cell:i(({record:e})=>[a(c(e.entry_date?d(_)(String(e.entry_date)):`-`),1)]),_:1}),f(L,{title:`状态`,width:100},{cell:i(({record:e})=>[f(R,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:e.status===`expired`?`orange`:`gray`},{default:i(()=>[a(c(d(b)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),f(L,{title:`预约时间`,width:175},{cell:i(({record:e})=>[a(c(d(v)(e.created_at)),1)]),_:1}),f(L,{title:`核销时间`,width:175},{cell:i(({record:e})=>[a(c(d(v)(e.verified_at)),1)]),_:1}),f(L,{title:`二维码 token`,"data-index":`qr_token`,width:200,ellipsis:!0,tooltip:!0,fixed:`right`})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-f1a484a3`]]);export{C as default};
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,it as s,kt as c,nt as l,u,ut as d,v as f,y as p}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as m}from"./http-LCi9aT1G.js";import{u as h}from"./index-DWQkWGTP.js";import{t as g}from"./listTableRowIndex-ConJ8Gia.js";import{n as _,t as v}from"./datetime-CIT_BIAD.js";import{t as y}from"./bookingType-kbWaE8S4.js";import{t as b}from"./reservationStatus-B1UqUzhU.js";var x={class:`verify-list-toolbar`},S=1780,C=h(p({__name:`TicketGrabVerify`,setup(p){let h=s(!1),C=s([]),w=s(``),T=s(!1),E=s(`all`),D=s(``),O=s([]),k=l({current:1,pageSize:10});async function A(){h.value=!0;try{let e={status:E.value,keyword:D.value||void 0,reservation_kind:`ticket_grab`};O.value?.length===2&&(e.start_date=O.value[0],e.end_date=O.value[1],e.date_field=`entry_date`);let{data:t}=await m.get(`/reservations`,{params:e});C.value=t,k.current=1}catch(t){e.error(t?.response?.data?.message??`加载预约列表失败`)}finally{h.value=!1}}function j(){A()}function M(){E.value=`all`,D.value=``,O.value=[],A()}async function N(){if(!w.value){e.warning(`请输入二维码 token`);return}T.value=!0;try{await m.post(`/reservations/verify`,{qr_token:w.value}),e.success(`核销成功`),w.value=``,await A()}catch(t){e.error(t?.response?.data?.message??`核销失败`)}finally{T.value=!1}}return n(A),(e,n)=>{let s=r(`a-alert`),l=r(`a-input`),p=r(`a-button`),m=r(`a-space`),P=r(`a-radio`),F=r(`a-radio-group`),I=r(`a-range-picker`),L=r(`a-table-column`),R=r(`a-tag`),z=r(`a-table`),B=r(`a-card`);return t(),o(B,{title:`抢票管理 / 抢票核销`,bordered:!1},{default:i(()=>[f(m,{direction:`vertical`,fill:``},{default:i(()=>[f(s,null,{default:i(()=>[...n[5]||=[a(`抢票预约按「入馆日」为当天方可核销。输入二维码 token 核销。`,-1)]]),_:1}),f(m,{wrap:``,size:12},{default:i(()=>[f(l,{modelValue:w.value,"onUpdate:modelValue":n[0]||=e=>w.value=e,style:{width:`min(100%, 420px)`},placeholder:`请输入二维码 token`,"allow-clear":``},null,8,[`modelValue`]),f(p,{type:`primary`,loading:T.value,onClick:N},{default:i(()=>[...n[6]||=[a(`立即核销`,-1)]]),_:1},8,[`loading`])]),_:1}),u(`div`,x,[f(m,{wrap:``,size:12},{default:i(()=>[f(F,{modelValue:E.value,"onUpdate:modelValue":n[1]||=e=>E.value=e,type:`button`,size:`small`,onChange:A},{default:i(()=>[f(P,{value:`all`},{default:i(()=>[...n[7]||=[a(`全部`,-1)]]),_:1}),f(P,{value:`pending`},{default:i(()=>[...n[8]||=[a(`待核销`,-1)]]),_:1}),f(P,{value:`verified`},{default:i(()=>[...n[9]||=[a(`已核销`,-1)]]),_:1}),f(P,{value:`cancelled`},{default:i(()=>[...n[10]||=[a(`已取消`,-1)]]),_:1}),f(P,{value:`expired`},{default:i(()=>[...n[11]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),f(l,{modelValue:D.value,"onUpdate:modelValue":n[2]||=e=>D.value=e,placeholder:`姓名 / 手机 / 身份证 / token`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),f(I,{modelValue:O.value,"onUpdate:modelValue":n[3]||=e=>O.value=e,style:{width:`260px`}},null,8,[`modelValue`]),f(p,{type:`primary`,onClick:j},{default:i(()=>[...n[12]||=[a(`查询`,-1)]]),_:1}),f(p,{onClick:M},{default:i(()=>[...n[13]||=[a(`重置`,-1)]]),_:1}),f(p,{onClick:A},{default:i(()=>[...n[14]||=[a(`刷新列表`,-1)]]),_:1})]),_:1})]),f(z,{class:`list-data-table verify-table`,scroll:{x:S},data:C.value,loading:h.value,"row-key":`id`,pagination:{current:k.current,pageSize:k.pageSize,total:C.value.length,showTotal:!0},onPageChange:n[4]||=e=>k.current=e},{columns:i(()=>[f(L,{title:``,width:50,ellipsis:!0,tooltip:!0},{cell:i(({rowIndex:e})=>[a(c(d(g)(e,k.current,k.pageSize)),1)]),_:1}),f(L,{title:`预约场次`,width:220,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.ticket_grab_event?.title??`-`),1)]),_:1}),f(L,{title:`场馆`,width:180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.venue?.name??`-`),1)]),_:1}),f(L,{title:`姓名`,"data-index":`visitor_name`,width:100}),f(L,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),f(L,{title:`手机号`,"data-index":`visitor_phone`,width:120}),f(L,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(c(d(y)(e.booking_type,e.ticket_count)),1)]),_:1}),f(L,{title:`场次时间`,width:140},{cell:i(({record:e})=>[a(c(e.entry_date?d(_)(String(e.entry_date)):`-`),1)]),_:1}),f(L,{title:`状态`,width:100},{cell:i(({record:e})=>[f(R,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:e.status===`expired`?`orange`:`gray`},{default:i(()=>[a(c(d(b)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),f(L,{title:`预约时间`,width:175},{cell:i(({record:e})=>[a(c(d(v)(e.created_at)),1)]),_:1}),f(L,{title:`核销时间`,width:175},{cell:i(({record:e})=>[a(c(d(v)(e.verified_at)),1)]),_:1}),f(L,{title:`二维码 token`,"data-index":`qr_token`,width:200,ellipsis:!0,tooltip:!0,fixed:`right`})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-f1a484a3`]]);export{C as default};

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,i as o,it as s,kt as c,nt as l,p as u,u as d,v as f,y as p}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{c as m,s as h,u as g}from"./index-CUH3hGCJ.js";import{i as _,n as v,o as y,r as b,t as x}from"./h5Http-D8vGcHNb.js";var S={class:`m-verify-page`},C={class:`m-verify-hero`},w={class:`m-verify-sub`},T={class:`m-verify-card`},E={key:0,class:`m-verify-tip`},D={key:1,class:`m-verify-tip`},O=g(p({__name:`VerifyLogin`,setup(p){let g=m(),O=h(),k=s(!1),A=s(``),j=s(``),M=s(``),N=s(!1),P=l({username:``,password:``});function F(e){let t=O.query[e];return(typeof t==`string`?t:Array.isArray(t)?String(t[0]??``):``).trim()}async function I(){let e=A.value,t=j.value;if(e.length>=6){N.value=!0;try{let{data:t}=await y.get(`/verify-portal/preview`,{params:{portal_code:e}});M.value=String(t?.event_title||``).trim()||``}catch{M.value=``}finally{N.value=!1}return}if(t.length>=32){N.value=!0;try{let{data:e}=await y.get(`/verify-portal/preview`,{params:{portal_token:t}});M.value=String(e?.event_title||``).trim()||``}catch{M.value=``}finally{N.value=!1}return}M.value=``}n(()=>{let e=F(`v`).toLowerCase(),t=F(`portal`);e.length>=6?(A.value=e,j.value=``,localStorage.setItem(b,e),localStorage.removeItem(_)):t.length>=32?(j.value=t,A.value=``,localStorage.setItem(_,t),localStorage.removeItem(b)):(A.value=localStorage.getItem(`szkp_verify_portal_code`)||``,j.value=localStorage.getItem(`szkp_verify_portal_legacy_token`)||``),I()});function L(){return O.path.startsWith(`/m/`)?`/m/verify`:`/h5/verify/scan`}async function R(){k.value=!0;try{if(A.value.length>=6){let{data:t}=await y.post(`/verify-portal/login`,{portal_code:A.value,username:P.username.trim(),password:P.password});localStorage.setItem(x,t.token),localStorage.setItem(`${x}_saved_at`,String(Date.now())),localStorage.setItem(v,`portal`),e.success(`登录成功`),g.replace(L());return}if(j.value.length>=32){let{data:t}=await y.post(`/verify-portal/login`,{portal_token:j.value,username:P.username.trim(),password:P.password});localStorage.setItem(x,t.token),localStorage.setItem(`${x}_saved_at`,String(Date.now())),localStorage.setItem(v,`portal`),e.success(`登录成功`),g.replace(L());return}let{data:t}=await y.post(`/auth/login`,{...P,client:`h5_verify`});localStorage.setItem(x,t.token),localStorage.setItem(`${x}_saved_at`,String(Date.now())),localStorage.setItem(v,`admin`),localStorage.removeItem(b),localStorage.removeItem(_),e.success(`登录成功`),g.replace(L())}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{k.value=!1}}return(e,n)=>{let s=r(`a-input`),l=r(`a-form-item`),p=r(`a-input-password`),m=r(`a-button`),h=r(`a-form`);return t(),u(`div`,S,[d(`div`,C,[n[2]||=d(`div`,{class:`m-verify-title`},`核销入口`,-1),d(`div`,w,[A.value.length>=6||j.value.length>=32?(t(),u(o,{key:0},[a(c(N.value?`活动信息加载中…`:M.value||``),1)],64)):(t(),u(o,{key:1},[a(`超级管理员核销登录`)],64))])]),d(`div`,T,[f(h,{model:P,layout:`vertical`,onSubmitSuccess:R},{default:i(()=>[f(l,{label:`用户名`},{default:i(()=>[f(s,{modelValue:P.username,"onUpdate:modelValue":n[0]||=e=>P.username=e,placeholder:`请输入账号`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),f(l,{label:`密码`},{default:i(()=>[f(p,{modelValue:P.password,"onUpdate:modelValue":n[1]||=e=>P.password=e,placeholder:`请输入密码`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),f(m,{type:`primary`,long:``,size:`large`,loading:k.value,onClick:R},{default:i(()=>[...n[3]||=[a(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`]),A.value.length>=6||j.value.length>=32?(t(),u(`p`,E,` 活动专用核销登录(活动结束后账号失效) `)):(t(),u(`p`,D,[...n[4]||=[a(``,-1),d(`strong`,null,`超级管理员`,-1),a(`可使用后台账号登录本页。场馆工作人员请打开管理员提供的带 `,-1),d(`strong`,null,`?v=短码`,-1),a(` 的专用链接。 `,-1)]])),n[5]||=d(`p`,{class:`m-verify-tip`},`登录状态将保持较长时间;若已失效会自动回到本页。`,-1)])])}}}),[[`__scopeId`,`data-v-54556c3e`]]);export{O as default};
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,i as o,it as s,kt as c,nt as l,p as u,u as d,v as f,y as p}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{c as m,s as h,u as g}from"./index-DWQkWGTP.js";import{i as _,n as v,o as y,r as b,t as x}from"./h5Http-D8vGcHNb.js";var S={class:`m-verify-page`},C={class:`m-verify-hero`},w={class:`m-verify-sub`},T={class:`m-verify-card`},E={key:0,class:`m-verify-tip`},D={key:1,class:`m-verify-tip`},O=g(p({__name:`VerifyLogin`,setup(p){let g=m(),O=h(),k=s(!1),A=s(``),j=s(``),M=s(``),N=s(!1),P=l({username:``,password:``});function F(e){let t=O.query[e];return(typeof t==`string`?t:Array.isArray(t)?String(t[0]??``):``).trim()}async function I(){let e=A.value,t=j.value;if(e.length>=6){N.value=!0;try{let{data:t}=await y.get(`/verify-portal/preview`,{params:{portal_code:e}});M.value=String(t?.event_title||``).trim()||``}catch{M.value=``}finally{N.value=!1}return}if(t.length>=32){N.value=!0;try{let{data:e}=await y.get(`/verify-portal/preview`,{params:{portal_token:t}});M.value=String(e?.event_title||``).trim()||``}catch{M.value=``}finally{N.value=!1}return}M.value=``}n(()=>{let e=F(`v`).toLowerCase(),t=F(`portal`);e.length>=6?(A.value=e,j.value=``,localStorage.setItem(b,e),localStorage.removeItem(_)):t.length>=32?(j.value=t,A.value=``,localStorage.setItem(_,t),localStorage.removeItem(b)):(A.value=localStorage.getItem(`szkp_verify_portal_code`)||``,j.value=localStorage.getItem(`szkp_verify_portal_legacy_token`)||``),I()});function L(){return O.path.startsWith(`/m/`)?`/m/verify`:`/h5/verify/scan`}async function R(){k.value=!0;try{if(A.value.length>=6){let{data:t}=await y.post(`/verify-portal/login`,{portal_code:A.value,username:P.username.trim(),password:P.password});localStorage.setItem(x,t.token),localStorage.setItem(`${x}_saved_at`,String(Date.now())),localStorage.setItem(v,`portal`),e.success(`登录成功`),g.replace(L());return}if(j.value.length>=32){let{data:t}=await y.post(`/verify-portal/login`,{portal_token:j.value,username:P.username.trim(),password:P.password});localStorage.setItem(x,t.token),localStorage.setItem(`${x}_saved_at`,String(Date.now())),localStorage.setItem(v,`portal`),e.success(`登录成功`),g.replace(L());return}let{data:t}=await y.post(`/auth/login`,{...P,client:`h5_verify`});localStorage.setItem(x,t.token),localStorage.setItem(`${x}_saved_at`,String(Date.now())),localStorage.setItem(v,`admin`),localStorage.removeItem(b),localStorage.removeItem(_),e.success(`登录成功`),g.replace(L())}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{k.value=!1}}return(e,n)=>{let s=r(`a-input`),l=r(`a-form-item`),p=r(`a-input-password`),m=r(`a-button`),h=r(`a-form`);return t(),u(`div`,S,[d(`div`,C,[n[2]||=d(`div`,{class:`m-verify-title`},`核销入口`,-1),d(`div`,w,[A.value.length>=6||j.value.length>=32?(t(),u(o,{key:0},[a(c(N.value?`活动信息加载中…`:M.value||``),1)],64)):(t(),u(o,{key:1},[a(`超级管理员核销登录`)],64))])]),d(`div`,T,[f(h,{model:P,layout:`vertical`,onSubmitSuccess:R},{default:i(()=>[f(l,{label:`用户名`},{default:i(()=>[f(s,{modelValue:P.username,"onUpdate:modelValue":n[0]||=e=>P.username=e,placeholder:`请输入账号`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),f(l,{label:`密码`},{default:i(()=>[f(p,{modelValue:P.password,"onUpdate:modelValue":n[1]||=e=>P.password=e,placeholder:`请输入密码`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),f(m,{type:`primary`,long:``,size:`large`,loading:k.value,onClick:R},{default:i(()=>[...n[3]||=[a(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`]),A.value.length>=6||j.value.length>=32?(t(),u(`p`,E,` 活动专用核销登录(活动结束后账号失效) `)):(t(),u(`p`,D,[...n[4]||=[a(``,-1),d(`strong`,null,`超级管理员`,-1),a(`可使用后台账号登录本页。场馆工作人员请打开管理员提供的带 `,-1),d(`strong`,null,`?v=短码`,-1),a(` 的专用链接。 `,-1)]])),n[5]||=d(`p`,{class:`m-verify-tip`},`登录状态将保持较长时间;若已失效会自动回到本页。`,-1)])])}}}),[[`__scopeId`,`data-v-54556c3e`]]);export{O as default};

@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-CF9P5s2I.js","assets/index-CUH3hGCJ.js","assets/axios-CiYFffbI.js","assets/runtime-core.esm-bundler-CnFWH3R5.js","assets/preload-helper-BIjWqNH5.js","assets/http-LCi9aT1G.js","assets/index-_Vo8-Dl1.css","assets/Dashboard-PHG7boym.css","assets/VenueList-C6Wg1qjn.js","assets/RichEditorField-DHSdtnXE.js","assets/RichEditorField-BSoIk7uU.css","assets/listTableRowIndex-ConJ8Gia.js","assets/mediaUrl-CPV6u7br.js","assets/VenueList-CLA5TPd_.css","assets/ActivityList-Ol3psU1D.js","assets/ActivityList-BetBDTJU.css","assets/Registrations-C9MapDUQ.js","assets/bookingType-kbWaE8S4.js","assets/datetime-CIT_BIAD.js","assets/reservationStatus-B1UqUzhU.js","assets/Registrations-BFJ7lCw0.css","assets/Verify-D7ENaVRY.js","assets/Verify-Dw49jI2o.css","assets/Blacklist-eV8W6CSQ.js","assets/Blacklist-BfL6MrNT.css","assets/TicketGrabList-BpGYM0-E.js","assets/h5Http-D8vGcHNb.js","assets/TicketGrabList-k4CSPQEF.css","assets/TicketGrabRegistrations-BB6ErxQ4.js","assets/TicketGrabVerify-6_eHxVVr.js","assets/TicketGrabVerify-C99ifrCo.css","assets/StudyTourList-yD-HzsYH.js","assets/StudyTourList-zuub63yR.css","assets/Monitor-CwQryTgE.js","assets/PagePlaceholder-Cy4-OO0C.js","assets/Leaderboard-DpnW60sP.js","assets/Alerts-CLB4PUbf.js","assets/Overview-DWCg_gXr.js","assets/Regions-wTSahatX.js","assets/Categories-C4UExwsU.js","assets/Exports-B2d1jnIW.js","assets/Admins-DptYDbBC.js","assets/Roles-D4Oz9Ce2.js","assets/Menus-BcK3_5d0.js","assets/Menus-CIRuEnr6.css","assets/AuditLogs-uYb3BySq.js","assets/AuditLogs-Bd90uV6l.css","assets/Wechat-GC1DNCzj.js","assets/Map-lEw5nMUB.js","assets/Notifications-CnFkl2pO.js","assets/SystemLogs-BUu-bCSr.js","assets/SystemLogs-DSVhElsT.css","assets/Dictionaries-Cq9OnVyA.js","assets/WechatUsers-CFSnKxW1.js"])))=>i.map(i=>d[i]);
import{n as e}from"./http-LCi9aT1G.js";import{t}from"./preload-helper-BIjWqNH5.js";var n={"/dashboard":()=>t(()=>import(`./Dashboard-CF9P5s2I.js`),__vite__mapDeps([0,1,2,3,4,5,6,7])),"/venues":()=>t(()=>import(`./VenueList-C6Wg1qjn.js`),__vite__mapDeps([8,1,2,3,4,5,6,9,10,11,12,13])),"/activities":()=>t(()=>import(`./ActivityList-Ol3psU1D.js`),__vite__mapDeps([14,1,2,3,4,5,6,9,10,11,15])),"/activities/registrations":()=>t(()=>import(`./Registrations-C9MapDUQ.js`),__vite__mapDeps([16,1,2,3,4,5,6,17,18,11,19,20])),"/activities/verify":()=>t(()=>import(`./Verify-D7ENaVRY.js`),__vite__mapDeps([21,1,2,3,4,5,6,17,18,11,19,22])),"/activities/blacklist":()=>t(()=>import(`./Blacklist-eV8W6CSQ.js`),__vite__mapDeps([23,1,2,3,4,5,6,18,24])),"/ticket-grab-events":()=>t(()=>import(`./TicketGrabList-BpGYM0-E.js`),__vite__mapDeps([25,1,2,3,4,5,6,9,10,26,11,12,27])),"/ticket-grab-events/registrations":()=>t(()=>import(`./TicketGrabRegistrations-BB6ErxQ4.js`),__vite__mapDeps([28,2,3,5,17,18,11,19])),"/ticket-grab-events/verify":()=>t(()=>import(`./TicketGrabVerify-6_eHxVVr.js`),__vite__mapDeps([29,1,2,3,4,5,6,17,18,11,19,30])),"/study-tours":()=>t(()=>import(`./StudyTourList-yD-HzsYH.js`),__vite__mapDeps([31,1,2,3,4,5,6,9,10,11,12,32])),"/traffic":()=>t(()=>import(`./Monitor-CwQryTgE.js`),__vite__mapDeps([33,3,34])),"/traffic/leaderboard":()=>t(()=>import(`./Leaderboard-DpnW60sP.js`),__vite__mapDeps([35,3,34])),"/traffic/alerts":()=>t(()=>import(`./Alerts-CLB4PUbf.js`),__vite__mapDeps([36,3,34])),"/stats":()=>t(()=>import(`./Overview-DWCg_gXr.js`),__vite__mapDeps([37,3,34])),"/stats/regions":()=>t(()=>import(`./Regions-wTSahatX.js`),__vite__mapDeps([38,3,34])),"/stats/categories":()=>t(()=>import(`./Categories-C4UExwsU.js`),__vite__mapDeps([39,3,34])),"/stats/exports":()=>t(()=>import(`./Exports-B2d1jnIW.js`),__vite__mapDeps([40,3,34])),"/system/admins":()=>t(()=>import(`./Admins-DptYDbBC.js`),__vite__mapDeps([41,2,3,5,11])),"/system/roles":()=>t(()=>import(`./Roles-D4Oz9Ce2.js`),__vite__mapDeps([42,1,2,3,4,5,6])),"/system/menus":()=>t(()=>import(`./Menus-BcK3_5d0.js`),__vite__mapDeps([43,1,2,3,4,5,6,44])),"/system/audit-logs":()=>t(()=>import(`./AuditLogs-uYb3BySq.js`),__vite__mapDeps([45,1,2,3,4,5,6,18,11,46])),"/settings/wechat":()=>t(()=>import(`./Wechat-GC1DNCzj.js`),__vite__mapDeps([47,3,34])),"/settings/map":()=>t(()=>import(`./Map-lEw5nMUB.js`),__vite__mapDeps([48,1,2,3,4,5,6])),"/settings/notifications":()=>t(()=>import(`./Notifications-CnFkl2pO.js`),__vite__mapDeps([49,3,34])),"/settings/system-logs":()=>t(()=>import(`./SystemLogs-BUu-bCSr.js`),__vite__mapDeps([50,1,2,3,4,5,6,18,51])),"/settings/dictionaries":()=>t(()=>import(`./Dictionaries-Cq9OnVyA.js`),__vite__mapDeps([52,2,3,5])),"/wechat-users":()=>t(()=>import(`./WechatUsers-CFSnKxW1.js`),__vite__mapDeps([53,2,3,5,11]))};function r(e){let t=[],n=e=>{for(let r of e){let e=r?.path?.trim();e&&t.push(e),Array.isArray(r?.children)&&n(r.children)}};return n(e),t}function i(e){let t=e.trim().replace(/\/+$/,``)||`/`;return t.startsWith(`/`)?t:`/${t}`}function a(e){if(e.size===0)return`/dashboard`;for(let t of[`/dashboard`,`/activities`,`/venues`,`/wechat-users`])if(e.has(t))return t;return[...e].sort()[0]??`/dashboard`}var o=null,s=!1;function c(){return o}async function l(){try{let{data:t}=await e.get(`/admin-menus`),n=r(Array.isArray(t)?t:[]);return a(new Set(n.map(e=>i(e))))}catch{return`/dashboard`}}async function u(t){if(s)return;let{data:a}=await e.get(`/admin-menus`),c=r(Array.isArray(a)?a:[]);o=new Set(c.map(e=>i(e)));for(let e of c){let r=i(e).replace(/\/$/,``)||`/`,a=n[r];if(!a)continue;let o=r.startsWith(`/`)?r.slice(1):r,s=`dyn-${o.replace(/\//g,`-`)}`;t.hasRoute(s)||t.addRoute(`admin-layout`,{path:o,name:s,component:a})}s=!0}function d(e){o=null,s=!1;for(let t of e.getRoutes()){let n=t.name?.toString()??``;n.startsWith(`dyn-`)&&e.removeRoute(n)}}function f(){return s}export{a,f as i,c as n,u as o,l as r,d as s,r as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-CoCdpAW_.js","assets/index-DWQkWGTP.js","assets/axios-CiYFffbI.js","assets/runtime-core.esm-bundler-CnFWH3R5.js","assets/preload-helper-BIjWqNH5.js","assets/http-LCi9aT1G.js","assets/index-Bh3DcLoA.css","assets/Dashboard-xEEouXDe.css","assets/VenueList-LuMK6gNK.js","assets/RichEditorField-5AU15jtB.js","assets/RichEditorField-BSoIk7uU.css","assets/listTableRowIndex-ConJ8Gia.js","assets/mediaUrl-CPV6u7br.js","assets/VenueList-CLA5TPd_.css","assets/ActivityList-DDWDEQTS.js","assets/ActivityList-CfKK4AGd.css","assets/Registrations-COMxZ1lw.js","assets/bookingType-kbWaE8S4.js","assets/datetime-CIT_BIAD.js","assets/reservationStatus-B1UqUzhU.js","assets/Registrations-BFJ7lCw0.css","assets/Verify-CVGGYCTy.js","assets/Verify-Dw49jI2o.css","assets/Blacklist-CxObzRC-.js","assets/Blacklist-CtQQ6LfC.css","assets/TicketGrabList-b_bUmkP8.js","assets/h5Http-D8vGcHNb.js","assets/TicketGrabList-C9uttxaZ.css","assets/TicketGrabRegistrations-DxSUCcBo.js","assets/TicketGrabVerify-wEIH5Ods.js","assets/TicketGrabVerify-C99ifrCo.css","assets/StudyTourList-PrNy6kLz.js","assets/StudyTourList-S9h38Ufv.css","assets/Monitor-CwQryTgE.js","assets/PagePlaceholder-Cy4-OO0C.js","assets/Leaderboard-DpnW60sP.js","assets/Alerts-CLB4PUbf.js","assets/Overview-DWCg_gXr.js","assets/Regions-wTSahatX.js","assets/Categories-C4UExwsU.js","assets/Exports-B2d1jnIW.js","assets/Admins-DptYDbBC.js","assets/Roles-mpaXpTNi.js","assets/Menus-Bs4BHAWm.js","assets/Menus-CIRuEnr6.css","assets/AuditLogs-kQxvpm9j.js","assets/AuditLogs-Bd90uV6l.css","assets/Wechat-GC1DNCzj.js","assets/Map-BmKp31Do.js","assets/Notifications-CnFkl2pO.js","assets/SystemLogs-C9dxUplB.js","assets/SystemLogs-DSVhElsT.css","assets/Dictionaries-Cq9OnVyA.js","assets/WechatUsers-CFSnKxW1.js"])))=>i.map(i=>d[i]);
import{n as e}from"./http-LCi9aT1G.js";import{t}from"./preload-helper-BIjWqNH5.js";var n={"/dashboard":()=>t(()=>import(`./Dashboard-CoCdpAW_.js`),__vite__mapDeps([0,1,2,3,4,5,6,7])),"/venues":()=>t(()=>import(`./VenueList-LuMK6gNK.js`),__vite__mapDeps([8,1,2,3,4,5,6,9,10,11,12,13])),"/activities":()=>t(()=>import(`./ActivityList-DDWDEQTS.js`),__vite__mapDeps([14,1,2,3,4,5,6,9,10,11,15])),"/activities/registrations":()=>t(()=>import(`./Registrations-COMxZ1lw.js`),__vite__mapDeps([16,1,2,3,4,5,6,17,18,11,19,20])),"/activities/verify":()=>t(()=>import(`./Verify-CVGGYCTy.js`),__vite__mapDeps([21,1,2,3,4,5,6,17,18,11,19,22])),"/activities/blacklist":()=>t(()=>import(`./Blacklist-CxObzRC-.js`),__vite__mapDeps([23,1,2,3,4,5,6,18,24])),"/ticket-grab-events":()=>t(()=>import(`./TicketGrabList-b_bUmkP8.js`),__vite__mapDeps([25,1,2,3,4,5,6,9,10,26,11,12,27])),"/ticket-grab-events/registrations":()=>t(()=>import(`./TicketGrabRegistrations-DxSUCcBo.js`),__vite__mapDeps([28,2,3,5,17,18,11,19])),"/ticket-grab-events/verify":()=>t(()=>import(`./TicketGrabVerify-wEIH5Ods.js`),__vite__mapDeps([29,1,2,3,4,5,6,17,18,11,19,30])),"/study-tours":()=>t(()=>import(`./StudyTourList-PrNy6kLz.js`),__vite__mapDeps([31,1,2,3,4,5,6,9,10,11,12,32])),"/traffic":()=>t(()=>import(`./Monitor-CwQryTgE.js`),__vite__mapDeps([33,3,34])),"/traffic/leaderboard":()=>t(()=>import(`./Leaderboard-DpnW60sP.js`),__vite__mapDeps([35,3,34])),"/traffic/alerts":()=>t(()=>import(`./Alerts-CLB4PUbf.js`),__vite__mapDeps([36,3,34])),"/stats":()=>t(()=>import(`./Overview-DWCg_gXr.js`),__vite__mapDeps([37,3,34])),"/stats/regions":()=>t(()=>import(`./Regions-wTSahatX.js`),__vite__mapDeps([38,3,34])),"/stats/categories":()=>t(()=>import(`./Categories-C4UExwsU.js`),__vite__mapDeps([39,3,34])),"/stats/exports":()=>t(()=>import(`./Exports-B2d1jnIW.js`),__vite__mapDeps([40,3,34])),"/system/admins":()=>t(()=>import(`./Admins-DptYDbBC.js`),__vite__mapDeps([41,2,3,5,11])),"/system/roles":()=>t(()=>import(`./Roles-mpaXpTNi.js`),__vite__mapDeps([42,1,2,3,4,5,6])),"/system/menus":()=>t(()=>import(`./Menus-Bs4BHAWm.js`),__vite__mapDeps([43,1,2,3,4,5,6,44])),"/system/audit-logs":()=>t(()=>import(`./AuditLogs-kQxvpm9j.js`),__vite__mapDeps([45,1,2,3,4,5,6,18,11,46])),"/settings/wechat":()=>t(()=>import(`./Wechat-GC1DNCzj.js`),__vite__mapDeps([47,3,34])),"/settings/map":()=>t(()=>import(`./Map-BmKp31Do.js`),__vite__mapDeps([48,1,2,3,4,5,6])),"/settings/notifications":()=>t(()=>import(`./Notifications-CnFkl2pO.js`),__vite__mapDeps([49,3,34])),"/settings/system-logs":()=>t(()=>import(`./SystemLogs-C9dxUplB.js`),__vite__mapDeps([50,1,2,3,4,5,6,18,51])),"/settings/dictionaries":()=>t(()=>import(`./Dictionaries-Cq9OnVyA.js`),__vite__mapDeps([52,2,3,5])),"/wechat-users":()=>t(()=>import(`./WechatUsers-CFSnKxW1.js`),__vite__mapDeps([53,2,3,5,11]))};function r(e){let t=[],n=e=>{for(let r of e){let e=r?.path?.trim();e&&t.push(e),Array.isArray(r?.children)&&n(r.children)}};return n(e),t}function i(e){let t=e.trim().replace(/\/+$/,``)||`/`;return t.startsWith(`/`)?t:`/${t}`}function a(e){if(e.size===0)return`/dashboard`;for(let t of[`/dashboard`,`/activities`,`/venues`,`/wechat-users`])if(e.has(t))return t;return[...e].sort()[0]??`/dashboard`}var o=null,s=!1;function c(){return o}async function l(){try{let{data:t}=await e.get(`/admin-menus`),n=r(Array.isArray(t)?t:[]);return a(new Set(n.map(e=>i(e))))}catch{return`/dashboard`}}async function u(t){if(s)return;let{data:a}=await e.get(`/admin-menus`),c=r(Array.isArray(a)?a:[]);o=new Set(c.map(e=>i(e)));for(let e of c){let r=i(e).replace(/\/$/,``)||`/`,a=n[r];if(!a)continue;let o=r.startsWith(`/`)?r.slice(1):r,s=`dyn-${o.replace(/\//g,`-`)}`;t.hasRoute(s)||t.addRoute(`admin-layout`,{path:o,name:s,component:a})}s=!0}function d(e){o=null,s=!1;for(let t of e.getRoutes()){let n=t.name?.toString()??``;n.startsWith(`dyn-`)&&e.removeRoute(n)}}function f(){return s}export{a,f as i,c as n,u as o,l as r,d as s,r as t};

@ -1 +1 @@
import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./dynamicAdminRoutes-CKJGwpkH.js";export{o as flattenMenuPaths,n as getCachedAllowedPaths,i as getFirstMenuPath,t as isDynamicRoutesRegistered,e as pickDefaultPath,r as registerDynamicAdminRoutes,a as resetDynamicAdminRoutes};
import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./dynamicAdminRoutes-Cxqb4u0k.js";export{o as flattenMenuPaths,n as getCachedAllowedPaths,i as getFirstMenuPath,t as isDynamicRoutesRegistered,e as pickDefaultPath,r as registerDynamicAdminRoutes,a as resetDynamicAdminRoutes};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -5,13 +5,13 @@
<link rel="icon" type="image/svg+xml" href="/admin/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>苏州市科普场馆地图后台管理系统</title>
<script type="module" crossorigin src="/admin/assets/index-CUH3hGCJ.js"></script>
<script type="module" crossorigin src="/admin/assets/index-DWQkWGTP.js"></script>
<link rel="modulepreload" crossorigin href="/admin/assets/runtime-core.esm-bundler-CnFWH3R5.js">
<link rel="modulepreload" crossorigin href="/admin/assets/axios-CiYFffbI.js">
<link rel="modulepreload" crossorigin href="/admin/assets/preload-helper-BIjWqNH5.js">
<link rel="modulepreload" crossorigin href="/admin/assets/http-LCi9aT1G.js">
<link rel="modulepreload" crossorigin href="/admin/assets/dynamicAdminRoutes-CKJGwpkH.js">
<link rel="stylesheet" crossorigin href="/admin/assets/index-_Vo8-Dl1.css">
<link rel="modulepreload" crossorigin href="/admin/assets/dynamicAdminRoutes-Cxqb4u0k.js">
<link rel="stylesheet" crossorigin href="/admin/assets/index-Bh3DcLoA.css">
</head>
<body>
<div id="app"></div>

@ -0,0 +1 @@
b[data-v-688b361d],strong[data-v-688b361d]{font-weight:400}uni-page-body[data-v-688b361d]{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif;background:#f7f8fa;color:#252525;font-weight:400;--brand-color: #05c9ac;--fs-tag: .625rem;--fs-body: .75rem;--fs-subtitle: .875rem;--fs-title: 1rem;--color-text: #252525;--color-text-sub: #8c8c8c}body[data-v-688b361d]{background:#f7f8fa}.font-s[data-v-688b361d]{font-size:var(--fs-body)}.font-m[data-v-688b361d]{font-size:var(--fs-subtitle)}.font-l[data-v-688b361d]{font-size:var(--fs-title)}uni-button[data-v-688b361d],.uni-button[data-v-688b361d]{font-weight:400}.page[data-v-688b361d]{min-height:100vh;background:#f3f5f7;padding:calc(env(safe-area-inset-top) + 2.75rem) .75rem calc(.75rem + env(safe-area-inset-bottom));box-sizing:border-box}.head[data-v-688b361d]{margin-bottom:.625rem}.title[data-v-688b361d]{display:block;font-size:1.0625rem;color:#1d2129;font-weight:500;line-height:1.4}.sub[data-v-688b361d]{display:block;margin-top:.25rem;font-size:.8125rem;color:#f3f}.grid[data-v-688b361d]{display:flex;flex-direction:column;gap:.5rem}.thumb[data-v-688b361d]{width:100%;height:13.125rem;border-radius:.375rem;background:#e5e6eb;display:block}.hint[data-v-688b361d]{text-align:center;font-size:.875rem;color:#4e5969;padding:1.25rem 0}.hint.muted[data-v-688b361d]{color:#c0c4cc}.preview-mask[data-v-688b361d]{position:fixed;left:0;right:0;top:0;bottom:0;z-index:2000;background:rgba(0,0,0,.92);display:flex;flex-direction:column}.preview-toolbar[data-v-688b361d]{flex-shrink:0;padding:calc(env(safe-area-inset-top) + .375rem) .75rem .375rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.preview-count[data-v-688b361d]{font-size:.8125rem;color:rgba(255,255,255,.85)}.preview-close[data-v-688b361d]{font-size:.875rem;color:#fff;padding:.25rem .5rem}.preview-swiper[data-v-688b361d]{flex:1;width:100%;min-height:0}.preview-slide[data-v-688b361d]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-img[data-v-688b361d]{width:100%;max-height:100%}

@ -1 +1 @@
import{h as t}from"./index-Dw_7ZRO0.js";function i(i={}){const{include_ticket_grab:e,...n}=i,s={...n};return e&&(s.include_ticket_grab=1),t.get("/h5/activities",s,{withAuth:!1})}function e(i){return t.get(`/h5/activities/${i}`,{})}function n(i,e){return t.get(`/h5/activities/${i}/registrations`,{...e||{}},{withAuth:!1})}function s(i){return t.post(`/h5/activities/${i}/view`,{},{withAuth:!1})}function r(i){return t.post(`/h5/activities/${i}/external-link-click`,{},{withAuth:!1})}function u(i){return t.get(`/h5/ticket-grab-events/${i}`,{},{withAuth:!1})}function h(i,e){return t.get(`/h5/ticket-grab-events/${i}/booking-info`,{venue_id:e},{withAuth:!0})}function o(i,e){return t.post(`/h5/ticket-grab-events/${i}/reservations`,e,{withAuth:!0})}function c(i={}){const e={};return i.only_included_in_stats&&(e.only_included_in_stats=1),t.get("/h5/venues",e,{withAuth:!1})}function a(){return t.get("/h5/venue-dicts",{},{withAuth:!1})}function g(i,e={}){const n={};return e.ticket_grab_event_id&&e.ticket_grab_event_id>0&&(n.ticket_grab_event_id=e.ticket_grab_event_id),t.get(`/h5/venues/${i}`,n,{withAuth:!1})}function v(i){return t.get(`/h5/study-tours/${i}`,{},{withAuth:!1})}function _(i={}){return t.get("/h5/study-tours",i,{withAuth:!1})}function f(i){return t.get(`/h5/activities/${i}/booking-info`,{},{withAuth:!0})}function d(i,e){return t.post(`/h5/activities/${i}/reservations`,e,{withAuth:!0})}function w(i){return t.get("/h5/my/reservations",{},{withAuth:!0})}function A(i,e){const n={};return e&&/^1\d{10}$/.test(e)&&(n.visitor_phone=e),t.get(`/h5/my/reservations/${i}`,n,{withAuth:!0})}function $(i,e){const n={};return e&&/^1\d{10}$/.test(e)&&(n.visitor_phone=e),t.post(`/h5/my/reservations/${i}/cancel`,n,{withAuth:!0})}export{c as a,i as b,_ as c,w as d,$ as e,e as f,a as g,r as h,n as i,u as j,h as k,g as l,o as m,f as n,d as o,s as p,A as q,v as r};
import{h as t}from"./index-YOal07Vu.js";function i(i={}){const{include_ticket_grab:e,...n}=i,s={...n};return e&&(s.include_ticket_grab=1),t.get("/h5/activities",s,{withAuth:!1})}function e(i){return t.get(`/h5/activities/${i}`,{})}function n(i,e){return t.get(`/h5/activities/${i}/registrations`,{...e||{}},{withAuth:!1})}function s(i){return t.post(`/h5/activities/${i}/view`,{},{withAuth:!1})}function r(i){return t.post(`/h5/activities/${i}/external-link-click`,{},{withAuth:!1})}function u(i){return t.get(`/h5/ticket-grab-events/${i}`,{},{withAuth:!1})}function h(i,e){return t.get(`/h5/ticket-grab-events/${i}/booking-info`,{venue_id:e},{withAuth:!0})}function o(i,e){return t.post(`/h5/ticket-grab-events/${i}/reservations`,e,{withAuth:!0})}function c(i={}){const e={};return i.only_included_in_stats&&(e.only_included_in_stats=1),t.get("/h5/venues",e,{withAuth:!1})}function a(){return t.get("/h5/venue-dicts",{},{withAuth:!1})}function g(i,e={}){const n={};return e.ticket_grab_event_id&&e.ticket_grab_event_id>0&&(n.ticket_grab_event_id=e.ticket_grab_event_id),t.get(`/h5/venues/${i}`,n,{withAuth:!1})}function v(i){return t.get(`/h5/study-tours/${i}`,{},{withAuth:!1})}function _(i={}){return t.get("/h5/study-tours",i,{withAuth:!1})}function f(i){return t.get(`/h5/activities/${i}/booking-info`,{},{withAuth:!0})}function d(i,e){return t.post(`/h5/activities/${i}/reservations`,e,{withAuth:!0})}function w(i){return t.get("/h5/my/reservations",{},{withAuth:!0})}function A(i,e){const n={};return e&&/^1\d{10}$/.test(e)&&(n.visitor_phone=e),t.get(`/h5/my/reservations/${i}`,n,{withAuth:!0})}function $(i,e){const n={};return e&&/^1\d{10}$/.test(e)&&(n.visitor_phone=e),t.post(`/h5/my/reservations/${i}/cancel`,n,{withAuth:!0})}export{c as a,i as b,_ as c,w as d,$ as e,e as f,a as g,r as h,n as i,u as j,h as k,g as l,o as m,f as n,d as o,s as p,A as q,v as r};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
b[data-v-7241eb4d],strong[data-v-7241eb4d]{font-weight:400}uni-page-body[data-v-7241eb4d]{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif;background:#f7f8fa;color:#252525;font-weight:400;--brand-color: #05c9ac;--fs-tag: .625rem;--fs-body: .75rem;--fs-subtitle: .875rem;--fs-title: 1rem;--color-text: #252525;--color-text-sub: #8c8c8c}body[data-v-7241eb4d]{background:#f7f8fa}.font-s[data-v-7241eb4d]{font-size:var(--fs-body)}.font-m[data-v-7241eb4d]{font-size:var(--fs-subtitle)}.font-l[data-v-7241eb4d]{font-size:var(--fs-title)}uni-button[data-v-7241eb4d],.uni-button[data-v-7241eb4d]{font-weight:400}.page[data-v-7241eb4d]{min-height:100vh;padding-top:0;padding-bottom:calc(.75rem + env(safe-area-inset-bottom));background:#f3f3f3;box-sizing:border-box}.toolbar[data-v-7241eb4d]{box-sizing:border-box}.toolbar-row[data-v-7241eb4d]{display:flex;flex-direction:row;align-items:center;gap:.625rem;padding:calc(.375rem + env(safe-area-inset-top)) 1rem .5rem;box-sizing:border-box}.back-btn[data-v-7241eb4d]{width:2rem;height:2rem;border-radius:50%;background:rgba(0,0,0,.28);display:flex;align-items:center;justify-content:center;box-sizing:border-box;flex-shrink:0;backdrop-filter:blur(1px);-webkit-backdrop-filter:blur(1px)}.back-btn--hover[data-v-7241eb4d]{background:rgba(0,0,0,.4)}.back-btn__icon[data-v-7241eb4d]{width:.5625rem;height:.5625rem;box-sizing:border-box;border:solid #fff;border-width:0 0 .15625rem .15625rem;transform:rotate(45deg);margin-left:.1875rem;margin-top:0;flex-shrink:0}.search-wrap[data-v-7241eb4d]{display:flex;flex:1;min-width:0;flex-direction:row;align-items:center;background:#fff;border-radius:31.21875rem;padding:0 .625rem;height:2rem;box-sizing:border-box}.search-icon-img[data-v-7241eb4d]{width:.875rem;height:.875rem;margin-right:.375rem;flex-shrink:0}.search-input[data-v-7241eb4d]{flex:1;min-width:0;font-size:.8125rem;color:#1d2129;height:2rem;line-height:2rem}.ph[data-v-7241eb4d]{color:#c0c4cc}.section[data-v-7241eb4d]{background:transparent;margin:0 .5rem;padding:0 0 .625rem}.tour-card[data-v-7241eb4d]{margin-bottom:.625rem;border-radius:.5rem;overflow:hidden;background:#fff;box-shadow:0 .125rem .625rem rgba(0,0,0,.06)}.tour-card[data-v-7241eb4d]:last-child{margin-bottom:0}.tour-img-wrap[data-v-7241eb4d]{position:relative;width:100%;aspect-ratio:2/1;border-radius:.5rem .5rem 0 0;overflow:hidden}.tour-img[data-v-7241eb4d]{position:absolute;left:0;top:0;width:100%;height:100%;display:block}.tour-body[data-v-7241eb4d]{padding:.5625rem .625rem .5rem}.tour-title[data-v-7241eb4d]{font-size:.875rem;color:#1d2129;font-weight:400;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tour-stops-timeline[data-v-7241eb4d]{margin-top:.4375rem}.tour-stop-row[data-v-7241eb4d]{display:flex;flex-direction:row;align-items:stretch}.tour-timeline-axis[data-v-7241eb4d]{width:.875rem;flex-shrink:0;display:flex;flex-direction:column;align-items:center;margin-right:.3125rem}.tour-dot-cell[data-v-7241eb4d]{height:1.125rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%}.tour-tl-dot[data-v-7241eb4d]{width:.375rem;height:.375rem;border-radius:50%;background:#c9cdd4;flex-shrink:0}.tour-tl-line[data-v-7241eb4d]{width:.0625rem;flex:1;min-height:.375rem;margin-top:0;background:#e5e6eb}.tour-stop-name[data-v-7241eb4d]{flex:1;min-width:0;padding-bottom:.375rem;font-size:.75rem;color:#86909c;line-height:1.125rem;box-sizing:border-box}.tour-stop-row:last-child .tour-stop-name[data-v-7241eb4d]{padding-bottom:0}.tour-tags-row[data-v-7241eb4d]{margin-top:.4375rem;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:.3125rem}.tour-tag[data-v-7241eb4d]{font-size:.6875rem;color:#05c9ac;background:rgba(5,201,172,.12);padding:.1875rem .4375rem;border-radius:.25rem;line-height:1.3}.hint[data-v-7241eb4d]{text-align:center;font-size:.8125rem;color:#86909c;padding:1.5rem 0}.hint.muted[data-v-7241eb4d]{color:#c0c4cc}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
$brand: #05c9ac; .page[data-v-198ee85d]{min-height:100vh;padding-top:calc(.75rem + env(safe-area-inset-top));padding-bottom:calc(.75rem + env(safe-area-inset-bottom));background:#f3f3f3;box-sizing:border-box}.toolbar[data-v-198ee85d]{padding:.5rem 1rem;box-sizing:border-box}.toolbar-row[data-v-198ee85d]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.search-wrap[data-v-198ee85d]{flex-shrink:0;width:8.125rem;display:flex;flex-direction:row;align-items:center;background:#fff;border-radius:31.21875rem;padding:0 .5rem;height:1.75rem;box-sizing:border-box}.status-tabs[data-v-198ee85d]{flex:1;display:flex;flex-direction:row;align-items:center;gap:.5rem;overflow-x:auto}.status-tab[data-v-198ee85d]{font-size:.8125rem;color:#86909c;padding:.25rem 0;position:relative;white-space:nowrap}.status-tab.active[data-v-198ee85d]{color:#05c9ac;font-weight:500}.status-tab.active[data-v-198ee85d]:after{content:"";position:absolute;bottom:0;left:0;right:0;height:.125rem;background:#05c9ac;border-radius:.0625rem}.search-icon-img[data-v-198ee85d]{width:.875rem;height:.875rem;margin-right:.375rem;flex-shrink:0}.search-input[data-v-198ee85d]{flex:1;min-width:0;font-size:.8125rem;color:#1d2129;height:2rem;line-height:2rem}.ph[data-v-198ee85d]{color:#c0c4cc}.list-inner[data-v-198ee85d]{padding:0 1rem;box-sizing:border-box}.item[data-v-198ee85d]{background:#fff;border-radius:.375rem;overflow:hidden;margin-bottom:.4375rem}.poster-wrap[data-v-198ee85d]{position:relative;width:100%;aspect-ratio:2 / 1;overflow:hidden}.poster[data-v-198ee85d]{position:absolute;left:0;top:0;width:100%;height:100%;display:block}.status[data-v-198ee85d]{position:absolute;z-index:1;left:0;top:.5625rem;color:#fff;font-size:.75rem;border-radius:0 .75rem .75rem 0;padding:.25rem .5rem}.status.st-ongoing[data-v-198ee85d]{background:rgba(22,194,169,.92)}.status.st-not_started[data-v-198ee85d]{background:rgba(22,93,255,.92)}.status.st-ended[data-v-198ee85d]{background:rgba(134,144,156,.95)}.grab-badge[data-v-198ee85d]{position:absolute;z-index:2;right:.5rem;bottom:.5rem;font-size:.6875rem;color:#fff;background:linear-gradient(135deg,#ff8a4c,#ff6b35);padding:.125rem .375rem;border-radius:.25rem;line-height:1.3}.body[data-v-198ee85d]{padding:.5rem .5625rem .5625rem}.title[data-v-198ee85d]{font-size:.875rem;color:#1d2129;line-height:1.35}.act-tags[data-v-198ee85d]{display:flex;flex-direction:row;flex-wrap:nowrap;gap:.25rem;margin-top:.4375rem;height:1.25rem;overflow:hidden;align-items:center}.act-tag-chip[data-v-198ee85d]{font-size:.625rem;color:#05c9ac;line-height:.875rem;padding:.125rem .3125rem;background:rgba(5,201,172,.12);border-radius:.1875rem;flex-shrink:0;max-width:5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta[data-v-198ee85d]{margin-top:.25rem;font-size:.75rem;color:#86909c;line-height:1.5}.date-action-row[data-v-198ee85d]{margin-top:.3125rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:.375rem;min-height:1.625rem}.date-inline[data-v-198ee85d]{flex:1;min-width:0;font-size:.75rem;color:#4e5969;line-height:1.5}.venue-action-row[data-v-198ee85d]{margin-top:.3125rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:.375rem;min-height:1.625rem}.venue-inline[data-v-198ee85d]{flex:1;min-width:0;font-size:.75rem;color:#4e5969;line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.btn[data-v-198ee85d]{flex-shrink:0;background:#05c9ac;color:#fff;font-size:.75rem;border-radius:.3125rem;padding:.3125rem .8125rem}.hint[data-v-198ee85d]{text-align:center;font-size:.8125rem;color:#86909c;padding:.5rem 0}.hint.muted[data-v-198ee85d]{color:#c0c4cc}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
b[data-v-e6cee6f0],strong[data-v-e6cee6f0]{font-weight:400}uni-page-body[data-v-e6cee6f0]{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif;background:#f7f8fa;color:#252525;font-weight:400;--brand-color: #05c9ac;--fs-tag: .625rem;--fs-body: .75rem;--fs-subtitle: .875rem;--fs-title: 1rem;--color-text: #252525;--color-text-sub: #8c8c8c}body[data-v-e6cee6f0]{background:#f7f8fa}.font-s[data-v-e6cee6f0]{font-size:var(--fs-body)}.font-m[data-v-e6cee6f0]{font-size:var(--fs-subtitle)}.font-l[data-v-e6cee6f0]{font-size:var(--fs-title)}uni-button[data-v-e6cee6f0],.uni-button[data-v-e6cee6f0]{font-weight:400}.page[data-v-e6cee6f0]{min-height:100vh;padding-top:calc(.375rem + env(safe-area-inset-top));padding-bottom:calc(.75rem + env(safe-area-inset-bottom));background:#f7f8fa;box-sizing:border-box}.filter-section[data-v-e6cee6f0]{margin:.5rem .5rem 0;background:#fff;border-radius:.5rem;padding:.625rem .5rem .5rem;box-shadow:0 .125rem .5rem rgba(0,0,0,.04);box-sizing:border-box}.toolbar[data-v-e6cee6f0]{display:flex;flex-direction:row;align-items:center;gap:.3125rem;box-sizing:border-box}.back-btn[data-v-e6cee6f0]{width:1.75rem;height:1.75rem;border-radius:50%;background:rgba(0,0,0,.28);display:flex;align-items:center;justify-content:center;box-sizing:border-box;flex-shrink:0;backdrop-filter:blur(1px);-webkit-backdrop-filter:blur(1px)}.back-btn--hover[data-v-e6cee6f0]{background:rgba(0,0,0,.4)}.back-btn__icon[data-v-e6cee6f0]{width:.5rem;height:.5rem;box-sizing:border-box;border:solid #fff;border-width:0 0 .125rem .125rem;transform:rotate(45deg);margin-left:.15625rem;margin-top:0;flex-shrink:0}.search-wrap[data-v-e6cee6f0]{flex:1;min-width:0;height:1.75rem;background:#f7f8fa;border-radius:.875rem;display:flex;align-items:center;padding:0 .4375rem 0 .5rem;border:.03125rem solid #eceef2;box-sizing:border-box}.search-icon-img[data-v-e6cee6f0]{width:.875rem;height:.875rem;flex-shrink:0;margin-left:.25rem}.search-input[data-v-e6cee6f0]{flex:1;min-width:0;font-size:.6875rem;color:#1d2129;height:1.75rem;line-height:1.75rem}.ph[data-v-e6cee6f0]{color:#c9cdd4;font-size:.6875rem}.section[data-v-e6cee6f0]{background:transparent;margin:0;padding:.5rem 1rem .625rem;box-sizing:border-box}.tour-card[data-v-e6cee6f0]{margin-bottom:.625rem;border-radius:.5rem;overflow:hidden;background:#fff;box-shadow:0 .125rem .625rem rgba(0,0,0,.06)}.tour-card[data-v-e6cee6f0]:last-child{margin-bottom:0}.tour-img-wrap[data-v-e6cee6f0]{position:relative;width:100%;aspect-ratio:2/1;border-radius:.5rem .5rem 0 0;overflow:hidden}.tour-img[data-v-e6cee6f0]{position:absolute;left:0;top:0;width:100%;height:100%;display:block}.tour-body[data-v-e6cee6f0]{padding:.5625rem .625rem .5rem}.tour-title[data-v-e6cee6f0]{font-size:.875rem;color:#1d2129;font-weight:400;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tour-stops-timeline[data-v-e6cee6f0]{margin-top:.4375rem}.tour-stop-row[data-v-e6cee6f0]{display:flex;flex-direction:row;align-items:stretch}.tour-timeline-axis[data-v-e6cee6f0]{width:.875rem;flex-shrink:0;display:flex;flex-direction:column;align-items:center;margin-right:.3125rem}.tour-dot-cell[data-v-e6cee6f0]{height:1.125rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%}.tour-tl-dot[data-v-e6cee6f0]{width:.375rem;height:.375rem;border-radius:50%;background:#c9cdd4;flex-shrink:0}.tour-tl-line[data-v-e6cee6f0]{width:.0625rem;flex:1;min-height:.375rem;margin-top:0;background:#e5e6eb}.tour-stop-name[data-v-e6cee6f0]{flex:1;min-width:0;padding-bottom:.375rem;font-size:.75rem;color:#86909c;line-height:1.125rem;box-sizing:border-box}.tour-stop-row:last-child .tour-stop-name[data-v-e6cee6f0]{padding-bottom:0}.tour-tags-row[data-v-e6cee6f0]{margin-top:.4375rem;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:.3125rem}.tour-tag[data-v-e6cee6f0]{font-size:.6875rem;color:#05c9ac;background:rgba(5,201,172,.12);padding:.1875rem .4375rem;border-radius:.25rem;line-height:1.3}.hint[data-v-e6cee6f0]{text-align:center;font-size:.8125rem;color:#86909c;padding:1.5rem 0}.hint.muted[data-v-e6cee6f0]{color:#c0c4cc}

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{h as t,g as n,S as r,b as e}from"./index-Dw_7ZRO0.js";function o(){return t.get("/h5/me/profile",{},{withAuth:!0})}function i(n){return t.put("/h5/me/profile",n,{withAuth:!0})}function u(){try{const t=n(r.localProfile);if(!t)return null;const e="string"==typeof t?JSON.parse(t):t;return e&&"object"==typeof e?e:null}catch{return null}}function l(t){e(r.localProfile,JSON.stringify(t))}export{o as g,u as l,l as s,i as u};
import{h as t,g as n,S as r,b as e}from"./index-YOal07Vu.js";function o(){return t.get("/h5/me/profile",{},{withAuth:!0})}function i(n){return t.put("/h5/me/profile",n,{withAuth:!0})}function u(){try{const t=n(r.localProfile);if(!t)return null;const e="string"==typeof t?JSON.parse(t):t;return e&&"object"==typeof e?e:null}catch{return null}}function l(t){e(r.localProfile,JSON.stringify(t))}export{o as g,u as l,l as s,i as u};

@ -0,0 +1 @@
import{d as e,e as a,f as l,Y as s,F as t,q as u,l as n,k as c,K as i,G as r,n as v,p as d,a6 as o,v as f,y as _,D as p,H as m,z as y,Z as h,$ as k,_ as b}from"./index-YOal07Vu.js";import{f as g}from"./content.BrsVVfuL.js";const w=b(e({__name:"behind-scenes",setup(e){const b=a(0),w=a(""),C=a([]),j=a(!1),F=a(!1),S=a(0),x=l(()=>C.value);function A(){F.value=!1}function I(e){var a;const l=null==(a=e.detail)?void 0:a.current;"number"==typeof l&&(S.value=l)}return s(e=>{const a=e&&"object"==typeof e?e.id:void 0;b.value=null!=a&&""!==a?parseInt(String(a),10):0,b.value&&async function(){j.value=!0;try{const e=await g(b.value);w.value=String((null==e?void 0:e.title)||"");const a=Array.isArray(null==e?void 0:e.behind_scenes_media)?e.behind_scenes_media:[];C.value=a.map(e=>String((null==e?void 0:e.url)||"").trim()).filter(e=>e.length>0)}catch{w.value="",C.value=[]}finally{j.value=!1}}()}),(e,a)=>{const l=f,s=v,b=y,g=k,q=h;return d(),t(r,null,[u(s,{class:"page"},{default:n(()=>[u(o),u(s,{class:"head"},{default:n(()=>[u(l,{class:"title"},{default:n(()=>[_(p(w.value),1)]),_:1}),u(l,{class:"sub"},{default:n(()=>[_("幕后花絮")]),_:1})]),_:1}),j.value?(d(),c(s,{key:0,class:"hint"},{default:n(()=>[_("加载中…")]),_:1})):(d(),c(s,{key:1,class:"grid"},{default:n(()=>[(d(!0),t(r,null,m(C.value,(e,a)=>(d(),c(b,{key:"bts-"+a+"-"+e,class:"thumb",src:e,mode:"aspectFill",onClick:e=>function(e){S.value=e,F.value=!0}(a)},null,8,["src","onClick"]))),128))]),_:1})),j.value||C.value.length?i("",!0):(d(),c(s,{key:2,class:"hint muted"},{default:n(()=>[_("暂无花絮图片")]),_:1}))]),_:1}),F.value?(d(),c(s,{key:0,class:"preview-mask"},{default:n(()=>[u(s,{class:"preview-toolbar"},{default:n(()=>[u(l,{class:"preview-count"},{default:n(()=>[_(p(S.value+1)+" / "+p(x.value.length),1)]),_:1}),u(l,{class:"preview-close",onClick:A},{default:n(()=>[_("关闭")]),_:1})]),_:1}),u(q,{class:"preview-swiper",current:S.value,onChange:I},{default:n(()=>[(d(!0),t(r,null,m(x.value,(e,a)=>(d(),c(g,{key:"pv-"+a},{default:n(()=>[u(s,{class:"preview-slide"},{default:n(()=>[u(b,{class:"preview-img",src:e,mode:"aspectFit"},null,8,["src"])]),_:2},1024)]),_:2},1024))),128))]),_:1},8,["current"])]),_:1})):i("",!0)],64)}}}),[["__scopeId","data-v-688b361d"]]);export{w as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{d as a,e,f as t,Y as l,k as s,l as u,n,U as r,p as i,q as c,v as o,y as v,D as d,K as f,t as _,F as g,G as m,H as p,x as y,z as h,B as k,_ as $}from"./index-Dw_7ZRO0.js";import{i as S}from"./content.lUbG-xqz.js";import{P as w}from"./poster.C6TYC1FC.js";const b=$(a({__name:"registrations",setup(a){const $=e(0),b=e(""),x=e(!1),N=e(!1),j=e(1),B=e(1),D=e(0),F=e([]);function z(a){const e=(a.session_name||"").trim(),t=(a.session_time_text||"").trim(),l=(a.activity_date||"").trim();return e&&t?`${e} · ${t}`:t||(e&&l?`${e} · ${l}`:e||(l||"场次信息"))}function H(a){if(!a)return"—";const e=new Date(a);return Number.isNaN(e.getTime())?"—":`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}const I=t(()=>j.value<B.value),M=t(()=>!I.value&&F.value.length>0&&!x.value&&!N.value);async function P(a,e){if($.value){if(e){if(N.value||!I.value)return;N.value=!0}else x.value=!0;try{const t=await S($.value,{page:a,page_size:20});D.value=t.total,B.value=t.last_page||1,t.activity_title&&(b.value=t.activity_title),F.value=e?[...F.value,...t.data||[]]:t.data||[],j.value=a}catch{e||(F.value=[])}finally{x.value=!1,N.value=!1}}}function U(){!I.value||x.value||N.value||P(j.value+1,!0)}return l(a=>{$.value=Number((null==a?void 0:a.id)||0);const e=null==a?void 0:a.title;if(e&&"string"==typeof e)try{b.value=decodeURIComponent(e)}catch{b.value=e}P(1,!1)}),(a,e)=>{const t=r("SubPageBackBtn"),l=o,$=n,S=h,N=_;return i(),s($,{class:"page"},{default:u(()=>[c(t),c($,{class:"body"},{default:u(()=>[b.value?(i(),s($,{key:0,class:"act-hd"},{default:u(()=>[c(l,{class:"act-hd-t"},{default:u(()=>[v(d(b.value),1)]),_:1})]),_:1})):f("",!0),c(N,{"scroll-y":"",class:"scroll","lower-threshold":100,onScrolltolower:U},{default:u(()=>[x.value&&!F.value.length?(i(),s($,{key:0,class:"state-tip"},{default:u(()=>[v("加载中…")]),_:1})):(i(),s($,{key:1,class:"list-outer"},{default:u(()=>[F.value.length?(i(),s($,{key:0,class:"list-wrap"},{default:u(()=>[(i(!0),g(m,null,p(F.value,(a,e)=>(i(),s($,{key:"enr-"+a.id,class:y(["enr-row",{"is-last":e===F.value.length-1}])},{default:u(()=>[c(S,{class:"enr-avatar",src:a.avatar_url||k(w),mode:"aspectFill"},null,8,["src"]),c($,{class:"enr-mid"},{default:u(()=>[c($,{class:"enr-name-row"},{default:u(()=>[c(l,{class:"enr-name"},{default:u(()=>[v(d(a.visitor_name||"—"),1)]),_:2},1024),c(l,{class:"enr-time"},{default:u(()=>[v(d(H(a.created_at)),1)]),_:2},1024)]),_:2},1024),c(l,{class:"enr-session"},{default:u(()=>[v(d(z(a)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["class"]))),128))]),_:1})):f("",!0),x.value||F.value.length?f("",!0):(i(),s($,{key:1,class:"state-tip"},{default:u(()=>[v("暂无报名")]),_:1})),M.value?(i(),s($,{key:2,class:"enr-end"},{default:u(()=>[v("这回真没了~")]),_:1})):f("",!0)]),_:1}))]),_:1})]),_:1})]),_:1})}}}),[["__scopeId","data-v-fcaf9d69"]]);export{b as default};
import{d as a,e,f as t,Y as l,k as s,l as u,n,U as r,p as i,q as c,v as o,y as v,D as d,K as f,t as _,F as g,G as m,H as p,x as y,z as h,B as $,_ as k}from"./index-YOal07Vu.js";import{i as S}from"./content.BrsVVfuL.js";import{P as w}from"./poster.C6TYC1FC.js";const b=k(a({__name:"registrations",setup(a){const k=e(0),b=e(""),x=e(!1),N=e(!1),j=e(1),B=e(1),D=e(0),F=e([]);function z(a){const e=(a.session_name||"").trim(),t=(a.session_time_text||"").trim(),l=(a.activity_date||"").trim();return e&&t?`${e} · ${t}`:t||(e&&l?`${e} · ${l}`:e||(l||"场次信息"))}function H(a){if(!a)return"—";const e=new Date(a);return Number.isNaN(e.getTime())?"—":`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}const I=t(()=>j.value<B.value),M=t(()=>!I.value&&F.value.length>0&&!x.value&&!N.value);async function P(a,e){if(k.value){if(e){if(N.value||!I.value)return;N.value=!0}else x.value=!0;try{const t=await S(k.value,{page:a,page_size:20});D.value=t.total,B.value=t.last_page||1,t.activity_title&&(b.value=t.activity_title),F.value=e?[...F.value,...t.data||[]]:t.data||[],j.value=a}catch{e||(F.value=[])}finally{x.value=!1,N.value=!1}}}function U(){!I.value||x.value||N.value||P(j.value+1,!0)}return l(a=>{k.value=Number((null==a?void 0:a.id)||0);const e=null==a?void 0:a.title;if(e&&"string"==typeof e)try{b.value=decodeURIComponent(e)}catch{b.value=e}P(1,!1)}),(a,e)=>{const t=r("SubPageBackBtn"),l=o,k=n,S=h,N=_;return i(),s(k,{class:"page"},{default:u(()=>[c(t),c(k,{class:"body"},{default:u(()=>[b.value?(i(),s(k,{key:0,class:"act-hd"},{default:u(()=>[c(l,{class:"act-hd-t"},{default:u(()=>[v(d(b.value),1)]),_:1})]),_:1})):f("",!0),c(N,{"scroll-y":"",class:"scroll","lower-threshold":100,onScrolltolower:U},{default:u(()=>[x.value&&!F.value.length?(i(),s(k,{key:0,class:"state-tip"},{default:u(()=>[v("加载中…")]),_:1})):(i(),s(k,{key:1,class:"list-outer"},{default:u(()=>[F.value.length?(i(),s(k,{key:0,class:"list-wrap"},{default:u(()=>[(i(!0),g(m,null,p(F.value,(a,e)=>(i(),s(k,{key:"enr-"+a.id,class:y(["enr-row",{"is-last":e===F.value.length-1}])},{default:u(()=>[c(S,{class:"enr-avatar",src:a.avatar_url||$(w),mode:"aspectFill"},null,8,["src"]),c(k,{class:"enr-mid"},{default:u(()=>[c(k,{class:"enr-name-row"},{default:u(()=>[c(l,{class:"enr-name"},{default:u(()=>[v(d(a.visitor_name||"—"),1)]),_:2},1024),c(l,{class:"enr-time"},{default:u(()=>[v(d(H(a.created_at)),1)]),_:2},1024)]),_:2},1024),c(l,{class:"enr-session"},{default:u(()=>[v(d(z(a)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["class"]))),128))]),_:1})):f("",!0),x.value||F.value.length?f("",!0):(i(),s(k,{key:1,class:"state-tip"},{default:u(()=>[v("暂无报名")]),_:1})),M.value?(i(),s(k,{key:2,class:"enr-end"},{default:u(()=>[v("这回真没了~")]),_:1})):f("",!0)]),_:1}))]),_:1})]),_:1})]),_:1})}}}),[["__scopeId","data-v-fcaf9d69"]]);export{b as default};

@ -1 +0,0 @@
import{d as a,e as s,j as e,P as l,Q as t,k as u,l as r,n as o,p as n,q as c,z as d,B as i,I as f,F as m,G as _,H as v,v as p,y as h,D as y,K as g,L as k,R as b,T as w,N as x,_ as j}from"./index-Dw_7ZRO0.js";import{c as C}from"./content.lUbG-xqz.js";import{P as F}from"./poster.C6TYC1FC.js";import{s as V}from"./search.BJnl3YRK.js";const I=j(a({__name:"index",setup(a){const j=s([]),I=s(!1),N=s("");async function P(){I.value=!0;try{j.value=await C({keyword:N.value.trim()||void 0})||[]}catch{j.value=[]}finally{I.value=!1}}function q(){P()}function z(){b().length>1?w({fail:()=>{x({url:"/pages/index/index"})}}):x({url:"/pages/index/index"})}return e(()=>{P()}),l(async()=>{try{await P()}finally{t()}}),(a,s)=>{const e=o,l=d,t=f,b=p;return n(),u(e,{class:"page"},{default:r(()=>[c(e,{class:"toolbar"},{default:r(()=>[c(e,{class:"toolbar-row"},{default:r(()=>[c(e,{class:"back-btn","hover-class":"back-btn--hover","hover-stay-time":"80",onClick:z},{default:r(()=>[c(e,{class:"back-btn__icon","aria-hidden":"true"})]),_:1}),c(e,{class:"search-wrap"},{default:r(()=>[c(l,{class:"search-icon-img",src:i(V),mode:"aspectFit"},null,8,["src"]),c(t,{modelValue:N.value,"onUpdate:modelValue":s[0]||(s[0]=a=>N.value=a),class:"search-input",placeholder:"请输入您要搜索的内容","placeholder-class":"ph","confirm-type":"search",onConfirm:q},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),c(e,{class:"section"},{default:r(()=>[(n(!0),m(_,null,v(j.value,a=>(n(),u(e,{key:a.id,class:"tour-card",onClick:s=>{return e=a.id,void k({url:`/pages/study-tour/detail?id=${e}`});var e}},{default:r(()=>[c(e,{class:"tour-img-wrap"},{default:r(()=>[c(l,{class:"tour-img",src:a.cover_image||i(F),mode:"aspectFill"},null,8,["src"])]),_:2},1024),c(e,{class:"tour-body"},{default:r(()=>{var s;return[c(b,{class:"tour-title"},{default:r(()=>[h(y(a.name),1)]),_:2},1024),c(e,{class:"tour-stops-timeline"},{default:r(()=>[(n(!0),m(_,null,v(a.venue_names||[],(s,l)=>(n(),u(e,{key:"v-"+a.id+"-"+l,class:"tour-stop-row"},{default:r(()=>[c(e,{class:"tour-timeline-axis"},{default:r(()=>{var s;return[c(e,{class:"tour-dot-cell"},{default:r(()=>[c(e,{class:"tour-tl-dot"})]),_:1}),Number(l)<((null==(s=a.venue_names)?void 0:s.length)||0)-1?(n(),u(e,{key:0,class:"tour-tl-line"})):g("",!0)]}),_:2},1024),c(b,{class:"tour-stop-name"},{default:r(()=>[h(y(s),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024),(null==(s=a.tags)?void 0:s.length)?(n(),u(e,{key:0,class:"tour-tags-row"},{default:r(()=>[(n(!0),m(_,null,v(a.tags,(s,e)=>(n(),u(b,{key:"t-"+a.id+"-"+e,class:"tour-tag"},{default:r(()=>[h(y(s),1)]),_:2},1024))),128))]),_:2},1024)):g("",!0)]}),_:2},1024)]),_:2},1032,["onClick"]))),128)),I.value&&!j.value.length?(n(),u(e,{key:0,class:"hint"},{default:r(()=>[h("加载中…")]),_:1})):g("",!0),I.value||j.value.length?g("",!0):(n(),u(e,{key:1,class:"hint muted"},{default:r(()=>[h("暂无科普四季研学线路推荐")]),_:1}))]),_:1})]),_:1})}}}),[["__scopeId","data-v-7241eb4d"]]);export{I as default};

@ -0,0 +1 @@
import{d as a,e as s,j as e,P as l,Q as t,k as u,l as r,n as o,p as c,q as n,I as i,z as d,B as f,F as m,G as _,H as v,v as p,y as h,D as y,K as g,L as k,R as b,T as x,N as w,_ as j}from"./index-YOal07Vu.js";import{c as C}from"./content.BrsVVfuL.js";import{P as F}from"./poster.C6TYC1FC.js";import{s as V}from"./search.BJnl3YRK.js";const I=j(a({__name:"index",setup(a){const j=s([]),I=s(!1),N=s("");async function P(){I.value=!0;try{j.value=await C({keyword:N.value.trim()||void 0})||[]}catch{j.value=[]}finally{I.value=!1}}function q(){P()}function z(){b().length>1?x({fail:()=>{w({url:"/pages/index/index"})}}):w({url:"/pages/index/index"})}return e(()=>{P()}),l(async()=>{try{await P()}finally{t()}}),(a,s)=>{const e=o,l=i,t=d,b=p;return c(),u(e,{class:"page"},{default:r(()=>[n(e,{class:"filter-section"},{default:r(()=>[n(e,{class:"toolbar"},{default:r(()=>[n(e,{class:"back-btn","hover-class":"back-btn--hover","hover-stay-time":"80",onClick:z},{default:r(()=>[n(e,{class:"back-btn__icon","aria-hidden":"true"})]),_:1}),n(e,{class:"search-wrap"},{default:r(()=>[n(l,{modelValue:N.value,"onUpdate:modelValue":s[0]||(s[0]=a=>N.value=a),class:"search-input",placeholder:"请输入您要搜索的内容","placeholder-class":"ph","confirm-type":"search",onConfirm:q},null,8,["modelValue"]),n(t,{class:"search-icon-img",src:f(V),mode:"aspectFit"},null,8,["src"])]),_:1})]),_:1})]),_:1}),n(e,{class:"section"},{default:r(()=>[(c(!0),m(_,null,v(j.value,a=>(c(),u(e,{key:a.id,class:"tour-card",onClick:s=>{return e=a.id,void k({url:`/pages/study-tour/detail?id=${e}`});var e}},{default:r(()=>[n(e,{class:"tour-img-wrap"},{default:r(()=>[n(t,{class:"tour-img",src:a.cover_image||f(F),mode:"aspectFill"},null,8,["src"])]),_:2},1024),n(e,{class:"tour-body"},{default:r(()=>{var s;return[n(b,{class:"tour-title"},{default:r(()=>[h(y(a.name),1)]),_:2},1024),n(e,{class:"tour-stops-timeline"},{default:r(()=>[(c(!0),m(_,null,v(a.venue_names||[],(s,l)=>(c(),u(e,{key:"v-"+a.id+"-"+l,class:"tour-stop-row"},{default:r(()=>[n(e,{class:"tour-timeline-axis"},{default:r(()=>{var s;return[n(e,{class:"tour-dot-cell"},{default:r(()=>[n(e,{class:"tour-tl-dot"})]),_:1}),Number(l)<((null==(s=a.venue_names)?void 0:s.length)||0)-1?(c(),u(e,{key:0,class:"tour-tl-line"})):g("",!0)]}),_:2},1024),n(b,{class:"tour-stop-name"},{default:r(()=>[h(y(s),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024),(null==(s=a.tags)?void 0:s.length)?(c(),u(e,{key:0,class:"tour-tags-row"},{default:r(()=>[(c(!0),m(_,null,v(a.tags,(s,e)=>(c(),u(b,{key:"t-"+a.id+"-"+e,class:"tour-tag"},{default:r(()=>[h(y(s),1)]),_:2},1024))),128))]),_:2},1024)):g("",!0)]}),_:2},1024)]),_:2},1032,["onClick"]))),128)),I.value&&!j.value.length?(c(),u(e,{key:0,class:"hint"},{default:r(()=>[h("加载中…")]),_:1})):g("",!0),I.value||j.value.length?g("",!0):(c(),u(e,{key:1,class:"hint muted"},{default:r(()=>[h("暂无科普四季研学线路推荐")]),_:1}))]),_:1})]),_:1})}}}),[["__scopeId","data-v-e6cee6f0"]]);export{I as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
import{d as a,e as l,o as e,k as s,l as n,g as u,S as t,n as o,p as c,q as r,z as i,y as d,D as f,v,L as _,_ as p}from"./index-Dw_7ZRO0.js";import{g as m,l as h}from"./localProfile.BOdj7f1Q.js";const k=p(a({__name:"index",setup(a){const p=l("游客"),k=l(""),g=l("");function y(a){return a&&11===a.length?`${a.slice(0,3)}****${a.slice(7)}`:a||""}function x(){_({url:"/pages/mine/profile"})}function C(){_({url:"/pages/mine/orders"})}return e(()=>{!async function(){var a;if(u(t.accessToken))try{const a=await m();return p.value=(a.real_name||a.nickname||"用户").trim()||"用户",k.value=a.phone?y(a.phone):"",void(g.value=a.avatar_url||"")}catch{}const l=h();p.value=(null==(a=null==l?void 0:l.real_name)?void 0:a.trim())||"游客",k.value=(null==l?void 0:l.phone)?y(l.phone):"",g.value=(null==l?void 0:l.avatar_url)||""}()}),(a,l)=>{const e=i,u=o,t=v;return c(),s(u,{class:"page"},{default:n(()=>[r(u,{class:"header"},{default:n(()=>[r(u,{class:"profile",onClick:x},{default:n(()=>[g.value?(c(),s(e,{key:0,class:"avatar",src:g.value,mode:"aspectFill"},null,8,["src"])):(c(),s(u,{key:1,class:"avatar placeholder"})),r(u,{class:"profile-info"},{default:n(()=>[r(u,{class:"name"},{default:n(()=>[d(f(p.value),1)]),_:1}),r(u,{class:"phone"},{default:n(()=>[d(f(k.value||"完善信息方便预约"),1)]),_:1})]),_:1})]),_:1})]),_:1}),r(u,{class:"panel"},{default:n(()=>[r(u,{class:"menu-item",onClick:x},{default:n(()=>[r(t,null,{default:n(()=>[d("我的信息")]),_:1}),r(t,null,{default:n(()=>[d(">")]),_:1})]),_:1}),r(u,{class:"menu-item",onClick:C},{default:n(()=>[r(t,null,{default:n(()=>[d("预约记录")]),_:1}),r(t,null,{default:n(()=>[d(">")]),_:1})]),_:1})]),_:1})]),_:1})}}}),[["__scopeId","data-v-0d216b84"]]);export{k as default};
import{d as a,e as l,o as e,k as s,l as n,g as u,S as t,n as o,p as c,q as r,z as i,y as d,D as f,v,L as _,_ as p}from"./index-YOal07Vu.js";import{g as m,l as h}from"./localProfile.D80jUtOl.js";const k=p(a({__name:"index",setup(a){const p=l("游客"),k=l(""),g=l("");function y(a){return a&&11===a.length?`${a.slice(0,3)}****${a.slice(7)}`:a||""}function x(){_({url:"/pages/mine/profile"})}function C(){_({url:"/pages/mine/orders"})}return e(()=>{!async function(){var a;if(u(t.accessToken))try{const a=await m();return p.value=(a.real_name||a.nickname||"用户").trim()||"用户",k.value=a.phone?y(a.phone):"",void(g.value=a.avatar_url||"")}catch{}const l=h();p.value=(null==(a=null==l?void 0:l.real_name)?void 0:a.trim())||"游客",k.value=(null==l?void 0:l.phone)?y(l.phone):"",g.value=(null==l?void 0:l.avatar_url)||""}()}),(a,l)=>{const e=i,u=o,t=v;return c(),s(u,{class:"page"},{default:n(()=>[r(u,{class:"header"},{default:n(()=>[r(u,{class:"profile",onClick:x},{default:n(()=>[g.value?(c(),s(e,{key:0,class:"avatar",src:g.value,mode:"aspectFill"},null,8,["src"])):(c(),s(u,{key:1,class:"avatar placeholder"})),r(u,{class:"profile-info"},{default:n(()=>[r(u,{class:"name"},{default:n(()=>[d(f(p.value),1)]),_:1}),r(u,{class:"phone"},{default:n(()=>[d(f(k.value||"完善信息方便预约"),1)]),_:1})]),_:1})]),_:1})]),_:1}),r(u,{class:"panel"},{default:n(()=>[r(u,{class:"menu-item",onClick:x},{default:n(()=>[r(t,null,{default:n(()=>[d("我的信息")]),_:1}),r(t,null,{default:n(()=>[d(">")]),_:1})]),_:1}),r(u,{class:"menu-item",onClick:C},{default:n(()=>[r(t,null,{default:n(()=>[d("预约记录")]),_:1}),r(t,null,{default:n(()=>[d(">")]),_:1})]),_:1})]),_:1})]),_:1})}}}),[["__scopeId","data-v-0d216b84"]]);export{k as default};

@ -1 +1 @@
import{d as a,e,j as l,k as s,l as t,g as n,S as u,n as r,U as c,p as o,q as v,y as i,z as d,D as _,v as p,I as m,V as f,s as h,W as y,a as b,X as k,c as g,_ as V}from"./index-Dw_7ZRO0.js";import{g as w,l as j,u as x,s as P}from"./localProfile.BOdj7f1Q.js";const T=V(a({__name:"profile",setup(a){const V=e(!0),T=e(!1),U=e(!1),z=e({real_name:"",phone:"",avatar_url:""});function B(a){z.value.real_name=a.real_name||"",z.value.phone=a.phone||"",z.value.avatar_url=a.avatar_url||""}function C(){U.value?y({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:async a=>{const e=a.tempFilePaths[0];if(e)try{b({title:"上传中"});const{url:a}=await k(e);z.value.avatar_url=a}catch(l){h({title:(null==l?void 0:l.message)||"上传失败",icon:"none"})}finally{g()}}}):h({title:"请先通过微信登录后再上传头像",icon:"none"})}async function F(){if(z.value.real_name.trim())if(/^1\d{10}$/.test(z.value.phone.trim())){T.value=!0;try{const a={real_name:z.value.real_name.trim(),phone:z.value.phone.trim(),avatar_url:z.value.avatar_url||void 0};U.value&&await x(a),P({real_name:a.real_name,phone:a.phone,avatar_url:a.avatar_url}),h({title:"保存成功",icon:"success"})}catch(a){h({title:(null==a?void 0:a.message)||"保存失败",icon:"none"})}finally{T.value=!1}}else h({title:"请填写11位手机号",icon:"none"});else h({title:"请填写姓名",icon:"none"})}return l(()=>{!async function(){V.value=!0,U.value=!!n(u.accessToken);try{if(U.value)try{const a=await w();z.value.real_name=a.real_name||"",z.value.phone=a.phone||"",z.value.avatar_url=a.avatar_url||""}catch{const a=j();a&&B(a)}else{const a=j();a&&B(a)}}finally{V.value=!1}}()}),(a,e)=>{const l=c("SubPageBackBtn"),n=r,u=d,h=p,y=m,b=f;return o(),s(n,{class:"page"},{default:t(()=>[v(l),V.value?(o(),s(n,{key:0,class:"loading"},{default:t(()=>[i("加载中…")]),_:1})):(o(),s(n,{key:1,class:"content"},{default:t(()=>[v(n,{class:"avatar-block"},{default:t(()=>[v(n,{class:"avatar-wrap",onClick:C},{default:t(()=>[z.value.avatar_url?(o(),s(u,{key:0,class:"avatar",src:z.value.avatar_url,mode:"aspectFill"},null,8,["src"])):(o(),s(n,{key:1,class:"avatar placeholder"})),v(n,{class:"avatar-tip"},{default:t(()=>[i(_(U.value?"点击更换头像":"登录后可上传头像"),1)]),_:1})]),_:1})]),_:1}),v(n,{class:"card"},{default:t(()=>[v(n,{class:"row"},{default:t(()=>[v(h,{class:"label"},{default:t(()=>[i("姓名")]),_:1}),v(y,{modelValue:z.value.real_name,"onUpdate:modelValue":e[0]||(e[0]=a=>z.value.real_name=a),class:"input",placeholder:"必填","placeholder-class":"ph"},null,8,["modelValue"])]),_:1}),v(n,{class:"row last"},{default:t(()=>[v(h,{class:"label"},{default:t(()=>[i("手机号")]),_:1}),v(y,{modelValue:z.value.phone,"onUpdate:modelValue":e[1]||(e[1]=a=>z.value.phone=a),class:"input",type:"number",maxlength:"11",placeholder:"必填","placeholder-class":"ph"},null,8,["modelValue"])]),_:1})]),_:1}),v(b,{class:"btn",disabled:T.value,onClick:F},{default:t(()=>[i(_(T.value?"保存中…":"保存"),1)]),_:1},8,["disabled"])]),_:1}))]),_:1})}}}),[["__scopeId","data-v-f84b8690"]]);export{T as default};
import{d as a,e,j as l,k as s,l as t,g as n,S as u,n as r,U as c,p as o,q as v,y as i,z as d,D as _,v as p,I as m,V as f,s as h,W as y,a as b,X as k,c as g,_ as V}from"./index-YOal07Vu.js";import{g as w,l as j,u as x,s as P}from"./localProfile.D80jUtOl.js";const T=V(a({__name:"profile",setup(a){const V=e(!0),T=e(!1),U=e(!1),z=e({real_name:"",phone:"",avatar_url:""});function B(a){z.value.real_name=a.real_name||"",z.value.phone=a.phone||"",z.value.avatar_url=a.avatar_url||""}function C(){U.value?y({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:async a=>{const e=a.tempFilePaths[0];if(e)try{b({title:"上传中"});const{url:a}=await k(e);z.value.avatar_url=a}catch(l){h({title:(null==l?void 0:l.message)||"上传失败",icon:"none"})}finally{g()}}}):h({title:"请先通过微信登录后再上传头像",icon:"none"})}async function F(){if(z.value.real_name.trim())if(/^1\d{10}$/.test(z.value.phone.trim())){T.value=!0;try{const a={real_name:z.value.real_name.trim(),phone:z.value.phone.trim(),avatar_url:z.value.avatar_url||void 0};U.value&&await x(a),P({real_name:a.real_name,phone:a.phone,avatar_url:a.avatar_url}),h({title:"保存成功",icon:"success"})}catch(a){h({title:(null==a?void 0:a.message)||"保存失败",icon:"none"})}finally{T.value=!1}}else h({title:"请填写11位手机号",icon:"none"});else h({title:"请填写姓名",icon:"none"})}return l(()=>{!async function(){V.value=!0,U.value=!!n(u.accessToken);try{if(U.value)try{const a=await w();z.value.real_name=a.real_name||"",z.value.phone=a.phone||"",z.value.avatar_url=a.avatar_url||""}catch{const a=j();a&&B(a)}else{const a=j();a&&B(a)}}finally{V.value=!1}}()}),(a,e)=>{const l=c("SubPageBackBtn"),n=r,u=d,h=p,y=m,b=f;return o(),s(n,{class:"page"},{default:t(()=>[v(l),V.value?(o(),s(n,{key:0,class:"loading"},{default:t(()=>[i("加载中…")]),_:1})):(o(),s(n,{key:1,class:"content"},{default:t(()=>[v(n,{class:"avatar-block"},{default:t(()=>[v(n,{class:"avatar-wrap",onClick:C},{default:t(()=>[z.value.avatar_url?(o(),s(u,{key:0,class:"avatar",src:z.value.avatar_url,mode:"aspectFill"},null,8,["src"])):(o(),s(n,{key:1,class:"avatar placeholder"})),v(n,{class:"avatar-tip"},{default:t(()=>[i(_(U.value?"点击更换头像":"登录后可上传头像"),1)]),_:1})]),_:1})]),_:1}),v(n,{class:"card"},{default:t(()=>[v(n,{class:"row"},{default:t(()=>[v(h,{class:"label"},{default:t(()=>[i("姓名")]),_:1}),v(y,{modelValue:z.value.real_name,"onUpdate:modelValue":e[0]||(e[0]=a=>z.value.real_name=a),class:"input",placeholder:"必填","placeholder-class":"ph"},null,8,["modelValue"])]),_:1}),v(n,{class:"row last"},{default:t(()=>[v(h,{class:"label"},{default:t(()=>[i("手机号")]),_:1}),v(y,{modelValue:z.value.phone,"onUpdate:modelValue":e[1]||(e[1]=a=>z.value.phone=a),class:"input",type:"number",maxlength:"11",placeholder:"必填","placeholder-class":"ph"},null,8,["modelValue"])]),_:1})]),_:1}),v(b,{class:"btn",disabled:T.value,onClick:F},{default:t(()=>[i(_(T.value?"保存中…":"保存"),1)]),_:1},8,["disabled"])]),_:1}))]),_:1})}}}),[["__scopeId","data-v-f84b8690"]]);export{T as default};

@ -1 +1 @@
import{d as a,e as s,j as t,a9 as l,o as e,P as n,Q as u,k as i,l as c,s as o,n as r,U as d,p as f,q as _,J as m,v,y as p,F as y,G as g,H as k,x as h,D as C,z as b,B as j,K as w,L as x,_ as B}from"./index-Dw_7ZRO0.js";import{a as P,g as A}from"./content.lUbG-xqz.js";import{g as F,l as H}from"./peopleCounting.CLqPP8Cg.js";import{P as L}from"./poster.C6TYC1FC.js";const S=B(a({__name:"index",setup(a){const B=s(!0),S=s([]),q=s(6);async function z(){B.value=!0;try{const[a,s,t]=await Promise.all([P({only_included_in_stats:!0}),A().catch(()=>null),F().catch(()=>null)]),l=Array.isArray(a)?a:[],e=function(a){const s={};for(const t of(null==a?void 0:a.district)??[]){const a=(t.value||"").trim();a&&(s[a]=(t.label||"").trim()||a)}return s}(s),n=H(t);S.value=function(a,s,t){const l=a.map(a=>{const l=(a.district||"").trim(),e=l?s[l]??l:"";return{id:a.id,name:a.name||"未命名场馆",district:e,cover_image:a.cover_image||null,liveCount:t.has(a.id)?t.get(a.id):null}}),e=l.filter(a=>null!==a.liveCount),n=l.filter(a=>null===a.liveCount);return e.sort((a,s)=>(s.liveCount??0)-(a.liveCount??0)),[...e,...n]}(l,e,n)}catch(a){o({title:(null==a?void 0:a.message)||"加载失败",icon:"none"}),S.value=[]}finally{B.value=!1}}return t(()=>{try{const a=l();q.value=Number(a.statusBarHeight||0)+6}catch{q.value=6}}),e(()=>{z()}),n(async()=>{try{await z()}finally{u()}}),(a,s)=>{const t=d("SubPageBackBtn"),l=r,e=v,n=b;return f(),i(l,{class:"page"},{default:c(()=>[_(l,{class:"stats-header",style:m({paddingTop:q.value+"px"})},{default:c(()=>[_(l,{class:"stats-header-row"},{default:c(()=>[_(t,{embedded:""}),_(l,{class:"stats-title-line"},{default:c(()=>[_(l,{class:"title-left"},{default:c(()=>[_(l,{class:"bar","aria-hidden":"true"}),_(e,{class:"title"},{default:c(()=>[p("实时人数排行")]),_:1})]),_:1}),_(e,{class:"title-hint"},{default:c(()=>[p("纳入市科协人数统计系统场馆")]),_:1})]),_:1})]),_:1})]),_:1},8,["style"]),B.value&&!S.value.length?(f(),i(l,{key:0,class:"state"},{default:c(()=>[p("加载中…")]),_:1})):S.value.length?(f(),i(l,{key:2,class:"list"},{default:c(()=>[(f(!0),y(g,null,k(S.value,(a,s)=>(f(),i(l,{key:a.id,class:h(["row",{"is-top1":0===s,"is-top2":1===s,"is-top3":2===s}]),onClick:s=>{var t;(t=a.id)&&x({url:`/pages/venue/detail?id=${t}`})}},{default:c(()=>[_(l,{class:"rank-wrap"},{default:c(()=>[s<3?(f(),i(l,{key:0,class:h(["medal","m"+(s+1)])},{default:c(()=>[p(C(s+1),1)]),_:2},1032,["class"])):(f(),i(e,{key:1,class:"rank-num"},{default:c(()=>[p(C(s+1),1)]),_:2},1024))]),_:2},1024),_(n,{class:"thumb",src:a.cover_image||j(L),mode:"aspectFill"},null,8,["src"]),_(l,{class:"mid"},{default:c(()=>[_(e,{class:"name"},{default:c(()=>[p(C(a.name),1)]),_:2},1024),a.district?(f(),i(e,{key:0,class:"district"},{default:c(()=>[p(C(a.district),1)]),_:2},1024)):w("",!0)]),_:2},1024),_(l,{class:"count-block"},{default:c(()=>[_(e,{class:"count-label"},{default:c(()=>[p("实时人数")]),_:1}),_(l,{class:"count-row"},{default:c(()=>[_(e,{class:h(["count",{"count--na":null===a.liveCount}])},{default:c(()=>[p(C(null===a.liveCount?"—":a.liveCount.toLocaleString()),1)]),_:2},1032,["class"]),_(e,{class:"unit"},{default:c(()=>[p("人")]),_:1})]),_:2},1024)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})):(f(),i(l,{key:1,class:"state muted"},{default:c(()=>[p("暂无已上架场馆")]),_:1})),_(l,{class:"bottom-safe"})]),_:1})}}}),[["__scopeId","data-v-6a7f291a"]]);export{S as default};
import{d as a,e as s,j as t,aa as l,o as e,P as n,Q as u,k as i,l as c,s as o,n as r,U as d,p as f,q as _,J as m,v,y as p,F as y,G as g,H as k,x as h,D as C,z as b,B as w,K as j,L as x,_ as B}from"./index-YOal07Vu.js";import{a as P,g as A}from"./content.BrsVVfuL.js";import{g as F,l as H}from"./peopleCounting.D73fSjBi.js";import{P as L}from"./poster.C6TYC1FC.js";const S=B(a({__name:"index",setup(a){const B=s(!0),S=s([]),q=s(6);async function z(){B.value=!0;try{const[a,s,t]=await Promise.all([P({only_included_in_stats:!0}),A().catch(()=>null),F().catch(()=>null)]),l=Array.isArray(a)?a:[],e=function(a){const s={};for(const t of(null==a?void 0:a.district)??[]){const a=(t.value||"").trim();a&&(s[a]=(t.label||"").trim()||a)}return s}(s),n=H(t);S.value=function(a,s,t){const l=a.map(a=>{const l=(a.district||"").trim(),e=l?s[l]??l:"";return{id:a.id,name:a.name||"未命名场馆",district:e,cover_image:a.cover_image||null,liveCount:t.has(a.id)?t.get(a.id):null}}),e=l.filter(a=>null!==a.liveCount),n=l.filter(a=>null===a.liveCount);return e.sort((a,s)=>(s.liveCount??0)-(a.liveCount??0)),[...e,...n]}(l,e,n)}catch(a){o({title:(null==a?void 0:a.message)||"加载失败",icon:"none"}),S.value=[]}finally{B.value=!1}}return t(()=>{try{const a=l();q.value=Number(a.statusBarHeight||0)+6}catch{q.value=6}}),e(()=>{z()}),n(async()=>{try{await z()}finally{u()}}),(a,s)=>{const t=d("SubPageBackBtn"),l=r,e=v,n=b;return f(),i(l,{class:"page"},{default:c(()=>[_(l,{class:"stats-header",style:m({paddingTop:q.value+"px"})},{default:c(()=>[_(l,{class:"stats-header-row"},{default:c(()=>[_(t,{embedded:""}),_(l,{class:"stats-title-line"},{default:c(()=>[_(l,{class:"title-left"},{default:c(()=>[_(l,{class:"bar","aria-hidden":"true"}),_(e,{class:"title"},{default:c(()=>[p("实时人数排行")]),_:1})]),_:1}),_(e,{class:"title-hint"},{default:c(()=>[p("纳入市科协人数统计系统场馆")]),_:1})]),_:1})]),_:1})]),_:1},8,["style"]),B.value&&!S.value.length?(f(),i(l,{key:0,class:"state"},{default:c(()=>[p("加载中…")]),_:1})):S.value.length?(f(),i(l,{key:2,class:"list"},{default:c(()=>[(f(!0),y(g,null,k(S.value,(a,s)=>(f(),i(l,{key:a.id,class:h(["row",{"is-top1":0===s,"is-top2":1===s,"is-top3":2===s}]),onClick:s=>{var t;(t=a.id)&&x({url:`/pages/venue/detail?id=${t}`})}},{default:c(()=>[_(l,{class:"rank-wrap"},{default:c(()=>[s<3?(f(),i(l,{key:0,class:h(["medal","m"+(s+1)])},{default:c(()=>[p(C(s+1),1)]),_:2},1032,["class"])):(f(),i(e,{key:1,class:"rank-num"},{default:c(()=>[p(C(s+1),1)]),_:2},1024))]),_:2},1024),_(n,{class:"thumb",src:a.cover_image||w(L),mode:"aspectFill"},null,8,["src"]),_(l,{class:"mid"},{default:c(()=>[_(e,{class:"name"},{default:c(()=>[p(C(a.name),1)]),_:2},1024),a.district?(f(),i(e,{key:0,class:"district"},{default:c(()=>[p(C(a.district),1)]),_:2},1024)):j("",!0)]),_:2},1024),_(l,{class:"count-block"},{default:c(()=>[_(e,{class:"count-label"},{default:c(()=>[p("实时人数")]),_:1}),_(l,{class:"count-row"},{default:c(()=>[_(e,{class:h(["count",{"count--na":null===a.liveCount}])},{default:c(()=>[p(C(null===a.liveCount?"—":a.liveCount.toLocaleString()),1)]),_:2},1032,["class"]),_(e,{class:"unit"},{default:c(()=>[p("人")]),_:1})]),_:2},1024)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})):(f(),i(l,{key:1,class:"state muted"},{default:c(()=>[p("暂无已上架场馆")]),_:1})),_(l,{class:"bottom-safe"})]),_:1})}}}),[["__scopeId","data-v-6a7f291a"]]);export{S as default};

@ -1 +1 @@
import{d as a,e,f as l,j as t,a3 as s,w as u,k as d,l as c,ab as v,n,U as i,p as r,q as o,v as f,y as h,x as y,D as x,ac as _,J as g,F as m,G as p,H as k,_ as S}from"./index-Dw_7ZRO0.js";const w="trafficLineChart",b=S(a({__name:"index",setup(a){const S=e("week"),b={week:[{date:"04-03",value:12358},{date:"04-04",value:15540},{date:"04-05",value:14200},{date:"04-06",value:18680},{date:"04-07",value:14820},{date:"04-08",value:20550},{date:"04-09",value:32100}],month:[{date:"04-01",value:12800},{date:"04-05",value:18800},{date:"04-10",value:17600},{date:"04-15",value:22900},{date:"04-20",value:19600},{date:"04-25",value:26400},{date:"04-30",value:30100}],year:[{date:"01月",value:268e3},{date:"03月",value:292e3},{date:"05月",value:318e3},{date:"07月",value:346e3},{date:"09月",value:332e3},{date:"11月",value:368e3},{date:"12月",value:392e3}]},T=l(()=>b[S.value]),C=l(()=>{var a,e;return`${(null==(a=T.value[0])?void 0:a.date)||"-"} 至 ${(null==(e=T.value[T.value.length-1])?void 0:e.date)||"-"}`}),F=l(()=>T.value.reduce((a,e)=>e.value>a.value?e:a,T.value[0]));function P(){const a=T.value;if(!a.length)return;const e=v(w),l=24,t=18,s=24,u=18,d=260,c=Math.min(...a.map(a=>a.value)),n=Math.max(...a.map(a=>a.value)),i=Math.max(1,n-c),r=680-u-t,o=d-l-s;e.clearRect(0,0,680,d);const f=e.createLinearGradient(0,l,0,d);f.addColorStop(0,"rgba(5,201,172,0.35)"),f.addColorStop(1,"rgba(5,201,172,0.02)");const h=a.map((e,t)=>({x:u+r*t/Math.max(1,a.length-1),y:l+(n-e.value)/i*o,value:e.value,date:e.date}));e.beginPath(),h.forEach((a,l)=>0===l?e.moveTo(a.x,a.y):e.lineTo(a.x,a.y)),e.lineTo(h[h.length-1].x,252),e.lineTo(h[0].x,252),e.closePath(),e.setFillStyle(f),e.fill(),e.beginPath(),h.forEach((a,l)=>0===l?e.moveTo(a.x,a.y):e.lineTo(a.x,a.y)),e.setStrokeStyle("#05c9ac"),e.setLineWidth(5),e.stroke(),e.setFillStyle("#ff7d00"),h.forEach(a=>{e.beginPath(),e.arc(a.x,a.y,6,0,2*Math.PI),e.fill(),e.setFillStyle("#4e5969"),e.setFontSize(20),e.fillText(a.value.toLocaleString(),a.x-34,a.y-12),e.setFillStyle("#ff7d00")}),e.draw()}return t(async()=>{await s(),P()}),u(S,async()=>{await s(),P()}),(a,e)=>{const l=i("SubPageBackBtn"),t=n,s=f,u=_;return r(),d(t,{class:"page"},{default:c(()=>[o(l),o(t,{class:"section-title"},{default:c(()=>[o(t,{class:"bar"}),o(s,{class:"title"},{default:c(()=>[h("全市参观人数")]),_:1}),o(t,{class:"period"},{default:c(()=>[o(s,{class:y({active:"week"===S.value}),onClick:e[0]||(e[0]=a=>S.value="week")},{default:c(()=>[h("周")]),_:1},8,["class"]),o(s,{class:y({active:"month"===S.value}),onClick:e[1]||(e[1]=a=>S.value="month")},{default:c(()=>[h("月")]),_:1},8,["class"]),o(s,{class:y({active:"year"===S.value}),onClick:e[2]||(e[2]=a=>S.value="year")},{default:c(()=>[h("年")]),_:1},8,["class"])]),_:1})]),_:1}),o(t,{class:"date-range"},{default:c(()=>[h(x(C.value),1)]),_:1}),o(t,{class:"chart-card"},{default:c(()=>[o(u,{"canvas-id":w,id:w,class:"chart-canvas",style:g("width:680rpx;height:260rpx;")},null,8,["style"]),o(t,{class:"x-axis"},{default:c(()=>[(r(!0),m(p,null,k(T.value,a=>(r(),d(s,{key:a.date},{default:c(()=>[h(x(a.date),1)]),_:2},1024))),128))]),_:1})]),_:1}),o(t,{class:"list-card"},{default:c(()=>[o(t,{class:"list-title"},{default:c(()=>[h("参观人数列表")]),_:1}),(r(!0),m(p,null,k(T.value,a=>(r(),d(t,{key:a.date,class:"row"},{default:c(()=>{var e;return[o(s,{class:"d"},{default:c(()=>[h(x(a.date),1)]),_:2},1024),o(s,{class:y(["c",{hot:a.date===(null==(e=F.value)?void 0:e.date)}])},{default:c(()=>{return[h(x((e=a.value,`${e.toLocaleString()}`)),1)];var e}),_:2},1032,["class"])]}),_:2},1024))),128))]),_:1})]),_:1})}}}),[["__scopeId","data-v-90b339fd"]]);export{b as default};
import{d as a,e,f as l,j as t,a3 as s,w as u,k as d,l as c,ac as v,n,U as i,p as r,q as o,v as f,y as h,x as y,D as x,ad as _,J as g,F as m,G as p,H as k,_ as S}from"./index-YOal07Vu.js";const w="trafficLineChart",b=S(a({__name:"index",setup(a){const S=e("week"),b={week:[{date:"04-03",value:12358},{date:"04-04",value:15540},{date:"04-05",value:14200},{date:"04-06",value:18680},{date:"04-07",value:14820},{date:"04-08",value:20550},{date:"04-09",value:32100}],month:[{date:"04-01",value:12800},{date:"04-05",value:18800},{date:"04-10",value:17600},{date:"04-15",value:22900},{date:"04-20",value:19600},{date:"04-25",value:26400},{date:"04-30",value:30100}],year:[{date:"01月",value:268e3},{date:"03月",value:292e3},{date:"05月",value:318e3},{date:"07月",value:346e3},{date:"09月",value:332e3},{date:"11月",value:368e3},{date:"12月",value:392e3}]},T=l(()=>b[S.value]),C=l(()=>{var a,e;return`${(null==(a=T.value[0])?void 0:a.date)||"-"} 至 ${(null==(e=T.value[T.value.length-1])?void 0:e.date)||"-"}`}),F=l(()=>T.value.reduce((a,e)=>e.value>a.value?e:a,T.value[0]));function P(){const a=T.value;if(!a.length)return;const e=v(w),l=24,t=18,s=24,u=18,d=260,c=Math.min(...a.map(a=>a.value)),n=Math.max(...a.map(a=>a.value)),i=Math.max(1,n-c),r=680-u-t,o=d-l-s;e.clearRect(0,0,680,d);const f=e.createLinearGradient(0,l,0,d);f.addColorStop(0,"rgba(5,201,172,0.35)"),f.addColorStop(1,"rgba(5,201,172,0.02)");const h=a.map((e,t)=>({x:u+r*t/Math.max(1,a.length-1),y:l+(n-e.value)/i*o,value:e.value,date:e.date}));e.beginPath(),h.forEach((a,l)=>0===l?e.moveTo(a.x,a.y):e.lineTo(a.x,a.y)),e.lineTo(h[h.length-1].x,252),e.lineTo(h[0].x,252),e.closePath(),e.setFillStyle(f),e.fill(),e.beginPath(),h.forEach((a,l)=>0===l?e.moveTo(a.x,a.y):e.lineTo(a.x,a.y)),e.setStrokeStyle("#05c9ac"),e.setLineWidth(5),e.stroke(),e.setFillStyle("#ff7d00"),h.forEach(a=>{e.beginPath(),e.arc(a.x,a.y,6,0,2*Math.PI),e.fill(),e.setFillStyle("#4e5969"),e.setFontSize(20),e.fillText(a.value.toLocaleString(),a.x-34,a.y-12),e.setFillStyle("#ff7d00")}),e.draw()}return t(async()=>{await s(),P()}),u(S,async()=>{await s(),P()}),(a,e)=>{const l=i("SubPageBackBtn"),t=n,s=f,u=_;return r(),d(t,{class:"page"},{default:c(()=>[o(l),o(t,{class:"section-title"},{default:c(()=>[o(t,{class:"bar"}),o(s,{class:"title"},{default:c(()=>[h("全市参观人数")]),_:1}),o(t,{class:"period"},{default:c(()=>[o(s,{class:y({active:"week"===S.value}),onClick:e[0]||(e[0]=a=>S.value="week")},{default:c(()=>[h("周")]),_:1},8,["class"]),o(s,{class:y({active:"month"===S.value}),onClick:e[1]||(e[1]=a=>S.value="month")},{default:c(()=>[h("月")]),_:1},8,["class"]),o(s,{class:y({active:"year"===S.value}),onClick:e[2]||(e[2]=a=>S.value="year")},{default:c(()=>[h("年")]),_:1},8,["class"])]),_:1})]),_:1}),o(t,{class:"date-range"},{default:c(()=>[h(x(C.value),1)]),_:1}),o(t,{class:"chart-card"},{default:c(()=>[o(u,{"canvas-id":w,id:w,class:"chart-canvas",style:g("width:680rpx;height:260rpx;")},null,8,["style"]),o(t,{class:"x-axis"},{default:c(()=>[(r(!0),m(p,null,k(T.value,a=>(r(),d(s,{key:a.date},{default:c(()=>[h(x(a.date),1)]),_:2},1024))),128))]),_:1})]),_:1}),o(t,{class:"list-card"},{default:c(()=>[o(t,{class:"list-title"},{default:c(()=>[h("参观人数列表")]),_:1}),(r(!0),m(p,null,k(T.value,a=>(r(),d(t,{key:a.date,class:"row"},{default:c(()=>{var e;return[o(s,{class:"d"},{default:c(()=>[h(x(a.date),1)]),_:2},1024),o(s,{class:y(["c",{hot:a.date===(null==(e=F.value)?void 0:e.date)}])},{default:c(()=>{return[h(x((e=a.value,`${e.toLocaleString()}`)),1)];var e}),_:2},1032,["class"])]}),_:2},1024))),128))]),_:1})]),_:1})}}}),[["__scopeId","data-v-90b339fd"]]);export{b as default};

@ -1 +1 @@
import{aa as n,A as r}from"./index-Dw_7ZRO0.js";function e(){const e=r.peopleCountingUrl;return new Promise((r,t)=>{n({url:e,method:"GET",success:n=>{const e=n.statusCode||0;e>=200&&e<300?r(n.data):t(new Error(`客流接口 HTTP ${e}`))},fail:n=>t(n)})})}function t(n,r){return Math.max(0,Number(n??0)-Number(r??0))}function o(n){const r=Number(String(n).trim());return Number.isFinite(r)&&r>0?r:null}function u(n){const r=new Map;if(!Array.isArray(n))return r;for(const e of n){const n=String(e.groupId||"").trim().toUpperCase();if(!n)continue;const t=(e.groupName||"").trim();r.set(n,t||n)}return r}function s(n,r,e){const t=(e||"").trim();if(t)return t;for(const o of function(n){if(!n||"string"!=typeof n)return[];const r=[],e=/\[([A-Fa-f0-9]{32})\]/g;let t;for(;null!==(t=e.exec(n));)r.push(t[1].toUpperCase());return r}(n.includedGroups)){const n=r.get(o);if(n)return n}return(n.venueName||"").trim()||"—"}function i(n){const r=new Map;if(!n||200!==n.code||!Array.isArray(n.venues))return r;for(const e of n.venues){const n=o(e.venueId);null!=n&&r.set(n,t(e.enter,e.exit))}return r}function a(n){if(!n||200!==n.code||!Array.isArray(n.venues))return null;let r=0;for(const e of n.venues){const n=o(e.venueId);null==n||n<=0||(r+=t(e.enter,e.exit))}return r}export{s as a,u as b,e as g,i as l,t as n,a as t,o as v};
import{ab as n,A as r}from"./index-YOal07Vu.js";function e(){const e=r.peopleCountingUrl;return new Promise((r,t)=>{n({url:e,method:"GET",success:n=>{const e=n.statusCode||0;e>=200&&e<300?r(n.data):t(new Error(`客流接口 HTTP ${e}`))},fail:n=>t(n)})})}function t(n,r){return Math.max(0,Number(n??0)-Number(r??0))}function o(n){const r=Number(String(n).trim());return Number.isFinite(r)&&r>0?r:null}function u(n){const r=new Map;if(!Array.isArray(n))return r;for(const e of n){const n=String(e.groupId||"").trim().toUpperCase();if(!n)continue;const t=(e.groupName||"").trim();r.set(n,t||n)}return r}function s(n,r,e){const t=(e||"").trim();if(t)return t;for(const o of function(n){if(!n||"string"!=typeof n)return[];const r=[],e=/\[([A-Fa-f0-9]{32})\]/g;let t;for(;null!==(t=e.exec(n));)r.push(t[1].toUpperCase());return r}(n.includedGroups)){const n=r.get(o);if(n)return n}return(n.venueName||"").trim()||"—"}function i(n){const r=new Map;if(!n||200!==n.code||!Array.isArray(n.venues))return r;for(const e of n.venues){const n=o(e.venueId);null!=n&&r.set(n,t(e.enter,e.exit))}return r}function c(n){if(!n||200!==n.code||!Array.isArray(n.venues))return null;let r=0;for(const e of n.venues){const n=o(e.venueId);null==n||n<=0||(r+=t(e.enter,e.exit))}return r}export{s as a,u as b,e as g,i as l,t as n,c as t,o as v};

@ -1 +1 @@
import{s as A,a8 as i}from"./index-Dw_7ZRO0.js";import{s}from"./text.CdTUJGny.js";const t="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAbCAYAAABr/T8RAAABxklEQVRIicXXsY+MQRjH8c979rCiQERCriDR0CgkCoJCoTiEHBqV/0M09KIUiURDgoiImkIhl1CdXKIQCRWJyzUczloZeTbeW/u+9777ur1fMtl3952Z78xvnnlmNmu/uK2mJjCJc/iIy3hbt5NWxXpbcRzncRibc+924wi+1wRnRe824hhOB3R7Qb192IYPtcDdf8FHMYUT2FWhj59KRl8IjiY7A3YGh+p2MoyS1WndbmDTKIA9JauvjxoqZtweNbQH7qwKeEBUjwYsWwJ+h+coc2E9TsY+bwD+O+NvOIXXFdpdxK2Cdxsiuy3gJb4OBOes/oX5igOeK4E+joyX9Ab3cRez+YrZ+PSDz9gS31/haYnVXbQjZ++I375gL97jAKYHtFuMfu/hURp4q7t0jfdHGVbrCtqNR75P5RIutBhrwBnoyHJK+f9K/3aaDUsWCxJ/N6L5bN/RWFcT+aheiKiucqg/w50G4E5+H2exFlW0tgH0j/JWp8TwMKz+UcHqZuC+/vdEWXGVXX1WVKt2SPzXTVxHKaqbwsdygVjVvjXJ6hTBTZRumSkHJPU+l9N8utBfjX8Dw878Jj7F8wye4GBJ/Q6u/Qah/1ByEhqpiwAAAABJRU5ErkJggg==",e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAABuElEQVRIia2VP0scURTFf2d2DVqmyQcIFn6BKJLOygUNWFpYydrYKGihkDSCprBIoWIghWlTCCbq2liEKMKuFiooElLmEyQYSAI3THZGhmHfm3HGC4eZN/e+OffPmXnqOXlPwmrABNAE3vBAVk285i0wFd2PA93A64egqYLC6ydgJOVbAS6BvdIkhuY7EMS2AzwGfpQhCZAWkHCggrTu8edCAOpqt8yJCVB/RowXgaHvhsjATI4YJ8JKPufI5lepSkCrGUF/QctlSKomfQVawDOHONaAb+XU1WarezLpLVNFPPhwOOeGth2DGzE0WXbwMeM46Kcjm3eg4eKVKCDCb1NQS6zTaJiC5x6/E0GK9Qj0ypNV6K8VnUkSS4Y+eHq8b+hlYj1mqGHoxNBspz2qNHdcymsAwx5ltqJrWvpX0ZFxHD9QpfXRJ/EsIp+tAvP/v5MM+dUM7RaU7pyhQ0OP0oPvhFHQRkH5DoG+hIdWntKno16vFWhbf55KYqyDBkA396zmOrjnKddE6kNaRPqTc089a/AurBjqNbRp6NYTVzd0LE4PCir0zp4AL4BB4Gn7z84FsAWcAfwDuxHZ5sUXudsAAAAASUVORK5CYII=",r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAeCAYAAAA2Lt7lAAADKklEQVRIiZ3W24vVVRQH8M86zpij0MVCMQq6iJaGaWbRDXowkopeooeeeuiht16CXvoTfAuKIIsCESKIigpEKQkiLcJSJrSgLMoLZmTa2KTOju2sGU+/fr8zM31hwTlnrb3WXt912SdGPntDBxbjbmzEelyFSxE4hRP4CjvxKY61uRnqcH4XHsJarMA1WNinX4YzWIrrcSc+zEDnGgGi//si3IOn8HjetgsjuCFlE27C5fg4MywXApSLpxfmTZ7PDOaCkhkvy0t9hD/q+d7k9wuyiniOuIMYJqJPN5NU28rGWuJZYs2U/dAF3WTkx/DgHG/exDDuxRP4GYd6GX0j8ShROm5afz9LjKfUzxMDbKuvTcS8WoPaCbdj+YCinsQHGMX57KxHsouaiGSk+txZeVuHVZjf4fwAtmE7fsAErsV+PIl1LWfmYWWdnxrg1hyiJkr29DvYjL/69FNDNtJ3uWb2V2B1r4ilRSwqQkPOF/FjEfuKGG/RVxktYn8R51p0C4pY3BOxUMTwZK3/JRMiTog4JqK06KscF3FUxPkW3fzqu1JUp+7vFop6uAxXDmjLSsOStG2iNsN4peiXIk61pDhUxIoibimi10HR6iJuK2K4RTdWxK81g9EsWht6uZPGstjfZvGvw8M5UF0L83ccrAG+xje4v6NVb8YzuTUPZOrLM8CNA+g7iC+GSi0iu/FAtlzbsF2Npwc460fN8DD24LupdV2335rat7N0MgjV4bvYUYeyFrLaHk+ON+A+LPifzms37sVb+F7jwal1eCFbc32O+1xQskYvZhCTAWI6wFi+RhuyS5bMMcCZPF+Z+HM6QLmYQUnFttySsy3qFCrvr+VzOY1eyz4/SLxO7MrdP9Nrdo74kniV2NfUtwWospfYTPw0iwBH0nZPm75XkpuGjBd2F7YUDnXYVDlS2FrYVTjdZtOVQZXfiK3Ee5ML8T/6St/2pPNYl5/+LmrD4Szeylwll6TNWdQV83bup060rdkmPscrONr3e32jX8YnMx3uWsP9crqIHUW8VMSRIo4XsaWI94s4OdP55l/HLtT5eDMnvNJUZ6VmMRj4Bz4oCls1OzRGAAAAAElFTkSuQmCC";function u(A){const i=s(A);return i?i.split(/[,,、;/|]+/u).map(A=>A.trim()).filter(A=>""!==A):[]}function a(s){const t=function(A){return A.trim().replace(/\s+/g,"")}(s);t?i({phoneNumber:t}):A({title:"号码无效",icon:"none"})}export{e as a,r as b,a as d,t as i,u as s};
import{s as A,a9 as i}from"./index-YOal07Vu.js";import{s}from"./text.CdTUJGny.js";const t="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAbCAYAAABr/T8RAAABxklEQVRIicXXsY+MQRjH8c979rCiQERCriDR0CgkCoJCoTiEHBqV/0M09KIUiURDgoiImkIhl1CdXKIQCRWJyzUczloZeTbeW/u+9777ur1fMtl3952Z78xvnnlmNmu/uK2mJjCJc/iIy3hbt5NWxXpbcRzncRibc+924wi+1wRnRe824hhOB3R7Qb192IYPtcDdf8FHMYUT2FWhj59KRl8IjiY7A3YGh+p2MoyS1WndbmDTKIA9JauvjxoqZtweNbQH7qwKeEBUjwYsWwJ+h+coc2E9TsY+bwD+O+NvOIXXFdpdxK2Cdxsiuy3gJb4OBOes/oX5igOeK4E+joyX9Ab3cRez+YrZ+PSDz9gS31/haYnVXbQjZ++I375gL97jAKYHtFuMfu/hURp4q7t0jfdHGVbrCtqNR75P5RIutBhrwBnoyHJK+f9K/3aaDUsWCxJ/N6L5bN/RWFcT+aheiKiucqg/w50G4E5+H2exFlW0tgH0j/JWp8TwMKz+UcHqZuC+/vdEWXGVXX1WVKt2SPzXTVxHKaqbwsdygVjVvjXJ6hTBTZRumSkHJPU+l9N8utBfjX8Dw878Jj7F8wye4GBJ/Q6u/Qah/1ByEhqpiwAAAABJRU5ErkJggg==",e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAABuElEQVRIia2VP0scURTFf2d2DVqmyQcIFn6BKJLOygUNWFpYydrYKGihkDSCprBIoWIghWlTCCbq2liEKMKuFiooElLmEyQYSAI3THZGhmHfm3HGC4eZN/e+OffPmXnqOXlPwmrABNAE3vBAVk285i0wFd2PA93A64egqYLC6ydgJOVbAS6BvdIkhuY7EMS2AzwGfpQhCZAWkHCggrTu8edCAOpqt8yJCVB/RowXgaHvhsjATI4YJ8JKPufI5lepSkCrGUF/QctlSKomfQVawDOHONaAb+XU1WarezLpLVNFPPhwOOeGth2DGzE0WXbwMeM46Kcjm3eg4eKVKCDCb1NQS6zTaJiC5x6/E0GK9Qj0ypNV6K8VnUkSS4Y+eHq8b+hlYj1mqGHoxNBspz2qNHdcymsAwx5ltqJrWvpX0ZFxHD9QpfXRJ/EsIp+tAvP/v5MM+dUM7RaU7pyhQ0OP0oPvhFHQRkH5DoG+hIdWntKno16vFWhbf55KYqyDBkA396zmOrjnKddE6kNaRPqTc089a/AurBjqNbRp6NYTVzd0LE4PCir0zp4AL4BB4Gn7z84FsAWcAfwDuxHZ5sUXudsAAAAASUVORK5CYII=",r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAeCAYAAAA2Lt7lAAADKklEQVRIiZ3W24vVVRQH8M86zpij0MVCMQq6iJaGaWbRDXowkopeooeeeuiht16CXvoTfAuKIIsCESKIigpEKQkiLcJSJrSgLMoLZmTa2KTOju2sGU+/fr8zM31hwTlnrb3WXt912SdGPntDBxbjbmzEelyFSxE4hRP4CjvxKY61uRnqcH4XHsJarMA1WNinX4YzWIrrcSc+zEDnGgGi//si3IOn8HjetgsjuCFlE27C5fg4MywXApSLpxfmTZ7PDOaCkhkvy0t9hD/q+d7k9wuyiniOuIMYJqJPN5NU28rGWuJZYs2U/dAF3WTkx/DgHG/exDDuxRP4GYd6GX0j8ShROm5afz9LjKfUzxMDbKuvTcS8WoPaCbdj+YCinsQHGMX57KxHsouaiGSk+txZeVuHVZjf4fwAtmE7fsAErsV+PIl1LWfmYWWdnxrg1hyiJkr29DvYjL/69FNDNtJ3uWb2V2B1r4ilRSwqQkPOF/FjEfuKGG/RVxktYn8R51p0C4pY3BOxUMTwZK3/JRMiTog4JqK06KscF3FUxPkW3fzqu1JUp+7vFop6uAxXDmjLSsOStG2iNsN4peiXIk61pDhUxIoibimi10HR6iJuK2K4RTdWxK81g9EsWht6uZPGstjfZvGvw8M5UF0L83ccrAG+xje4v6NVb8YzuTUPZOrLM8CNA+g7iC+GSi0iu/FAtlzbsF2Npwc460fN8DD24LupdV2335rat7N0MgjV4bvYUYeyFrLaHk+ON+A+LPifzms37sVb+F7jwal1eCFbc32O+1xQskYvZhCTAWI6wFi+RhuyS5bMMcCZPF+Z+HM6QLmYQUnFttySsy3qFCrvr+VzOY1eyz4/SLxO7MrdP9Nrdo74kniV2NfUtwWospfYTPw0iwBH0nZPm75XkpuGjBd2F7YUDnXYVDlS2FrYVTjdZtOVQZXfiK3Ee5ML8T/6St/2pPNYl5/+LmrD4Szeylwll6TNWdQV83bup060rdkmPscrONr3e32jX8YnMx3uWsP9crqIHUW8VMSRIo4XsaWI94s4OdP55l/HLtT5eDMnvNJUZ6VmMRj4Bz4oCls1OzRGAAAAAElFTkSuQmCC";function u(A){const i=s(A);return i?i.split(/[,,、;/|]+/u).map(A=>A.trim()).filter(A=>""!==A):[]}function a(s){const t=function(A){return A.trim().replace(/\s+/g,"")}(s);t?i({phoneNumber:t}):A({title:"号码无效",icon:"none"})}export{e as a,r as b,a as d,t as i,u as s};

@ -9,7 +9,7 @@
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<title>苏州市科普场馆地图</title>
<script type="module" crossorigin src="/h5/assets/index-Dw_7ZRO0.js"></script>
<script type="module" crossorigin src="/h5/assets/index-YOal07Vu.js"></script>
<link rel="stylesheet" crossorigin href="/h5/assets/index-Bqb_3gkU.css">
</head>
<body>

@ -85,6 +85,7 @@ Route::post('/h5/my/reservations/{id}/cancel', [H5ReservationController::class,
Route::middleware(['auth:sanctum', 'audit.log'])->group(function () {
Route::post('/auth/logout', [AuthController::class, 'logout']);
Route::put('/me/profile', [AuthController::class, 'updateProfile']);
Route::get('/me', function (Request $request) {
$u = $request->user();
if (! $u instanceof User) {
@ -148,6 +149,8 @@ Route::middleware(['auth:sanctum', 'audit.log'])->group(function () {
Route::put('/activities/{activity}/verify-credentials/{verifyPortalCredential}', [VerifyPortalManageController::class, 'activityUpdate']);
Route::delete('/activities/{activity}/verify-credentials/{verifyPortalCredential}', [VerifyPortalManageController::class, 'activityDestroy']);
Route::post('/activities/{activity}/audit/approve', [ActivityController::class, 'approve']);
Route::put('/activities/{activity}/behind-scenes', [ActivityController::class, 'updateBehindScenes']);
Route::post('/activities/{activity}/hot-flag', [ActivityController::class, 'setHotFlag']);
Route::post('/activities/{activity}/audit/reject', [ActivityController::class, 'reject']);
Route::post('/activities/{activity}/toggle', [ActivityController::class, 'toggle']);
Route::delete('/activities/{activity}', [ActivityController::class, 'destroy']);

Loading…
Cancel
Save