You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
7.3 KiB
2 lines
7.3 KiB
|
3 days ago
|
import{d as e,r as l,c as a,J as u,a as t,b as i,e as o,p as n,m as v,n as d,t as s,S as c,u as r,C as _,v as p,F as y,x as f,z as b,q as m,N as k,O as g,I as h,H as x,P as V}from"./index-C46MzMfW.js";import{f as $,h as C}from"./content.77V1RU5a.js";import{_ as M}from"./_plugin-vue_export-helper.BCo6x5W8.js";const N=M(e({__name:"reserve",setup(e){const M=l(0),N=l(!1),w=l(!1),j=l(null),S=l({activity_day_id:0,visitor_name:"",visitor_phone:"",id_card:"",booking_type:"individual",people_count:1}),T=a(()=>{var e;return((null==(e=j.value)?void 0:e.days)||[]).find(e=>e.id===S.value.activity_day_id)}),U=a(()=>!!S.value.activity_day_id&&!!S.value.visitor_name&&/^1\d{10}$/.test(S.value.visitor_phone)),I=a(()=>{var e,l;return String((null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.booking_audience)||"both")}),O=a(()=>{var e,l;return Math.max(1,Number((null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.min_people_per_order)||1))}),q=a(()=>{var e,l;return Math.max(1,Number((null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.max_people_per_order)||1))}),z=a(()=>{var e,l;return(null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.booking_modes)||["individual","group"]});function B(){if("individual"===I.value)return S.value.booking_type="individual",void(S.value.people_count=1);if("group"===I.value?S.value.booking_type="group":z.value.includes(S.value.booking_type)||(S.value.booking_type="individual"),"individual"===S.value.booking_type)return void(S.value.people_count=1);const e=Math.floor(Number(S.value.people_count||0));S.value.people_count=Math.min(q.value,Math.max(O.value,e||O.value))}function F(e){if(null==e?void 0:e.is_bookable)return void(S.value.activity_day_id=e.id);if((null==e?void 0:e.available_count)<=0||"sold_out"===(null==e?void 0:e.unavailable_reason))return void o({title:"该日期已无余票",icon:"none"});const l=function(e){const l=String((null==e?void 0:e.opens_at)||"").slice(0,16).replace("T"," "),a=String((null==e?void 0:e.closes_at)||"").slice(0,16).replace("T"," ");return l&&a?`${l} ~ ${a}`:""}(e);o(l?{title:`可预约时段:${l}`,icon:"none",duration:2800}:{title:"该日期当前不可预约",icon:"none"})}async function H(){var e,l;if(U.value&&M.value)if(B(),"group"===S.value.booking_type&&(S.value.people_count<O.value||S.value.people_count>q.value))o({title:`人数需在 ${O.value}-${q.value} 之间`,icon:"none"});else{w.value=!0;try{const e=await C(M.value,S.value);return o({title:"预约成功",icon:"success"}),setTimeout(()=>{V({url:`/pages/activity/detail?id=${M.value}`})},500),e}catch(a){const u=(null==a?void 0:a.message)||(null==(l=null==(e=null==a?void 0:a.errors)?void 0:e[Object.keys((null==a?void 0:a.errors)||{})[0]])?void 0:l[0])||"预约失败";o({title:u,icon:"none"})}finally{w.value=!1}}else o({title:"请完整填写预约信息",icon:"none"})}return u(e=>{M.value=Number((null==e?void 0:e.id)||0),async function(){var e;if(M.value){N.value=!0;try{j.value=await $(M.value),B();const l=((null==(e=j.value)?void 0:e.days)||[]).find(e=>e.is_bookable);l&&(S.value.activity_day_id=l.id)}catch(l){o({title:(null==l?void 0:l.message)||"加载预约信息失败",icon:"none"})}finally{N.value=!1}}}()}),(e,l)=>{const a=n,u=m,o=g,V=k,$=h,C=c,M=x;return v(),t(a,{class:"page-wrap"},{default:i(()=>[d(a,{class:"head"},{default:i(()=>[s("活动预约")]),_:1}),d(C,{"scroll-y":"",class:"page"},{default:i(()=>[d(a,{class:"card"},{default:i(()=>{var e,l;return[d(a,{class:"title"},{default:i(()=>{var e,l;return[s(r((null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.title)||"活动预约"),1)]}),_:1}),d(a,{class:"meta"},{default:i(()=>{var e,l,a;return[s(r((null==(a=null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.venue)?void 0:a.name)||"-"),1)]}),_:1}),(null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.reservation_notice)?(v(),t(a,{key:0,class:"meta"},{default:i(()=>{var e,l;return[s(r(null==(l=null==(e=j.value)?void 0:e.activity)?void 0:l.reservation_notice),1)]}),_:1})):_("",!0)]}),_:1}),d(a,{class:"card"},{default:i(()=>[d(a,{class:"sub-title"},{default:i(()=>[s("选择日期")]),_:
|