master
parent
a4598e4215
commit
d02503f94c
@ -0,0 +1,174 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\ActivityDay;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||||
|
||||
class ExportVenueActivityStatsCommand extends Command
|
||||
{
|
||||
protected $signature = 'activities:export-venue-stats
|
||||
{--from=2026-07-01 : 场次开始日期 Y-m-d}
|
||||
{--to=2026-07-31 : 场次结束日期 Y-m-d}
|
||||
{--output= : 导出 xlsx 路径}';
|
||||
|
||||
protected $description = '导出指定日期范围内各场馆活动汇总(按场馆一行)及场次明细 Excel';
|
||||
|
||||
public function handle(): int
|
||||
{
|
||||
$start = (string) $this->option('from');
|
||||
$end = (string) $this->option('to');
|
||||
$out = (string) ($this->option('output') ?: storage_path(
|
||||
'app/export_venues_activities_'.str_replace('-', '', $start).'_'.str_replace('-', '', $end).'.xlsx'
|
||||
));
|
||||
|
||||
$regPeople = "SUM(CASE WHEN reservations.status <> 'cancelled' THEN COALESCE(reservations.ticket_count, 1) ELSE 0 END)";
|
||||
$regOrders = "SUM(CASE WHEN reservations.status <> 'cancelled' THEN 1 ELSE 0 END)";
|
||||
$cancelOrders = "SUM(CASE WHEN reservations.status = 'cancelled' THEN 1 ELSE 0 END)";
|
||||
$cancelPeople = "SUM(CASE WHEN reservations.status = 'cancelled' THEN COALESCE(reservations.ticket_count, 1) ELSE 0 END)";
|
||||
$verifiedPeople = "SUM(CASE WHEN reservations.status = 'verified' THEN COALESCE(reservations.ticket_count, 1) ELSE 0 END)";
|
||||
$pendingPeople = "SUM(CASE WHEN reservations.status = 'pending' THEN COALESCE(reservations.ticket_count, 1) ELSE 0 END)";
|
||||
$expiredPeople = "SUM(CASE WHEN reservations.status = 'expired' THEN COALESCE(reservations.ticket_count, 1) ELSE 0 END)";
|
||||
|
||||
$baseJoin = function ($q) {
|
||||
$q->join('activities', function ($j) {
|
||||
$j->on('activities.id', '=', 'activity_days.activity_id')->whereNull('activities.deleted_at');
|
||||
})
|
||||
->join('venues', 'venues.id', '=', 'activities.venue_id')
|
||||
->join('reservations', function ($j) {
|
||||
$j->on('reservations.activity_day_id', '=', 'activity_days.id')
|
||||
->whereNull('reservations.deleted_at')
|
||||
->where(function ($qq) {
|
||||
$qq->whereNull('reservations.reservation_kind')
|
||||
->orWhere('reservations.reservation_kind', 'activity');
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
$venueRows = ActivityDay::query()
|
||||
->select([
|
||||
'venues.id as venue_id',
|
||||
'venues.name as venue_name',
|
||||
DB::raw("GROUP_CONCAT(DISTINCT DATE_FORMAT(activity_days.activity_date, '%Y-%m-%d') ORDER BY activity_days.activity_date SEPARATOR ', ') as activity_dates"),
|
||||
DB::raw('COUNT(DISTINCT activities.id) as activity_count'),
|
||||
DB::raw('COUNT(DISTINCT activity_days.id) as session_count'),
|
||||
DB::raw("{$regOrders} as registration_orders"),
|
||||
DB::raw("{$regPeople} as registration_people"),
|
||||
DB::raw("{$cancelOrders} as cancelled_orders"),
|
||||
DB::raw("{$cancelPeople} as cancelled_people"),
|
||||
DB::raw("{$verifiedPeople} as verified_people"),
|
||||
])
|
||||
->tap($baseJoin)
|
||||
->whereBetween('activity_days.activity_date', [$start, $end])
|
||||
->groupBy('venues.id', 'venues.name')
|
||||
->havingRaw("{$regOrders} > 0 OR {$cancelOrders} > 0")
|
||||
->orderBy('venues.name')
|
||||
->get();
|
||||
|
||||
$sessionRows = ActivityDay::query()
|
||||
->select([
|
||||
'venues.id as venue_id',
|
||||
'venues.name as venue_name',
|
||||
'activities.id as activity_id',
|
||||
'activities.title as activity_title',
|
||||
'activity_days.id as activity_day_id',
|
||||
'activity_days.session_name',
|
||||
'activity_days.activity_date',
|
||||
'activity_days.session_start_at',
|
||||
'activity_days.session_end_at',
|
||||
'activity_days.day_quota',
|
||||
'activity_days.booked_count',
|
||||
DB::raw("{$regOrders} as registration_orders"),
|
||||
DB::raw("{$regPeople} as registration_people"),
|
||||
DB::raw("{$cancelOrders} as cancelled_orders"),
|
||||
DB::raw("{$cancelPeople} as cancelled_people"),
|
||||
DB::raw("{$verifiedPeople} as verified_people"),
|
||||
DB::raw("{$pendingPeople} as pending_people"),
|
||||
DB::raw("{$expiredPeople} as expired_people"),
|
||||
])
|
||||
->tap($baseJoin)
|
||||
->whereBetween('activity_days.activity_date', [$start, $end])
|
||||
->groupBy(
|
||||
'venues.id',
|
||||
'venues.name',
|
||||
'activities.id',
|
||||
'activities.title',
|
||||
'activity_days.id',
|
||||
'activity_days.session_name',
|
||||
'activity_days.activity_date',
|
||||
'activity_days.session_start_at',
|
||||
'activity_days.session_end_at',
|
||||
'activity_days.day_quota',
|
||||
'activity_days.booked_count'
|
||||
)
|
||||
->havingRaw("{$regOrders} > 0 OR {$cancelOrders} > 0")
|
||||
->orderBy('venues.name')
|
||||
->orderBy('activity_days.activity_date')
|
||||
->orderBy('activity_days.session_start_at')
|
||||
->orderBy('activities.id')
|
||||
->get();
|
||||
|
||||
$spreadsheet = new Spreadsheet;
|
||||
$sheet1 = $spreadsheet->getActiveSheet();
|
||||
$sheet1->setTitle('场馆汇总');
|
||||
$sheet1Data = [['场馆ID', '场馆名称', '活动日期', '活动数量', '场次数量', '报名人数', '报名总人数', '已取消数', '已取消人数', '到场人数(已核销)']];
|
||||
foreach ($venueRows as $r) {
|
||||
$sheet1Data[] = [
|
||||
$r->venue_id,
|
||||
$r->venue_name,
|
||||
$r->activity_dates,
|
||||
(int) $r->activity_count,
|
||||
(int) $r->session_count,
|
||||
(int) $r->registration_orders,
|
||||
(int) $r->registration_people,
|
||||
(int) $r->cancelled_orders,
|
||||
(int) $r->cancelled_people,
|
||||
(int) $r->verified_people,
|
||||
];
|
||||
}
|
||||
$sheet1->fromArray($sheet1Data, null, 'A1');
|
||||
|
||||
$sheet2 = $spreadsheet->createSheet();
|
||||
$sheet2->setTitle('场次信息');
|
||||
$sheet2Data = [['场馆ID', '场馆名称', '活动ID', '活动名称', '场次ID', '场次名称', '活动日期', '场次开始时间', '场次结束时间', '场次名额', '已占用名额', '报名人数', '报名总人数', '已取消数', '已取消人数', '已核销人数', '待核销人数', '已过期人数']];
|
||||
foreach ($sessionRows as $r) {
|
||||
$sheet2Data[] = [
|
||||
$r->venue_id,
|
||||
$r->venue_name,
|
||||
$r->activity_id,
|
||||
$r->activity_title,
|
||||
$r->activity_day_id,
|
||||
$r->session_name,
|
||||
$r->activity_date ? (string) $r->activity_date : '',
|
||||
$r->session_start_at ? (string) $r->session_start_at : '',
|
||||
$r->session_end_at ? (string) $r->session_end_at : '',
|
||||
$r->day_quota,
|
||||
$r->booked_count,
|
||||
(int) $r->registration_orders,
|
||||
(int) $r->registration_people,
|
||||
(int) $r->cancelled_orders,
|
||||
(int) $r->cancelled_people,
|
||||
(int) $r->verified_people,
|
||||
(int) $r->pending_people,
|
||||
(int) $r->expired_people,
|
||||
];
|
||||
}
|
||||
$sheet2->fromArray($sheet2Data, null, 'A1');
|
||||
|
||||
$dir = dirname($out);
|
||||
if (! is_dir($dir)) {
|
||||
mkdir($dir, 0755, true);
|
||||
}
|
||||
|
||||
(new Xlsx($spreadsheet))->save($out);
|
||||
|
||||
$this->info("场馆汇总:{$venueRows->count()} 行");
|
||||
$this->info("场次信息:{$sessionRows->count()} 行");
|
||||
$this->info("Excel 已生成:{$out}");
|
||||
|
||||
return self::SUCCESS;
|
||||
}
|
||||
}
|
||||
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{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-BDKkzx6u.js";import{t as g}from"./listTableRowIndex-PNK2HoFW.js";import{t as _}from"./datetime-4oTrw7tt.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-DDUzWAQN.js";import{t as g}from"./listTableRowIndex-PNK2HoFW.js";import{t as _}from"./datetime-4oTrw7tt.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};
|
||||
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-BJkSrU8b.js","assets/dynamicAdminRoutes-B4iGRml0.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-BDKkzx6u.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:``,password:``});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-BJkSrU8b.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-DRCw9-hz.js","assets/dynamicAdminRoutes-CoXt4MxT.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-DDUzWAQN.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:``,password:``});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-DRCw9-hz.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};
|
||||
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 @@
|
||||
.reg-toolbar[data-v-fbeb3d5d]{box-sizing:border-box;width:100%;max-width:100%;margin-bottom:12px}.registrations-table[data-v-fbeb3d5d] .arco-table-td .arco-table-cell{white-space:normal;word-break:break-word}.registrations-table[data-v-fbeb3d5d] .arco-table-text-ellipsis{white-space:nowrap}.registrations-table[data-v-fbeb3d5d] .arco-table-td.reg-row-inactive-cell{background-color:var(--color-fill-2)!important}.registrations-table[data-v-fbeb3d5d] .arco-table-tr:hover .arco-table-td.reg-row-inactive-cell{background-color:var(--color-fill-3)!important}
|
||||
@ -0,0 +1 @@
|
||||
.reg-toolbar[data-v-e98e484a]{box-sizing:border-box;width:100%;max-width:100%;margin-bottom:12px}.registrations-table[data-v-e98e484a] .arco-table-td .arco-table-cell{white-space:normal;word-break:break-word}.registrations-table[data-v-e98e484a] .arco-table-text-ellipsis{white-space:nowrap}.registrations-table[data-v-e98e484a] .arco-table-td.reg-row-inactive-cell{background-color:var(--color-fill-2)!important}.registrations-table[data-v-e98e484a] .arco-table-tr:hover .arco-table-td.reg-row-inactive-cell{background-color:var(--color-fill-3)!important}
|
||||
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 +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-BDKkzx6u.js";import{t as g}from"./listTableRowIndex-PNK2HoFW.js";import{n as _,t as v}from"./datetime-4oTrw7tt.js";import{t as y}from"./bookingType-DpjZVc2F.js";import{t as b}from"./reservationStatus-C099SGm7.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-DDUzWAQN.js";import{t as g}from"./listTableRowIndex-PNK2HoFW.js";import{n as _,t as v}from"./datetime-4oTrw7tt.js";import{t as y}from"./bookingType-DpjZVc2F.js";import{t as b}from"./reservationStatus-C099SGm7.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
@ -0,0 +1 @@
|
||||
.verify-list-toolbar[data-v-b10c6bc2]{box-sizing:border-box;width:100%;max-width:100%}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
.verify-list-toolbar[data-v-b47acaa2]{box-sizing:border-box;width:100%;max-width:100%}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{n as e,ot as t}from"./axios-CiYFffbI.js";import{I as n,N as r,V as i,Y as a,_ as o,it as s,p as c,u as l,v as u,y as d}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{c as f,s as p,u as m}from"./index-BDKkzx6u.js";import{i as h,n as g,o as _,r as v,t as y}from"./h5Http-B0amz0Ts.js";var b={class:`m-verify-page`},x={class:`m-verify-card`},S=m(d({__name:`VerifyLogin`,setup(d){let m=f(),S=p(),C=s(!1),w=s(``);function T(){return S.path.startsWith(`/m/`)?`/m/verify`:`/h5/verify/scan`}function E(){w.value=w.value.replace(/\D/g,``).slice(0,6)}async function D(){if(E(),!/^\d{6}$/.test(w.value.trim())){e.warning(`请输入 6 位数字核销口令`);return}C.value=!0;try{let{data:t}=await _.post(`/verify-portal/login`,{password:w.value.trim()});localStorage.setItem(y,t.token),localStorage.setItem(`${y}_saved_at`,String(Date.now())),localStorage.setItem(g,`portal`),e.success(`登录成功`),m.replace(T())}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{C.value=!1}}return r(()=>{localStorage.removeItem(v),localStorage.removeItem(h)}),(e,r)=>{let s=i(`a-input`),d=i(`a-button`);return n(),c(`div`,b,[r[4]||=l(`div`,{class:`m-verify-hero`},[l(`div`,{class:`m-verify-title`},`核销入口`)],-1),l(`div`,x,[r[2]||=l(`div`,{class:`m-verify-section-head`},`6 位数字核销口令`,-1),u(s,{modelValue:w.value,"onUpdate:modelValue":r[0]||=e=>w.value=e,maxlength:`6`,size:`large`,placeholder:`6 位数字口令`,class:`m-verify-pin`,style:{"margin-bottom":`12px`},inputmode:`numeric`,autocomplete:`one-time-code`,onInput:E,onKeyup:t(D,[`enter`])},null,8,[`modelValue`]),u(d,{type:`primary`,long:``,size:`large`,loading:C.value,onClick:D},{default:a(()=>[...r[1]||=[o(` 进入核销页 `,-1)]]),_:1},8,[`loading`]),r[3]||=l(`p`,{class:`m-verify-tip`},` 未点击核销页上的「退出」前会一直保持登录;退出后,下次再打开本链接需重新输入 6 位口令。若口令登录态过期或失效,也会自动回到本页。 `,-1)])])}}}),[[`__scopeId`,`data-v-0f087851`]]);export{S as default};
|
||||
import{n as e,ot as t}from"./axios-CiYFffbI.js";import{I as n,N as r,V as i,Y as a,_ as o,it as s,p as c,u as l,v as u,y as d}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{c as f,s as p,u as m}from"./index-DDUzWAQN.js";import{i as h,n as g,o as _,r as v,t as y}from"./h5Http-B0amz0Ts.js";var b={class:`m-verify-page`},x={class:`m-verify-card`},S=m(d({__name:`VerifyLogin`,setup(d){let m=f(),S=p(),C=s(!1),w=s(``);function T(){return S.path.startsWith(`/m/`)?`/m/verify`:`/h5/verify/scan`}function E(){w.value=w.value.replace(/\D/g,``).slice(0,6)}async function D(){if(E(),!/^\d{6}$/.test(w.value.trim())){e.warning(`请输入 6 位数字核销口令`);return}C.value=!0;try{let{data:t}=await _.post(`/verify-portal/login`,{password:w.value.trim()});localStorage.setItem(y,t.token),localStorage.setItem(`${y}_saved_at`,String(Date.now())),localStorage.setItem(g,`portal`),e.success(`登录成功`),m.replace(T())}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{C.value=!1}}return r(()=>{localStorage.removeItem(v),localStorage.removeItem(h)}),(e,r)=>{let s=i(`a-input`),d=i(`a-button`);return n(),c(`div`,b,[r[4]||=l(`div`,{class:`m-verify-hero`},[l(`div`,{class:`m-verify-title`},`核销入口`)],-1),l(`div`,x,[r[2]||=l(`div`,{class:`m-verify-section-head`},`6 位数字核销口令`,-1),u(s,{modelValue:w.value,"onUpdate:modelValue":r[0]||=e=>w.value=e,maxlength:`6`,size:`large`,placeholder:`6 位数字口令`,class:`m-verify-pin`,style:{"margin-bottom":`12px`},inputmode:`numeric`,autocomplete:`one-time-code`,onInput:E,onKeyup:t(D,[`enter`])},null,8,[`modelValue`]),u(d,{type:`primary`,long:``,size:`large`,loading:C.value,onClick:D},{default:a(()=>[...r[1]||=[o(` 进入核销页 `,-1)]]),_:1},8,[`loading`]),r[3]||=l(`p`,{class:`m-verify-tip`},` 未点击核销页上的「退出」前会一直保持登录;退出后,下次再打开本链接需重新输入 6 位口令。若口令登录态过期或失效,也会自动回到本页。 `,-1)])])}}}),[[`__scopeId`,`data-v-0f087851`]]);export{S as default};
|
||||
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/Dashboard-CCSsU983.js","assets/index-BDKkzx6u.js","assets/axios-CiYFffbI.js","assets/runtime-core.esm-bundler-CnFWH3R5.js","assets/preload-helper-BIjWqNH5.js","assets/http-LCi9aT1G.js","assets/index-C6I69YBI.css","assets/xlsx-C0ANE5gA.js","assets/hikPdcClient-9YlD6z0w.js","assets/Dashboard-B4gGxNuh.css","assets/VenueList-PXa9eGhZ.js","assets/RichEditorField-CnzxPDs0.js","assets/RichEditorField-29vGWTvx.css","assets/adminMediaLimits-BMNnjSzY.js","assets/mapGeo-BYJZtCg9.js","assets/listTableRowIndex-PNK2HoFW.js","assets/mediaUrl-CZi-l8UA.js","assets/VenueList-CMRTVqtf.css","assets/ActivityList-DhRv08Tv.js","assets/h5Http-B0amz0Ts.js","assets/useModalDirtyGuard-Cg6oNoR1.js","assets/datetime-4oTrw7tt.js","assets/ActivityList-1ET-F1Ul.css","assets/Registrations-B7FTjNnk.js","assets/bookingType-DpjZVc2F.js","assets/reservationStatus-C099SGm7.js","assets/Registrations-D5KacPtq.css","assets/Verify-edX5q26g.js","assets/Verify-Dv9gxDFQ.css","assets/Blacklist-BcYjkoob.js","assets/Blacklist-CtQQ6LfC.css","assets/TicketGrabList-BdlCwPb8.js","assets/TicketGrabList-Dheb-3hV.css","assets/TicketGrabRegistrations-CCwuGK9f.js","assets/TicketGrabRegistrations-BkH9w3sn.css","assets/TicketGrabVerify-Dmt-gFnF.js","assets/TicketGrabVerify-C99ifrCo.css","assets/StudyTourList-_kUKWzDR.js","assets/StudyTourList-PWsTcKFi.css","assets/Monitor-C2hroSfb.js","assets/PagePlaceholder-AW88vWSI.js","assets/Leaderboard-Be-eSj4D.js","assets/Alerts-CqW6T0zj.js","assets/HikPeopleCounting-CG4lH-qC.js","assets/HikPeopleCounting-vcrBFAvB.css","assets/Overview-CuZTDpKK.js","assets/Regions-Cke8JiAf.js","assets/Categories-DZbquiOh.js","assets/Exports-QN7yf3-M.js","assets/Admins-CQtBgZz1.js","assets/Roles-DkaJE7lP.js","assets/Menus-DJNcc__5.js","assets/Menus-CIRuEnr6.css","assets/AuditLogs-52kKGY37.js","assets/AuditLogs-Bd90uV6l.css","assets/Wechat-BC3aE54r.js","assets/Map-B8SvR-kq.js","assets/Notifications-l_sR49JT.js","assets/SystemLogs-CJUb8T4i.js","assets/SystemLogs-DSVhElsT.css","assets/Dictionaries-BRs1TkIf.js","assets/VisitStats-BtZz6pok.js","assets/WechatUsers-CDjnv04a.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-CCSsU983.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),"/venues":()=>t(()=>import(`./VenueList-PXa9eGhZ.js`),__vite__mapDeps([10,1,2,3,4,5,6,11,12,13,14,15,16,17])),"/activities":()=>t(()=>import(`./ActivityList-DhRv08Tv.js`),__vite__mapDeps([18,1,2,3,4,5,6,11,12,7,19,20,13,14,21,15,22])),"/activities/registrations":()=>t(()=>import(`./Registrations-B7FTjNnk.js`),__vite__mapDeps([23,1,2,3,4,5,6,7,24,21,15,25,26])),"/activities/verify":()=>t(()=>import(`./Verify-edX5q26g.js`),__vite__mapDeps([27,1,2,3,4,5,6,7,24,21,15,25,28])),"/activities/blacklist":()=>t(()=>import(`./Blacklist-BcYjkoob.js`),__vite__mapDeps([29,1,2,3,4,5,6,21,30])),"/ticket-grab-events":()=>t(()=>import(`./TicketGrabList-BdlCwPb8.js`),__vite__mapDeps([31,1,2,3,4,5,6,11,12,7,19,14,15,16,32])),"/ticket-grab-events/registrations":()=>t(()=>import(`./TicketGrabRegistrations-CCwuGK9f.js`),__vite__mapDeps([33,1,2,3,4,5,6,7,24,21,15,25,34])),"/ticket-grab-events/verify":()=>t(()=>import(`./TicketGrabVerify-Dmt-gFnF.js`),__vite__mapDeps([35,1,2,3,4,5,6,24,21,15,25,36])),"/study-tours":()=>t(()=>import(`./StudyTourList-_kUKWzDR.js`),__vite__mapDeps([37,1,2,3,4,5,6,11,12,20,13,15,16,38])),"/traffic":()=>t(()=>import(`./Monitor-C2hroSfb.js`),__vite__mapDeps([39,3,40])),"/traffic/leaderboard":()=>t(()=>import(`./Leaderboard-Be-eSj4D.js`),__vite__mapDeps([41,3,40])),"/traffic/alerts":()=>t(()=>import(`./Alerts-CqW6T0zj.js`),__vite__mapDeps([42,3,40])),"/hik-camera":()=>t(()=>import(`./HikPeopleCounting-CG4lH-qC.js`),__vite__mapDeps([43,1,2,3,4,5,6,8,44])),"/hik-camera/HikPeopleCounting":()=>t(()=>import(`./HikPeopleCounting-CG4lH-qC.js`),__vite__mapDeps([43,1,2,3,4,5,6,8,44])),"/stats":()=>t(()=>import(`./Overview-CuZTDpKK.js`),__vite__mapDeps([45,3,40])),"/stats/regions":()=>t(()=>import(`./Regions-Cke8JiAf.js`),__vite__mapDeps([46,3,40])),"/stats/categories":()=>t(()=>import(`./Categories-DZbquiOh.js`),__vite__mapDeps([47,3,40])),"/stats/exports":()=>t(()=>import(`./Exports-QN7yf3-M.js`),__vite__mapDeps([48,3,40])),"/system/admins":()=>t(()=>import(`./Admins-CQtBgZz1.js`),__vite__mapDeps([49,2,3,5,15])),"/system/roles":()=>t(()=>import(`./Roles-DkaJE7lP.js`),__vite__mapDeps([50,1,2,3,4,5,6])),"/system/menus":()=>t(()=>import(`./Menus-DJNcc__5.js`),__vite__mapDeps([51,1,2,3,4,5,6,52])),"/system/audit-logs":()=>t(()=>import(`./AuditLogs-52kKGY37.js`),__vite__mapDeps([53,1,2,3,4,5,6,21,15,54])),"/settings/wechat":()=>t(()=>import(`./Wechat-BC3aE54r.js`),__vite__mapDeps([55,3,40])),"/settings/map":()=>t(()=>import(`./Map-B8SvR-kq.js`),__vite__mapDeps([56,1,2,3,4,5,6])),"/settings/notifications":()=>t(()=>import(`./Notifications-l_sR49JT.js`),__vite__mapDeps([57,3,40])),"/settings/system-logs":()=>t(()=>import(`./SystemLogs-CJUb8T4i.js`),__vite__mapDeps([58,1,2,3,4,5,6,21,59])),"/settings/dictionaries":()=>t(()=>import(`./Dictionaries-BRs1TkIf.js`),__vite__mapDeps([60,2,3,5])),"/settings/visit-stats":()=>t(()=>import(`./VisitStats-BtZz6pok.js`),__vite__mapDeps([61,2,3,5])),"/wechat-users":()=>t(()=>import(`./WechatUsers-CDjnv04a.js`),__vite__mapDeps([62,2,3,5,21,15]))};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-ztaZKypX.js","assets/index-DDUzWAQN.js","assets/axios-CiYFffbI.js","assets/runtime-core.esm-bundler-CnFWH3R5.js","assets/preload-helper-BIjWqNH5.js","assets/http-LCi9aT1G.js","assets/index-C6I69YBI.css","assets/xlsx-C0ANE5gA.js","assets/hikPdcClient-9YlD6z0w.js","assets/Dashboard-B4gGxNuh.css","assets/VenueList-CnpDbMS1.js","assets/RichEditorField-Qzl9XLDg.js","assets/RichEditorField-29vGWTvx.css","assets/adminMediaLimits-BMNnjSzY.js","assets/mapGeo-BYJZtCg9.js","assets/listTableRowIndex-PNK2HoFW.js","assets/mediaUrl-CZi-l8UA.js","assets/VenueList-CMRTVqtf.css","assets/ActivityList-DSqhbLhO.js","assets/h5Http-B0amz0Ts.js","assets/useModalDirtyGuard-Cg6oNoR1.js","assets/datetime-4oTrw7tt.js","assets/ActivityList-nHGBZeoc.css","assets/Registrations-Bzwk7e9v.js","assets/bookingType-DpjZVc2F.js","assets/reservationStatus-C099SGm7.js","assets/Registrations-DlcBaLx_.css","assets/Verify-DPQC7shX.js","assets/Verify-D1TiXG8I.css","assets/Blacklist-8S4WcWvG.js","assets/Blacklist-CtQQ6LfC.css","assets/TicketGrabList-oSBMxW8V.js","assets/TicketGrabList-Dheb-3hV.css","assets/TicketGrabRegistrations-BokO_Cam.js","assets/TicketGrabRegistrations-BkH9w3sn.css","assets/TicketGrabVerify-Cx-n1qVI.js","assets/TicketGrabVerify-C99ifrCo.css","assets/StudyTourList-Y_f71jay.js","assets/StudyTourList-PWsTcKFi.css","assets/Monitor-C2hroSfb.js","assets/PagePlaceholder-AW88vWSI.js","assets/Leaderboard-Be-eSj4D.js","assets/Alerts-CqW6T0zj.js","assets/HikPeopleCounting-CBUNTYP9.js","assets/HikPeopleCounting-vcrBFAvB.css","assets/Overview-CuZTDpKK.js","assets/Regions-Cke8JiAf.js","assets/Categories-DZbquiOh.js","assets/Exports-QN7yf3-M.js","assets/Admins-CQtBgZz1.js","assets/Roles-TmHer8rO.js","assets/Menus-BCf7vQay.js","assets/Menus-CIRuEnr6.css","assets/AuditLogs-6YWgliIr.js","assets/AuditLogs-Bd90uV6l.css","assets/Wechat-BC3aE54r.js","assets/Map-D-yGM9_G.js","assets/Notifications-l_sR49JT.js","assets/SystemLogs-Bv6CIMrS.js","assets/SystemLogs-DSVhElsT.css","assets/Dictionaries-BRs1TkIf.js","assets/VisitStats-BtZz6pok.js","assets/WechatUsers-CDjnv04a.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-ztaZKypX.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),"/venues":()=>t(()=>import(`./VenueList-CnpDbMS1.js`),__vite__mapDeps([10,1,2,3,4,5,6,11,12,13,14,15,16,17])),"/activities":()=>t(()=>import(`./ActivityList-DSqhbLhO.js`),__vite__mapDeps([18,1,2,3,4,5,6,11,12,7,19,20,13,14,21,15,22])),"/activities/registrations":()=>t(()=>import(`./Registrations-Bzwk7e9v.js`),__vite__mapDeps([23,1,2,3,4,5,6,7,24,21,15,25,26])),"/activities/verify":()=>t(()=>import(`./Verify-DPQC7shX.js`),__vite__mapDeps([27,1,2,3,4,5,6,7,24,21,15,25,28])),"/activities/blacklist":()=>t(()=>import(`./Blacklist-8S4WcWvG.js`),__vite__mapDeps([29,1,2,3,4,5,6,21,30])),"/ticket-grab-events":()=>t(()=>import(`./TicketGrabList-oSBMxW8V.js`),__vite__mapDeps([31,1,2,3,4,5,6,11,12,7,19,14,15,16,32])),"/ticket-grab-events/registrations":()=>t(()=>import(`./TicketGrabRegistrations-BokO_Cam.js`),__vite__mapDeps([33,1,2,3,4,5,6,7,24,21,15,25,34])),"/ticket-grab-events/verify":()=>t(()=>import(`./TicketGrabVerify-Cx-n1qVI.js`),__vite__mapDeps([35,1,2,3,4,5,6,24,21,15,25,36])),"/study-tours":()=>t(()=>import(`./StudyTourList-Y_f71jay.js`),__vite__mapDeps([37,1,2,3,4,5,6,11,12,20,13,15,16,38])),"/traffic":()=>t(()=>import(`./Monitor-C2hroSfb.js`),__vite__mapDeps([39,3,40])),"/traffic/leaderboard":()=>t(()=>import(`./Leaderboard-Be-eSj4D.js`),__vite__mapDeps([41,3,40])),"/traffic/alerts":()=>t(()=>import(`./Alerts-CqW6T0zj.js`),__vite__mapDeps([42,3,40])),"/hik-camera":()=>t(()=>import(`./HikPeopleCounting-CBUNTYP9.js`),__vite__mapDeps([43,1,2,3,4,5,6,8,44])),"/hik-camera/HikPeopleCounting":()=>t(()=>import(`./HikPeopleCounting-CBUNTYP9.js`),__vite__mapDeps([43,1,2,3,4,5,6,8,44])),"/stats":()=>t(()=>import(`./Overview-CuZTDpKK.js`),__vite__mapDeps([45,3,40])),"/stats/regions":()=>t(()=>import(`./Regions-Cke8JiAf.js`),__vite__mapDeps([46,3,40])),"/stats/categories":()=>t(()=>import(`./Categories-DZbquiOh.js`),__vite__mapDeps([47,3,40])),"/stats/exports":()=>t(()=>import(`./Exports-QN7yf3-M.js`),__vite__mapDeps([48,3,40])),"/system/admins":()=>t(()=>import(`./Admins-CQtBgZz1.js`),__vite__mapDeps([49,2,3,5,15])),"/system/roles":()=>t(()=>import(`./Roles-TmHer8rO.js`),__vite__mapDeps([50,1,2,3,4,5,6])),"/system/menus":()=>t(()=>import(`./Menus-BCf7vQay.js`),__vite__mapDeps([51,1,2,3,4,5,6,52])),"/system/audit-logs":()=>t(()=>import(`./AuditLogs-6YWgliIr.js`),__vite__mapDeps([53,1,2,3,4,5,6,21,15,54])),"/settings/wechat":()=>t(()=>import(`./Wechat-BC3aE54r.js`),__vite__mapDeps([55,3,40])),"/settings/map":()=>t(()=>import(`./Map-D-yGM9_G.js`),__vite__mapDeps([56,1,2,3,4,5,6])),"/settings/notifications":()=>t(()=>import(`./Notifications-l_sR49JT.js`),__vite__mapDeps([57,3,40])),"/settings/system-logs":()=>t(()=>import(`./SystemLogs-Bv6CIMrS.js`),__vite__mapDeps([58,1,2,3,4,5,6,21,59])),"/settings/dictionaries":()=>t(()=>import(`./Dictionaries-BRs1TkIf.js`),__vite__mapDeps([60,2,3,5])),"/settings/visit-stats":()=>t(()=>import(`./VisitStats-BtZz6pok.js`),__vite__mapDeps([61,2,3,5])),"/wechat-users":()=>t(()=>import(`./WechatUsers-CDjnv04a.js`),__vite__mapDeps([62,2,3,5,21,15]))};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-B4iGRml0.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-CoXt4MxT.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
Loading…
Reference in new issue