master
lion 2 weeks ago
parent 546a4800df
commit e6193ca49a

@ -81,6 +81,7 @@ class ActivityController extends Controller
]);
$data = $this->applyReservationTypeDefaults($data);
$this->assertOfflineMethodWhenNeeded($data, null);
$this->assertExternalUrlWhenOther($data, null);
$this->ensureVenuePermission($request, (int) $data['venue_id']);
@ -144,6 +145,7 @@ class ActivityController extends Controller
]);
$data = $this->applyReservationTypeDefaults($data, $activity);
$this->assertOfflineMethodWhenNeeded($data, $activity);
$this->assertExternalUrlWhenOther($data, $activity);
if (array_key_exists('venue_id', $data)) {
$this->ensureVenuePermission($request, (int) $data['venue_id']);
@ -310,6 +312,20 @@ class ActivityController extends Controller
}
}
/**
* @param array<string, mixed> $data
*/
private function assertExternalUrlWhenOther(array $data, ?Activity $existing = null): void
{
if (($data['reservation_type'] ?? '') !== Activity::RESERVATION_TYPE_OTHER) {
return;
}
$url = trim((string) ($data['external_url'] ?? $existing?->external_url ?? ''));
if ($url === '') {
throw ValidationException::withMessages(['external_url' => ['选择「外链跳转预约」时请填写外链地址']]);
}
}
private function restrictByVenue(Request $request, $query): void
{
$user = $request->user();

@ -327,7 +327,7 @@ class H5ContentController extends Controller
{
return match ((string) ($type ?? Activity::RESERVATION_TYPE_ONLINE)) {
Activity::RESERVATION_TYPE_OFFLINE => '线下预约',
Activity::RESERVATION_TYPE_OTHER => '其他预约',
Activity::RESERVATION_TYPE_OTHER => '外链跳转预约',
default => '线上预约',
};
}

@ -1 +0,0 @@
.activity-address-coord-row[data-v-070d9168]{flex-wrap:wrap;align-items:center;gap:12px;width:100%;display:flex}.activity-address-coord-row__address[data-v-070d9168]{flex:45%;min-width:320px;max-width:100%}.activity-address-coord-row__lng[data-v-070d9168],.activity-address-coord-row__lat[data-v-070d9168]{flex:180px;width:200px;min-width:180px}.activity-address-coord-row__map[data-v-070d9168]{flex-shrink:0}.activity-cover-carousel-wrap[data-v-070d9168]{flex-wrap:wrap;align-items:flex-start;gap:20px;width:100%;display:flex}.activity-cover-carousel-row__col[data-v-070d9168]{flex:320px;min-width:min(100%,320px)}.activity-cover-carousel-row__sub[data-v-070d9168]{color:var(--color-text-1);margin-bottom:8px;font-weight:500}.activity-cover-thumb[data-v-070d9168]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-grid[data-v-070d9168]{flex-wrap:wrap;align-items:flex-start;gap:12px;width:100%;display:flex}.activity-gallery-item[data-v-070d9168]{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.activity-gallery-thumb[data-v-070d9168]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-thumb--video[data-v-070d9168]{display:block}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.activity-address-coord-row[data-v-08e02344]{flex-wrap:wrap;align-items:center;gap:12px;width:100%;display:flex}.activity-address-coord-row__address[data-v-08e02344]{flex:45%;min-width:320px;max-width:100%}.activity-address-coord-row__lng[data-v-08e02344],.activity-address-coord-row__lat[data-v-08e02344]{flex:180px;width:200px;min-width:180px}.activity-address-coord-row__map[data-v-08e02344]{flex-shrink:0}.activity-cover-carousel-wrap[data-v-08e02344]{flex-wrap:wrap;align-items:flex-start;gap:20px;width:100%;display:flex}.activity-cover-carousel-row__col[data-v-08e02344]{flex:320px;min-width:min(100%,320px)}.activity-cover-carousel-row__sub[data-v-08e02344]{color:var(--color-text-1);margin-bottom:8px;font-weight:500}.activity-cover-thumb[data-v-08e02344]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-grid[data-v-08e02344]{flex-wrap:wrap;align-items:flex-start;gap:12px;width:100%;display:flex}.activity-gallery-item[data-v-08e02344]{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.activity-gallery-thumb[data-v-08e02344]{object-fit:cover;cursor:zoom-in;border:1px solid #e5e6eb;border-radius:4px;width:120px;height:70px}.activity-gallery-thumb--video[data-v-08e02344]{display:block}

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,ut as u,v as d,y as f}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as p}from"./index-J28I0Xns.js";import{t as m}from"./datetime-3T8f3S0H.js";import{t as h}from"./listTable-Dphyh0Bn.js";var g=f({__name:`AuditLogs`,setup(f){let g=s(!1),_=s([]),v=l({current:1,pageSize:20,total:0}),y=l({keyword:``,method:`all`,status_code:void 0,dateRange:[]});async function b(){g.value=!0;try{let{data:e}=await p.get(`/audit-logs`,{params:{keyword:y.keyword||void 0,method:y.method,status_code:y.status_code||void 0,start_date:y.dateRange?.[0]||void 0,end_date:y.dateRange?.[1]||void 0,page:v.current,page_size:v.pageSize}});_.value=e.data,v.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载操作日志失败`)}finally{g.value=!1}}function x(){v.current=1,b()}function S(e){v.current=e,b()}function C(e){return e===`super_admin`?`超级管理员`:e===`venue_admin`?`场馆管理员`:`-`}return n(b),(e,n)=>{let s=r(`a-input`),l=r(`a-option`),f=r(`a-select`),p=r(`a-input-number`),w=r(`a-range-picker`),T=r(`a-button`),E=r(`a-space`),D=r(`a-table-column`),O=r(`a-typography-paragraph`),k=r(`a-table`),A=r(`a-card`);return t(),o(A,{title:`用户与权限 / 操作日志`},{default:i(()=>[d(E,{wrap:``,size:12,style:{"margin-bottom":`12px`}},{default:i(()=>[d(s,{modelValue:y.keyword,"onUpdate:modelValue":n[0]||=e=>y.keyword=e,placeholder:`操作人/路径/动作`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),d(f,{modelValue:y.method,"onUpdate:modelValue":n[1]||=e=>y.method=e,style:{width:`120px`}},{default:i(()=>[d(l,{value:`all`},{default:i(()=>[...n[4]||=[a(`全部方法`,-1)]]),_:1}),d(l,{value:`POST`},{default:i(()=>[...n[5]||=[a(`POST`,-1)]]),_:1}),d(l,{value:`PUT`},{default:i(()=>[...n[6]||=[a(`PUT`,-1)]]),_:1}),d(l,{value:`PATCH`},{default:i(()=>[...n[7]||=[a(`PATCH`,-1)]]),_:1}),d(l,{value:`DELETE`},{default:i(()=>[...n[8]||=[a(`DELETE`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(p,{modelValue:y.status_code,"onUpdate:modelValue":n[2]||=e=>y.status_code=e,min:100,max:599,placeholder:`状态码`,style:{width:`120px`}},null,8,[`modelValue`]),d(w,{modelValue:y.dateRange,"onUpdate:modelValue":n[3]||=e=>y.dateRange=e,style:{width:`260px`}},null,8,[`modelValue`]),d(T,{type:`primary`,onClick:x},{default:i(()=>[...n[9]||=[a(`查询`,-1)]]),_:1}),d(T,{onClick:b},{default:i(()=>[...n[10]||=[a(`刷新`,-1)]]),_:1})]),_:1}),d(k,{class:`list-data-table`,scroll:{x:u(h)},data:_.value,loading:g.value,"row-key":`id`,pagination:{current:v.current,pageSize:v.pageSize,total:v.total,showTotal:!0},onPageChange:S},{columns:i(()=>[d(D,{title:`ID`,"data-index":`id`,width:88}),d(D,{title:`操作人`,"data-index":`username`,width:140,ellipsis:!0,tooltip:!0}),d(D,{title:`角色`,width:120},{cell:i(({record:e})=>[a(c(C(e.role)),1)]),_:1}),d(D,{title:`方法`,"data-index":`method`,width:90}),d(D,{title:`路径`,"data-index":`path`,width:260,ellipsis:!0,tooltip:!0}),d(D,{title:`动作`,"data-index":`action`,width:220,ellipsis:!0,tooltip:!0}),d(D,{title:`状态码`,"data-index":`status_code`,width:100}),d(D,{title:`IP`,"data-index":`ip`,width:140,ellipsis:!0,tooltip:!0}),d(D,{title:`时间`,width:190},{cell:i(({record:e})=>[a(c(u(m)(e.created_at)),1)]),_:1}),d(D,{title:`请求参数`,"min-width":260},{cell:i(({record:e})=>[d(O,{ellipsis:{rows:2}},{default:i(()=>[a(c(e.request_payload?JSON.stringify(e.request_payload):`-`),1)]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})}}});export{g 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,ut as u,v as d,y as f}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as p}from"./index-u9L2EJ4o.js";import{t as m}from"./datetime-3T8f3S0H.js";import{t as h}from"./listTable-Dphyh0Bn.js";var g=f({__name:`AuditLogs`,setup(f){let g=s(!1),_=s([]),v=l({current:1,pageSize:20,total:0}),y=l({keyword:``,method:`all`,status_code:void 0,dateRange:[]});async function b(){g.value=!0;try{let{data:e}=await p.get(`/audit-logs`,{params:{keyword:y.keyword||void 0,method:y.method,status_code:y.status_code||void 0,start_date:y.dateRange?.[0]||void 0,end_date:y.dateRange?.[1]||void 0,page:v.current,page_size:v.pageSize}});_.value=e.data,v.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载操作日志失败`)}finally{g.value=!1}}function x(){v.current=1,b()}function S(e){v.current=e,b()}function C(e){return e===`super_admin`?`超级管理员`:e===`venue_admin`?`场馆管理员`:`-`}return n(b),(e,n)=>{let s=r(`a-input`),l=r(`a-option`),f=r(`a-select`),p=r(`a-input-number`),w=r(`a-range-picker`),T=r(`a-button`),E=r(`a-space`),D=r(`a-table-column`),O=r(`a-typography-paragraph`),k=r(`a-table`),A=r(`a-card`);return t(),o(A,{title:`用户与权限 / 操作日志`},{default:i(()=>[d(E,{wrap:``,size:12,style:{"margin-bottom":`12px`}},{default:i(()=>[d(s,{modelValue:y.keyword,"onUpdate:modelValue":n[0]||=e=>y.keyword=e,placeholder:`操作人/路径/动作`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),d(f,{modelValue:y.method,"onUpdate:modelValue":n[1]||=e=>y.method=e,style:{width:`120px`}},{default:i(()=>[d(l,{value:`all`},{default:i(()=>[...n[4]||=[a(`全部方法`,-1)]]),_:1}),d(l,{value:`POST`},{default:i(()=>[...n[5]||=[a(`POST`,-1)]]),_:1}),d(l,{value:`PUT`},{default:i(()=>[...n[6]||=[a(`PUT`,-1)]]),_:1}),d(l,{value:`PATCH`},{default:i(()=>[...n[7]||=[a(`PATCH`,-1)]]),_:1}),d(l,{value:`DELETE`},{default:i(()=>[...n[8]||=[a(`DELETE`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(p,{modelValue:y.status_code,"onUpdate:modelValue":n[2]||=e=>y.status_code=e,min:100,max:599,placeholder:`状态码`,style:{width:`120px`}},null,8,[`modelValue`]),d(w,{modelValue:y.dateRange,"onUpdate:modelValue":n[3]||=e=>y.dateRange=e,style:{width:`260px`}},null,8,[`modelValue`]),d(T,{type:`primary`,onClick:x},{default:i(()=>[...n[9]||=[a(`查询`,-1)]]),_:1}),d(T,{onClick:b},{default:i(()=>[...n[10]||=[a(`刷新`,-1)]]),_:1})]),_:1}),d(k,{class:`list-data-table`,scroll:{x:u(h)},data:_.value,loading:g.value,"row-key":`id`,pagination:{current:v.current,pageSize:v.pageSize,total:v.total,showTotal:!0},onPageChange:S},{columns:i(()=>[d(D,{title:`ID`,"data-index":`id`,width:88}),d(D,{title:`操作人`,"data-index":`username`,width:140,ellipsis:!0,tooltip:!0}),d(D,{title:`角色`,width:120},{cell:i(({record:e})=>[a(c(C(e.role)),1)]),_:1}),d(D,{title:`方法`,"data-index":`method`,width:90}),d(D,{title:`路径`,"data-index":`path`,width:260,ellipsis:!0,tooltip:!0}),d(D,{title:`动作`,"data-index":`action`,width:220,ellipsis:!0,tooltip:!0}),d(D,{title:`状态码`,"data-index":`status_code`,width:100}),d(D,{title:`IP`,"data-index":`ip`,width:140,ellipsis:!0,tooltip:!0}),d(D,{title:`时间`,width:190},{cell:i(({record:e})=>[a(c(u(m)(e.created_at)),1)]),_:1}),d(D,{title:`请求参数`,"min-width":260},{cell:i(({record:e})=>[d(O,{ellipsis:{rows:2}},{default:i(()=>[a(c(e.request_payload?JSON.stringify(e.request_payload):`-`),1)]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})}}});export{g as default};

@ -1 +1 @@
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{i as u,n as d,t as f}from"./index-J28I0Xns.js";var p={style:{height:`100vh`,display:`grid`,"place-items":`center`,background:`var(--color-fill-2)`}},m=l({__name:`Login`,setup(l){let m=u(),h=a(!1),g=o({username:`admin`,password:`admin123456`});async function _(){h.value=!0;try{let{data:t}=await d.post(`/auth/login`,g);localStorage.setItem(f,t.token),e.success(`登录成功`),m.replace(`/dashboard`)}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{h.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`),m=n(`a-card`);return t(),s(`div`,p,[c(m,{title:`苏州市科普场馆地图管理后台登录`,style:{width:`380px`}},{default:r(()=>[c(f,{model:g,layout:`vertical`,onSubmitSuccess:_},{default:r(()=>[c(l,{field:`username`,label:`用户名`},{default:r(()=>[c(o,{modelValue:g.username,"onUpdate:modelValue":a[0]||=e=>g.username=e,placeholder:`请输入用户名`},null,8,[`modelValue`])]),_:1}),c(l,{field:`password`,label:`密码`},{default:r(()=>[c(u,{modelValue:g.password,"onUpdate:modelValue":a[1]||=e=>g.password=e,placeholder:`请输入密码`},null,8,[`modelValue`])]),_:1}),c(d,{type:`primary`,long:``,loading:h.value,onClick:_},{default:r(()=>[...a[2]||=[i(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`])]),_:1})])}}});export{m as default};
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{i as u,n as d,t as f}from"./index-u9L2EJ4o.js";var p={style:{height:`100vh`,display:`grid`,"place-items":`center`,background:`var(--color-fill-2)`}},m=l({__name:`Login`,setup(l){let m=u(),h=a(!1),g=o({username:`admin`,password:`admin123456`});async function _(){h.value=!0;try{let{data:t}=await d.post(`/auth/login`,g);localStorage.setItem(f,t.token),e.success(`登录成功`),m.replace(`/dashboard`)}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{h.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`),m=n(`a-card`);return t(),s(`div`,p,[c(m,{title:`苏州市科普场馆地图管理后台登录`,style:{width:`380px`}},{default:r(()=>[c(f,{model:g,layout:`vertical`,onSubmitSuccess:_},{default:r(()=>[c(l,{field:`username`,label:`用户名`},{default:r(()=>[c(o,{modelValue:g.username,"onUpdate:modelValue":a[0]||=e=>g.username=e,placeholder:`请输入用户名`},null,8,[`modelValue`])]),_:1}),c(l,{field:`password`,label:`密码`},{default:r(()=>[c(u,{modelValue:g.password,"onUpdate:modelValue":a[1]||=e=>g.password=e,placeholder:`请输入密码`},null,8,[`modelValue`])]),_:1}),c(d,{type:`primary`,long:``,loading:h.value,onClick:_},{default:r(()=>[...a[2]||=[i(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`])]),_:1})])}}});export{m 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{o}from"./index-J28I0Xns.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{o}from"./index-u9L2EJ4o.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

@ -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,f as s,i as c,it as l,kt as u,l as d,p as f,v as p,y as m,z as h}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as g}from"./index-J28I0Xns.js";var _=m({__name:`Roles`,setup(m){let _=l(!1),v=l(!1),y=l(!1),b=l([]),x=l([]),S=l(`super_admin`),C=l([]),w=d(()=>{let e=new Map;b.value.forEach(t=>e.set(t.id,{key:t.id,title:t.name,children:[]}));let t=[];return b.value.forEach(n=>{let r=e.get(n.id);n.parent_id>0&&e.has(n.parent_id)?e.get(n.parent_id).children.push(r):t.push(r)}),t}),T=d(()=>x.value.find(e=>e.role===S.value));async function E(){let{data:e}=await g.get(`/me`);y.value=e?.role===`super_admin`}async function D(){_.value=!0;try{let{data:e}=await g.get(`/role-menu-permissions`);b.value=e.menus||[],x.value=e.roles||[];let t=x.value[0];t&&(S.value=t.role,C.value=[...t.menu_ids||[]])}catch(t){e.error(t?.response?.data?.message??`加载角色菜单权限失败`)}finally{_.value=!1}}function O(e){S.value=e,C.value=[...x.value.find(t=>t.role===e)?.menu_ids||[]]}function k(e){C.value=e.map(e=>Number(e))}async function A(){if(y.value){v.value=!0;try{await g.put(`/role-menu-permissions/${S.value}`,{menu_ids:C.value});let t=x.value.find(e=>e.role===S.value);t&&(t.menu_ids=[...C.value]),e.success(`角色菜单权限保存成功`)}catch(t){e.error(t?.response?.data?.message??`保存失败`)}finally{v.value=!1}}}return n(async()=>{await E(),await D()}),(e,n)=>{let l=r(`a-alert`),d=r(`a-button`),m=r(`a-space`),g=r(`a-card`),b=r(`a-tree`),E=r(`a-spin`);return t(),o(g,{title:`用户与权限 / 角色管理(菜单权限)`},{default:i(()=>[p(l,{style:{"margin-bottom":`12px`}},{default:i(()=>[...n[0]||=[a(` 当前仅控制“每个角色可查看哪些菜单”;接口级细粒度权限后续可继续扩展。 `,-1)]]),_:1}),y.value?s(``,!0):(t(),o(l,{key:0,type:`info`,style:{"margin-bottom":`12px`}},{default:i(()=>[...n[1]||=[a(` 当前为只读模式,仅超级管理员可以修改角色菜单权限。 `,-1)]]),_:1})),p(E,{loading:_.value},{default:i(()=>[p(m,{align:`start`,fill:``},{default:i(()=>[p(g,{title:`角色列表`,size:`small`,style:{width:`220px`}},{default:i(()=>[p(m,{direction:`vertical`,fill:``},{default:i(()=>[(t(!0),f(c,null,h(x.value,e=>(t(),o(d,{key:e.role,type:S.value===e.role?`primary`:`secondary`,long:``,onClick:t=>O(e.role)},{default:i(()=>[a(u(e.label),1)]),_:2},1032,[`type`,`onClick`]))),128))]),_:1})]),_:1}),p(g,{title:`${T.value?.label||``} - 菜单权限`,size:`small`,style:{flex:`1`}},{extra:i(()=>[p(d,{type:`primary`,disabled:!y.value,loading:v.value,onClick:A},{default:i(()=>[...n[2]||=[a(`保存当前角色`,-1)]]),_:1},8,[`disabled`,`loading`])]),default:i(()=>[p(b,{checkable:``,"block-node":``,data:w.value,"checked-keys":C.value,"default-expand-all":!0,onCheck:k},null,8,[`data`,`checked-keys`])]),_:1},8,[`title`])]),_:1})]),_:1},8,[`loading`])]),_:1})}}});export{_ 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,f as s,i as c,it as l,kt as u,l as d,p as f,v as p,y as m,z as h}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as g}from"./index-u9L2EJ4o.js";var _=m({__name:`Roles`,setup(m){let _=l(!1),v=l(!1),y=l(!1),b=l([]),x=l([]),S=l(`super_admin`),C=l([]),w=d(()=>{let e=new Map;b.value.forEach(t=>e.set(t.id,{key:t.id,title:t.name,children:[]}));let t=[];return b.value.forEach(n=>{let r=e.get(n.id);n.parent_id>0&&e.has(n.parent_id)?e.get(n.parent_id).children.push(r):t.push(r)}),t}),T=d(()=>x.value.find(e=>e.role===S.value));async function E(){let{data:e}=await g.get(`/me`);y.value=e?.role===`super_admin`}async function D(){_.value=!0;try{let{data:e}=await g.get(`/role-menu-permissions`);b.value=e.menus||[],x.value=e.roles||[];let t=x.value[0];t&&(S.value=t.role,C.value=[...t.menu_ids||[]])}catch(t){e.error(t?.response?.data?.message??`加载角色菜单权限失败`)}finally{_.value=!1}}function O(e){S.value=e,C.value=[...x.value.find(t=>t.role===e)?.menu_ids||[]]}function k(e){C.value=e.map(e=>Number(e))}async function A(){if(y.value){v.value=!0;try{await g.put(`/role-menu-permissions/${S.value}`,{menu_ids:C.value});let t=x.value.find(e=>e.role===S.value);t&&(t.menu_ids=[...C.value]),e.success(`角色菜单权限保存成功`)}catch(t){e.error(t?.response?.data?.message??`保存失败`)}finally{v.value=!1}}}return n(async()=>{await E(),await D()}),(e,n)=>{let l=r(`a-alert`),d=r(`a-button`),m=r(`a-space`),g=r(`a-card`),b=r(`a-tree`),E=r(`a-spin`);return t(),o(g,{title:`用户与权限 / 角色管理(菜单权限)`},{default:i(()=>[p(l,{style:{"margin-bottom":`12px`}},{default:i(()=>[...n[0]||=[a(` 当前仅控制“每个角色可查看哪些菜单”;接口级细粒度权限后续可继续扩展。 `,-1)]]),_:1}),y.value?s(``,!0):(t(),o(l,{key:0,type:`info`,style:{"margin-bottom":`12px`}},{default:i(()=>[...n[1]||=[a(` 当前为只读模式,仅超级管理员可以修改角色菜单权限。 `,-1)]]),_:1})),p(E,{loading:_.value},{default:i(()=>[p(m,{align:`start`,fill:``},{default:i(()=>[p(g,{title:`角色列表`,size:`small`,style:{width:`220px`}},{default:i(()=>[p(m,{direction:`vertical`,fill:``},{default:i(()=>[(t(!0),f(c,null,h(x.value,e=>(t(),o(d,{key:e.role,type:S.value===e.role?`primary`:`secondary`,long:``,onClick:t=>O(e.role)},{default:i(()=>[a(u(e.label),1)]),_:2},1032,[`type`,`onClick`]))),128))]),_:1})]),_:1}),p(g,{title:`${T.value?.label||``} - 菜单权限`,size:`small`,style:{flex:`1`}},{extra:i(()=>[p(d,{type:`primary`,disabled:!y.value,loading:v.value,onClick:A},{default:i(()=>[...n[2]||=[a(`保存当前角色`,-1)]]),_:1},8,[`disabled`,`loading`])]),default:i(()=>[p(b,{checkable:``,"block-node":``,data:w.value,"checked-keys":C.value,"default-expand-all":!0,onCheck:k},null,8,[`data`,`checked-keys`])]),_:1},8,[`title`])]),_:1})]),_:1},8,[`loading`])]),_:1})}}});export{_ 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,ut as u,v as d,y as f}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as p}from"./index-J28I0Xns.js";import{n as m,t as h}from"./datetime-3T8f3S0H.js";import{t as g}from"./listTable-Dphyh0Bn.js";import{t as _}from"./bookingType-CGtYk0HZ.js";import{t as v}from"./reservationStatus-DfEgE0qr.js";var y=f({__name:`TicketGrabRegistrations`,setup(f){let y=s(!1),b=s(`all`),x=s(``),S=s([]),C=l({current:1,pageSize:10,total:0}),w=s([]);async function T(){y.value=!0;try{let{data:e}=await p.get(`/activity-registrations`,{params:{reservation_kind:`ticket_grab`,status:b.value,keyword:x.value||void 0,start_date:S.value?.[0]||void 0,end_date:S.value?.[1]||void 0,page:C.current,page_size:C.pageSize}});w.value=e.data,C.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载失败`)}finally{y.value=!1}}function E(e){C.current=e,T()}function D(e){C.pageSize=e,C.current=1,T()}return n(T),(e,n)=>{let s=r(`a-radio`),l=r(`a-radio-group`),f=r(`a-input`),p=r(`a-range-picker`),O=r(`a-button`),k=r(`a-space`),A=r(`a-table-column`),j=r(`a-tag`),M=r(`a-table`),N=r(`a-card`);return t(),o(N,{title:`抢票管理 / 抢票报名`,bordered:!1},{default:i(()=>[d(k,{direction:`vertical`,fill:``},{default:i(()=>[d(k,{wrap:``,size:12},{default:i(()=>[d(l,{modelValue:b.value,"onUpdate:modelValue":n[0]||=e=>b.value=e,type:`button`,size:`small`,onChange:T},{default:i(()=>[d(s,{value:`all`},{default:i(()=>[...n[5]||=[a(`全部`,-1)]]),_:1}),d(s,{value:`pending`},{default:i(()=>[...n[6]||=[a(`待核销`,-1)]]),_:1}),d(s,{value:`verified`},{default:i(()=>[...n[7]||=[a(`已核销`,-1)]]),_:1}),d(s,{value:`cancelled`},{default:i(()=>[...n[8]||=[a(`已取消`,-1)]]),_:1}),d(s,{value:`expired`},{default:i(()=>[...n[9]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(f,{modelValue:x.value,"onUpdate:modelValue":n[1]||=e=>x.value=e,placeholder:`姓名 / 身份证 / token`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),d(p,{modelValue:S.value,"onUpdate:modelValue":n[2]||=e=>S.value=e,style:{width:`260px`}},null,8,[`modelValue`]),d(O,{type:`primary`,onClick:n[3]||=()=>{C.current=1,T()}},{default:i(()=>[...n[10]||=[a(` 查询 `,-1)]]),_:1}),d(O,{onClick:n[4]||=()=>{b.value=`all`,x.value=``,S.value=[],C.current=1,T()}},{default:i(()=>[...n[11]||=[a(` 重置 `,-1)]]),_:1}),d(O,{onClick:T},{default:i(()=>[...n[12]||=[a(`刷新`,-1)]]),_:1})]),_:1}),d(M,{scroll:{x:u(g)},data:w.value,loading:y.value,"row-key":`id`,pagination:{current:C.current,pageSize:C.pageSize,total:C.total,showTotal:!0,onChange:E,onPageSizeChange:D}},{columns:i(()=>[d(A,{title:`ID`,"data-index":`id`,width:80}),d(A,{title:`抢票活动`,width:200,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.ticket_grab_event?.title??`-`),1)]),_:1}),d(A,{title:`场馆`,width:160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.venue?.name??`-`),1)]),_:1}),d(A,{title:`姓名`,"data-index":`visitor_name`,width:100}),d(A,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),d(A,{title:`入馆日`,width:120},{cell:i(({record:e})=>[a(c(e.entry_date?u(m)(String(e.entry_date)):`-`),1)]),_:1}),d(A,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(c(u(_)(e.booking_type,e.ticket_count)),1)]),_:1}),d(A,{title:`票数`,width:80},{cell:i(({record:e})=>[a(c(e.ticket_count??1),1)]),_:1}),d(A,{title:`状态`,width:100},{cell:i(({record:e})=>[d(j,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:`gray`},{default:i(()=>[a(c(u(v)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),d(A,{title:`下单时间`,width:170},{cell:i(({record:e})=>[a(c(u(h)(e.created_at)),1)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})]),_:1})}}});export{y 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,ut as u,v as d,y as f}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as p}from"./index-u9L2EJ4o.js";import{n as m,t as h}from"./datetime-3T8f3S0H.js";import{t as g}from"./listTable-Dphyh0Bn.js";import{t as _}from"./bookingType-CGtYk0HZ.js";import{t as v}from"./reservationStatus-DfEgE0qr.js";var y=f({__name:`TicketGrabRegistrations`,setup(f){let y=s(!1),b=s(`all`),x=s(``),S=s([]),C=l({current:1,pageSize:10,total:0}),w=s([]);async function T(){y.value=!0;try{let{data:e}=await p.get(`/activity-registrations`,{params:{reservation_kind:`ticket_grab`,status:b.value,keyword:x.value||void 0,start_date:S.value?.[0]||void 0,end_date:S.value?.[1]||void 0,page:C.current,page_size:C.pageSize}});w.value=e.data,C.total=e.total}catch(t){e.error(t?.response?.data?.message??`加载失败`)}finally{y.value=!1}}function E(e){C.current=e,T()}function D(e){C.pageSize=e,C.current=1,T()}return n(T),(e,n)=>{let s=r(`a-radio`),l=r(`a-radio-group`),f=r(`a-input`),p=r(`a-range-picker`),O=r(`a-button`),k=r(`a-space`),A=r(`a-table-column`),j=r(`a-tag`),M=r(`a-table`),N=r(`a-card`);return t(),o(N,{title:`抢票管理 / 抢票报名`,bordered:!1},{default:i(()=>[d(k,{direction:`vertical`,fill:``},{default:i(()=>[d(k,{wrap:``,size:12},{default:i(()=>[d(l,{modelValue:b.value,"onUpdate:modelValue":n[0]||=e=>b.value=e,type:`button`,size:`small`,onChange:T},{default:i(()=>[d(s,{value:`all`},{default:i(()=>[...n[5]||=[a(`全部`,-1)]]),_:1}),d(s,{value:`pending`},{default:i(()=>[...n[6]||=[a(`待核销`,-1)]]),_:1}),d(s,{value:`verified`},{default:i(()=>[...n[7]||=[a(`已核销`,-1)]]),_:1}),d(s,{value:`cancelled`},{default:i(()=>[...n[8]||=[a(`已取消`,-1)]]),_:1}),d(s,{value:`expired`},{default:i(()=>[...n[9]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(f,{modelValue:x.value,"onUpdate:modelValue":n[1]||=e=>x.value=e,placeholder:`姓名 / 身份证 / token`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),d(p,{modelValue:S.value,"onUpdate:modelValue":n[2]||=e=>S.value=e,style:{width:`260px`}},null,8,[`modelValue`]),d(O,{type:`primary`,onClick:n[3]||=()=>{C.current=1,T()}},{default:i(()=>[...n[10]||=[a(` 查询 `,-1)]]),_:1}),d(O,{onClick:n[4]||=()=>{b.value=`all`,x.value=``,S.value=[],C.current=1,T()}},{default:i(()=>[...n[11]||=[a(` 重置 `,-1)]]),_:1}),d(O,{onClick:T},{default:i(()=>[...n[12]||=[a(`刷新`,-1)]]),_:1})]),_:1}),d(M,{scroll:{x:u(g)},data:w.value,loading:y.value,"row-key":`id`,pagination:{current:C.current,pageSize:C.pageSize,total:C.total,showTotal:!0,onChange:E,onPageSizeChange:D}},{columns:i(()=>[d(A,{title:`ID`,"data-index":`id`,width:80}),d(A,{title:`抢票活动`,width:200,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.ticket_grab_event?.title??`-`),1)]),_:1}),d(A,{title:`场馆`,width:160,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.venue?.name??`-`),1)]),_:1}),d(A,{title:`姓名`,"data-index":`visitor_name`,width:100}),d(A,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),d(A,{title:`入馆日`,width:120},{cell:i(({record:e})=>[a(c(e.entry_date?u(m)(String(e.entry_date)):`-`),1)]),_:1}),d(A,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(c(u(_)(e.booking_type,e.ticket_count)),1)]),_:1}),d(A,{title:`票数`,width:80},{cell:i(({record:e})=>[a(c(e.ticket_count??1),1)]),_:1}),d(A,{title:`状态`,width:100},{cell:i(({record:e})=>[d(j,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:`gray`},{default:i(()=>[a(c(u(v)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),d(A,{title:`下单时间`,width:170},{cell:i(({record:e})=>[a(c(u(h)(e.created_at)),1)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1})]),_:1})}}});export{y 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,u as l,ut as u,v as d,y as f}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as p,o as m}from"./index-J28I0Xns.js";import{n as h,t as g}from"./datetime-3T8f3S0H.js";import{t as _}from"./listTable-Dphyh0Bn.js";import{t as v}from"./bookingType-CGtYk0HZ.js";import{t as y}from"./reservationStatus-DfEgE0qr.js";var b={class:`verify-list-toolbar`},x=m(f({__name:`TicketGrabVerify`,setup(f){let m=s(!1),x=s([]),S=s(``),C=s(!1),w=s(`all`),T=s(``),E=s([]);async function D(){m.value=!0;try{let e={status:w.value,keyword:T.value||void 0,reservation_kind:`ticket_grab`};E.value?.length===2&&(e.start_date=E.value[0],e.end_date=E.value[1],e.date_field=`entry_date`);let{data:t}=await p.get(`/reservations`,{params:e});x.value=t}catch(t){e.error(t?.response?.data?.message??`加载预约列表失败`)}finally{m.value=!1}}function O(){D()}function k(){w.value=`all`,T.value=``,E.value=[],D()}async function A(){if(!S.value){e.warning(`请输入二维码 token`);return}C.value=!0;try{await p.post(`/reservations/verify`,{qr_token:S.value}),e.success(`核销成功`),S.value=``,await D()}catch(t){e.error(t?.response?.data?.message??`核销失败`)}finally{C.value=!1}}return n(D),(e,n)=>{let s=r(`a-alert`),f=r(`a-input`),p=r(`a-button`),j=r(`a-space`),M=r(`a-radio`),N=r(`a-radio-group`),P=r(`a-range-picker`),F=r(`a-table-column`),I=r(`a-tag`),L=r(`a-table`),R=r(`a-card`);return t(),o(R,{title:`抢票管理 / 抢票核销`,bordered:!1},{default:i(()=>[d(j,{direction:`vertical`,fill:``},{default:i(()=>[d(s,null,{default:i(()=>[...n[4]||=[a(`抢票预约按「入馆日」为当天方可核销。输入二维码 token 核销。`,-1)]]),_:1}),d(j,{wrap:``,size:12},{default:i(()=>[d(f,{modelValue:S.value,"onUpdate:modelValue":n[0]||=e=>S.value=e,style:{width:`min(100%, 420px)`},placeholder:`请输入二维码 token`,"allow-clear":``},null,8,[`modelValue`]),d(p,{type:`primary`,loading:C.value,onClick:A},{default:i(()=>[...n[5]||=[a(`立即核销`,-1)]]),_:1},8,[`loading`])]),_:1}),l(`div`,b,[d(j,{wrap:``,size:12},{default:i(()=>[d(N,{modelValue:w.value,"onUpdate:modelValue":n[1]||=e=>w.value=e,type:`button`,size:`small`,onChange:D},{default:i(()=>[d(M,{value:`all`},{default:i(()=>[...n[6]||=[a(`全部`,-1)]]),_:1}),d(M,{value:`pending`},{default:i(()=>[...n[7]||=[a(`待核销`,-1)]]),_:1}),d(M,{value:`verified`},{default:i(()=>[...n[8]||=[a(`已核销`,-1)]]),_:1}),d(M,{value:`cancelled`},{default:i(()=>[...n[9]||=[a(`已取消`,-1)]]),_:1}),d(M,{value:`expired`},{default:i(()=>[...n[10]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(f,{modelValue:T.value,"onUpdate:modelValue":n[2]||=e=>T.value=e,placeholder:`姓名 / 手机 / 身份证 / token`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),d(P,{modelValue:E.value,"onUpdate:modelValue":n[3]||=e=>E.value=e,style:{width:`260px`}},null,8,[`modelValue`]),d(p,{type:`primary`,onClick:O},{default:i(()=>[...n[11]||=[a(`查询`,-1)]]),_:1}),d(p,{onClick:k},{default:i(()=>[...n[12]||=[a(`重置`,-1)]]),_:1}),d(p,{onClick:D},{default:i(()=>[...n[13]||=[a(`刷新列表`,-1)]]),_:1})]),_:1})]),d(L,{class:`list-data-table verify-table`,scroll:{x:u(_)},data:x.value,loading:m.value,"row-key":`id`,pagination:{pageSize:10,showTotal:!0}},{columns:i(()=>[d(F,{title:`ID`,"data-index":`id`,width:88}),d(F,{title:`预约场次`,width:220,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.ticket_grab_event?.title??`-`),1)]),_:1}),d(F,{title:`场馆`,width:180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.venue?.name??`-`),1)]),_:1}),d(F,{title:`姓名`,"data-index":`visitor_name`,width:100}),d(F,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),d(F,{title:`手机号`,"data-index":`visitor_phone`,width:120}),d(F,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(c(u(v)(e.booking_type,e.ticket_count)),1)]),_:1}),d(F,{title:`场次时间`,width:140},{cell:i(({record:e})=>[a(c(e.entry_date?u(h)(String(e.entry_date)):`-`),1)]),_:1}),d(F,{title:`状态`,width:100},{cell:i(({record:e})=>[d(I,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:e.status===`expired`?`orange`:`gray`},{default:i(()=>[a(c(u(y)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),d(F,{title:`预约时间`,width:175},{cell:i(({record:e})=>[a(c(u(g)(e.created_at)),1)]),_:1}),d(F,{title:`核销时间`,width:175},{cell:i(({record:e})=>[a(c(u(g)(e.verified_at)),1)]),_:1}),d(F,{title:`二维码 token`,"data-index":`qr_token`,width:200,ellipsis:!0,tooltip:!0,fixed:`right`})]),_:1},8,[`scroll`,`data`,`loading`])]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-2b27085e`]]);export{x 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,u as l,ut as u,v as d,y as f}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as p,o as m}from"./index-u9L2EJ4o.js";import{n as h,t as g}from"./datetime-3T8f3S0H.js";import{t as _}from"./listTable-Dphyh0Bn.js";import{t as v}from"./bookingType-CGtYk0HZ.js";import{t as y}from"./reservationStatus-DfEgE0qr.js";var b={class:`verify-list-toolbar`},x=m(f({__name:`TicketGrabVerify`,setup(f){let m=s(!1),x=s([]),S=s(``),C=s(!1),w=s(`all`),T=s(``),E=s([]);async function D(){m.value=!0;try{let e={status:w.value,keyword:T.value||void 0,reservation_kind:`ticket_grab`};E.value?.length===2&&(e.start_date=E.value[0],e.end_date=E.value[1],e.date_field=`entry_date`);let{data:t}=await p.get(`/reservations`,{params:e});x.value=t}catch(t){e.error(t?.response?.data?.message??`加载预约列表失败`)}finally{m.value=!1}}function O(){D()}function k(){w.value=`all`,T.value=``,E.value=[],D()}async function A(){if(!S.value){e.warning(`请输入二维码 token`);return}C.value=!0;try{await p.post(`/reservations/verify`,{qr_token:S.value}),e.success(`核销成功`),S.value=``,await D()}catch(t){e.error(t?.response?.data?.message??`核销失败`)}finally{C.value=!1}}return n(D),(e,n)=>{let s=r(`a-alert`),f=r(`a-input`),p=r(`a-button`),j=r(`a-space`),M=r(`a-radio`),N=r(`a-radio-group`),P=r(`a-range-picker`),F=r(`a-table-column`),I=r(`a-tag`),L=r(`a-table`),R=r(`a-card`);return t(),o(R,{title:`抢票管理 / 抢票核销`,bordered:!1},{default:i(()=>[d(j,{direction:`vertical`,fill:``},{default:i(()=>[d(s,null,{default:i(()=>[...n[4]||=[a(`抢票预约按「入馆日」为当天方可核销。输入二维码 token 核销。`,-1)]]),_:1}),d(j,{wrap:``,size:12},{default:i(()=>[d(f,{modelValue:S.value,"onUpdate:modelValue":n[0]||=e=>S.value=e,style:{width:`min(100%, 420px)`},placeholder:`请输入二维码 token`,"allow-clear":``},null,8,[`modelValue`]),d(p,{type:`primary`,loading:C.value,onClick:A},{default:i(()=>[...n[5]||=[a(`立即核销`,-1)]]),_:1},8,[`loading`])]),_:1}),l(`div`,b,[d(j,{wrap:``,size:12},{default:i(()=>[d(N,{modelValue:w.value,"onUpdate:modelValue":n[1]||=e=>w.value=e,type:`button`,size:`small`,onChange:D},{default:i(()=>[d(M,{value:`all`},{default:i(()=>[...n[6]||=[a(`全部`,-1)]]),_:1}),d(M,{value:`pending`},{default:i(()=>[...n[7]||=[a(`待核销`,-1)]]),_:1}),d(M,{value:`verified`},{default:i(()=>[...n[8]||=[a(`已核销`,-1)]]),_:1}),d(M,{value:`cancelled`},{default:i(()=>[...n[9]||=[a(`已取消`,-1)]]),_:1}),d(M,{value:`expired`},{default:i(()=>[...n[10]||=[a(`已过期`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(f,{modelValue:T.value,"onUpdate:modelValue":n[2]||=e=>T.value=e,placeholder:`姓名 / 手机 / 身份证 / token`,"allow-clear":``,style:{width:`240px`}},null,8,[`modelValue`]),d(P,{modelValue:E.value,"onUpdate:modelValue":n[3]||=e=>E.value=e,style:{width:`260px`}},null,8,[`modelValue`]),d(p,{type:`primary`,onClick:O},{default:i(()=>[...n[11]||=[a(`查询`,-1)]]),_:1}),d(p,{onClick:k},{default:i(()=>[...n[12]||=[a(`重置`,-1)]]),_:1}),d(p,{onClick:D},{default:i(()=>[...n[13]||=[a(`刷新列表`,-1)]]),_:1})]),_:1})]),d(L,{class:`list-data-table verify-table`,scroll:{x:u(_)},data:x.value,loading:m.value,"row-key":`id`,pagination:{pageSize:10,showTotal:!0}},{columns:i(()=>[d(F,{title:`ID`,"data-index":`id`,width:88}),d(F,{title:`预约场次`,width:220,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.ticket_grab_event?.title??`-`),1)]),_:1}),d(F,{title:`场馆`,width:180,ellipsis:!0,tooltip:!0},{cell:i(({record:e})=>[a(c(e.venue?.name??`-`),1)]),_:1}),d(F,{title:`姓名`,"data-index":`visitor_name`,width:100}),d(F,{title:`身份证`,"data-index":`id_card`,width:180,ellipsis:!0,tooltip:!0}),d(F,{title:`手机号`,"data-index":`visitor_phone`,width:120}),d(F,{title:`预约类型`,width:100},{cell:i(({record:e})=>[a(c(u(v)(e.booking_type,e.ticket_count)),1)]),_:1}),d(F,{title:`场次时间`,width:140},{cell:i(({record:e})=>[a(c(e.entry_date?u(h)(String(e.entry_date)):`-`),1)]),_:1}),d(F,{title:`状态`,width:100},{cell:i(({record:e})=>[d(I,{color:e.status===`verified`?`green`:e.status===`pending`?`arcoblue`:e.status===`expired`?`orange`:`gray`},{default:i(()=>[a(c(u(y)(e.status)),1)]),_:2},1032,[`color`])]),_:1}),d(F,{title:`预约时间`,width:175},{cell:i(({record:e})=>[a(c(u(g)(e.created_at)),1)]),_:1}),d(F,{title:`核销时间`,width:175},{cell:i(({record:e})=>[a(c(u(g)(e.verified_at)),1)]),_:1}),d(F,{title:`二维码 token`,"data-index":`qr_token`,width:200,ellipsis:!0,tooltip:!0,fixed:`right`})]),_:1},8,[`scroll`,`data`,`loading`])]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-2b27085e`]]);export{x 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,V as n,Y as r,_ as i,it as a,nt as o,p as s,u as c,v as l,y as u}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{i as d,o as f,r as p}from"./index-J28I0Xns.js";import{n as m,t as h}from"./h5Http-B_zh1Fd1.js";var g={class:`m-verify-page`},_={class:`m-verify-card`},v=f(u({__name:`VerifyLogin`,setup(u){let f=d(),v=p(),y=a(!1),b=o({username:``,password:``});function x(){return v.path.startsWith(`/m/`)?`/m/verify`:`/h5/verify/scan`}async function S(){y.value=!0;try{let{data:t}=await m.post(`/auth/login`,{...b,client:`h5_verify`});localStorage.setItem(h,t.token),localStorage.setItem(`${h}_saved_at`,String(Date.now())),e.success(`登录成功`),f.replace(x())}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{y.value=!1}}return(e,a)=>{let o=n(`a-input`),u=n(`a-form-item`),d=n(`a-input-password`),f=n(`a-button`),p=n(`a-form`);return t(),s(`div`,g,[a[4]||=c(`div`,{class:`m-verify-hero`},[c(`div`,{class:`m-verify-title`},`苏州市科普场馆地图`),c(`div`,{class:`m-verify-sub`},`移动端核销登录`)],-1),c(`div`,_,[l(p,{model:b,layout:`vertical`,onSubmitSuccess:S},{default:r(()=>[l(u,{label:`用户名`},{default:r(()=>[l(o,{modelValue:b.username,"onUpdate:modelValue":a[0]||=e=>b.username=e,placeholder:`请输入账号`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),l(u,{label:`密码`},{default:r(()=>[l(d,{modelValue:b.password,"onUpdate:modelValue":a[1]||=e=>b.password=e,placeholder:`请输入密码`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),l(f,{type:`primary`,long:``,size:`large`,loading:y.value,onClick:S},{default:r(()=>[...a[2]||=[i(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`]),a[3]||=c(`p`,{class:`m-verify-tip`},`登录状态将保持较长时间;若已失效会自动回到本页。`,-1)])])}}}),[[`__scopeId`,`data-v-b762ebdf`]]);export{v as default};
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,u as c,v as l,y as u}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{i as d,o as f,r as p}from"./index-u9L2EJ4o.js";import{n as m,t as h}from"./h5Http-B_zh1Fd1.js";var g={class:`m-verify-page`},_={class:`m-verify-card`},v=f(u({__name:`VerifyLogin`,setup(u){let f=d(),v=p(),y=a(!1),b=o({username:``,password:``});function x(){return v.path.startsWith(`/m/`)?`/m/verify`:`/h5/verify/scan`}async function S(){y.value=!0;try{let{data:t}=await m.post(`/auth/login`,{...b,client:`h5_verify`});localStorage.setItem(h,t.token),localStorage.setItem(`${h}_saved_at`,String(Date.now())),e.success(`登录成功`),f.replace(x())}catch(t){e.error(t?.response?.data?.message??`登录失败`)}finally{y.value=!1}}return(e,a)=>{let o=n(`a-input`),u=n(`a-form-item`),d=n(`a-input-password`),f=n(`a-button`),p=n(`a-form`);return t(),s(`div`,g,[a[4]||=c(`div`,{class:`m-verify-hero`},[c(`div`,{class:`m-verify-title`},`苏州市科普场馆地图`),c(`div`,{class:`m-verify-sub`},`移动端核销登录`)],-1),c(`div`,_,[l(p,{model:b,layout:`vertical`,onSubmitSuccess:S},{default:r(()=>[l(u,{label:`用户名`},{default:r(()=>[l(o,{modelValue:b.username,"onUpdate:modelValue":a[0]||=e=>b.username=e,placeholder:`请输入账号`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),l(u,{label:`密码`},{default:r(()=>[l(d,{modelValue:b.password,"onUpdate:modelValue":a[1]||=e=>b.password=e,placeholder:`请输入密码`,size:`large`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),l(f,{type:`primary`,long:``,size:`large`,loading:y.value,onClick:S},{default:r(()=>[...a[2]||=[i(`登录`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`model`]),a[3]||=c(`p`,{class:`m-verify-tip`},`登录状态将保持较长时间;若已失效会自动回到本页。`,-1)])])}}}),[[`__scopeId`,`data-v-b762ebdf`]]);export{v as default};

File diff suppressed because one or more lines are too long

@ -5,7 +5,7 @@
<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-J28I0Xns.js"></script>
<script type="module" crossorigin src="/admin/assets/index-u9L2EJ4o.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="stylesheet" crossorigin href="/admin/assets/index-2DjvV_uU.css">

@ -1 +1 @@
function n(n){if(!n)return"";const t=new Date(String(n));return Number.isNaN(t.getTime())?String(n).slice(0,10):new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function t(){return new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date)}function e(n,t){return n&&t?n<t?-1:n>t?1:0:0}function i(i,r){const u=t(),o=n(i),m=n(r);return o||m?o&&!m?e(u,o)<0?"not_started":"ongoing":!o&&m?e(u,m)>0?"ended":"ongoing":e(u,o)<0?"not_started":e(u,m)>0?"ended":"ongoing":"ongoing"}function r(n){return"not_started"===n?"未开始":"ended"===n?"已结束":"进行中"}function u(e){if(!e)return!1;const i=n(e);if(!i)return!1;return i<t()}function o(t,e){const i=t=>{if(!t)return null;const e=String(t).trim();if(/^\d{4}-\d{2}-\d{2}$/.test(e)){const n=e.split("-").map(Number);if(3!==n.length)return null;const[t,i,r]=n;return Number.isFinite(t)&&Number.isFinite(i)&&Number.isFinite(r)?{y:t,m:i,d:r}:null}const i=n(e);if(!i)return null;const r=i.split("-").map(Number);if(3!==r.length)return null;const[u,o,m]=r;return Number.isFinite(u)&&Number.isFinite(o)&&Number.isFinite(m)?{y:u,m:o,d:m}:null},r=i(t),u=i(e);return r||u?r&&!u?`${r.y}${r.m}${r.d}`:!r&&u?`${u.y}${u.m}${u.d}`:r&&u?r.y===u.y?`${r.y}${r.m}${r.d}日至${u.m}${u.d}`:`${r.y}${r.m}${r.d}日至${u.y}${u.m}${u.d}`:"日期待定":"日期待定"}export{r as a,i as c,o as f,u as i};
function n(n){if(!n)return"";const t=new Date(String(n));return Number.isNaN(t.getTime())?String(n).slice(0,10):new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function t(){return new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date)}function e(n,t){return n&&t?n<t?-1:n>t?1:0:0}function i(i,r){const u=t(),o=n(i),m=n(r);return o||m?o&&!m?e(u,o)<0?"not_started":"ongoing":!o&&m?e(u,m)>0?"ended":"ongoing":e(u,o)<0?"not_started":e(u,m)>0?"ended":"ongoing":"ongoing"}function r(n){return"not_started"===n?"未开始":"ended"===n?"已结束":"进行中"}function u(e){if(!e)return!1;const i=n(e);if(!i)return!1;return i<t()}function o(t,e){const i=t=>{if(!t)return null;const e=String(t).trim();if(/^\d{4}-\d{2}-\d{2}$/.test(e)){const n=e.split("-").map(Number);if(3!==n.length)return null;const[t,i,r]=n;return Number.isFinite(t)&&Number.isFinite(i)&&Number.isFinite(r)?{y:t,m:i,d:r}:null}const i=n(e);if(!i)return null;const r=i.split("-").map(Number);if(3!==r.length)return null;const[u,o,m]=r;return Number.isFinite(u)&&Number.isFinite(o)&&Number.isFinite(m)?{y:u,m:o,d:m}:null},r=i(t),u=i(e);return r||u?r&&!u?`${r.y}${r.m}${r.d}`:!r&&u?`${u.y}${u.m}${u.d}`:r&&u?r.y===u.y&&r.m===u.m&&r.d===u.d?`${r.y}${r.m}${r.d}`:r.y===u.y?`${r.y}${r.m}${r.d}日至${u.m}${u.d}`:`${r.y}${r.m}${r.d}日至${u.y}${u.m}${u.d}`:"日期待定":"日期待定"}export{r as a,i as c,o as f,u as i};

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

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{h as t,g as n,S as r,b as e}from"./index-BFl_R8j9.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-CPXWftEC.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};

@ -1 +1 @@
import{d as a,e as s,o as e,O as l,P as t,j as u,k as o,m as r,n,p as c,y as d,z as i,I as f,E as m,F as _,G as v,t as p,x as h,C as y,J as g,K as k,Q as b,R as x,L as w,_ as j}from"./index-BFl_R8j9.js";import{c as C}from"./content.DY-NPGy4.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),P=s("");async function q(){I.value=!0;try{j.value=await C({keyword:P.value.trim()||void 0})||[]}catch{j.value=[]}finally{I.value=!1}}function z(){q()}function E(){b().length>1?x({fail:()=>{w({url:"/pages/index/index"})}}):w({url:"/pages/index/index"})}return e(()=>{q()}),l(async()=>{try{await q()}finally{t()}}),(a,s)=>{const e=r,l=d,t=f,b=p;return n(),u(e,{class:"page"},{default:o(()=>[c(e,{class:"toolbar"},{default:o(()=>[c(e,{class:"toolbar-row"},{default:o(()=>[c(e,{class:"back-btn","hover-class":"back-btn--hover","hover-stay-time":"80",onClick:E},{default:o(()=>[c(e,{class:"back-btn__icon","aria-hidden":"true"})]),_:1}),c(e,{class:"search-wrap"},{default:o(()=>[c(l,{class:"search-icon-img",src:i(V),mode:"aspectFit"},null,8,["src"]),c(t,{modelValue:P.value,"onUpdate:modelValue":s[0]||(s[0]=a=>P.value=a),class:"search-input",placeholder:"搜索科普四季研学线路","placeholder-class":"ph","confirm-type":"search",onConfirm:z},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),c(e,{class:"section"},{default:o(()=>[(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:o(()=>[c(e,{class:"tour-img-wrap"},{default:o(()=>[c(l,{class:"tour-img",src:a.cover_image||i(F),mode:"aspectFill"},null,8,["src"])]),_:2},1024),c(e,{class:"tour-body"},{default:o(()=>{var s;return[c(b,{class:"tour-title"},{default:o(()=>[h(y(a.name),1)]),_:2},1024),c(e,{class:"tour-stops-timeline"},{default:o(()=>[(n(!0),m(_,null,v(a.venue_names||[],(s,l)=>(n(),u(e,{key:"v-"+a.id+"-"+l,class:"tour-stop-row"},{default:o(()=>[c(e,{class:"tour-timeline-axis"},{default:o(()=>{var s;return[c(e,{class:"tour-dot-cell"},{default:o(()=>[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:o(()=>[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:o(()=>[(n(!0),m(_,null,v(a.tags,(s,e)=>(n(),u(b,{key:"t-"+a.id+"-"+e,class:"tour-tag"},{default:o(()=>[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:o(()=>[h("加载中…")]),_:1})):g("",!0),I.value||j.value.length?g("",!0):(n(),u(e,{key:1,class:"hint muted"},{default:o(()=>[h("暂无科普四季研学线路推荐")]),_:1}))]),_:1})]),_:1})}}}),[["__scopeId","data-v-bad35e33"]]);export{I as default};
import{d as a,e as s,o as e,O as l,P as t,j as u,k as o,m as r,n,p as c,y as d,z as i,I as f,E as m,F as _,G as v,t as p,x as h,C as y,J as g,K as k,Q as b,R as x,L as w,_ as j}from"./index-CPXWftEC.js";import{c as C}from"./content.DTi_0fLX.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),P=s("");async function q(){I.value=!0;try{j.value=await C({keyword:P.value.trim()||void 0})||[]}catch{j.value=[]}finally{I.value=!1}}function z(){q()}function E(){b().length>1?x({fail:()=>{w({url:"/pages/index/index"})}}):w({url:"/pages/index/index"})}return e(()=>{q()}),l(async()=>{try{await q()}finally{t()}}),(a,s)=>{const e=r,l=d,t=f,b=p;return n(),u(e,{class:"page"},{default:o(()=>[c(e,{class:"toolbar"},{default:o(()=>[c(e,{class:"toolbar-row"},{default:o(()=>[c(e,{class:"back-btn","hover-class":"back-btn--hover","hover-stay-time":"80",onClick:E},{default:o(()=>[c(e,{class:"back-btn__icon","aria-hidden":"true"})]),_:1}),c(e,{class:"search-wrap"},{default:o(()=>[c(l,{class:"search-icon-img",src:i(V),mode:"aspectFit"},null,8,["src"]),c(t,{modelValue:P.value,"onUpdate:modelValue":s[0]||(s[0]=a=>P.value=a),class:"search-input",placeholder:"搜索科普四季研学线路","placeholder-class":"ph","confirm-type":"search",onConfirm:z},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),c(e,{class:"section"},{default:o(()=>[(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:o(()=>[c(e,{class:"tour-img-wrap"},{default:o(()=>[c(l,{class:"tour-img",src:a.cover_image||i(F),mode:"aspectFill"},null,8,["src"])]),_:2},1024),c(e,{class:"tour-body"},{default:o(()=>{var s;return[c(b,{class:"tour-title"},{default:o(()=>[h(y(a.name),1)]),_:2},1024),c(e,{class:"tour-stops-timeline"},{default:o(()=>[(n(!0),m(_,null,v(a.venue_names||[],(s,l)=>(n(),u(e,{key:"v-"+a.id+"-"+l,class:"tour-stop-row"},{default:o(()=>[c(e,{class:"tour-timeline-axis"},{default:o(()=>{var s;return[c(e,{class:"tour-dot-cell"},{default:o(()=>[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:o(()=>[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:o(()=>[(n(!0),m(_,null,v(a.tags,(s,e)=>(n(),u(b,{key:"t-"+a.id+"-"+e,class:"tour-tag"},{default:o(()=>[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:o(()=>[h("加载中…")]),_:1})):g("",!0),I.value||j.value.length?g("",!0):(n(),u(e,{key:1,class:"hint muted"},{default:o(()=>[h("暂无科普四季研学线路推荐")]),_:1}))]),_:1})]),_:1})}}}),[["__scopeId","data-v-bad35e33"]]);export{I as default};

@ -1 +1 @@
import{d as a,e as l,T as e,j as s,k as n,g as u,S as t,m as o,n as r,p as c,y as i,x as d,C as f,t as _,K as v,_ as p}from"./index-BFl_R8j9.js";import{g as m,l as h}from"./localProfile.Bgv04DGh.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(){v({url:"/pages/mine/profile"})}function C(){v({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=_;return r(),s(u,{class:"page"},{default:n(()=>[c(u,{class:"header"},{default:n(()=>[c(u,{class:"profile",onClick:x},{default:n(()=>[g.value?(r(),s(e,{key:0,class:"avatar",src:g.value,mode:"aspectFill"},null,8,["src"])):(r(),s(u,{key:1,class:"avatar placeholder"})),c(u,{class:"profile-info"},{default:n(()=>[c(u,{class:"name"},{default:n(()=>[d(f(p.value),1)]),_:1}),c(u,{class:"phone"},{default:n(()=>[d(f(k.value||"完善信息方便预约"),1)]),_:1})]),_:1})]),_:1})]),_:1}),c(u,{class:"panel"},{default:n(()=>[c(u,{class:"menu-item",onClick:x},{default:n(()=>[c(t,null,{default:n(()=>[d("我的信息")]),_:1}),c(t,null,{default:n(()=>[d(">")]),_:1})]),_:1}),c(u,{class:"menu-item",onClick:C},{default:n(()=>[c(t,null,{default:n(()=>[d("预约记录")]),_:1}),c(t,null,{default:n(()=>[d(">")]),_:1})]),_:1})]),_:1})]),_:1})}}}),[["__scopeId","data-v-0d216b84"]]);export{k as default};
import{d as a,e as l,T as e,j as s,k as n,g as u,S as t,m as o,n as r,p as c,y as i,x as d,C as f,t as _,K as v,_ as p}from"./index-CPXWftEC.js";import{g as m,l as h}from"./localProfile.BD3FU5H8.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(){v({url:"/pages/mine/profile"})}function C(){v({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=_;return r(),s(u,{class:"page"},{default:n(()=>[c(u,{class:"header"},{default:n(()=>[c(u,{class:"profile",onClick:x},{default:n(()=>[g.value?(r(),s(e,{key:0,class:"avatar",src:g.value,mode:"aspectFill"},null,8,["src"])):(r(),s(u,{key:1,class:"avatar placeholder"})),c(u,{class:"profile-info"},{default:n(()=>[c(u,{class:"name"},{default:n(()=>[d(f(p.value),1)]),_:1}),c(u,{class:"phone"},{default:n(()=>[d(f(k.value||"完善信息方便预约"),1)]),_:1})]),_:1})]),_:1})]),_:1}),c(u,{class:"panel"},{default:n(()=>[c(u,{class:"menu-item",onClick:x},{default:n(()=>[c(t,null,{default:n(()=>[d("我的信息")]),_:1}),c(t,null,{default:n(()=>[d(">")]),_:1})]),_:1}),c(u,{class:"menu-item",onClick:C},{default:n(()=>[c(t,null,{default:n(()=>[d("预约记录")]),_:1}),c(t,null,{default:n(()=>[d(">")]),_:1})]),_:1})]),_:1})]),_:1})}}}),[["__scopeId","data-v-0d216b84"]]);export{k as default};

@ -1 +1 @@
import{d as a,e,o as l,j as s,k as t,g as n,S as u,m as r,U as o,n as c,p as v,x as i,y as d,C as _,t 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-BFl_R8j9.js";import{g as w,l as x,u as j,s as C}from"./localProfile.Bgv04DGh.js";const P=V(a({__name:"profile",setup(a){const V=e(!0),P=e(!1),T=e(!1),U=e({real_name:"",phone:"",avatar_url:""});function B(a){U.value.real_name=a.real_name||"",U.value.phone=a.phone||"",U.value.avatar_url=a.avatar_url||""}function F(){T.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);U.value.avatar_url=a}catch(l){h({title:(null==l?void 0:l.message)||"上传失败",icon:"none"})}finally{g()}}}):h({title:"请先通过微信登录后再上传头像",icon:"none"})}async function I(){if(U.value.real_name.trim())if(/^1\d{10}$/.test(U.value.phone.trim())){P.value=!0;try{const a={real_name:U.value.real_name.trim(),phone:U.value.phone.trim(),avatar_url:U.value.avatar_url||void 0};T.value&&await j(a),C({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{P.value=!1}}else h({title:"请填写11位手机号",icon:"none"});else h({title:"请填写姓名",icon:"none"})}return l(()=>{!async function(){V.value=!0,T.value=!!n(u.accessToken);try{if(T.value)try{const a=await w();U.value.real_name=a.real_name||"",U.value.phone=a.phone||"",U.value.avatar_url=a.avatar_url||""}catch{const a=x();a&&B(a)}else{const a=x();a&&B(a)}}finally{V.value=!1}}()}),(a,e)=>{const l=o("SubPageBackBtn"),n=r,u=d,h=p,y=m,b=f;return c(),s(n,{class:"page"},{default:t(()=>[v(l),V.value?(c(),s(n,{key:0,class:"loading"},{default:t(()=>[i("加载中…")]),_:1})):(c(),s(n,{key:1,class:"content"},{default:t(()=>[v(n,{class:"avatar-block"},{default:t(()=>[v(n,{class:"avatar-wrap",onClick:F},{default:t(()=>[U.value.avatar_url?(c(),s(u,{key:0,class:"avatar",src:U.value.avatar_url,mode:"aspectFill"},null,8,["src"])):(c(),s(n,{key:1,class:"avatar placeholder"})),v(n,{class:"avatar-tip"},{default:t(()=>[i(_(T.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:U.value.real_name,"onUpdate:modelValue":e[0]||(e[0]=a=>U.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:U.value.phone,"onUpdate:modelValue":e[1]||(e[1]=a=>U.value.phone=a),class:"input",type:"number",maxlength:"11",placeholder:"必填","placeholder-class":"ph"},null,8,["modelValue"])]),_:1})]),_:1}),v(b,{class:"btn",disabled:P.value,onClick:I},{default:t(()=>[i(_(P.value?"保存中…":"保存"),1)]),_:1},8,["disabled"])]),_:1}))]),_:1})}}}),[["__scopeId","data-v-f84b8690"]]);export{P as default};
import{d as a,e,o as l,j as s,k as t,g as n,S as u,m as r,U as o,n as c,p as v,x as i,y as d,C as _,t 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-CPXWftEC.js";import{g as w,l as x,u as j,s as C}from"./localProfile.BD3FU5H8.js";const P=V(a({__name:"profile",setup(a){const V=e(!0),P=e(!1),T=e(!1),U=e({real_name:"",phone:"",avatar_url:""});function B(a){U.value.real_name=a.real_name||"",U.value.phone=a.phone||"",U.value.avatar_url=a.avatar_url||""}function F(){T.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);U.value.avatar_url=a}catch(l){h({title:(null==l?void 0:l.message)||"上传失败",icon:"none"})}finally{g()}}}):h({title:"请先通过微信登录后再上传头像",icon:"none"})}async function I(){if(U.value.real_name.trim())if(/^1\d{10}$/.test(U.value.phone.trim())){P.value=!0;try{const a={real_name:U.value.real_name.trim(),phone:U.value.phone.trim(),avatar_url:U.value.avatar_url||void 0};T.value&&await j(a),C({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{P.value=!1}}else h({title:"请填写11位手机号",icon:"none"});else h({title:"请填写姓名",icon:"none"})}return l(()=>{!async function(){V.value=!0,T.value=!!n(u.accessToken);try{if(T.value)try{const a=await w();U.value.real_name=a.real_name||"",U.value.phone=a.phone||"",U.value.avatar_url=a.avatar_url||""}catch{const a=x();a&&B(a)}else{const a=x();a&&B(a)}}finally{V.value=!1}}()}),(a,e)=>{const l=o("SubPageBackBtn"),n=r,u=d,h=p,y=m,b=f;return c(),s(n,{class:"page"},{default:t(()=>[v(l),V.value?(c(),s(n,{key:0,class:"loading"},{default:t(()=>[i("加载中…")]),_:1})):(c(),s(n,{key:1,class:"content"},{default:t(()=>[v(n,{class:"avatar-block"},{default:t(()=>[v(n,{class:"avatar-wrap",onClick:F},{default:t(()=>[U.value.avatar_url?(c(),s(u,{key:0,class:"avatar",src:U.value.avatar_url,mode:"aspectFill"},null,8,["src"])):(c(),s(n,{key:1,class:"avatar placeholder"})),v(n,{class:"avatar-tip"},{default:t(()=>[i(_(T.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:U.value.real_name,"onUpdate:modelValue":e[0]||(e[0]=a=>U.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:U.value.phone,"onUpdate:modelValue":e[1]||(e[1]=a=>U.value.phone=a),class:"input",type:"number",maxlength:"11",placeholder:"必填","placeholder-class":"ph"},null,8,["modelValue"])]),_:1})]),_:1}),v(b,{class:"btn",disabled:P.value,onClick:I},{default:t(()=>[i(_(P.value?"保存中…":"保存"),1)]),_:1},8,["disabled"])]),_:1}))]),_:1})}}}),[["__scopeId","data-v-f84b8690"]]);export{P as default};

@ -1 +1 @@
import{d as a,e as s,o as t,O as l,P as e,j as c,k as n,s as i,m as u,U as o,n as r,p as d,t as f,x as _,E as m,F as v,G as y,v as p,C as k,y as g,z as b,J as C,K as h,_ as w}from"./index-BFl_R8j9.js";import{a as j,g as x}from"./content.DY-NPGy4.js";import{P}from"./poster.C6TYC1FC.js";const A=w(a({__name:"index",setup(a){const w=s(!0),A=s([]);async function B(){w.value=!0;try{const[a,s]=await Promise.all([j({only_included_in_stats:!0}),x().catch(()=>null)]),t=Array.isArray(a)?a:[],l=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);A.value=function(a,s){return a.map(a=>{const t=(a.district||"").trim(),l=t?s[t]??t:"";return{id:a.id,name:a.name||"未命名场馆",district:l,cover_image:a.cover_image||null,liveCount:0}}).sort((a,s)=>s.liveCount-a.liveCount)}(t,l)}catch(a){i({title:(null==a?void 0:a.message)||"加载失败",icon:"none"}),A.value=[]}finally{w.value=!1}}return t(()=>{B()}),l(async()=>{try{await B()}finally{e()}}),(a,s)=>{const t=o("SubPageBackBtn"),l=u,e=f,i=g;return r(),c(l,{class:"page"},{default:n(()=>[d(t),d(l,{class:"section-title"},{default:n(()=>[d(l,{class:"section-title-left"},{default:n(()=>[d(l,{class:"bar"}),d(e,{class:"title"},{default:n(()=>[_("今日客流量统计")]),_:1})]),_:1}),d(e,{class:"title-hint"},{default:n(()=>[_("纳入市科协人数统计系统场馆")]),_:1})]),_:1}),w.value&&!A.value.length?(r(),c(l,{key:0,class:"state"},{default:n(()=>[_("加载中…")]),_:1})):A.value.length?(r(),c(l,{key:2,class:"list"},{default:n(()=>[(r(!0),m(v,null,y(A.value,(a,s)=>(r(),c(l,{key:a.id,class:p(["row",{"is-top1":0===s,"is-top2":1===s,"is-top3":2===s}]),onClick:s=>{var t;(t=a.id)&&h({url:`/pages/venue/detail?id=${t}`})}},{default:n(()=>[d(l,{class:"rank-wrap"},{default:n(()=>[s<3?(r(),c(l,{key:0,class:p(["medal","m"+(s+1)])},{default:n(()=>[_(k(s+1),1)]),_:2},1032,["class"])):(r(),c(e,{key:1,class:"rank-num"},{default:n(()=>[_(k(s+1),1)]),_:2},1024))]),_:2},1024),d(i,{class:"thumb",src:a.cover_image||b(P),mode:"aspectFill"},null,8,["src"]),d(l,{class:"mid"},{default:n(()=>[d(e,{class:"name"},{default:n(()=>[_(k(a.name),1)]),_:2},1024),a.district?(r(),c(e,{key:0,class:"district"},{default:n(()=>[_(k(a.district),1)]),_:2},1024)):C("",!0)]),_:2},1024),d(l,{class:"count-block"},{default:n(()=>[d(e,{class:"count-label"},{default:n(()=>[_("实时人数")]),_:1}),d(l,{class:"count-row"},{default:n(()=>[d(e,{class:"count"},{default:n(()=>[_(k(a.liveCount.toLocaleString()),1)]),_:2},1024),d(e,{class:"unit"},{default:n(()=>[_("人")]),_:1})]),_:2},1024)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})):(r(),c(l,{key:1,class:"state muted"},{default:n(()=>[_("暂无已上架场馆")]),_:1})),d(l,{class:"bottom-safe"})]),_:1})}}}),[["__scopeId","data-v-83b857b5"]]);export{A as default};
import{d as a,e as s,o as t,O as l,P as e,j as c,k as n,s as i,m as u,U as o,n as r,p as d,t as f,x as _,E as m,F as v,G as y,v as p,C as k,y as g,z as b,J as C,K as h,_ as w}from"./index-CPXWftEC.js";import{a as j,g as x}from"./content.DTi_0fLX.js";import{P}from"./poster.C6TYC1FC.js";const A=w(a({__name:"index",setup(a){const w=s(!0),A=s([]);async function B(){w.value=!0;try{const[a,s]=await Promise.all([j({only_included_in_stats:!0}),x().catch(()=>null)]),t=Array.isArray(a)?a:[],l=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);A.value=function(a,s){return a.map(a=>{const t=(a.district||"").trim(),l=t?s[t]??t:"";return{id:a.id,name:a.name||"未命名场馆",district:l,cover_image:a.cover_image||null,liveCount:0}}).sort((a,s)=>s.liveCount-a.liveCount)}(t,l)}catch(a){i({title:(null==a?void 0:a.message)||"加载失败",icon:"none"}),A.value=[]}finally{w.value=!1}}return t(()=>{B()}),l(async()=>{try{await B()}finally{e()}}),(a,s)=>{const t=o("SubPageBackBtn"),l=u,e=f,i=g;return r(),c(l,{class:"page"},{default:n(()=>[d(t),d(l,{class:"section-title"},{default:n(()=>[d(l,{class:"section-title-left"},{default:n(()=>[d(l,{class:"bar"}),d(e,{class:"title"},{default:n(()=>[_("今日客流量统计")]),_:1})]),_:1}),d(e,{class:"title-hint"},{default:n(()=>[_("纳入市科协人数统计系统场馆")]),_:1})]),_:1}),w.value&&!A.value.length?(r(),c(l,{key:0,class:"state"},{default:n(()=>[_("加载中…")]),_:1})):A.value.length?(r(),c(l,{key:2,class:"list"},{default:n(()=>[(r(!0),m(v,null,y(A.value,(a,s)=>(r(),c(l,{key:a.id,class:p(["row",{"is-top1":0===s,"is-top2":1===s,"is-top3":2===s}]),onClick:s=>{var t;(t=a.id)&&h({url:`/pages/venue/detail?id=${t}`})}},{default:n(()=>[d(l,{class:"rank-wrap"},{default:n(()=>[s<3?(r(),c(l,{key:0,class:p(["medal","m"+(s+1)])},{default:n(()=>[_(k(s+1),1)]),_:2},1032,["class"])):(r(),c(e,{key:1,class:"rank-num"},{default:n(()=>[_(k(s+1),1)]),_:2},1024))]),_:2},1024),d(i,{class:"thumb",src:a.cover_image||b(P),mode:"aspectFill"},null,8,["src"]),d(l,{class:"mid"},{default:n(()=>[d(e,{class:"name"},{default:n(()=>[_(k(a.name),1)]),_:2},1024),a.district?(r(),c(e,{key:0,class:"district"},{default:n(()=>[_(k(a.district),1)]),_:2},1024)):C("",!0)]),_:2},1024),d(l,{class:"count-block"},{default:n(()=>[d(e,{class:"count-label"},{default:n(()=>[_("实时人数")]),_:1}),d(l,{class:"count-row"},{default:n(()=>[d(e,{class:"count"},{default:n(()=>[_(k(a.liveCount.toLocaleString()),1)]),_:2},1024),d(e,{class:"unit"},{default:n(()=>[_("人")]),_:1})]),_:2},1024)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})):(r(),c(l,{key:1,class:"state muted"},{default:n(()=>[_("暂无已上架场馆")]),_:1})),d(l,{class:"bottom-safe"})]),_:1})}}}),[["__scopeId","data-v-83b857b5"]]);export{A as default};

@ -1 +1 @@
import{d as a,e,f as l,o as t,a4 as s,w as u,j as d,k as v,aa as c,m as n,U as i,n as o,p as r,t as f,x as h,v as x,C as y,ab as _,H as m,E as g,F as p,G as k,_ as S}from"./index-BFl_R8j9.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}]},C=l(()=>b[S.value]),T=l(()=>{var a,e;return`${(null==(a=C.value[0])?void 0:a.date)||"-"} 至 ${(null==(e=C.value[C.value.length-1])?void 0:e.date)||"-"}`}),F=l(()=>C.value.reduce((a,e)=>e.value>a.value?e:a,C.value[0]));function P(){const a=C.value;if(!a.length)return;const e=c(w),l=24,t=18,s=24,u=18,d=260,v=Math.min(...a.map(a=>a.value)),n=Math.max(...a.map(a=>a.value)),i=Math.max(1,n-v),o=680-u-t,r=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+o*t/Math.max(1,a.length-1),y:l+(n-e.value)/i*r,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 o(),d(t,{class:"page"},{default:v(()=>[r(l),r(t,{class:"section-title"},{default:v(()=>[r(t,{class:"bar"}),r(s,{class:"title"},{default:v(()=>[h("全市参观人数")]),_:1}),r(t,{class:"period"},{default:v(()=>[r(s,{class:x({active:"week"===S.value}),onClick:e[0]||(e[0]=a=>S.value="week")},{default:v(()=>[h("周")]),_:1},8,["class"]),r(s,{class:x({active:"month"===S.value}),onClick:e[1]||(e[1]=a=>S.value="month")},{default:v(()=>[h("月")]),_:1},8,["class"]),r(s,{class:x({active:"year"===S.value}),onClick:e[2]||(e[2]=a=>S.value="year")},{default:v(()=>[h("年")]),_:1},8,["class"])]),_:1})]),_:1}),r(t,{class:"date-range"},{default:v(()=>[h(y(T.value),1)]),_:1}),r(t,{class:"chart-card"},{default:v(()=>[r(u,{"canvas-id":w,id:w,class:"chart-canvas",style:m("width:680rpx;height:260rpx;")},null,8,["style"]),r(t,{class:"x-axis"},{default:v(()=>[(o(!0),g(p,null,k(C.value,a=>(o(),d(s,{key:a.date},{default:v(()=>[h(y(a.date),1)]),_:2},1024))),128))]),_:1})]),_:1}),r(t,{class:"list-card"},{default:v(()=>[r(t,{class:"list-title"},{default:v(()=>[h("参观人数列表")]),_:1}),(o(!0),g(p,null,k(C.value,a=>(o(),d(t,{key:a.date,class:"row"},{default:v(()=>{var e;return[r(s,{class:"d"},{default:v(()=>[h(y(a.date),1)]),_:2},1024),r(s,{class:x(["c",{hot:a.date===(null==(e=F.value)?void 0:e.date)}])},{default:v(()=>{return[h(y((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,o as t,a4 as s,w as u,j as d,k as v,aa as c,m as n,U as i,n as o,p as r,t as f,x as h,v as x,C as y,ab as _,H as m,E as g,F as p,G as k,_ as S}from"./index-CPXWftEC.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}]},C=l(()=>b[S.value]),T=l(()=>{var a,e;return`${(null==(a=C.value[0])?void 0:a.date)||"-"} 至 ${(null==(e=C.value[C.value.length-1])?void 0:e.date)||"-"}`}),F=l(()=>C.value.reduce((a,e)=>e.value>a.value?e:a,C.value[0]));function P(){const a=C.value;if(!a.length)return;const e=c(w),l=24,t=18,s=24,u=18,d=260,v=Math.min(...a.map(a=>a.value)),n=Math.max(...a.map(a=>a.value)),i=Math.max(1,n-v),o=680-u-t,r=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+o*t/Math.max(1,a.length-1),y:l+(n-e.value)/i*r,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 o(),d(t,{class:"page"},{default:v(()=>[r(l),r(t,{class:"section-title"},{default:v(()=>[r(t,{class:"bar"}),r(s,{class:"title"},{default:v(()=>[h("全市参观人数")]),_:1}),r(t,{class:"period"},{default:v(()=>[r(s,{class:x({active:"week"===S.value}),onClick:e[0]||(e[0]=a=>S.value="week")},{default:v(()=>[h("周")]),_:1},8,["class"]),r(s,{class:x({active:"month"===S.value}),onClick:e[1]||(e[1]=a=>S.value="month")},{default:v(()=>[h("月")]),_:1},8,["class"]),r(s,{class:x({active:"year"===S.value}),onClick:e[2]||(e[2]=a=>S.value="year")},{default:v(()=>[h("年")]),_:1},8,["class"])]),_:1})]),_:1}),r(t,{class:"date-range"},{default:v(()=>[h(y(T.value),1)]),_:1}),r(t,{class:"chart-card"},{default:v(()=>[r(u,{"canvas-id":w,id:w,class:"chart-canvas",style:m("width:680rpx;height:260rpx;")},null,8,["style"]),r(t,{class:"x-axis"},{default:v(()=>[(o(!0),g(p,null,k(C.value,a=>(o(),d(s,{key:a.date},{default:v(()=>[h(y(a.date),1)]),_:2},1024))),128))]),_:1})]),_:1}),r(t,{class:"list-card"},{default:v(()=>[r(t,{class:"list-title"},{default:v(()=>[h("参观人数列表")]),_:1}),(o(!0),g(p,null,k(C.value,a=>(o(),d(t,{key:a.date,class:"row"},{default:v(()=>{var e;return[r(s,{class:"d"},{default:v(()=>[h(y(a.date),1)]),_:2},1024),r(s,{class:x(["c",{hot:a.date===(null==(e=F.value)?void 0:e.date)}])},{default:v(()=>{return[h(y((e=a.value,`${e.toLocaleString()}`)),1)];var e}),_:2},1032,["class"])]}),_:2},1024))),128))]),_:1})]),_:1})}}}),[["__scopeId","data-v-90b339fd"]]);export{b as default};

@ -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-BFl_R8j9.js"></script>
<script type="module" crossorigin src="/h5/assets/index-CPXWftEC.js"></script>
<link rel="stylesheet" crossorigin href="/h5/assets/index-CTwXLGar.css">
</head>
<body>

Loading…
Cancel
Save