|
|
import{d as e,e as l,f as a,W as t,j as i,k as o,s as u,v as n,g as s,S as d,t as c,u as r,n as v,y as _,z as p,B as f,F as m,C as y,E as g,G as b,x as h,_ as k,I as $,T as x,a4 as w}from"./index-BGcsYrai.js";import{h as S,i as V}from"./content.CxzBwpG2.js";import{g as M,l as C}from"./localProfile.9aru8Fu9.js";import{_ as D}from"./_plugin-vue_export-helper.BCo6x5W8.js";function N(e){if(null==e||""===e)return"";const l=String(e);let a="";if(/<[a-z][\s\S]*>/i.test(l))a=function(e){if(!e||"string"!=typeof e)return"";const l="max-width:100%;height:auto;display:block;vertical-align:top;";return e.replace(/<img\b([\s\S]*?)(\/>|>)/gi,(e,a,t)=>{const i=String(a).trim();return/style\s*=/i.test(i)?/max-width\s*:/i.test(i)?e:e.replace(/style\s*=\s*(["'])([\s\S]*?)\1/i,(e,a,t)=>/max-width/i.test(t)?e:`style=${a}${t};${l}${a}`):`<img ${i} style="${l}"${"/>"===t?" />":">"}`})}(l);else{const e=function(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}(l);a=`<div style="white-space:pre-wrap;font-size:13px;color:#4e5969;line-height:1.65;">${e}</div>`}return(t=a)&&String(t).trim()&&String(t).replace(/<[^>]+>/g," ").replace(/ /gi," ").replace(/\s+/g," ").trim().length>0?a:"";var t}const j=D(e({__name:"reserve",setup(e){const D=l(0),j=l(!1),T=l(!1),F=l(null),U=l(!1),z=l({activity_day_id:0,visitor_name:"",visitor_phone:"",id_card:"",booking_type:"individual",people_count:1});a(()=>{var e;return((null==(e=F.value)?void 0:e.days)||[]).find(e=>e.id===z.value.activity_day_id)});const Y=a(()=>!!z.value.activity_day_id&&!!z.value.visitor_name&&/^1\d{10}$/.test(z.value.visitor_phone)),B=a(()=>{var e,l;return N(null==(l=null==(e=F.value)?void 0:e.activity)?void 0:l.reservation_notice)}),I=a(()=>{var e,l;return String((null==(l=null==(e=F.value)?void 0:e.activity)?void 0:l.booking_audience)||"both")}),q=a(()=>{var e,l;return Math.max(1,Number((null==(l=null==(e=F.value)?void 0:e.activity)?void 0:l.min_people_per_order)||1))}),E=a(()=>{var e,l;return Math.max(1,Number((null==(l=null==(e=F.value)?void 0:e.activity)?void 0:l.max_people_per_order)||1))}),G=a(()=>{var e,l;return(null==(l=null==(e=F.value)?void 0:e.activity)?void 0:l.booking_modes)||["individual","group"]}),O=a(()=>{var e;return[...(null==(e=F.value)?void 0:e.days)||[]].sort((e,l)=>String(e.activity_date).localeCompare(String(l.activity_date)))});function P(e){return String(e).padStart(2,"0")}function W(e){const l=new Date,a=`${l.getFullYear()}-${P(l.getMonth()+1)}-${P(l.getDate())}`,t=String(e).slice(0,10);if(t===a)return"今天";const i=new Date(l);i.setDate(i.getDate()+1);if(t===`${i.getFullYear()}-${P(i.getMonth()+1)}-${P(i.getDate())}`)return"明天";const o=new Date(l);o.setDate(o.getDate()+2);return t===`${o.getFullYear()}-${P(o.getMonth()+1)}-${P(o.getDate())}`?"后天":""}function X(e){const l=String(e).slice(0,10).split("-");return 3!==l.length?"":`${Number(l[1])}月${Number(l[2])}日`}function A(e){const l=Number((null==e?void 0:e.available_count)??0);return l<=0?"0张":`${l}张`}function H(){if("individual"===I.value)return z.value.booking_type="individual",void(z.value.people_count=1);if("group"===I.value?z.value.booking_type="group":G.value.includes(z.value.booking_type)||(z.value.booking_type="individual"),"individual"===z.value.booking_type)return void(z.value.people_count=1);const e=Math.floor(Number(z.value.people_count||0));z.value.people_count=Math.min(E.value,Math.max(q.value,e||q.value))}async function J(){var e,l;if(D.value){j.value=!0;try{F.value=await S(D.value),H();const a=((null==(e=F.value)?void 0:e.days)||[]).find(e=>e.is_bookable);if(a)z.value.activity_day_id=a.id;else{const e=((null==(l=F.value)?void 0:l.days)||[])[0];e&&(z.value.activity_day_id=e.id)}await async function(){if(s(d.accessToken))try{const e=await M();return(null==e?void 0:e.real_name)&&(z.value.visitor_name=e.real_name),(null==e?void 0:e.phone)&&(z.value.visitor_phone=e.phone),void((null==e?void 0:e.id_card)&&(z.value.id_card=e.id_card))}catch{}const e=C();(null==e?void 0:e.real_name)&&(z.value.visitor_name=e.real_name),(null==e?void 0:e.phone)&&(z.value.visitor_phone=e.phone),(null==e?void 0:e.id_card)&&(z.value.id_card=e.id_card)}()}catch(a){u({title:(null==a?void 0:a.message)||"加载预约信息失败",icon:"none"})}finally{j.value=!1}}}function K(){z.value.people_count=Math.max(q.value,(Number(z.value.people_count)||q.value)-1),H()}function L(){z.value.people_count=Math.min(E.value,(Number(z.value.people_count)||q.value)+1),H()}async function Q(){var e,l;if(Y.value&&D.value)if(H(),"group"===z.value.booking_type&&(z.value.people_count<q.value||z.value.people_count>E.value))u({title:`人数需在 ${q.value}-${E.value} 之间`,icon:"none"});else if(!z.value.id_card||/^\d{17}[\dXx]$/.test(z.value.id_card)){T.value=!0;try{await V(D.value,z.value),u({title:"预约成功",icon:"success"}),setTimeout(()=>{w({url:`/pages/activity/detail?id=${D.value}`})},500)}catch(a){const t=(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])||"预约失败";u({title:t,icon:"none"})}finally{T.value=!1}}else u({title:"身份证号格式不正确",icon:"none"});else u({title:"请完整填写预约信息",icon:"none"})}return t(e=>{D.value=Number((null==e?void 0:e.id)||0),J()}),(e,l)=>{const a=n,t=h,s=v,d=k,w=$,S=x;return c(),i(a,{class:"page-wrap"},{default:o(()=>[r(s,{"scroll-y":"",class:"page"},{default:o(()=>[j.value?(c(),i(a,{key:0,class:"loading-tip"},{default:o(()=>[_("加载中…")]),_:1})):(c(),i(a,{key:1,class:"content"},{default:o(()=>[r(a,{class:"card"},{default:o(()=>[r(a,{class:"act-title"},{default:o(()=>{var e,l;return[_(p((null==(l=null==(e=F.value)?void 0:e.activity)?void 0:l.title)||"活动预约"),1)]}),_:1}),r(a,{class:"field-label"},{default:o(()=>[_("日期")]),_:1}),r(s,{"scroll-x":"",class:"day-scroll","show-scrollbar":!1,"enable-flex":!0},{default:o(()=>[r(a,{class:"day-scroll-inner"},{default:o(()=>[(c(!0),f(m,null,y(O.value,e=>(c(),i(a,{key:e.id,class:g(["day-chip",{active:z.value.activity_day_id===e.id&&e.is_bookable,disabled:!e.is_bookable}]),onClick:l=>function(e){if(null==e?void 0:e.is_bookable)return void(z.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 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"," ");u(l&&a?{title:`可预约时段:${l} ~ ${a}`,icon:"none",duration:2800}:{title:"该日期当前不可预约",icon:"none"})}(e)},{default:o(()=>[z.value.activity_day_id===e.id&&e.is_bookable?(c(),i(a,{key:0,class:"chip-check"},{default:o(()=>[_("✓")]),_:1})):b("",!0),r(t,{class:"chip-line1"},{default:o(()=>[_(p(W(e.activity_date)||" "),1)]),_:2},1024),r(t,{class:"chip-line2"},{default:o(()=>[_(p(X(e.activity_date)),1)]),_:2},1024),r(t,{class:"chip-line3"},{default:o(()=>[_(p(A(e)),1)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})]),_:1}),r(a,{class:"card-foot"},{default:o(()=>[r(t,{class:"foot-link",onClick:l[0]||(l[0]=e=>U.value=!U.value)},{default:o(()=>[_(p(U.value?"收起预约须知":"展开预约须知")+" › ",1)]),_:1})]),_:1}),U.value&&B.value?(c(),i(a,{key:0,class:"notice-box"},{default:o(()=>[r(d,{class:"notice-inline-rich",nodes:B.value},null,8,["nodes"])]),_:1})):b("",!0)]),_:1}),r(a,{class:"card"},{default:o(()=>[r(a,{class:"card-hd"},{default:o(()=>[_("观众数")]),_:1}),"both"===I.value?(c(),i(a,{key:0,class:"mode-row"},{default:o(()=>[r(t,{class:"mode-label"},{default:o(()=>[_("预约类型")]),_:1}),r(a,{class:"mode-btns"},{default:o(()=>[r(a,{class:g(["mode-pill",{on:"individual"===z.value.booking_type}]),onClick:l[1]||(l[1]=e=>{z.value.booking_type="individual",H()})},{default:o(()=>[_("个人")]),_:1},8,["class"]),r(a,{class:g(["mode-pill",{on:"group"===z.value.booking_type}]),onClick:l[2]||(l[2]=e=>{z.value.booking_type="group",H()})},{default:o(()=>[_("团体")]),_:1},8,["class"])]),_:1})]),_:1})):b("",!0),r(a,{class:"count-row"},{default:o(()=>[r(t,{class:"count-name"},{default:o(()=>[_("参观人数")]),_:1}),"group"===I.value||"both"===I.value&&"group"===z.value.booking_type?(c(),i(a,{key:0,class:"stepper"},{default:o(()=>[r(a,{class:"step-btn",onClick:K},{default:o(()=>[_("−")]),_:1}),r(w,{modelValue:z.value.people_count,"onUpdate:modelValue":l[3]||(l[3]=e=>z.value.people_count=e),modelModifiers:{number:!0},class:"step-val",type:"number",onBlur:l[4]||(l[4]=e=>H())},null,8,["modelValue"]),r(a,{class:"step-btn",onClick:L},{default:o(()=>[_("+")]),_:1})]),_:1})):(c(),i(t,{key:1,class:"count-fixed"},{default:o(()=>[_("1")]),_:1}))]),_:1}),r(a,{class:"limit-tip"},{default:o(()=>[_("每次预约限制"+p(E.value)+"人",1)]),_:1})]),_:1}),r(a,{class:"card"},{default:o(()=>[r(a,{class:"card-hd"},{default:o(()=>[_("联系人信息")]),_:1}),r(a,{class:"form-row"},{default:o(()=>[r(t,{class:"form-label"},{default:o(()=>[_("联系人")]),_:1}),r(w,{modelValue:z.value.visitor_name,"onUpdate:modelValue":l[5]||(l[5]=e=>z.value.visitor_name=e),class:"form-input",placeholder:"请输入姓名","placeholder-class":"ph"},null,8,["modelValue"])]),_:1}),r(a,{class:"form-row"},{default:o(()=>[r(t,{class:"form-label"},{default:o(()=>[_("手机号")]),_:1}),r(w,{modelValue:z.value.visitor_phone,"onUpdate:modelValue":l[6]||(l[6]=e=>z.value.visitor_phone=e),class:"form-input",type:"number",maxlength:"11",placeholder:"输入手机号","placeholder-class":"ph"},null,8,["modelValue"])]),_:1}),r(a,{class:"form-row last"},{default:o(()=>[r(t,{class:"form-label"},{default:o(()=>[_("身份证")]),_:1}),r(w,{modelValue:z.value.id_card,"onUpdate:modelValue":l[7]||(l[7]=e=>z.value.id_card=e),class:"form-input",maxlength:"18",placeholder:"输入身份证号(选填)","placeholder-class":"ph"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})),r(a,{class:"safe-bottom"})]),_:1}),r(a,{class:"action-bar"},{default:o(()=>[r(S,{class:"btn primary",disabled:!Y.value||T.value||j.value,onClick:Q},{default:o(()=>[_(p(T.value?"提交中...":"确认预约"),1)]),_:1},8,["disabled"])]),_:1})]),_:1})}}}),[["__scopeId","data-v-6c0f6d05"]]);export{j as default};
|