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
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import{d as e,e as a,f as l,w as t,V as i,j as o,k as n,s as u,m as s,g as c,S as r,n as v,p as d,q as p,u as _,v as f,x as y,F as m,y as g,B as b,H as h,t as k,C as $,D as w,Z as x,I as S,Q as M,a3 as C,$ as D,a0 as V,a1 as j,a2 as N}from"./index-_pXctLR1.js";import{h as A,i as F}from"./content.BpoHdgiW.js";import{g as T,l as z}from"./localProfile.BA58kiV-.js";import{i as B,a as U}from"./icon_up.DJ5zmdk8.js";import{_ as Y}from"./_plugin-vue_export-helper.BCo6x5W8.js";function q(e){if(null==e||""===e)return"";const a=String(e);let l="";if(/<[a-z][\s\S]*>/i.test(a)){const e=function(e){if(!e||"string"!=typeof e)return"";const a="max-width:100%;height:auto;display:block;vertical-align:top;";return e.replace(/<img\b([\s\S]*?)(\/>|>)/gi,(e,l,t)=>{const i=String(l).trim();return/style\s*=/i.test(i)?/max-width\s*:/i.test(i)?e:e.replace(/style\s*=\s*(["'])([\s\S]*?)\1/i,(e,l,t)=>/max-width/i.test(t)?e:`style=${l}${t};${a}${l}`):`<img ${i} style="${a}"${"/>"===t?" />":">"}`})}(a);l=`<div style="font-size:13px;color:#2c2c2c;line-height:1.8;">${e}</div>`}else{const e=function(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}(a);l=`<div style="white-space:pre-wrap;font-size:13px;color:#2c2c2c;line-height:1.8;">${e}</div>`}return(t=l)&&String(t).trim()&&String(t).replace(/<[^>]+>/g," ").replace(/&nbsp;/gi," ").replace(/\s+/g," ").trim().length>0?l:"";var t}const I=Y(e({__name:"reserve",setup(e){const Y=a(0),I=a(!1),H=a(!1),O=a(null),P=a(!0),Q=a(!1),R=a({activity_day_id:0,visitor_name:"",visitor_phone:"",booking_type:"individual",people_count:1});l(()=>{var e;return((null==(e=O.value)?void 0:e.days)||[]).find(e=>e.id===R.value.activity_day_id)});const Z=l(()=>!!R.value.activity_day_id&&!!R.value.visitor_name&&/^1\d{10}$/.test(R.value.visitor_phone)),E=l(()=>{var e,a;return q(null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.reservation_notice)});t(E,()=>{P.value=!0,D(()=>{setTimeout(()=>{var e;const a=null==(e=V())?void 0:e.proxy,l=j();a&&l.in(a);const t=N(187);l.select(".judge-notice-reserve").boundingClientRect(),l.exec(e=>{const[a]=e||[];Q.value=!!(a&&a.height&&a.height>t+1),Q.value?P.value=!1:P.value=!0})},120)})});const G=l(()=>{var e,a;return String((null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.booking_audience)||"both")}),J=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))}),K=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,J.value)}),L=l(()=>{var e,a;return(null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.booking_modes)||["individual","group"]}),W=l(()=>"individual"===G.value),X=l(()=>"group"===G.value),ee=l(()=>`团体(${J.value}-${K.value}人)`),ae=l(()=>"group"===G.value||"both"===G.value&&"group"===R.value.booking_type),le=l(()=>{var e;return[...(null==(e=O.value)?void 0:e.days)||[]].sort((e,a)=>String(e.activity_date).localeCompare(String(a.activity_date)))});function te(e){return String(e).padStart(2,"0")}function ie(e){const a=new Date,l=`${a.getFullYear()}-${te(a.getMonth()+1)}-${te(a.getDate())}`,t=String(e).slice(0,10);if(t===l)return"今天";const i=new Date(a);i.setDate(i.getDate()+1);if(t===`${i.getFullYear()}-${te(i.getMonth()+1)}-${te(i.getDate())}`)return"明天";const o=new Date(a);o.setDate(o.getDate()+2);return t===`${o.getFullYear()}-${te(o.getMonth()+1)}-${te(o.getDate())}`?"后天":""}function oe(e){const a=String(e).slice(0,10).split("-");return 3!==a.length?"":`${Number(a[1])}${Number(a[2])}`}function ne(e){const a=Number((null==e?void 0:e.available_count)??0);return a<=0?"0张":`${a}`}function ue(){if("individual"===G.value)return R.value.booking_type="individual",void(R.value.people_count=1);if("group"===G.value?R.value.booking_type="group":L.value.includes(R.value.booking_type)||(R.value.booking_type="individual"),"individual"===R.value.booking_type)return void(R.value.people_count=1);const e=Math.floor(Number(R.value.people_count||0));R.value.people_count=Math.min(K.value,Math.max(J.value,e||J.value))}function se(){X.value||(R.value.booking_type="individual",ue())}function ce(){W.value||(R.value.booking_type="group",ue())}async function re(){var e,a;if(Y.value){I.value=!0;try{O.value=await A(Y.value),ue();const l=((null==(e=O.value)?void 0:e.days)||[]).find(e=>e.is_bookable);if(l)R.value.activity_day_id=l.id;else{const e=((null==(a=O.value)?void 0:a.days)||[])[0];e&&(R.value.activity_day_id=e.id)}await async function(){if(c(r.accessToken))try{const e=await T();return(null==e?void 0:e.real_name)&&(R.value.visitor_name=e.real_name),void((null==e?void 0:e.phone)&&(R.value.visitor_phone=e.phone))}catch{}const e=z();(null==e?void 0:e.real_name)&&(R.value.visitor_name=e.real_name),(null==e?void 0:e.phone)&&(R.value.visitor_phone=e.phone)}()}catch(l){u({title:(null==l?void 0:l.message)||"加载预约信息失败",icon:"none"})}finally{I.value=!1}}}function ve(){R.value.people_count=Math.max(J.value,(Number(R.value.people_count)||J.value)-1),ue()}function de(){R.value.people_count=Math.min(K.value,(Number(R.value.people_count)||J.value)+1),ue()}async function pe(){if(Z.value&&Y.value)if(ue(),"group"===R.value.booking_type&&(R.value.people_count<J.value||R.value.people_count>K.value))u({title:`人数需在 ${J.value}-${K.value} 之间`,icon:"none"});else{H.value=!0;try{await F(Y.value,R.value),u({title:"预约成功",icon:"success"}),setTimeout(()=>{C({url:`/pages/activity/detail?id=${Y.value}`})},500)}catch(e){const a=(null==e?void 0:e.errors)||{},l=Array.isArray(a.visitor_phone)&&a.visitor_phone[0]||Array.isArray(a.activity_day_id)&&a.activity_day_id[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)||"预约失败";u({title:l,icon:"none"})}finally{H.value=!1}}else u({title:"请完整填写预约信息",icon:"none"})}return i(e=>{Y.value=Number((null==e?void 0:e.id)||0),re()}),(e,a)=>{const l=s,t=k,i=p,c=$,r=x,C=S,D=M;return v(),o(l,{class:"page-wrap"},{default:n(()=>[d(i,{"scroll-y":"",class:"page"},{default:n(()=>[I.value?(v(),o(l,{key:0,class:"loading-tip"},{default:n(()=>[_("加载中…")]),_:1})):(v(),o(l,{key:1,class:"content"},{default:n(()=>[d(l,{class:"card"},{default:n(()=>[d(l,{class:"act-title"},{default:n(()=>{var e,a;return[_(f((null==(a=null==(e=O.value)?void 0:e.activity)?void 0:a.title)||"活动预约"),1)]}),_:1}),d(l,{class:"field-label"},{default:n(()=>[_("日期")]),_:1}),d(i,{"scroll-x":"",class:"day-scroll","show-scrollbar":!1,"enable-flex":!0},{default:n(()=>[d(l,{class:"day-scroll-inner"},{default:n(()=>[(v(!0),y(m,null,g(le.value,e=>(v(),o(l,{key:e.id,class:b(["day-chip",{active:R.value.activity_day_id===e.id&&e.is_bookable,disabled:!e.is_bookable}]),onClick:a=>function(e){if(null==e?void 0:e.is_bookable)return void(R.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 u({title:"该日期已无余票",icon:"none"});const a=String((null==e?void 0:e.opens_at)||"").slice(0,16).replace("T"," "),l=String((null==e?void 0:e.closes_at)||"").slice(0,16).replace("T"," ");u(a&&l?{title:`可预约时段:${a} ~ ${l}`,icon:"none",duration:2800}:{title:"该日期当前不可预约",icon:"none"})}(e)},{default:n(()=>[R.value.activity_day_id===e.id&&e.is_bookable?(v(),o(l,{key:0,class:"chip-check"},{default:n(()=>[_("✓")]),_:1})):h("",!0),d(t,{class:"chip-line1"},{default:n(()=>[_(f(ie(e.activity_date)||" "),1)]),_:2},1024),d(t,{class:"chip-line2"},{default:n(()=>[_(f(oe(e.activity_date)),1)]),_:2},1024),d(t,{class:"chip-line3"},{default:n(()=>[_(f(ne(e)),1)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})]),_:1}),E.value?(v(),o(l,{key:0,class:"notice-block"},{default:n(()=>[d(l,{class:"sec-title-row notice-head-row"},{default:n(()=>[d(t,{class:"notice-label"},{default:n(()=>[_("预约须知")]),_:1}),Q.value?(v(),o(l,{key:0,class:"expand-arrow-tap",onClick:a[0]||(a[0]=e=>P.value=!P.value)},{default:n(()=>[d(c,{class:"expand-arrow-img",src:P.value?w(B):w(U),mode:"aspectFit"},null,8,["src"])]),_:1})):h("",!0)]),_:1}),d(l,{class:b(["notice-block-body judge-notice-reserve",{"is-collapsed":Q.value&&!P.value}])},{default:n(()=>[d(r,{class:"notice-inline-rich",nodes:E.value},null,8,["nodes"])]),_:1},8,["class"])]),_:1})):h("",!0)]),_:1}),O.value?(v(),o(l,{key:0,class:"card"},{default:n(()=>[d(l,{class:"mode-row"},{default:n(()=>[d(t,{class:"mode-label"},{default:n(()=>[_("预约类型")]),_:1}),d(l,{class:"mode-btns"},{default:n(()=>[d(l,{class:b(["mode-pill",{on:"individual"===R.value.booking_type,disabled:X.value}]),onClick:se},{default:n(()=>[_("个人")]),_:1},8,["class"]),d(l,{class:b(["mode-pill",{on:"group"===R.value.booking_type,disabled:W.value}]),onClick:ce},{default:n(()=>[_(f(ee.value),1)]),_:1},8,["class"])]),_:1})]),_:1}),ae.value?(v(),o(l,{key:0,class:"count-row"},{default:n(()=>[d(t,{class:"count-name"},{default:n(()=>[_("参观人数")]),_:1}),d(l,{class:"stepper"},{default:n(()=>[d(l,{class:"step-btn",onClick:ve},{default:n(()=>[_("")]),_:1}),d(C,{modelValue:R.value.people_count,"onUpdate:modelValue":a[1]||(a[1]=e=>R.value.people_count=e),modelModifiers:{number:!0},class:"step-val",type:"number",onBlur:a[2]||(a[2]=e=>ue())},null,8,["modelValue"]),d(l,{class:"step-btn",onClick:de},{default:n(()=>[_("+")]),_:1})]),_:1})]),_:1})):h("",!0)]),_:1})):h("",!0),d(l,{class:"card"},{default:n(()=>[d(l,{class:"card-hd"},{default:n(()=>[_("联系人信息")]),_:1}),d(l,{class:"form-row"},{default:n(()=>[d(t,{class:"form-label"},{default:n(()=>[_("联系人")]),_:1}),d(C,{modelValue:R.value.visitor_name,"onUpdate:modelValue":a[3]||(a[3]=e=>R.value.visitor_name=e),class:"form-input",placeholder:"请输入姓名","placeholder-class":"ph"},null,8,["modelValue"])]),_:1}),d(l,{class:"form-row last"},{default:n(()=>[d(t,{class:"form-label"},{default:n(()=>[_("手机号")]),_:1}),d(C,{modelValue:R.value.visitor_phone,"onUpdate:modelValue":a[4]||(a[4]=e=>R.value.visitor_phone=e),class:"form-input",type:"number",maxlength:"11",placeholder:"输入手机号","placeholder-class":"ph"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})),d(l,{class:"safe-bottom"})]),_:1}),d(l,{class:"action-bar"},{default:n(()=>[d(D,{class:"btn primary",disabled:!Z.value||H.value||I.value,onClick:pe},{default:n(()=>[_(f(H.value?"提交中...":"确认预约"),1)]),_:1},8,["disabled"])]),_:1})]),_:1})}}}),[["__scopeId","data-v-103c8dd3"]]);export{I as default};