|
|
import{d as e,e as a,f as l,w as u,X as o,j as i,k as t,s,m as n,g as v,S as d,Q as c,n as r,p as _,q as p,x as f,C as m,t as y,y as b,z as g,J as h,v as k,a0 as x,I as w,T as M,a5 as N,a2 as j,a3 as V,a4 as C,u as A,_ as $}from"./index-JU1wBgIq.js";import{m as T,n as B}from"./content.CSlKdun0.js";import{g as S,l as U}from"./localProfile.HifxIe7s.js";import{b as q}from"./richText.Cl1iMeI3.js";import{i as I,a as P}from"./icon_up.DJ5zmdk8.js";const z=$(e({__name:"reserve",setup(e){const $=a(0),z=a(0),F=a(!1),J=a(!1),O=a(null),Q=a(!0),R=a(!1),X=a({activity_day_id:0,visitor_name:"",visitor_phone:"",booking_type:"individual",people_count:1}),D=l(()=>{var e;return((null==(e=O.value)?void 0:e.days)||[]).find(e=>e.id===X.value.activity_day_id)}),E=l(()=>{const e=D.value;return!0===(null==e?void 0:e.is_bookable)}),G=l(()=>!!X.value.activity_day_id&&E.value&&!!X.value.visitor_name&&/^1\d{10}$/.test(X.value.visitor_phone)),H=l(()=>{var e,a;return q(null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.reservation_notice)});u(H,()=>{Q.value=!0,j(()=>{setTimeout(()=>{var e;const a=null==(e=V())?void 0:e.proxy,l=C();a&&l.in(a);const u=A(187);l.select(".judge-notice-reserve").boundingClientRect(),l.exec(e=>{const[a]=e||[];R.value=!!(a&&a.height&&a.height>u+1),R.value?Q.value=!1:Q.value=!0})},120)})});const K=l(()=>{var e,a;return String((null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.booking_audience)||"both")}),L=l(()=>{var e,a;return Math.max(1,Number((null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.min_people_per_order)||1))}),W=l(()=>{var e,a;const l=Math.max(1,Number((null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.max_people_per_order)||1));return Math.max(l,L.value)}),Y=l(()=>{var e,a;return(null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.booking_modes)||["individual","group"]}),Z=l(()=>"individual"===K.value),ee=l(()=>"group"===K.value),ae=l(()=>`团体(${L.value}-${W.value}人)`),le=l(()=>"group"===K.value||"both"===K.value&&"group"===X.value.booking_type),ue=l(()=>le.value&&Math.floor(Number(X.value.people_count)||L.value)<=L.value),oe=l(()=>le.value&&Math.floor(Number(X.value.people_count)||L.value)>=W.value);function ie(){if("individual"===K.value)return X.value.booking_type="individual",void(X.value.people_count=1);if("group"===K.value?X.value.booking_type="group":Y.value.includes(X.value.booking_type)||(X.value.booking_type="individual"),"individual"===X.value.booking_type)return void(X.value.people_count=1);const e=Math.floor(Number(X.value.people_count||0));X.value.people_count=Math.min(W.value,Math.max(L.value,e||L.value))}function te(){ee.value||(X.value.booking_type="individual",ie())}function se(){Z.value||(X.value.booking_type="group",ie())}async function ne(){var e;if($.value){F.value=!0;try{O.value=await T($.value),ie();const a=(null==(e=O.value)?void 0:e.days)||[];z.value&&a.some(e=>e.id===z.value)?X.value.activity_day_id=z.value:function(){var e;const a=(null==(e=O.value)?void 0:e.days)||[];if(!a.length)return void(X.value.activity_day_id=0);const l=a.filter(e=>e.is_bookable);l.length?X.value.activity_day_id=l[0].id:X.value.activity_day_id=a[0].id}(),await async function(){if(v(d.accessToken))try{const e=await S();return(null==e?void 0:e.real_name)&&(X.value.visitor_name=e.real_name),void((null==e?void 0:e.phone)&&(X.value.visitor_phone=e.phone))}catch{}const e=U();(null==e?void 0:e.real_name)&&(X.value.visitor_name=e.real_name),(null==e?void 0:e.phone)&&(X.value.visitor_phone=e.phone)}()}catch(a){s({title:(null==a?void 0:a.message)||"加载预约信息失败",icon:"none"})}finally{F.value=!1}}}function ve(){ue.value||(X.value.people_count=Math.max(L.value,(Number(X.value.people_count)||L.value)-1),ie())}function de(){oe.value||(X.value.people_count=Math.min(W.value,(Number(X.value.people_count)||L.value)+1),ie())}async function ce(){if($.value)if(E.value)if(G.value)if(ie(),"group"===X.value.booking_type&&(X.value.people_count<L.value||X.value.people_count>W.value))s({title:`人数需在 ${L.value}-${W.value} 之间`,icon:"none"});else{J.value=!0;try{await B($.value,X.value),s({title:"预约成功",icon:"success"}),setTimeout(()=>{N({url:`/pages/activity/detail?id=${$.value}`})},500)}catch(e){const a=(null==e?void 0:e.errors)||{},l=Array.isArray(a.activity_day_id)&&a.activity_day_id[0]||Array.isArray(a.visitor_phone)&&a.visitor_phone[0]||""||("string"==typeof(null==e?void 0:e.message)?e.message:"")||Object.keys(a).map(e=>Array.isArray(a[e])?a[e][0]:"").find(Boolean)||"预约失败";s({title:l,icon:"none"})}finally{J.value=!1}}else s({title:"请完整填写预约信息",icon:"none"});else s({title:"当前场次不可预约,请返回活动详情重新选择",icon:"none"})}return o(e=>{$.value=Number((null==e?void 0:e.id)||0),z.value=Number((null==e?void 0:e.day_id)||0),ne()}),(e,a)=>{const l=c("SubPageBackBtn"),u=n,o=y,s=b,v=x,d=w,N=p,j=M;return r(),i(u,{class:"page-wrap"},{default:t(()=>[_(l),_(N,{"scroll-y":"",class:"page"},{default:t(()=>[F.value?(r(),i(u,{key:0,class:"loading-tip"},{default:t(()=>[f("加载中…")]),_:1})):(r(),i(u,{key:1,class:"content"},{default:t(()=>[_(u,{class:"card"},{default:t(()=>[_(u,{class:"act-title"},{default:t(()=>{var e,a;return[f(m((null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.title)||"活动预约"),1)]}),_:1}),_(u,{class:"field-label"},{default:t(()=>[f("预约场次")]),_:1}),D.value?(r(),i(u,{key:0,class:"session-info"},{default:t(()=>[_(o,{class:"session-info-name"},{default:t(()=>[f(m(D.value.session_name||"场次"),1)]),_:1}),_(o,{class:"session-info-line"},{default:t(()=>[f("场次时间:"+m(D.value.time_display||"-"),1)]),_:1}),_(o,{class:"session-info-line"},{default:t(()=>[f(m(D.value.enrolled_count_text||"已报名数:"+(Number(D.value.booked_count)||0)),1)]),_:1})]),_:1})):(r(),i(u,{key:1,class:"session-info session-info--empty"},{default:t(()=>[f("暂无场次信息")]),_:1})),H.value?(r(),i(u,{key:2,class:"notice-block"},{default:t(()=>[_(u,{class:"sec-title-row notice-head-row"},{default:t(()=>[_(o,{class:"notice-label"},{default:t(()=>[f("预约须知")]),_:1}),R.value?(r(),i(u,{key:0,class:"expand-arrow-tap",onClick:a[0]||(a[0]=e=>Q.value=!Q.value)},{default:t(()=>[_(s,{class:"expand-arrow-img",src:Q.value?g(I):g(P),mode:"aspectFit"},null,8,["src"])]),_:1})):h("",!0)]),_:1}),_(u,{class:k(["notice-block-body judge-notice-reserve",{"is-collapsed":R.value&&!Q.value}])},{default:t(()=>[_(v,{class:"notice-inline-rich",nodes:H.value},null,8,["nodes"])]),_:1},8,["class"])]),_:1})):h("",!0)]),_:1}),O.value?(r(),i(u,{key:0,class:"card"},{default:t(()=>[_(u,{class:"mode-row"},{default:t(()=>[_(o,{class:"mode-label"},{default:t(()=>[f("预约类型")]),_:1}),_(u,{class:"mode-btns"},{default:t(()=>[_(u,{class:k(["mode-pill",{on:"individual"===X.value.booking_type,disabled:ee.value}]),onClick:te},{default:t(()=>[f("个人")]),_:1},8,["class"]),_(u,{class:k(["mode-pill",{on:"group"===X.value.booking_type,disabled:Z.value}]),onClick:se},{default:t(()=>[f(m(ae.value),1)]),_:1},8,["class"])]),_:1})]),_:1}),le.value?(r(),i(u,{key:0,class:"count-row"},{default:t(()=>[_(o,{class:"count-name"},{default:t(()=>[f("参观人数")]),_:1}),_(u,{class:"stepper"},{default:t(()=>[_(u,{class:k(["step-btn",{disabled:ue.value}]),onClick:ve},{default:t(()=>[f("−")]),_:1},8,["class"]),_(d,{modelValue:X.value.people_count,"onUpdate:modelValue":a[1]||(a[1]=e=>X.value.people_count=e),modelModifiers:{number:!0},class:"step-val",type:"number",onBlur:a[2]||(a[2]=e=>ie())},null,8,["modelValue"]),_(u,{class:k(["step-btn",{disabled:oe.value}]),onClick:de},{default:t(()=>[f("+")]),_:1},8,["class"])]),_:1})]),_:1})):h("",!0)]),_:1})):h("",!0),_(u,{class:"card"},{default:t(()=>[_(u,{class:"card-hd"},{default:t(()=>[f("联系人信息")]),_:1}),_(u,{class:"form-row"},{default:t(()=>[_(o,{class:"form-label"},{default:t(()=>[f("联系人")]),_:1}),_(d,{modelValue:X.value.visitor_name,"onUpdate:modelValue":a[3]||(a[3]=e=>X.value.visitor_name=e),class:"form-input",placeholder:"请输入姓名","placeholder-class":"ph"},null,8,["modelValue"])]),_:1}),_(u,{class:"form-row last"},{default:t(()=>[_(o,{class:"form-label"},{default:t(()=>[f("手机号")]),_:1}),_(d,{modelValue:X.value.visitor_phone,"onUpdate:modelValue":a[4]||(a[4]=e=>X.value.visitor_phone=e),class:"form-input",type:"number",maxlength:"11",placeholder:"输入手机号","placeholder-class":"ph"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})),_(u,{class:"safe-bottom"})]),_:1}),_(u,{class:"action-bar"},{default:t(()=>[_(j,{class:"btn primary",disabled:!G.value||J.value||F.value,onClick:ce},{default:t(()=>[f(m(J.value?"提交中...":"确认预约"),1)]),_:1},8,["disabled"])]),_:1})]),_:1})}}}),[["__scopeId","data-v-306273fd"]]);export{z as default};
|