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.

1 line
41 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{n as e,st as t}from"./axios-CiYFffbI.js";import{I as n,N as r,O as i,P as a,V as o,Y as s,_ as c,d as l,f as u,h as d,i as f,it as p,kt as m,l as h,nt as g,p as _,u as v,ut as ee,v as y,y as te,z as b}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{a as x,n as S,o as C}from"./index-BvpdbDif.js";import{t as ne}from"./RichEditorField-DGsT_W30.js";import{t as re}from"./listTable-Dphyh0Bn.js";function ie(e,t){return function(){return e()?window.confirm(t):!0}}function ae(e,t=`当前有未保存改动,确定要离开吗?`){function n(t){e()&&(t.preventDefault(),t.returnValue=``)}x((n,r,i)=>{if(!e()){i();return}i(window.confirm(t))}),r(()=>{window.addEventListener(`beforeunload`,n)}),a(()=>{window.removeEventListener(`beforeunload`,n)})}var oe={style:{color:`#f53f3f`}},se={style:{color:`#f53f3f`}},ce={style:{color:`#f53f3f`}},le={style:{color:`#f53f3f`}},ue={style:{color:`#f53f3f`}},de={style:{color:`#f53f3f`}},fe={style:{color:`#f53f3f`}},pe={style:{color:`#f53f3f`}},me={class:`activity-form-tags`},he={class:`activity-form-tags__line`},ge={class:`activity-form-tags__chips`},_e={key:0,class:`activity-form-tags__empty`},ve={key:1,style:{color:`var(--color-text-3)`}},ye={style:{"margin-left":`8px`,color:`var(--color-text-3)`}},be={class:`activity-address-coord-row`},xe={style:{color:`#f53f3f`}},Se={class:`activity-cover-carousel-wrap`},Ce={class:`activity-cover-carousel-row__col`},we=[`src`],Te={class:`activity-cover-carousel-row__col`},Ee={style:{display:`flex`,"flex-direction":`column`,"align-items":`flex-start`,width:`100%`}},De={style:{width:`100%`,"margin-bottom":`8px`}},Oe={class:`activity-gallery-grid`},ke=[`src`,`onClick`],Ae=[`src`,`onClick`],je=[`src`],Me=[`src`],Ne={style:{display:`flex`,gap:`12px`}},Pe={style:{width:`280px`,height:`520px`,overflow:`auto`,border:`1px solid #e5e6eb`,padding:`8px`}},Fe={key:0,class:`booking-settings`},Ie={style:{"margin-top":`16px`,"text-align":`right`}},Le=C(te({__name:`ActivityList`,setup(a){let te=p([]),x=p([]),C=p(null),Le=p(!1),Re=p(!1),w=p(!1),T=g({current:1,pageSize:10,total:0}),E=g({keyword:``,venue_id:void 0,reservation_type:void 0,is_active:void 0,schedule_status:void 0,audit_status:void 0}),D=p(null),O=p(``),k=p(!1),A=p(!0),ze=p(null),Be=p(``),Ve={maxHeight:`70vh`,overflow:`auto`},He=p(0),Ue=p(!1),We=p(`image`),j=p(``),Ge=p(!1),M=p(!1),N=p(``),P=p([]),Ke=p(null),F=null,I=null,L=p(null),qe={lat:31.299379,lng:120.585315},R=p(!1),z=p(!1),Je=p(!1),B=p(null),V=p(`both`),H=p(1),U=p(1),W=p([]);function G(){return`bk-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function K(e){if(!e)return``;let t=new Date(String(e));return Number.isNaN(t.getTime())?String(e).slice(0,10):new Intl.DateTimeFormat(`en-CA`,{timeZone:`Asia/Shanghai`,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(t)}function Ye(e){let t=e.start_at?K(String(e.start_at)):``,n=e.end_at?K(String(e.end_at)):``;return!t&&!n?`-`:t&&n?t===n?t:`${t}${n}`:t||n||`-`}let Xe=h(()=>W.value.reduce((e,t)=>e+(Number(t.day_quota)||0),0)),q=g({venue_id:void 0,reservation_type:`online`,location:``,lat:void 0,lng:void 0,specific_time:``,offline_reservation_method:``,external_url:``,title:``,contact_name:``,contact_phone:``,start_at:``,end_at:``,detail_html:``,cover_image:``,gallery_media:[],tags:[],sort:0,summary:``,is_active:!0}),Ze=p(``),J=g({title:``,venue_id:``,start_at:``,end_at:``,reservation_type:``,offline_reservation_method:``,external_url:``,location:``,cover_image:``,gallery_media:``,detail_html:``,contact_name:``,contact_phone:``}),Qe=h({get(){if(q.start_at&&q.end_at)return[q.start_at,q.end_at]},set(e){Array.isArray(e)&&e.length>=2&&e[0]&&e[1]?(q.start_at=String(e[0]),q.end_at=String(e[1])):(q.start_at=``,q.end_at=``)}}),$e=h(()=>mt(q.start_at||``,q.end_at||``));function et(e,t){let n=String(e||``).trim();if(n)return/^https?:\/\//i.test(n)?n:n.startsWith(`/`)?`${window.location.origin}${n}`:`${window.location.origin}/${n}`;let r=String(t||``).trim();if(!r)return``;let i=r.replace(/^\/+/,``);return`${window.location.origin}/storage/${i}`}async function Y(e){let t=new FormData;t.append(`file`,e);let{data:n}=await S.post(`/upload`,t);return et(n?.url,n?.path)}function tt(){He.value+=1}function nt(e,t){t&&(We.value=e,j.value=t,Ue.value=!0)}function rt(){let t=this.quill,n=document.createElement(`input`);n.type=`file`,n.accept=`image/*`,n.onchange=async()=>{let r=n.files?.[0];if(r)try{let e=await Y(r),n=t.getSelection(!0)?.index??Math.max(0,t.getLength()-1);t.insertEmbed(n,`image`,e,`user`),t.setSelection(n+1,0)}catch(t){e.error(t?.response?.data?.message??`图片上传失败`)}},n.click()}function X(){let t=this.quill,n=document.createElement(`input`);n.type=`file`,n.accept=`video/*`,n.onchange=async()=>{let r=n.files?.[0];if(r)try{let e=await Y(r),n=t.getSelection(!0)?.index??Math.max(0,t.getLength()-1);t.insertEmbed(n,`video`,e,`user`),t.setSelection(n+1,0)}catch(t){e.error(t?.response?.data?.message??`视频上传失败`)}},n.click()}let it={modules:{toolbar:{container:[[{header:[1,2,3,!1]}],[`bold`,`italic`,`underline`,`strike`],[{color:[]},{background:[]}],[{list:`ordered`},{list:`bullet`}],[{align:[]}],[`link`,`image`,`video`],[`clean`]],handlers:{image:rt,video:X}}},placeholder:`请输入活动详情内容`};function at(){return JSON.stringify(q)}function ot(){Be.value=at()}function st(){return w.value&&at()!==Be.value}let ct=ie(st,`活动表单有未保存改动,确认关闭吗?`);function lt(){return C.value?.role===`venue_admin`}function ut(){return C.value?.role===`super_admin`}function dt(e){return e===`pending`?`待审核`:e===`rejected`?`已退回`:e===`approved`?`已通过`:`-`}function ft(e){return e===`pending`?`orangered`:e===`rejected`?`red`:e===`approved`?`green`:`gray`}function pt(){return new Intl.DateTimeFormat(`en-CA`,{timeZone:`Asia/Shanghai`,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(new Date)}function Z(e,t){return!e||!t?0:e<t?-1:e>t?1:0}function mt(e,t){let n=pt();return!e&&!t?null:e&&!t?Z(n,e)<0?`not_started`:`ongoing`:!e&&t?Z(n,t)>0?`ended`:`ongoing`:Z(n,e)<0?`not_started`:Z(n,t)>0?`ended`:`ongoing`}function ht(e){return e==null?``:e===`not_started`?`未开始`:e===`ended`?`已结束`:`进行中`}function gt(e){return e==null?`gray`:e===`not_started`?`arcoblue`:e===`ended`?`gray`:`green`}async function _t(t){try{await S.post(`/activities/${t.id}/audit/approve`),e.success(`已通过审核`),await $()}catch(t){e.error(t?.response?.data?.message??`操作失败`)}}function vt(e){D.value=e.id,O.value=``,k.value=!0}async function yt(){if(!D.value)return!1;try{return await S.post(`/activities/${D.value}/audit/reject`,{remark:O.value||void 0}),e.success(`已退回`),k.value=!1,await $(),!0}catch(t){return e.error(t?.response?.data?.message??`操作失败`),!1}}function bt(e){return e===`individual`?`个人`:e===`group`?`团体`:e===`both`?`个人+团体`:`未配置`}function xt(e){if(e.booking_audience==null||e.booking_audience===``)return``;let t=e.total_quota;return t==null?`0`:String(t)}function St(e){if(!Pt(e))return Ft(e.reservation_type)+`(无线上场次)`;let t=e.booking_audience,n=``;return(t===`group`||t===`both`)&&(n=` · 人数 ${e.min_people_per_order??1}-${e.max_people_per_order??1}`),`${bt(t)}${n} · 总名额 ${xt(e)}`}function Q(e){if(e==null||e===``)return;let t=typeof e==`number`?e:parseFloat(String(e).trim());return Number.isFinite(t)?t:void 0}function Ct(){return`CRFBZ-NTART-YU4XX-LCDGK-3J456-VKBK2`}function wt(){let t=q.venue_id;if(!t){e.warning(`请先选择场馆`);return}let n=x.value.find(e=>e.id===t);if(!n)return;n.address?.trim()&&(q.location=n.address.trim());let r=Q(n.lat),i=Q(n.lng);r!==void 0&&i!==void 0?(q.lat=r,q.lng=i,e.success(`已填入本馆地址与坐标`)):n.address?.trim()?e.success(`已填入本馆地址,该馆尚未保存经纬度`):e.warning(`该场馆未设置地址与经纬度`)}async function Tt(){if(window.TMap)return;let e=Ct();if(!e)throw Error(`请先配置 VITE_TENCENT_MAP_KEY`);await new Promise((t,n)=>{let r=document.createElement(`script`);r.src=`https://map.qq.com/api/gljs?v=1.exp&key=${e}`,r.async=!0,r.onload=()=>t(),r.onerror=()=>n(Error(`腾讯地图SDK加载失败`)),document.head.appendChild(r)})}function Et(e,t){let n=window.TMap;F&&(I&&I.setMap(null),I=new n.MultiMarker({map:F,styles:{marker:new n.MarkerStyle({width:24,height:35})},geometries:[{id:`picked`,styleId:`marker`,position:new n.LatLng(e,t)}]}),F.setCenter(new n.LatLng(e,t)))}function Dt(e,t){let n=window.TMap;if(!F||!n)return;let r=new n.LatLng(e,t);F.resize?.(),F.setCenter(r),F.setZoom(13),setTimeout(()=>{F.resize?.(),F.setCenter(r)},120)}async function Ot(e,t){let{data:n}=await S.get(`/map/reverse-geocode`,{params:{lat:e,lng:t}});L.value={lat:e,lng:t,address:n.address||``}}async function kt(){await Tt();let t=window.TMap,n=Q(q.lat)??qe.lat,r=Q(q.lng)??qe.lng,i=new t.LatLng(n,r);if(F?F.setCenter(i):(F=new t.Map(Ke.value,{center:i,zoom:13}),F.on(`click`,async t=>{let n=Number(t.latLng.getLat().toFixed(6)),r=Number(t.latLng.getLng().toFixed(6));Et(n,r);try{await Ot(n,r)}catch(t){e.error(t?.response?.data?.message??`逆地理编码失败`)}})),Dt(n,r),Q(q.lat)!=null&&Q(q.lng)!=null){let e=Q(q.lat),t=Q(q.lng);Et(e,t),L.value={lat:e,lng:t,address:(q.location||``).trim()}}else I&&=(I.setMap(null),null),L.value=null}async function At(){Ge.value=!0,N.value=``,P.value=[],M.value=!0;try{await i(),setTimeout(async()=>{try{await kt()}catch(t){e.error(t?.message??`地图初始化失败`)}finally{M.value=!1}},250)}catch{M.value=!1}}async function jt(){if(!N.value.trim()){P.value=[];return}M.value=!0;try{let{data:e}=await S.get(`/map/search`,{params:{keyword:N.value,region:`苏州`}});P.value=e}catch(t){e.error(t?.response?.data?.message??`地图搜索失败`)}finally{M.value=!1}}async function Mt(e){Et(e.lat,e.lng),L.value={lat:e.lat,lng:e.lng,address:e.address||``};try{await Ot(e.lat,e.lng)}catch{}}function Nt(){return L.value?(q.lat=L.value.lat,q.lng=L.value.lng,L.value.address?.trim()&&(q.location=L.value.address.trim()),Ge.value=!1,!0):(e.warning(`请先点击地图或选择搜索结果`),!1)}function Pt(e){let t=e.reservation_type;return!t||t===`online`}function Ft(e){return e===`offline`?`线下预约`:e===`other`?`外链跳转预约`:`线上预约`}function It(e){let t=Number(e);return Number.isFinite(t)?String(t):`0`}function Lt(e){let t=e.reservation_type;return!t||t===`online`?`已预约 `+It(e.registered_count):t===`offline`?`浏览 `+It(e.view_count):t===`other`?`浏览 `+It(e.view_count)+` · 跳转 `+It(e.external_link_click_count):``}async function $(){Le.value=!0;try{let[e,t]=await Promise.all([S.get(`/activities`,{params:{page:T.current,page_size:T.pageSize,keyword:E.keyword||void 0,venue_id:E.venue_id||void 0,reservation_type:E.reservation_type,is_active:E.is_active,schedule_status:E.schedule_status,audit_status:E.audit_status}}),S.get(`/venues`)]);te.value=e.data.data,T.total=e.data.total,x.value=t.data}catch(t){e.error(t?.response?.data?.message??`加载活动失败`)}finally{Le.value=!1}}async function Rt(){let{data:e}=await S.get(`/me`);if(C.value=e,e?.role===`venue_admin`){let t=e.venues?.[0]?.id;E.venue_id=t,q.venue_id=t}}function zt(){A.value=!0,ze.value=null,Object.keys(J).forEach(e=>{J[e]=``}),q.venue_id=lt()?C.value?.venues?.[0]?.id:x.value[0]?.id,q.reservation_type=`online`,q.location=``,q.lat=void 0,q.lng=void 0,q.specific_time=``,q.offline_reservation_method=``,q.external_url=``,q.title=``,q.contact_name=``,q.contact_phone=``,q.start_at=``,q.end_at=``,q.detail_html=``,q.cover_image=``,q.gallery_media=[],q.tags=[],q.summary=``,q.sort=0,q.is_active=!0,tt(),ot(),w.value=!0}function Bt(e){A.value=!1,ze.value=e.id,Object.keys(J).forEach(e=>{J[e]=``}),q.venue_id=e.venue_id,q.reservation_type=e.reservation_type||`online`,q.location=e.location||``,q.lat=Q(e.lat),q.lng=Q(e.lng),q.specific_time=e.specific_time||``,q.offline_reservation_method=e.offline_reservation_method||``,q.external_url=e.external_url||``,q.title=e.title,q.contact_name=e.contact_name??``,q.contact_phone=e.contact_phone??``,q.start_at=e.start_at?K(e.start_at):``,q.end_at=e.end_at?K(e.end_at):``,q.detail_html=e.detail_html||``,q.cover_image=e.cover_image||``,q.gallery_media=Array.isArray(e.gallery_media)?[...e.gallery_media]:[],q.tags=Array.isArray(e.tags)?[...e.tags]:[],q.sort=e.sort??0,q.summary=e.summary||``,q.is_active=e.is_active,tt(),ot(),w.value=!0}function Vt(){T.current=1,$()}function Ht(){E.keyword=``,E.venue_id=lt()?C.value?.venues?.[0]?.id:void 0,E.reservation_type=void 0,E.is_active=void 0,E.schedule_status=void 0,E.audit_status=void 0,T.current=1,$()}function Ut(e){let t=new Set,n=[e];for(;n.length;){let e=n.shift();if(!(!e||t.has(e))){if(t.add(e),e instanceof File)return e;if(e?.target?.files?.[0]instanceof File)return e.target.files[0];if(Array.isArray(e)){n.push(...e);continue}if(typeof e==`object`){for(let t of[`file`,`raw`,`originFile`,`originFileObj`,`fileItem`,`item`,`data`])e[t]&&n.push(e[t]);for(let t of Object.values(e))t&&typeof t==`object`&&n.push(t)}}}return null}async function Wt(t){try{let n=Ut(t);if(!n)return!1;q.cover_image=await Y(n),e.success(`封面上传成功`)}catch(t){e.error(t?.response?.data?.message??`封面上传失败`)}return!1}async function Gt(t){try{let n=Ut(t);if(!n)return!1;let r=await Y(n),i=n.type.startsWith(`video/`);q.gallery_media.push({type:i?`video`:`image`,url:r}),e.success(`轮播资源上传成功`)}catch(t){e.error(t?.response?.data?.message??`轮播资源上传失败`)}return!1}function Kt(...e){Wt(e)}function qt(...e){Gt(e)}function Jt(){q.cover_image=``}function Yt(e){q.gallery_media.splice(e,1)}function Xt(){let t=Ze.value.trim();if(!t){e.warning(`请输入标签内容`);return}if(q.tags.includes(t)){e.warning(`标签已存在`);return}q.tags=[...q.tags,t],Ze.value=``}function Zt(e){let t=[...q.tags];t.splice(e,1),q.tags=t}function Qt(){Object.keys(J).forEach(e=>{J[e]=``});let e=!0;return q.venue_id||(J.venue_id=`请选择场馆`,e=!1),q.title.trim()||(J.title=`请填写活动名称`,e=!1),q.contact_name.trim()||(J.contact_name=`请填写联系人`,e=!1),q.contact_phone.trim()||(J.contact_phone=`请填写联系电话`,e=!1),q.start_at||(J.start_at=`请选择开始日期`,e=!1),q.end_at||(J.end_at=`请选择结束日期`,e=!1),q.location.trim()||(J.location=`请填写活动地点`,e=!1),q.reservation_type===`offline`&&!q.offline_reservation_method.trim()&&(J.offline_reservation_method=`请填写预约方式`,e=!1),q.reservation_type===`other`&&!q.external_url.trim()&&(J.external_url=`请填写外链地址`,e=!1),e}async function $t(){try{if(!Qt())return e.warning(`请填写所有必填项`),!1;let t={venue_id:q.venue_id,reservation_type:q.reservation_type,location:q.location.trim(),specific_time:q.specific_time.trim()||null,offline_reservation_method:q.reservation_type===`offline`&&q.offline_reservation_method.trim()||null,external_url:q.reservation_type===`other`&&q.external_url.trim()||null,title:q.title.trim(),summary:q.summary.trim()||null,quota:0,category:null,start_at:q.start_at||null,end_at:q.end_at||null,address:null,contact_name:q.contact_name.trim()||null,contact_phone:q.contact_phone.trim()||null,lat:Q(q.lat)??null,lng:Q(q.lng)??null,detail_html:q.detail_html||null,cover_image:q.cover_image||null,gallery_media:q.gallery_media,tags:q.tags,reservation_notice:null,open_time:null,sort:ut()?q.sort:void 0,is_active:q.is_active},n=null;if(A.value){let{data:r}=await S.post(`/activities`,t);n=r,e.success(`创建活动成功`)}else await S.put(`/activities/${ze.value}`,t),e.success(`更新活动成功`);return ot(),w.value=!1,await $(),A.value&&n&&Pt(n)&&await ln(te.value.find(e=>e.id===n.id)||n),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}}ae(st,`活动表单有未保存改动,确定要离开吗?`),r(async()=>{await Rt().catch(()=>void 0),await $()});function en(e){T.current=e,$()}async function tn(t){try{await S.post(`/activities/${t.id}/toggle`),e.success(`状态已切换`),await $()}catch(t){e.error(t?.response?.data?.message??`操作失败`)}}async function nn(t){try{await S.delete(`/activities/${t.id}`),e.success(`删除成功`),await $()}catch(t){let n=t?.response?.data;if(n?.message&&n?.reservation_count!==void 0){e.error(`${n.message}(关联报名数:${n.reservation_count}`);return}e.error(n?.message??`删除失败`)}}function rn(e){let t=String(e??``).replace(`T`,` `).trim();return t?t.length>=19?t.slice(0,19):t:``}function an(e){return{_key:G(),id:typeof e.id==`number`?e.id:void 0,session_name:String(e.session_name??``).trim(),session_start_at:rn(e.session_start_at),session_end_at:rn(e.session_end_at),booking_deadline_at:rn(e.booking_deadline_at),day_quota:Math.max(0,Math.floor(Number(e.day_quota)||0)),booked_count:Math.floor(Number(e.booked_count)||0)}}function on(){return{_key:G(),session_name:``,session_start_at:``,session_end_at:``,booking_deadline_at:``,day_quota:1,booked_count:0}}function sn(){W.value.push(on())}function cn(t){if(W.value.length<=1){e.warning(`至少保留一个场次`);return}if((t.booked_count??0)>0){e.warning(`该场次已有预约占用,无法删除`);return}W.value=W.value.filter(e=>e._key!==t._key)}async function ln(t){if(!Pt(t)){e.warning(`仅「线上预约」活动可配置场次`);return}if(!t.start_at||!t.end_at){e.warning(`请先在活动编辑中填写活动开始、结束日期,用于校验各场次时间。`);return}B.value=t,R.value=!0,z.value=!0;try{let{data:e}=await S.get(`/activities/${t.id}/booking-settings`);V.value=e.booking_audience===`group`?`group`:e.booking_audience===`individual`?`individual`:`both`,H.value=Math.max(1,Math.floor(Number(e.min_people_per_order??1))),U.value=Math.max(H.value,Math.floor(Number(e.max_people_per_order??H.value)));let n=Array.isArray(e.days)?e.days:[];n.length===0?W.value=[on()]:W.value=n.map(e=>an(e))}catch(t){e.error(t?.response?.data?.message??`加载场次设置失败`),R.value=!1}finally{z.value=!1}}async function un(){let t=B.value;if(t){if(!W.value.length){e.warning(`至少保存一个场次`);return}for(let t of W.value){if(!t.session_name.trim()){e.error(`请填写所有场次的「场次名称」`);return}if(!t.session_start_at||!t.session_end_at||!t.booking_deadline_at){e.error(`场次「${t.session_name}」的场次时间、预约截止时间均需填写完整`);return}if(t.session_start_at.slice(0,10)!==t.session_end_at.slice(0,10)){e.error(`场次「${t.session_name}」开始与结束须为同一天内`);return}if(new Date(t.session_end_at).getTime()<=new Date(t.session_start_at).getTime()){e.error(`场次「${t.session_name}」结束时间须晚于开始时间`);return}if(new Date(t.booking_deadline_at).getTime()>new Date(t.session_start_at).getTime()){e.error(`场次「${t.session_name}」预约截止时间不能晚于场次开始时间`);return}}if(V.value===`group`||V.value===`both`){let t=Math.max(1,Math.floor(Number(H.value)||0));if(Math.max(1,Math.floor(Number(U.value)||0))<t){e.error(`最大预约人数不能小于最小预约人数`);return}}Je.value=!0;try{await S.put(`/activities/${t.id}/booking-settings`,{booking_audience:V.value,min_people_per_order:V.value===`individual`?1:Math.max(1,Math.floor(H.value)),max_people_per_order:V.value===`individual`?1:Math.max(1,Math.floor(U.value)),days:W.value.map(e=>{let t={session_name:e.session_name.trim(),session_start_at:e.session_start_at,session_end_at:e.session_end_at,booking_deadline_at:e.booking_deadline_at,day_quota:Math.max(1,Math.floor(Number(e.day_quota)||0))};return e.id&&(t.id=e.id),t})}),e.success(`场次设置已保存`),R.value=!1,await $()}catch(t){let n=t?.response?.data?.message,r=t?.response?.data?.errors;r?.days?.[0]?e.error(String(r.days[0])):e.error(n??`保存失败`)}finally{Je.value=!1}}}return(e,r)=>{let i=o(`a-button`),a=o(`a-space`),p=o(`a-input`),h=o(`a-option`),g=o(`a-select`),S=o(`a-table-column`),C=o(`a-tag`),ie=o(`a-tooltip`),ae=o(`a-popconfirm`),D=o(`a-table`),ze=o(`a-card`),Be=o(`a-textarea`),F=o(`a-modal`),I=o(`a-form-item`),qe=o(`a-range-picker`),G=o(`a-col`),et=o(`a-switch`),Y=o(`a-input-number`),tt=o(`a-row`),rt=o(`a-upload`),X=o(`a-typography-text`),at=o(`a-form`),ot=o(`a-typography-paragraph`),st=o(`a-list-item`),pt=o(`a-list`),Z=o(`a-alert`),mt=o(`a-typography-title`),bt=o(`a-radio`),xt=o(`a-radio-group`),Q=o(`a-date-picker`),Ct=o(`a-spin`);return n(),_(f,null,[y(ze,{title:`活动管理 / 活动列表`},{extra:s(()=>[y(a,null,{default:s(()=>[y(i,{onClick:$},{default:s(()=>[...r[34]||=[c(`刷新`,-1)]]),_:1}),y(i,{type:`primary`,onClick:zt},{default:s(()=>[...r[35]||=[c(`新增活动`,-1)]]),_:1})]),_:1})]),default:s(()=>[y(a,{style:{"margin-bottom":`12px`},wrap:``},{default:s(()=>[y(p,{modelValue:E.keyword,"onUpdate:modelValue":r[0]||=e=>E.keyword=e,placeholder:`搜索活动名称`,style:{width:`220px`}},null,8,[`modelValue`]),y(g,{modelValue:E.venue_id,"onUpdate:modelValue":r[1]||=e=>E.venue_id=e,"allow-clear":``,"allow-search":``,placeholder:`筛选场馆`,style:{width:`220px`},disabled:lt()},{default:s(()=>[(n(!0),_(f,null,b(x.value,e=>(n(),l(h,{key:e.id,value:e.id},{default:s(()=>[c(m(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`disabled`]),y(g,{modelValue:E.is_active,"onUpdate:modelValue":r[2]||=e=>E.is_active=e,"allow-clear":``,placeholder:`上架状态`,style:{width:`130px`}},{default:s(()=>[y(h,{value:`1`},{default:s(()=>[...r[36]||=[c(`上架`,-1)]]),_:1}),y(h,{value:`0`},{default:s(()=>[...r[37]||=[c(`下架`,-1)]]),_:1})]),_:1},8,[`modelValue`]),y(g,{modelValue:E.schedule_status,"onUpdate:modelValue":r[3]||=e=>E.schedule_status=e,"allow-clear":``,placeholder:`活动状态`,style:{width:`130px`}},{default:s(()=>[y(h,{value:`not_started`},{default:s(()=>[...r[38]||=[c(`未开始`,-1)]]),_:1}),y(h,{value:`ongoing`},{default:s(()=>[...r[39]||=[c(`进行中`,-1)]]),_:1}),y(h,{value:`ended`},{default:s(()=>[...r[40]||=[c(`已结束`,-1)]]),_:1})]),_:1},8,[`modelValue`]),y(g,{modelValue:E.reservation_type,"onUpdate:modelValue":r[4]||=e=>E.reservation_type=e,"allow-clear":``,placeholder:`预约类型`,style:{width:`130px`}},{default:s(()=>[y(h,{value:`online`},{default:s(()=>[...r[41]||=[c(`线上预约`,-1)]]),_:1}),y(h,{value:`offline`},{default:s(()=>[...r[42]||=[c(`线下预约`,-1)]]),_:1}),y(h,{value:`other`},{default:s(()=>[...r[43]||=[c(`外链跳转预约`,-1)]]),_:1})]),_:1},8,[`modelValue`]),y(g,{modelValue:E.audit_status,"onUpdate:modelValue":r[5]||=e=>E.audit_status=e,"allow-clear":``,placeholder:`审核状态`,style:{width:`130px`}},{default:s(()=>[y(h,{value:`approved`},{default:s(()=>[...r[44]||=[c(`已通过`,-1)]]),_:1}),y(h,{value:`pending`},{default:s(()=>[...r[45]||=[c(`待审核`,-1)]]),_:1}),y(h,{value:`rejected`},{default:s(()=>[...r[46]||=[c(`已退回`,-1)]]),_:1})]),_:1},8,[`modelValue`]),y(i,{type:`primary`,onClick:Vt},{default:s(()=>[...r[47]||=[c(`查询`,-1)]]),_:1}),y(i,{onClick:Ht},{default:s(()=>[...r[48]||=[c(`重置`,-1)]]),_:1})]),_:1}),y(D,{class:`list-data-table`,scroll:{x:ee(re)},data:te.value,loading:Le.value,"row-key":`id`,pagination:{current:T.current,pageSize:T.pageSize,total:T.total,showTotal:!0},onPageChange:en},{columns:s(()=>[y(S,{title:`ID`,"data-index":`id`,width:80,ellipsis:!0,tooltip:!0}),y(S,{title:`活动名称`,"data-index":`title`,width:200,"min-width":160,ellipsis:!0,tooltip:!0}),y(S,{title:`场馆`,width:160,"min-width":120,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(m(e.venue?.name||`-`),1)]),_:1}),y(S,{title:`场次/名额`,width:150,"min-width":130,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(m(St(e)),1)]),_:1}),y(S,{title:`活动日期`,width:200,"min-width":160,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(m(Ye(e)),1)]),_:1}),y(S,{title:`预约类型`,width:110},{cell:s(({record:e})=>[c(m(Ft(e.reservation_type)),1)]),_:1}),y(S,{title:`已约/浏览`,width:200,"min-width":180,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(m(Lt(e)),1)]),_:1}),y(S,{title:`活动状态`,width:100},{cell:s(({record:e})=>[y(C,{color:gt(e.schedule_status)},{default:s(()=>[c(m(ht(e.schedule_status)),1)]),_:2},1032,[`color`])]),_:1}),y(S,{title:`上架状态`,width:100},{cell:s(({record:e})=>[y(C,{color:e.is_active?`green`:`gray`},{default:s(()=>[c(m(e.is_active?`上架`:`下架`),1)]),_:2},1032,[`color`])]),_:1}),y(S,{title:`审核状态`,width:120},{cell:s(({record:e})=>[e.audit_status===`rejected`&&e.audit_remark?(n(),l(ie,{key:0,content:e.audit_remark},{default:s(()=>[y(C,{color:ft(e.audit_status)},{default:s(()=>[c(m(dt(e.audit_status)),1)]),_:2},1032,[`color`])]),_:2},1032,[`content`])):(n(),l(C,{key:1,color:ft(e.audit_status)},{default:s(()=>[c(m(dt(e.audit_status)),1)]),_:2},1032,[`color`]))]),_:1}),y(S,{title:`操作`,width:200,"min-width":180,fixed:`right`,align:`center`},{cell:s(({record:e})=>[y(a,{wrap:``,size:4},{default:s(()=>[y(i,{type:`text`,onClick:t=>Bt(e)},{default:s(()=>[...r[49]||=[c(`编辑`,-1)]]),_:1},8,[`onClick`]),Pt(e)?(n(),l(i,{key:0,type:`text`,onClick:t=>ln(e)},{default:s(()=>[...r[50]||=[c(`场次设置`,-1)]]),_:1},8,[`onClick`])):u(``,!0),ut()&&(e.audit_status===`pending`||e.audit_status===`rejected`)?(n(),_(f,{key:1},[y(i,{type:`text`,status:`success`,onClick:t=>_t(e)},{default:s(()=>[...r[51]||=[c(`通过`,-1)]]),_:1},8,[`onClick`]),y(i,{type:`text`,status:`danger`,onClick:t=>vt(e)},{default:s(()=>[...r[52]||=[c(`退回`,-1)]]),_:1},8,[`onClick`])],64)):u(``,!0),y(i,{type:`text`,status:`warning`,onClick:t=>tn(e)},{default:s(()=>[c(m(e.is_active?`下架`:`上架`),1)]),_:2},1032,[`onClick`]),y(ae,{content:`确认删除该活动?`,onOk:t=>nn(e)},{default:s(()=>[y(i,{type:`text`,status:`danger`},{default:s(()=>[...r[53]||=[c(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1}),y(F,{visible:k.value,"onUpdate:visible":r[7]||=e=>k.value=e,title:`退回活动`,"on-before-ok":yt},{default:s(()=>[y(Be,{modelValue:O.value,"onUpdate:modelValue":r[6]||=e=>O.value=e,placeholder:`退回说明(选填)`,"auto-size":{minRows:3,maxRows:8}},null,8,[`modelValue`])]),_:1},8,[`visible`]),y(F,{visible:w.value,"onUpdate:visible":r[25]||=e=>w.value=e,title:A.value?`新增活动`:`编辑活动`,width:`70%`,"body-style":Ve,"on-before-cancel":ee(ct),"confirm-loading":Re.value,"on-before-ok":$t},{default:s(()=>[y(at,{model:q,layout:`vertical`,class:`admin-modal-form`},{default:s(()=>[y(I,{label:`活动名称`,required:``,help:J.title},d({default:s(()=>[y(p,{modelValue:q.title,"onUpdate:modelValue":r[8]||=e=>q.title=e},null,8,[`modelValue`])]),_:2},[J.title?{name:`help`,fn:s(()=>[v(`span`,oe,m(J.title),1)]),key:`0`}:void 0]),1032,[`help`]),y(I,{label:`举办场馆`,required:``,help:J.venue_id},d({default:s(()=>[y(g,{modelValue:q.venue_id,"onUpdate:modelValue":r[9]||=e=>q.venue_id=e,"allow-search":``,disabled:lt()},{default:s(()=>[(n(!0),_(f,null,b(x.value,e=>(n(),l(h,{key:e.id,value:e.id},{default:s(()=>[c(m(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`disabled`])]),_:2},[J.venue_id?{name:`help`,fn:s(()=>[v(`span`,se,m(J.venue_id),1)]),key:`0`}:void 0]),1032,[`help`]),y(I,{label:`联系人`,required:``,help:J.contact_name},d({default:s(()=>[y(p,{modelValue:q.contact_name,"onUpdate:modelValue":r[10]||=e=>q.contact_name=e,placeholder:`请输入联系人`,"allow-clear":``},null,8,[`modelValue`])]),_:2},[J.contact_name?{name:`help`,fn:s(()=>[v(`span`,ce,m(J.contact_name),1)]),key:`0`}:void 0]),1032,[`help`]),y(I,{label:`联系电话`,required:``,help:J.contact_phone},d({default:s(()=>[y(p,{modelValue:q.contact_phone,"onUpdate:modelValue":r[11]||=e=>q.contact_phone=e,placeholder:`请输入联系电话`,"allow-clear":``},null,8,[`modelValue`])]),_:2},[J.contact_phone?{name:`help`,fn:s(()=>[v(`span`,le,m(J.contact_phone),1)]),key:`0`}:void 0]),1032,[`help`]),y(I,{label:`活动日期`,required:``,help:J.start_at||J.end_at},d({default:s(()=>[y(qe,{modelValue:Qe.value,"onUpdate:modelValue":r[12]||=e=>Qe.value=e,format:`YYYY-MM-DD`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:2},[J.start_at||J.end_at?{name:`help`,fn:s(()=>[v(`span`,ue,m(J.start_at||J.end_at),1)]),key:`0`}:void 0]),1032,[`help`]),y(I,{label:`具体时间`},{default:s(()=>[y(p,{modelValue:q.specific_time,"onUpdate:modelValue":r[13]||=e=>q.specific_time=e,placeholder:`如:每日 14:0016:00或 活动当日上午`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),y(I,{label:`预约类型`,required:``,help:J.reservation_type},d({extra:s(()=>[r[57]||=c(`非「线上预约」时不再使用场次设置;线下须填预约方式;「外链跳转预约」须填外链地址。`,-1)]),default:s(()=>[y(g,{modelValue:q.reservation_type,"onUpdate:modelValue":r[14]||=e=>q.reservation_type=e},{default:s(()=>[y(h,{value:`online`},{default:s(()=>[...r[54]||=[c(`线上预约`,-1)]]),_:1}),y(h,{value:`offline`},{default:s(()=>[...r[55]||=[c(`线下预约`,-1)]]),_:1}),y(h,{value:`other`},{default:s(()=>[...r[56]||=[c(`外链跳转预约`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:2},[J.reservation_type?{name:`help`,fn:s(()=>[v(`span`,de,m(J.reservation_type),1)]),key:`0`}:void 0]),1032,[`help`]),q.reservation_type===`offline`?(n(),l(I,{key:0,label:`预约方式(线下)`,required:``,help:J.offline_reservation_method},d({default:s(()=>[y(p,{modelValue:q.offline_reservation_method,"onUpdate:modelValue":r[15]||=e=>q.offline_reservation_method=e,"allow-clear":``,placeholder:`说明如何完成线下预约`},null,8,[`modelValue`])]),_:2},[J.offline_reservation_method?{name:`help`,fn:s(()=>[v(`span`,fe,m(J.offline_reservation_method),1)]),key:`0`}:void 0]),1032,[`help`])):u(``,!0),q.reservation_type===`other`?(n(),l(I,{key:1,label:`外链地址`,required:``,help:J.external_url},d({default:s(()=>[y(p,{modelValue:q.external_url,"onUpdate:modelValue":r[16]||=e=>q.external_url=e,placeholder:`H5 详情展示并统计点击;以 http(s):// 开头`,"allow-clear":``},null,8,[`modelValue`])]),_:2},[J.external_url?{name:`help`,fn:s(()=>[v(`span`,pe,m(J.external_url),1)]),key:`0`}:void 0]),1032,[`help`])):u(``,!0),y(I,{label:`标签`},{default:s(()=>[v(`div`,me,[v(`div`,he,[y(p,{modelValue:Ze.value,"onUpdate:modelValue":r[17]||=e=>Ze.value=e,class:`activity-form-tags__input`,placeholder:`请输入标签内容`},null,8,[`modelValue`]),y(i,{type:`primary`,class:`activity-form-tags__save`,onClick:Xt},{default:s(()=>[...r[58]||=[c(`保存标签`,-1)]]),_:1})]),v(`div`,ge,[(n(!0),_(f,null,b(q.tags,(e,t)=>(n(),l(C,{key:`${e}-${t}`,closable:``,style:{"margin-bottom":`0`},onClose:e=>Zt(t)},{default:s(()=>[c(m(e),1)]),_:2},1032,[`onClose`]))),128)),q.tags.length?u(``,!0):(n(),_(`span`,_e,`暂无标签`))])])]),_:1}),y(tt,{class:`admin-modal-form__full`,gutter:16},{default:s(()=>[y(G,{xs:24,sm:8},{default:s(()=>[y(I,{label:`活动状态`},{default:s(()=>[$e.value?(n(),l(C,{key:0,color:gt($e.value)},{default:s(()=>[c(m(ht($e.value)),1)]),_:1},8,[`color`])):(n(),_(`span`,ve,``))]),_:1})]),_:1}),y(G,{xs:24,sm:8},{default:s(()=>[y(I,{label:`上架状态`},{default:s(()=>[y(et,{modelValue:q.is_active,"onUpdate:modelValue":r[18]||=e=>q.is_active=e},null,8,[`modelValue`]),v(`span`,ye,m(q.is_active?`上架`:`下架`),1)]),_:1})]),_:1}),y(G,{xs:24,sm:8},{default:s(()=>[y(I,{label:`排序`},{default:s(()=>[y(Y,{modelValue:q.sort,"onUpdate:modelValue":r[19]||=e=>q.sort=e,min:0,disabled:!ut(),style:{width:`100%`}},null,8,[`modelValue`,`disabled`])]),_:1})]),_:1})]),_:1}),y(I,{label:`活动地点`,required:``,class:`admin-modal-form__full`,help:J.location},d({extra:s(()=>[r[61]||=c(`可地图选点自动填写地址与经纬度,或一键带入当前所选场馆的地址与坐标(若已配置)。`,-1)]),default:s(()=>[v(`div`,be,[y(p,{modelValue:q.location,"onUpdate:modelValue":r[20]||=e=>q.location=e,class:`activity-address-coord-row__address`,placeholder:`如:××区××路××号 或 线上平台`,"allow-clear":``},null,8,[`modelValue`]),y(Y,{modelValue:q.lng,"onUpdate:modelValue":r[21]||=e=>q.lng=e,precision:6,placeholder:`经度`,class:`activity-address-coord-row__lng`,"hide-button":``,disabled:``},null,8,[`modelValue`]),y(Y,{modelValue:q.lat,"onUpdate:modelValue":r[22]||=e=>q.lat=e,precision:6,placeholder:`纬度`,class:`activity-address-coord-row__lat`,"hide-button":``,disabled:``},null,8,[`modelValue`]),y(i,{type:`primary`,class:`activity-address-coord-row__map`,onClick:At},{default:s(()=>[...r[59]||=[c(`地图选点`,-1)]]),_:1}),y(i,{onClick:wt},{default:s(()=>[...r[60]||=[c(`使用本馆地址`,-1)]]),_:1})])]),_:2},[J.location?{name:`help`,fn:s(()=>[v(`span`,xe,m(J.location),1)]),key:`0`}:void 0]),1032,[`help`]),y(I,{label:`活动图片`,class:`admin-modal-form__full`},{default:s(()=>[v(`div`,Se,[v(`div`,Ce,[r[65]||=v(`div`,{class:`activity-cover-carousel-row__sub`},`活动封面图`,-1),y(a,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:s(()=>[y(rt,{"auto-upload":!1,"show-file-list":!1,accept:`image/*`,"before-upload":Wt,onChange:Kt},{"upload-button":s(()=>[y(i,null,{default:s(()=>[...r[62]||=[c(`上传封面`,-1)]]),_:1})]),_:1}),y(X,{type:`secondary`},{default:s(()=>[...r[63]||=[c(`图片尺寸推荐 1200×600`,-1)]]),_:1}),q.cover_image?(n(),l(a,{key:0,direction:`vertical`,align:`start`},{default:s(()=>[v(`img`,{src:q.cover_image,class:`activity-cover-thumb`,onClick:r[23]||=e=>nt(`image`,q.cover_image)},null,8,we),y(i,{size:`mini`,status:`danger`,onClick:Jt},{default:s(()=>[...r[64]||=[c(`删除封面`,-1)]]),_:1})]),_:1})):u(``,!0)]),_:1})]),v(`div`,Te,[r[69]||=v(`div`,{class:`activity-cover-carousel-row__sub`},`活动展示图片`,-1),v(`div`,Ee,[v(`div`,De,[y(rt,{"auto-upload":!1,"show-file-list":!1,multiple:``,accept:`image/*,video/*`,"before-upload":Gt,onChange:qt},{"upload-button":s(()=>[y(i,{type:`primary`},{default:s(()=>[...r[66]||=[c(`新增展示资源`,-1)]]),_:1})]),_:1}),y(X,{type:`secondary`,style:{"margin-top":`12px`,display:`block`}},{default:s(()=>[...r[67]||=[c(`图片尺寸推荐 1200×600`,-1)]]),_:1})]),v(`div`,Oe,[(n(!0),_(f,null,b(q.gallery_media,(e,a)=>(n(),_(`div`,{key:e.url+a,class:`activity-gallery-item`},[e.type===`image`?(n(),_(`img`,{key:0,src:e.url,class:`activity-gallery-thumb`,onClick:t=>nt(`image`,e.url)},null,8,ke)):(n(),_(`video`,{key:1,src:e.url,controls:``,class:`activity-gallery-thumb activity-gallery-thumb--video`,onClick:t(t=>nt(`video`,e.url),[`stop`])},null,8,Ae)),y(i,{size:`mini`,status:`danger`,onClick:e=>Yt(a)},{default:s(()=>[...r[68]||=[c(`删除`,-1)]]),_:1},8,[`onClick`])]))),128))])])])])]),_:1}),y(I,{label:`活动详情`,class:`admin-modal-form__full`},{default:s(()=>[(n(),l(ne,{modelValue:q.detail_html,"onUpdate:modelValue":r[24]||=e=>q.detail_html=e,"editor-options":it,"field-key":`activity-detail`,"min-height":280,key:`activity-detail-${He.value}`},null,8,[`modelValue`]))]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`,`on-before-cancel`,`confirm-loading`]),y(F,{visible:Ue.value,"onUpdate:visible":r[26]||=e=>Ue.value=e,title:`媒体预览`,width:`72%`,footer:!1},{default:s(()=>[We.value===`image`&&j.value?(n(),_(`img`,{key:0,src:j.value,style:{display:`block`,"max-width":`100%`,"max-height":`72vh`,margin:`0 auto`}},null,8,je)):We.value===`video`&&j.value?(n(),_(`video`,{key:1,src:j.value,controls:``,autoplay:``,style:{display:`block`,width:`100%`,"max-height":`72vh`}},null,8,Me)):u(``,!0)]),_:1},8,[`visible`]),y(F,{visible:Ge.value,"onUpdate:visible":r[28]||=e=>Ge.value=e,title:`地图选点(腾讯地图)`,width:`70%`,"body-style":Ve,"on-before-ok":Nt},{default:s(()=>[y(a,{style:{"margin-bottom":`12px`,width:`100%`}},{default:s(()=>[y(p,{modelValue:N.value,"onUpdate:modelValue":r[27]||=e=>N.value=e,placeholder:`输入关键词搜索,如:苏州博物馆`,style:{width:`420px`}},null,8,[`modelValue`]),y(i,{type:`primary`,loading:M.value,onClick:jt},{default:s(()=>[...r[70]||=[c(`搜索`,-1)]]),_:1},8,[`loading`])]),_:1}),v(`div`,Ne,[v(`div`,{ref_key:`mapContainerRef`,ref:Ke,style:{height:`520px`,flex:`1`,border:`1px solid #e5e6eb`}},null,512),v(`div`,Pe,[r[71]||=v(`div`,{style:{"margin-bottom":`8px`,color:`#86909c`}},`搜索结果`,-1),y(pt,{size:`small`},{default:s(()=>[(n(!0),_(f,null,b(P.value,(e,t)=>(n(),l(st,{key:t,onClick:t=>Mt(e)},{default:s(()=>[y(ot,{ellipsis:{rows:1}},{default:s(()=>[c(m(e.title),1)]),_:2},1024),y(X,{type:`secondary`},{default:s(()=>[c(m(e.address),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1})])]),L.value?(n(),l(Z,{key:0,type:`info`,style:{"margin-top":`12px`}},{default:s(()=>[c(` 已选坐标:`+m(L.value.lng)+`, `+m(L.value.lat),1),r[72]||=v(`br`,null,null,-1),c(` 地址:`+m(L.value.address||`-`),1)]),_:1})):u(``,!0)]),_:1},8,[`visible`]),y(F,{visible:R.value,"onUpdate:visible":r[33]||=e=>R.value=e,title:`场次设置`,width:`80%`,"body-style":Ve,footer:!1,"mask-closable":!1},{default:s(()=>[y(Ct,{loading:z.value,style:{width:`100%`}},{default:s(()=>[B.value?(n(),_(`div`,Fe,[y(mt,{heading:6,style:{"margin-top":`0`}},{default:s(()=>[c(`活动:`+m(B.value.title),1)]),_:1}),y(Z,{type:`info`,style:{"margin-bottom":`12px`}},{default:s(()=>[c(` 活动开始~结束日:`+m(K(String(B.value.start_at)))+` `+m(K(String(B.value.end_at)))+`。场次的开始/结束仅可选同一天,且不能超出上述日期;预约截止时间不得晚于场次开始;至少保留 1 个场次,每行可「新增」多个场次;删除行前请确保该场次无已占用订单。 `,1)]),_:1}),y(at,{layout:`vertical`,class:`admin-modal-form`},{default:s(()=>[y(I,{label:`预约方式`,required:``,class:`admin-modal-form__full`},{default:s(()=>[y(xt,{modelValue:V.value,"onUpdate:modelValue":r[29]||=e=>V.value=e,direction:`vertical`},{default:s(()=>[y(bt,{value:`individual`},{default:s(()=>[...r[73]||=[c(`个人:仅可预约 1 人(填写个人信息)。`,-1)]]),_:1}),y(bt,{value:`group`},{default:s(()=>[...r[74]||=[c(`团体:填写领队信息 + 团体人数(人数范围见下方设置,含联系人本人)。`,-1)]]),_:1}),y(bt,{value:`both`},{default:s(()=>[...r[75]||=[c(`个人+团体:个人为 1 人;团体人数范围见下方设置(含联系人本人)。`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),V.value===`group`||V.value===`both`?(n(),l(I,{key:0,label:`单笔预约人数限制`,required:``,class:`admin-modal-form__full`},{default:s(()=>[y(a,null,{default:s(()=>[y(Y,{modelValue:H.value,"onUpdate:modelValue":r[30]||=e=>H.value=e,min:1,precision:0,style:{width:`180px`}},null,8,[`modelValue`]),r[76]||=v(`span`,null,`最小人数`,-1),y(Y,{modelValue:U.value,"onUpdate:modelValue":r[31]||=e=>U.value=e,min:1,precision:0,style:{width:`180px`}},null,8,[`modelValue`]),r[77]||=v(`span`,null,`最大人数`,-1)]),_:1}),r[78]||=v(`div`,{style:{"margin-top":`6px`,color:`var(--color-text-3)`}},`人数包含领队/联系人本人;最大人数需 ≥ 最小人数。H5 团体预约将按此范围校验。`,-1)]),_:1})):u(``,!0),V.value===`group`||V.value===`both`?(n(),l(Z,{key:1,type:`info`,class:`admin-modal-form__full`,style:{"margin-bottom":`12px`}},{default:s(()=>[...r[79]||=[c(` 团体人数与单场「总名额(人数)」无直接换算关系;单场总名额为可预约的占用名额上限。 `,-1)]]),_:1})):u(``,!0),y(I,{label:`总名额(各场次数之和)`},{default:s(()=>[y(Y,{"model-value":Xe.value,disabled:``,style:{width:`200px`}},null,8,[`model-value`]),r[80]||=v(`span`,{style:{"margin-left":`8px`,color:`var(--color-text-3)`}},`保存时写入活动「总名额」`,-1)]),_:1})]),_:1}),y(a,{style:{"margin-bottom":`8px`}},{default:s(()=>[y(i,{type:`primary`,onClick:sn},{default:s(()=>[...r[81]||=[c(`新增场次`,-1)]]),_:1})]),_:1}),y(D,{data:W.value,pagination:!1,"row-key":`_key`,bordered:{cell:!0}},{columns:s(()=>[y(S,{title:`场次名称`,width:160,"min-width":120},{cell:s(({record:e})=>[y(p,{modelValue:e.session_name,"onUpdate:modelValue":t=>e.session_name=t,placeholder:`必填`,"allow-clear":``,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),y(S,{title:`场次开始`,width:200},{cell:s(({record:e})=>[y(Q,{modelValue:e.session_start_at,"onUpdate:modelValue":t=>e.session_start_at=t,"show-time":``,format:`YYYY-MM-DD HH:mm`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),y(S,{title:`场次结束`,width:200},{cell:s(({record:e})=>[y(Q,{modelValue:e.session_end_at,"onUpdate:modelValue":t=>e.session_end_at=t,"show-time":``,format:`YYYY-MM-DD HH:mm`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),y(S,{title:`预约截止`,width:200},{title:s(()=>[...r[82]||=[v(`span`,null,`预约截止`,-1),v(`div`,{style:{"font-weight":`normal`,"font-size":`12px`,color:`var(--color-text-3)`,"margin-top":`2px`}},`不能晚于场次开始`,-1)]]),cell:s(({record:e})=>[y(Q,{modelValue:e.booking_deadline_at,"onUpdate:modelValue":t=>e.booking_deadline_at=t,"show-time":``,format:`YYYY-MM-DD HH:mm`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),y(S,{title:`总名额`,width:120},{cell:s(({record:e})=>[y(Y,{modelValue:e.day_quota,"onUpdate:modelValue":t=>e.day_quota=t,min:1,precision:0,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),y(S,{title:`已占用`,width:80},{cell:s(({record:e})=>[c(m(e.booked_count??0),1)]),_:1}),y(S,{title:`操作`,width:90,fixed:`right`,align:`center`},{cell:s(({record:e})=>[y(i,{type:`text`,status:`danger`,disabled:(e.booked_count??0)>0,onClick:t=>cn(e)},{default:s(()=>[...r[83]||=[c(`删除`,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:1})]),_:1},8,[`data`])])):u(``,!0)]),_:1},8,[`loading`]),v(`div`,Ie,[y(a,null,{default:s(()=>[y(i,{onClick:r[32]||=e=>R.value=!1},{default:s(()=>[...r[84]||=[c(`取消`,-1)]]),_:1}),y(i,{type:`primary`,loading:Je.value,disabled:z.value,onClick:un},{default:s(()=>[...r[85]||=[c(`保存`,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})])]),_:1},8,[`visible`])],64)}}}),[[`__scopeId`,`data-v-1ca661df`]]);export{Le as default};