|
|
import{d as e,e as a,f as l,w as u,Y as o,k as i,l as t,s,n,g as v,S as d,U as c,p as r,q as _,t as p,y as f,D as m,v as y,z as b,B as g,K as h,x as k,a1 as x,I as w,V as M,a7 as N,a3 as V,a4 as j,a5 as C,u as A,_ as $}from"./index-BFumin6Y.js";import{n as B,o as T}from"./content.VuLfEdIK.js";import{g as U,l as S}from"./localProfile.Cca6kJDl.js";import{b as z}from"./richText.Cl1iMeI3.js";import{i as I,a as P}from"./icon_up.DJ5zmdk8.js";const q=$(e({__name:"reserve",setup(e){const $=a(0),q=a(0),D=a(!1),F=a(!1),K=a(null),O=a(!0),R=a(!1),Y=a({activity_day_id:0,visitor_name:"",visitor_phone:"",booking_type:"individual",people_count:1}),E=l(()=>{var e;return((null==(e=K.value)?void 0:e.days)||[]).find(e=>e.id===Y.value.activity_day_id)}),G=l(()=>{const e=E.value;return!0===(null==e?void 0:e.is_bookable)}),H=l(()=>!!Y.value.activity_day_id&&G.value&&!!Y.value.visitor_name&&/^1\d{10}$/.test(Y.value.visitor_phone)),J=l(()=>{var e,a;return z(null==(a=null==(e=K.value)?void 0:e.activity)?void 0:a.reservation_notice)});u(J,()=>{O.value=!0,V(()=>{setTimeout(()=>{var e;const a=null==(e=j())?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?O.value=!1:O.value=!0})},120)})});const L=l(()=>{var e,a;return String((null==(a=null==(e=K.value)?void 0:e.activity)?void 0:a.booking_audience)||"both")}),Q=l(()=>{var e,a;return Math.max(1,Number((null==(a=null==(e=K.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=K.value)?void 0:e.activity)?void 0:a.max_people_per_order)||1));return Math.max(l,Q.value)}),X=l(()=>{var e,a;return(null==(a=null==(e=K.value)?void 0:e.activity)?void 0:a.booking_modes)||["individual","group"]}),Z=l(()=>"group"!==L.value),ee=l(()=>"individual"!==L.value),ae=l(()=>1===Q.value&&1===W.value?"团体":`团体(${Q.value}-${W.value}人)`),le=l(()=>"group"===L.value||"both"===L.value&&"group"===Y.value.booking_type),ue=l(()=>le.value&&Math.floor(Number(Y.value.people_count)||Q.value)<=Q.value),oe=l(()=>le.value&&Math.floor(Number(Y.value.people_count)||Q.value)>=W.value);function ie(){if("individual"===L.value)return Y.value.booking_type="individual",void(Y.value.people_count=1);if("group"===L.value?Y.value.booking_type="group":X.value.includes(Y.value.booking_type)||(Y.value.booking_type="individual"),"individual"===Y.value.booking_type)return void(Y.value.people_count=1);const e=Math.floor(Number(Y.value.people_count||0));Y.value.people_count=Math.min(W.value,Math.max(Q.value,e||Q.value))}function te(){Y.value.booking_type="individual",ie()}function se(){Y.value.booking_type="group",ie()}async function ne(){var e;if($.value){D.value=!0;try{K.value=await B($.value),ie();const a=(null==(e=K.value)?void 0:e.days)||[];q.value&&a.some(e=>e.id===q.value)?Y.value.activity_day_id=q.value:function(){var e;const a=(null==(e=K.value)?void 0:e.days)||[];if(!a.length)return void(Y.value.activity_day_id=0);const l=a.filter(e=>e.is_bookable);l.length?Y.value.activity_day_id=l[0].id:Y.value.activity_day_id=a[0].id}(),await async function(){if(v(d.accessToken))try{const e=await U();return(null==e?void 0:e.real_name)&&(Y.value.visitor_name=e.real_name),void((null==e?void 0:e.phone)&&(Y.value.visitor_phone=e.phone))}catch{}const e=S();(null==e?void 0:e.real_name)&&(Y.value.visitor_name=e.real_name),(null==e?void 0:e.phone)&&(Y.value.visitor_phone=e.phone)}()}catch(a){s({title:(null==a?void 0:a.message)||"加载预约信息失败",icon:"none"})}finally{D.value=!1}}}function ve(){ue.value||(Y.value.people_count=Math.max(Q.value,(Number(Y.value.people_count)||Q.value)-1),ie())}function de(){oe.value||(Y.value.people_count=Math.min(W.value,(Number(Y.value.people_count)||Q.value)+1),ie())}async function ce(){if($.value)if(G.value)if(H.value)if(ie(),"group"===Y.value.booking_type&&(Y.value.people_count<Q.value||Y.value.people_count>W.value))s({title:`人数需在 ${Q.value}-${W.value} 之间`,icon:"none"});else{F.value=!0;try{await T($.value,Y.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{F.value=!1}}else s({title:"请完整填写预约信息",icon:"none"});else s({title:"当前场次不可预约,请返回活动详情重新选择",icon:"none"})}return o(e=>{$.value=Number((null==e?void 0:e.id)||0),q.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,V=M;return r(),i(u,{class:"page-wrap"},{default:t(()=>[_(l),_(N,{"scroll-y":"",class:"page"},{default:t(()=>[D.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=K.value)?void 0:e.activity)?void 0:a.title)||"活动预约"),1)]}),_:1}),_(u,{class:"field-label"},{default:t(()=>[f("预约场次")]),_:1}),E.value?(r(),i(u,{key:0,class:"session-info"},{default:t(()=>[_(o,{class:"session-info-name"},{default:t(()=>[f(m(E.value.session_name||"场次"),1)]),_:1}),_(o,{class:"session-info-line"},{default:t(()=>[f("场次时间:"+m(E.value.time_display||"-"),1)]),_:1}),_(o,{class:"session-info-line"},{default:t(()=>[f(m(E.value.enrolled_count_text||"已报名数:"+(Number(E.value.booked_count)||0)),1)]),_:1})]),_:1})):(r(),i(u,{key:1,class:"session-info session-info--empty"},{default:t(()=>[f("暂无场次信息")]),_:1})),J.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=>O.value=!O.value)},{default:t(()=>[_(s,{class:"expand-arrow-img",src:O.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&&!O.value}])},{default:t(()=>[_(v,{class:"notice-inline-rich",nodes:J.value},null,8,["nodes"])]),_:1},8,["class"])]),_:1})):h("",!0)]),_:1}),K.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(()=>[Z.value?(r(),i(u,{key:0,class:k(["mode-pill",{on:"individual"===Y.value.booking_type}]),onClick:te},{default:t(()=>[f("个人")]),_:1},8,["class"])):h("",!0),ee.value?(r(),i(u,{key:1,class:k(["mode-pill",{on:"group"===Y.value.booking_type}]),onClick:se},{default:t(()=>[f(m(ae.value),1)]),_:1},8,["class"])):h("",!0)]),_: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:Y.value.people_count,"onUpdate:modelValue":a[1]||(a[1]=e=>Y.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:Y.value.visitor_name,"onUpdate:modelValue":a[3]||(a[3]=e=>Y.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:Y.value.visitor_phone,"onUpdate:modelValue":a[4]||(a[4]=e=>Y.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(()=>[_(V,{class:"btn primary",disabled:!H.value||F.value||D.value,onClick:ce},{default:t(()=>[f(m(F.value?"提交中...":"确认预约"),1)]),_:1},8,["disabled"])]),_:1})]),_:1})}}}),[["__scopeId","data-v-03d8bf39"]]);export{q as default};
|