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,i as d,it as f,kt as p,l as m,nt as h,p as g,u as _,ut as ee,v,y as te,z as y}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{a as b,n as x,o as S,s as ne}from"./index-DhmwAFpV.js";import{t as re}from"./RichEditorField-DvXgOxi7.js";import{t as ie}from"./listTable-CVMJfkhr.js";function ae(e,t){return function(){return e()?window.confirm(t):!0}}function oe(e,t=`当前有未保存改动,确定要离开吗?`){function n(t){e()&&(t.preventDefault(),t.returnValue=``)}b((n,r,i)=>{if(!e()){i();return}i(window.confirm(t))}),r(()=>{window.addEventListener(`beforeunload`,n)}),a(()=>{window.removeEventListener(`beforeunload`,n)})}var se=[`src`],ce={key:1},le={style:{"margin-top":`8px`,width:`100%`,"overflow-x":`auto`,"white-space":`nowrap`}},ue={key:0,style:{color:`#86909c`}},de=[`src`],fe={style:{display:`flex`,"flex-direction":`column`,"align-items":`flex-start`,width:`100%`}},pe={style:{width:`100%`,"margin-bottom":`8px`}},me={style:{display:`grid`,"grid-template-columns":`repeat(3, 180px)`,gap:`12px`,width:`100%`}},he=[`src`,`onClick`],ge=[`src`,`onClick`],_e=[`src`],ve=[`src`],ye={style:{display:`flex`,gap:`12px`}},be={style:{width:`280px`,height:`520px`,overflow:`auto`,border:`1px solid #e5e6eb`,padding:`8px`}},xe={key:0,class:`booking-settings`},Se={style:{"margin-top":`16px`,"text-align":`right`}},C=S(te({__name:`ActivityList`,setup(a){let te=f([]),b=f([]),S=f(null),C=f(!1),Ce=f(!1),w=f(!1),T=f(!1),E=f(!1),D=f(``),O=f([]),we=f(null),k=h({current:1,pageSize:10,total:0}),A=h({keyword:``,venue_id:void 0,is_active:`all`,audit_status:`all`}),j=f(null),M=f(``),N=f(!1),Te=f(!0),P=f(null),F=f(``),Ee={maxHeight:`70vh`,overflow:`auto`},De=f(0),Oe=f(!1),ke=f(`image`),I=f(``),L=f(!1),Ae=f(!1),je=f(!1),R=f(null),z=f(`both`),B=f(1),V=f(1),H=f([]);function U(){return`bk-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function W(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)}let Me=m(()=>H.value.reduce((e,t)=>e+(Number(t.day_quota)||0),0)),Ne=m(()=>{let e=R.value;return e?.venue_id?b.value.find(t=>t.id===e.venue_id)?.appointment_type===`team_only`:!1}),G=null,K=null,q=f(null),Pe={lat:31.299379,lng:120.585315},J=h({venue_id:void 0,title:``,start_at:``,end_at:``,address:``,contact_phone:``,lat:void 0,lng:void 0,detail_html:``,cover_image:``,gallery_media:[],tags:[],reservation_notice:``,open_time:``,sort:0,summary:``,is_active:!0}),Fe=f(``);function Y(e){if(e==null||e===``)return;let t=typeof e==`number`?e:parseFloat(String(e).trim());return Number.isFinite(t)?t:void 0}function Ie(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 X(e){let t=new FormData;t.append(`file`,e);let{data:n}=await x.post(`/upload`,t);return Ie(n?.url,n?.path)}function Le(){De.value+=1}function Re(e,t){t&&(ke.value=e,I.value=t,Oe.value=!0)}function ze(){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 X(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 Be(){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 X(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 Ve={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:ze,video:Be}}},placeholder:`请输入活动详情内容`};function Z(){return JSON.stringify(J)}function He(){F.value=Z()}function Q(){return w.value&&Z()!==F.value}let Ue=ae(Q,`活动表单有未保存改动,确认关闭吗?`);function We(){return S.value?.role===`venue_admin`}function Ge(){return S.value?.role===`super_admin`}function Ke(e){return e===`pending`?`待审核`:e===`rejected`?`已退回`:e===`approved`?`已通过`:`-`}function qe(e){return e===`pending`?`orangered`:e===`rejected`?`red`:e===`approved`?`green`:`gray`}async function Je(t){try{await x.post(`/activities/${t.id}/audit/approve`),e.success(`已通过审核`),await $()}catch(t){e.error(t?.response?.data?.message??`操作失败`)}}function Ye(e){j.value=e.id,M.value=``,N.value=!0}async function Xe(){if(!j.value)return!1;try{return await x.post(`/activities/${j.value}/audit/reject`,{remark:M.value||void 0}),e.success(`已退回`),N.value=!1,await $(),!0}catch(t){return e.error(t?.response?.data?.message??`操作失败`),!1}}function Ze(e){return e===`individual`?`个人`:e===`group`?`团体`:e===`both`?`个人+团体`:`未配置`}function Qe(e){if(e.booking_audience==null||e.booking_audience===``)return`—`;let t=e.total_quota;return t==null?`0`:String(t)}function $e(e){return(e||[]).length?(e||[]).join(`、`):`-`}function et(e){let t=e.booking_audience,n=``;return(t===`group`||t===`both`)&&(n=` · 人数 ${e.min_people_per_order??1}-${e.max_people_per_order??1}`),`${Ze(t)}${n} · 总名额 ${Qe(e)}`}function tt(e){return b.value.find(t=>t.id===e)}function nt(e){let t=tt(e);t&&(J.address=t.address||``,J.lat=Y(t.lat),J.lng=Y(t.lng),J.cover_image=t.cover_image||``,J.gallery_media=Array.isArray(t.gallery_media)?[...t.gallery_media]:[],J.reservation_notice=t.reservation_notice||``,J.open_time=t.open_time||``)}function rt(){return!!(J.address&&J.address.trim()||typeof J.lat==`number`||typeof J.lng==`number`||J.cover_image||J.gallery_media&&J.gallery_media.length>0||J.reservation_notice&&J.reservation_notice.trim()||J.open_time&&J.open_time.trim())}function it(e){let t=e?Number(e):void 0;if(!t){J.venue_id=void 0;return}if(J.venue_id===t)return;let n=()=>{J.venue_id=t,nt(t)};if(!rt()){n();return}ne.confirm({title:`切换场馆`,content:`切换场馆后将使用该场馆默认的地址、经纬度、封面、轮播、预约须知和开放时间,是否继续?`,onOk:n})}async function $(){C.value=!0;try{let[e,t]=await Promise.all([x.get(`/activities`,{params:{page:k.current,page_size:k.pageSize,keyword:A.keyword||void 0,venue_id:A.venue_id||void 0,is_active:A.is_active===`all`?void 0:A.is_active,audit_status:A.audit_status===`all`?void 0:A.audit_status}}),x.get(`/venues`)]);te.value=e.data.data,k.total=e.data.total,b.value=t.data}catch(t){e.error(t?.response?.data?.message??`加载活动失败`)}finally{C.value=!1}}async function at(){let{data:e}=await x.get(`/me`);if(S.value=e,e?.role===`venue_admin`){let t=e.venues?.[0]?.id;A.venue_id=t,J.venue_id=t}}function ot(){Te.value=!0,P.value=null,J.venue_id=We()?S.value?.venues?.[0]?.id:b.value[0]?.id,J.title=``,J.start_at=``,J.end_at=``,J.contact_phone=``,J.detail_html=``,J.tags=[],J.summary=``,J.sort=0,J.is_active=!0,nt(J.venue_id),Le(),He(),w.value=!0}function st(e){Te.value=!1,P.value=e.id,J.venue_id=e.venue_id,J.title=e.title,J.start_at=e.start_at?W(e.start_at):``,J.end_at=e.end_at?W(e.end_at):``,J.address=e.address||``,J.contact_phone=e.contact_phone||``,J.lat=Y(e.lat),J.lng=Y(e.lng),J.detail_html=e.detail_html||``,J.cover_image=e.cover_image||``,J.gallery_media=Array.isArray(e.gallery_media)?[...e.gallery_media]:[],J.tags=Array.isArray(e.tags)?[...e.tags]:[],J.reservation_notice=e.reservation_notice||``,J.open_time=e.open_time||``,J.sort=e.sort??0,J.summary=e.summary||``,J.is_active=e.is_active,Le(),He(),w.value=!0}function ct(){k.current=1,$()}function lt(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 ut(t){try{let n=lt(t);if(!n)return!1;J.cover_image=await X(n),e.success(`封面上传成功`)}catch(t){e.error(t?.response?.data?.message??`封面上传失败`)}return!1}async function dt(t){try{let n=lt(t);if(!n)return!1;let r=await X(n),i=n.type.startsWith(`video/`);J.gallery_media.push({type:i?`video`:`image`,url:r}),e.success(`轮播资源上传成功`)}catch(t){e.error(t?.response?.data?.message??`轮播资源上传失败`)}return!1}function ft(...e){ut(e)}function pt(...e){dt(e)}function mt(){J.cover_image=``}function ht(e){J.gallery_media.splice(e,1)}function gt(){let t=Fe.value.trim();if(!t){e.warning(`请输入标签内容`);return}if(J.tags.includes(t)){e.warning(`标签已存在`);return}J.tags=[...J.tags,t],Fe.value=``}function _t(e){let t=[...J.tags];t.splice(e,1),J.tags=t}function vt(){return`CRFBZ-NTART-YU4XX-LCDGK-3J456-VKBK2`}async function yt(){if(window.TMap)return;let e=vt();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 bt(e,t){let n=window.TMap;G&&(K&&K.setMap(null),K=new n.MultiMarker({map:G,styles:{marker:new n.MarkerStyle({width:24,height:35})},geometries:[{id:`picked`,styleId:`marker`,position:new n.LatLng(e,t)}]}),G.setCenter(new n.LatLng(e,t)))}async function xt(e,t){let{data:n}=await x.get(`/map/reverse-geocode`,{params:{lat:e,lng:t}});q.value={lat:e,lng:t,address:n.address||``}}async function St(){await yt();let e=window.TMap,t=typeof J.lat==`number`?J.lat:Pe.lat,n=typeof J.lng==`number`?J.lng:Pe.lng,r=new e.LatLng(t,n);G?G.setCenter(r):(G=new e.Map(we.value,{center:r,zoom:13}),G.on(`click`,async e=>{let t=Number(e.latLng.getLat().toFixed(6)),n=Number(e.latLng.getLng().toFixed(6));bt(t,n),await xt(t,n)})),typeof J.lat==`number`&&typeof J.lng==`number`&&(bt(J.lat,J.lng),q.value={lat:J.lat,lng:J.lng,address:J.address||``})}async function Ct(){T.value=!0,D.value=``,O.value=[],E.value=!0;try{await i(),setTimeout(async()=>{try{await St()}catch(t){e.error(t?.message??`地图初始化失败`)}finally{E.value=!1}},200)}catch{E.value=!1}}async function wt(){if(!D.value.trim()){O.value=[];return}E.value=!0;try{let{data:e}=await x.get(`/map/search`,{params:{keyword:D.value,region:`苏州`}});O.value=e}catch(t){e.error(t?.response?.data?.message??`地图搜索失败`)}finally{E.value=!1}}async function Tt(e){bt(e.lat,e.lng),await xt(e.lat,e.lng)}function Et(){return q.value?(J.lat=q.value.lat,J.lng=q.value.lng,J.address=q.value.address||J.address,T.value=!1,!0):(e.warning(`请先点击地图或选择搜索结果`),!1)}async function Dt(){try{if(!J.venue_id)return e.warning(`请先选择场馆`),!1;if(!J.title.trim())return e.warning(`请填写活动名称`),!1;let t={venue_id:J.venue_id,title:J.title.trim(),summary:J.summary.trim()||null,quota:0,category:null,start_at:J.start_at||null,end_at:J.end_at||null,address:J.address.trim()||null,contact_phone:J.contact_phone.trim()||null,lat:typeof J.lat==`number`?J.lat:null,lng:typeof J.lng==`number`?J.lng:null,detail_html:J.detail_html||null,cover_image:J.cover_image||null,gallery_media:J.gallery_media,tags:J.tags,reservation_notice:J.reservation_notice||null,open_time:J.open_time||null,sort:Ge()?J.sort:void 0,is_active:J.is_active};return Te.value?(await x.post(`/activities`,t),e.success(`创建活动成功`)):(await x.put(`/activities/${P.value}`,t),e.success(`更新活动成功`)),He(),w.value=!1,await $(),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}}oe(Q,`活动表单有未保存改动,确定要离开吗?`),r(async()=>{await at().catch(()=>void 0),await $()});function Ot(e){k.current=e,$()}async function kt(t){try{await x.post(`/activities/${t.id}/toggle`),e.success(`状态已切换`),await $()}catch(t){e.error(t?.response?.data?.message??`操作失败`)}}async function At(t){try{await x.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 jt(e,t){if(!e||!t)return[];let n=W(e),r=W(t);if(!n||!r)return[];let i=e=>{let t=e.split(`-`).map(Number),n=t[0],r=t[1],i=t[2];return!n||!r||!i?new Date(NaN):new Date(Date.UTC(n,r-1,i))},a=i(n),o=i(r);if(Number.isNaN(a.getTime())||Number.isNaN(o.getTime())||a>o)return[];let s=[];for(let e=a.getTime();e<=o.getTime();e+=1440*60*1e3){let t=new Date(e),n=`${t.getUTCFullYear()}-${String(t.getUTCMonth()+1).padStart(2,`0`)}-${String(t.getUTCDate()).padStart(2,`0`)}`,r=new Date(e-1440*60*1e3),i=`${r.getUTCFullYear()}-${String(r.getUTCMonth()+1).padStart(2,`0`)}-${String(r.getUTCDate()).padStart(2,`0`)}`;s.push({_key:U(),activity_date:n,day_quota:0,booked_count:0,opens_at:`${i} 09:00:00`,closes_at:`${i} 23:59:59`})}return s}function Mt(e,t){let n=`${t} 09:00:00`;if(!e)return n;let r=e.replace(`T`,` `).slice(0,19);return r.length>=16?r:n}function Nt(e,t){let n=e.slice(0,10);return n.length===10&&n>t?`${t} 23:59:59`:e}function Pt(e){return t=>`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`>e}function Ft(e,t){let n=new Map;for(let e of t){let t=String(e.activity_date??``).slice(0,10);t&&n.set(t,e)}return e.map(e=>{let t=n.get(e.activity_date);return t?{...e,id:typeof t.id==`number`?t.id:void 0,day_quota:Number(t.day_quota)||0,booked_count:Number(t.booked_count)||0,opens_at:Nt(Mt(String(t.opens_at??``),e.activity_date),e.activity_date),closes_at:Nt(Mt(String(t.closes_at??``),e.activity_date),e.activity_date)}:e})}async function It(t){if(!t.start_at||!t.end_at){e.warning(`请先在活动编辑中填写活动开始日期与结束日期;活动日将按该范围自动生成(仅一天时只显示一行)。`);return}let n=jt(t.start_at,t.end_at);if(!n.length){e.warning(`活动开始/结束日期无效,请检查活动编辑中的日期。`);return}R.value=t,L.value=!0,Ae.value=!0;try{let{data:e}=await x.get(`/activities/${t.id}/booking-settings`);z.value=e.booking_audience===`group`?`group`:e.booking_audience===`individual`?`individual`:`both`,b.value.find(e=>e.id===t.venue_id)?.appointment_type===`team_only`&&(z.value=`group`),B.value=Math.max(1,Math.floor(Number(e.min_people_per_order??1))),V.value=Math.max(B.value,Math.floor(Number(e.max_people_per_order??B.value))),H.value=Ft(n,Array.isArray(e.days)?e.days:[])}catch(t){e.error(t?.response?.data?.message??`加载放票设置失败`),L.value=!1}finally{Ae.value=!1}}async function Lt(){let t=R.value;if(t){if(!H.value.length){e.warning(`活动日未生成,请确认活动开始、结束日期有效`);return}for(let t of H.value){let n=String(t.opens_at??``).slice(0,10),r=String(t.closes_at??``).slice(0,10);if(n&&n>t.activity_date||r&&r>t.activity_date){e.error(`活动日 ${t.activity_date}:预约开始/结束时刻的日期不能晚于活动日当天`);return}if(new Date(t.closes_at).getTime()<=new Date(t.opens_at).getTime()){e.error(`活动日 ${t.activity_date}:结束预约时间必须晚于开始预约时间`);return}}if(z.value===`group`||z.value===`both`){let t=Math.max(1,Math.floor(Number(B.value)||0));if(Math.max(1,Math.floor(Number(V.value)||0))({activity_date:e.activity_date,day_quota:Math.max(0,Math.floor(Number(e.day_quota)||0)),opens_at:e.opens_at,closes_at:e.closes_at}))}),e.success(`放票设置已保存`),L.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`),f=o(`a-input`),m=o(`a-option`),h=o(`a-select`),x=o(`a-table-column`),S=o(`a-tag`),ne=o(`a-tooltip`),ae=o(`a-popconfirm`),oe=o(`a-table`),j=o(`a-card`),P=o(`a-textarea`),F=o(`a-modal`),U=o(`a-form-item`),G=o(`a-date-picker`),K=o(`a-input-number`),Pe=o(`a-upload`),Y=o(`a-typography-text`),Ie=o(`a-switch`),X=o(`a-form`),Le=o(`a-typography-paragraph`),ze=o(`a-list-item`),Be=o(`a-list`),Z=o(`a-alert`),He=o(`a-typography-title`),Q=o(`a-radio`),Ze=o(`a-radio-group`),Qe=o(`a-spin`);return n(),g(d,null,[v(j,{title:`活动管理 / 活动列表`},{extra:s(()=>[v(a,null,{default:s(()=>[v(i,{onClick:$},{default:s(()=>[...r[30]||=[c(`刷新`,-1)]]),_:1}),v(i,{type:`primary`,onClick:ot},{default:s(()=>[...r[31]||=[c(`新增活动`,-1)]]),_:1})]),_:1})]),default:s(()=>[v(a,{style:{"margin-bottom":`12px`},wrap:``},{default:s(()=>[v(f,{modelValue:A.keyword,"onUpdate:modelValue":r[0]||=e=>A.keyword=e,placeholder:`搜索活动名称`,style:{width:`220px`}},null,8,[`modelValue`]),v(h,{modelValue:A.venue_id,"onUpdate:modelValue":r[1]||=e=>A.venue_id=e,"allow-clear":``,placeholder:`筛选场馆`,style:{width:`220px`},disabled:We()},{default:s(()=>[(n(!0),g(d,null,y(b.value,e=>(n(),l(m,{key:e.id,value:e.id},{default:s(()=>[c(p(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`disabled`]),v(h,{modelValue:A.is_active,"onUpdate:modelValue":r[2]||=e=>A.is_active=e,style:{width:`140px`}},{default:s(()=>[v(m,{value:`all`},{default:s(()=>[...r[32]||=[c(`全部状态`,-1)]]),_:1}),v(m,{value:`1`},{default:s(()=>[...r[33]||=[c(`启用`,-1)]]),_:1}),v(m,{value:`0`},{default:s(()=>[...r[34]||=[c(`停用`,-1)]]),_:1})]),_:1},8,[`modelValue`]),v(h,{modelValue:A.audit_status,"onUpdate:modelValue":r[3]||=e=>A.audit_status=e,style:{width:`130px`},placeholder:`审核状态`},{default:s(()=>[v(m,{value:`all`},{default:s(()=>[...r[35]||=[c(`全部审核`,-1)]]),_:1}),v(m,{value:`approved`},{default:s(()=>[...r[36]||=[c(`已通过`,-1)]]),_:1}),v(m,{value:`pending`},{default:s(()=>[...r[37]||=[c(`待审核`,-1)]]),_:1}),v(m,{value:`rejected`},{default:s(()=>[...r[38]||=[c(`已退回`,-1)]]),_:1})]),_:1},8,[`modelValue`]),v(i,{type:`primary`,onClick:ct},{default:s(()=>[...r[39]||=[c(`查询`,-1)]]),_:1})]),_:1}),v(oe,{class:`list-data-table`,scroll:{x:ee(ie)},data:te.value,loading:C.value,"row-key":`id`,pagination:{current:k.current,pageSize:k.pageSize,total:k.total,showTotal:!0},onPageChange:Ot},{columns:s(()=>[v(x,{title:`ID`,"data-index":`id`,width:80,ellipsis:!0,tooltip:!0}),v(x,{title:`活动名称`,"data-index":`title`,width:200,"min-width":160,ellipsis:!0,tooltip:!0}),v(x,{title:`简介`,width:180,"min-width":140,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(p(e.summary||`-`),1)]),_:1}),v(x,{title:`场馆`,width:160,"min-width":120,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(p(e.venue?.name||`-`),1)]),_:1}),v(x,{title:`封面`,width:100},{cell:s(({record:e})=>[e.cover_image?(n(),g(`img`,{key:0,src:e.cover_image,style:{width:`60px`,height:`40px`,"object-fit":`cover`,"border-radius":`4px`}},null,8,se)):(n(),g(`span`,ce,`-`))]),_:1}),v(x,{title:`标签`,width:200,"min-width":140,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(p($e(e.tags)),1)]),_:1}),v(x,{title:`放票摘要`,width:150,"min-width":130,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(p(et(e)),1)]),_:1}),v(x,{title:`开始日期`,width:120,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(p(e.start_at?W(String(e.start_at)):`-`),1)]),_:1}),v(x,{title:`结束日期`,width:120,ellipsis:!0,tooltip:!0},{cell:s(({record:e})=>[c(p(e.end_at?W(String(e.end_at)):`-`),1)]),_:1}),v(x,{title:`状态`,width:100},{cell:s(({record:e})=>[v(S,{color:e.is_active?`green`:`gray`},{default:s(()=>[c(p(e.is_active?`启用`:`停用`),1)]),_:2},1032,[`color`])]),_:1}),v(x,{title:`审核状态`,width:120},{cell:s(({record:e})=>[e.audit_status===`rejected`&&e.audit_remark?(n(),l(ne,{key:0,content:e.audit_remark},{default:s(()=>[v(S,{color:qe(e.audit_status)},{default:s(()=>[c(p(Ke(e.audit_status)),1)]),_:2},1032,[`color`])]),_:2},1032,[`content`])):(n(),l(S,{key:1,color:qe(e.audit_status)},{default:s(()=>[c(p(Ke(e.audit_status)),1)]),_:2},1032,[`color`]))]),_:1}),v(x,{title:`操作`,width:460,fixed:`right`,align:`center`},{cell:s(({record:e})=>[v(a,{wrap:``},{default:s(()=>[v(i,{type:`text`,onClick:t=>st(e)},{default:s(()=>[...r[40]||=[c(`编辑`,-1)]]),_:1},8,[`onClick`]),v(i,{type:`text`,onClick:t=>It(e)},{default:s(()=>[...r[41]||=[c(`放票设置`,-1)]]),_:1},8,[`onClick`]),Ge()&&(e.audit_status===`pending`||e.audit_status===`rejected`)?(n(),g(d,{key:0},[v(i,{type:`text`,status:`success`,onClick:t=>Je(e)},{default:s(()=>[...r[42]||=[c(`通过`,-1)]]),_:1},8,[`onClick`]),v(i,{type:`text`,status:`danger`,onClick:t=>Ye(e)},{default:s(()=>[...r[43]||=[c(`退回`,-1)]]),_:1},8,[`onClick`])],64)):u(``,!0),v(i,{type:`text`,status:`warning`,onClick:t=>kt(e)},{default:s(()=>[c(p(e.is_active?`停用`:`启用`),1)]),_:2},1032,[`onClick`]),v(ae,{content:`确认删除该活动?`,onOk:t=>At(e)},{default:s(()=>[v(i,{type:`text`,status:`danger`},{default:s(()=>[...r[44]||=[c(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1}),v(F,{visible:N.value,"onUpdate:visible":r[5]||=e=>N.value=e,title:`退回活动`,"on-before-ok":Xe},{default:s(()=>[v(P,{modelValue:M.value,"onUpdate:modelValue":r[4]||=e=>M.value=e,placeholder:`退回说明(选填)`,"auto-size":{minRows:3,maxRows:8}},null,8,[`modelValue`])]),_:1},8,[`visible`]),v(F,{visible:w.value,"onUpdate:visible":r[21]||=e=>w.value=e,title:Te.value?`新增活动`:`编辑活动`,width:`70%`,"body-style":Ee,"on-before-cancel":ee(Ue),"confirm-loading":Ce.value,"on-before-ok":Dt},{default:s(()=>[v(X,{model:J,layout:`vertical`},{default:s(()=>[v(U,{label:`场馆`,required:``},{default:s(()=>[v(h,{"model-value":J.venue_id,disabled:We(),onChange:it},{default:s(()=>[(n(!0),g(d,null,y(b.value,e=>(n(),l(m,{key:e.id,value:e.id},{default:s(()=>[c(p(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`model-value`,`disabled`])]),_:1}),v(U,{label:`活动名称`,required:``},{default:s(()=>[v(f,{modelValue:J.title,"onUpdate:modelValue":r[6]||=e=>J.title=e},null,8,[`modelValue`])]),_:1}),v(U,{label:`简介`},{default:s(()=>[v(P,{modelValue:J.summary,"onUpdate:modelValue":r[7]||=e=>J.summary=e,"auto-size":{minRows:2,maxRows:4}},null,8,[`modelValue`])]),_:1}),v(U,{label:`标签数组`},{default:s(()=>[v(a,{style:{width:`100%`}},{default:s(()=>[v(f,{modelValue:Fe.value,"onUpdate:modelValue":r[8]||=e=>Fe.value=e,placeholder:`请输入标签内容`},null,8,[`modelValue`]),v(i,{type:`primary`,onClick:gt},{default:s(()=>[...r[45]||=[c(`新增标签`,-1)]]),_:1})]),_:1}),_(`div`,le,[(n(!0),g(d,null,y(J.tags,(e,t)=>(n(),l(S,{key:`${e}-${t}`,closable:``,style:{"margin-right":`8px`,"margin-bottom":`0`},onClose:e=>_t(t)},{default:s(()=>[c(p(e),1)]),_:2},1032,[`onClose`]))),128)),J.tags.length?u(``,!0):(n(),g(`span`,ue,`暂无标签`))])]),_:1}),v(U,{label:`开始日期`},{default:s(()=>[v(G,{modelValue:J.start_at,"onUpdate:modelValue":r[9]||=e=>J.start_at=e,format:`YYYY-MM-DD`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),v(U,{label:`结束日期`},{default:s(()=>[v(G,{modelValue:J.end_at,"onUpdate:modelValue":r[10]||=e=>J.end_at=e,format:`YYYY-MM-DD`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),v(U,{label:`地址`},{default:s(()=>[v(f,{modelValue:J.address,"onUpdate:modelValue":r[11]||=e=>J.address=e},null,8,[`modelValue`])]),_:1}),v(U,{label:`联系电话`},{default:s(()=>[v(f,{modelValue:J.contact_phone,"onUpdate:modelValue":r[12]||=e=>J.contact_phone=e,placeholder:`选填,前台可点击拨打`},null,8,[`modelValue`])]),_:1}),v(U,{label:`经纬度`},{default:s(()=>[v(a,null,{default:s(()=>[v(K,{modelValue:J.lng,"onUpdate:modelValue":r[13]||=e=>J.lng=e,precision:7,placeholder:`经度`},null,8,[`modelValue`]),v(K,{modelValue:J.lat,"onUpdate:modelValue":r[14]||=e=>J.lat=e,precision:7,placeholder:`纬度`},null,8,[`modelValue`]),v(i,{onClick:Ct},{default:s(()=>[...r[46]||=[c(`地图选点`,-1)]]),_:1})]),_:1})]),_:1}),v(U,{label:`开放时间`},{default:s(()=>[v(P,{modelValue:J.open_time,"onUpdate:modelValue":r[15]||=e=>J.open_time=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`modelValue`])]),_:1}),v(U,{label:`封面图`},{default:s(()=>[v(a,{direction:`vertical`,fill:``},{default:s(()=>[v(Pe,{"auto-upload":!1,"show-file-list":!1,accept:`image/*`,"before-upload":ut,onChange:ft},{"upload-button":s(()=>[v(i,null,{default:s(()=>[...r[47]||=[c(`上传封面`,-1)]]),_:1})]),_:1}),v(Y,{type:`secondary`},{default:s(()=>[...r[48]||=[c(`建议不超过 1200x800`,-1)]]),_:1}),J.cover_image?(n(),l(a,{key:0,direction:`vertical`,align:`start`},{default:s(()=>[_(`img`,{src:J.cover_image,class:`cover-preview`,onClick:r[16]||=e=>Re(`image`,J.cover_image)},null,8,de),v(i,{size:`mini`,status:`danger`,onClick:mt},{default:s(()=>[...r[49]||=[c(`删除封面`,-1)]]),_:1})]),_:1})):u(``,!0)]),_:1})]),_:1}),v(U,{label:`轮播图`},{default:s(()=>[_(`div`,fe,[_(`div`,pe,[v(Pe,{"auto-upload":!1,"show-file-list":!1,multiple:``,accept:`image/*,video/*`,"before-upload":dt,onChange:pt},{"upload-button":s(()=>[v(i,{type:`primary`},{default:s(()=>[...r[50]||=[c(`新增轮播资源`,-1)]]),_:1})]),_:1})]),_(`div`,me,[(n(!0),g(d,null,y(J.gallery_media,(e,a)=>(n(),l(j,{key:e.url+a,size:`small`,style:{width:`180px`}},{title:s(()=>[c(p(e.type===`video`?`视频`:`图片`),1)]),extra:s(()=>[v(i,{size:`mini`,status:`danger`,onClick:e=>ht(a)},{default:s(()=>[...r[51]||=[c(`删除`,-1)]]),_:1},8,[`onClick`])]),default:s(()=>[e.type===`image`?(n(),g(`img`,{key:0,src:e.url,style:{width:`140px`,height:`90px`,"object-fit":`cover`,border:`1px solid #e5e6eb`,"border-radius":`4px`,cursor:`zoom-in`},onClick:t=>Re(`image`,e.url)},null,8,he)):(n(),g(`video`,{key:1,src:e.url,controls:``,style:{width:`140px`,height:`90px`,"object-fit":`cover`,cursor:`zoom-in`},onClick:t(t=>Re(`video`,e.url),[`stop`])},null,8,ge))]),_:2},1024))),128))])])]),_:1}),v(U,{label:`排序`},{default:s(()=>[v(K,{modelValue:J.sort,"onUpdate:modelValue":r[17]||=e=>J.sort=e,min:0,disabled:!Ge()},null,8,[`modelValue`,`disabled`])]),_:1}),v(U,{label:`状态`},{default:s(()=>[v(Ie,{modelValue:J.is_active,"onUpdate:modelValue":r[18]||=e=>J.is_active=e},null,8,[`modelValue`])]),_:1}),v(U,{label:`预约须知`},{default:s(()=>[(n(),l(re,{modelValue:J.reservation_notice,"onUpdate:modelValue":r[19]||=e=>J.reservation_notice=e,"editor-options":Ve,"field-key":`activity-reservation`,key:`activity-reservation-${De.value}`},null,8,[`modelValue`]))]),_:1}),v(U,{label:`活动详情`},{default:s(()=>[(n(),l(re,{modelValue:J.detail_html,"onUpdate:modelValue":r[20]||=e=>J.detail_html=e,"editor-options":Ve,"field-key":`activity-detail`,"min-height":280,key:`activity-detail-${De.value}`},null,8,[`modelValue`]))]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`,`on-before-cancel`,`confirm-loading`]),v(F,{visible:Oe.value,"onUpdate:visible":r[22]||=e=>Oe.value=e,title:`媒体预览`,width:`72%`,footer:!1},{default:s(()=>[ke.value===`image`&&I.value?(n(),g(`img`,{key:0,src:I.value,style:{display:`block`,"max-width":`100%`,"max-height":`72vh`,margin:`0 auto`}},null,8,_e)):ke.value===`video`&&I.value?(n(),g(`video`,{key:1,src:I.value,controls:``,autoplay:``,style:{display:`block`,width:`100%`,"max-height":`72vh`}},null,8,ve)):u(``,!0)]),_:1},8,[`visible`]),v(F,{visible:T.value,"onUpdate:visible":r[24]||=e=>T.value=e,title:`地图选点(腾讯地图)`,width:`70%`,"body-style":Ee,"on-before-ok":Et},{default:s(()=>[v(a,{style:{"margin-bottom":`12px`,width:`100%`}},{default:s(()=>[v(f,{modelValue:D.value,"onUpdate:modelValue":r[23]||=e=>D.value=e,placeholder:`输入关键词搜索,如:苏州博物馆`,style:{width:`420px`}},null,8,[`modelValue`]),v(i,{type:`primary`,loading:E.value,onClick:wt},{default:s(()=>[...r[52]||=[c(`搜索`,-1)]]),_:1},8,[`loading`])]),_:1}),_(`div`,ye,[_(`div`,{ref_key:`mapContainerRef`,ref:we,style:{height:`520px`,flex:`1`,border:`1px solid #e5e6eb`}},null,512),_(`div`,be,[r[53]||=_(`div`,{style:{"margin-bottom":`8px`,color:`#86909c`}},`搜索结果`,-1),v(Be,{size:`small`},{default:s(()=>[(n(!0),g(d,null,y(O.value,(e,t)=>(n(),l(ze,{key:t,onClick:t=>Tt(e)},{default:s(()=>[v(Le,{ellipsis:{rows:1}},{default:s(()=>[c(p(e.title),1)]),_:2},1024),v(Y,{type:`secondary`},{default:s(()=>[c(p(e.address),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1})])]),q.value?(n(),l(Z,{key:0,type:`info`,style:{"margin-top":`12px`}},{default:s(()=>[c(` 已选坐标:`+p(q.value.lng)+`, `+p(q.value.lat),1),r[54]||=_(`br`,null,null,-1),c(` 地址:`+p(q.value.address||`-`),1)]),_:1})):u(``,!0)]),_:1},8,[`visible`]),v(F,{visible:L.value,"onUpdate:visible":r[29]||=e=>L.value=e,title:`放票设置`,width:`70%`,"body-style":Ee,footer:!1,"mask-closable":!1},{default:s(()=>[v(Qe,{loading:Ae.value,style:{width:`100%`}},{default:s(()=>[R.value?(n(),g(`div`,xe,[v(He,{heading:6,style:{"margin-top":`0`}},{default:s(()=>[c(`活动:`+p(R.value.title),1)]),_:1}),v(Z,{type:`info`,style:{"margin-bottom":`12px`}},{default:s(()=>[c(` 活动日期:`+p(W(String(R.value.start_at)))+` ~ `+p(W(String(R.value.end_at)))+`。活动日由上述范围自动生成,共 `+p(H.value.length)+` 天(单日活动仅一行),不可手动增删日期。 `,1)]),_:1}),v(X,{layout:`vertical`},{default:s(()=>[v(U,{label:`预约方式`,required:``},{default:s(()=>[v(Ze,{modelValue:z.value,"onUpdate:modelValue":r[25]||=e=>z.value=e,direction:`vertical`},{default:s(()=>[v(Q,{value:`individual`,disabled:Ne.value},{default:s(()=>[...r[55]||=[c(`个人:仅可预约 1 人(填写个人信息)。`,-1)]]),_:1},8,[`disabled`]),v(Q,{value:`group`},{default:s(()=>[...r[56]||=[c(`团体:填写领队信息 + 团体人数(人数范围见下方设置,含联系人本人)。`,-1)]]),_:1}),v(Q,{value:`both`,disabled:Ne.value},{default:s(()=>[...r[57]||=[c(`个人+团体:个人为 1 人;团体人数范围见下方设置(含联系人本人)。`,-1)]]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`]),Ne.value?(n(),l(Z,{key:0,type:`warning`,style:{"margin-top":`8px`}},{default:s(()=>[...r[58]||=[c(` 该场馆预约类型为「仅团队」,放票设置只能选择团体。 `,-1)]]),_:1})):u(``,!0)]),_:1}),z.value===`group`||z.value===`both`?(n(),l(U,{key:0,label:`单笔预约人数限制`,required:``},{default:s(()=>[v(a,null,{default:s(()=>[v(K,{modelValue:B.value,"onUpdate:modelValue":r[26]||=e=>B.value=e,min:1,precision:0,style:{width:`180px`}},null,8,[`modelValue`]),r[59]||=_(`span`,null,`最小人数`,-1),v(K,{modelValue:V.value,"onUpdate:modelValue":r[27]||=e=>V.value=e,min:1,precision:0,style:{width:`180px`}},null,8,[`modelValue`]),r[60]||=_(`span`,null,`最大人数`,-1)]),_:1}),r[61]||=_(`div`,{style:{"margin-top":`6px`,color:`var(--color-text-3)`}},`人数包含领队/联系人本人;最大人数需 ≥ 最小人数。H5 团体预约将按此范围校验。`,-1)]),_:1})):u(``,!0),z.value===`group`||z.value===`both`?(n(),l(Z,{key:1,type:`info`,style:{"margin-bottom":`12px`}},{default:s(()=>[...r[62]||=[c(` 团体人数上下限与单日「放票数」无关;单日放票数表示该日可预约的总票数。 `,-1)]]),_:1})):u(``,!0),v(U,{label:`总名额(各活动日放票数之和)`},{default:s(()=>[v(K,{"model-value":Me.value,disabled:``,style:{width:`200px`}},null,8,[`model-value`]),r[63]||=_(`span`,{style:{"margin-left":`8px`,color:`var(--color-text-3)`}},`保存时写入活动「总名额」`,-1)]),_:1})]),_:1}),v(oe,{data:H.value,pagination:!1,"row-key":`_key`,bordered:{cell:!0}},{columns:s(()=>[v(x,{title:`活动日`,width:120},{cell:s(({record:e})=>[c(p(e.activity_date),1)]),_:1}),v(x,{title:`当日放票数`,width:140},{cell:s(({record:e})=>[v(K,{modelValue:e.day_quota,"onUpdate:modelValue":t=>e.day_quota=t,min:0,precision:0,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),v(x,{title:`已占用`,width:90},{cell:s(({record:e})=>[c(p(e.booked_count??0),1)]),_:1}),v(x,{title:`开始预约时间(含)`},{title:s(()=>[...r[64]||=[_(`span`,null,`开始预约时间(含)`,-1),_(`div`,{style:{"font-weight":`normal`,"font-size":`12px`,color:`var(--color-text-3)`,"margin-top":`2px`}},` 预约仅在开始~结束时段内有效,日期不得晚于活动日 `,-1)]]),cell:s(({record:e})=>[v(G,{modelValue:e.opens_at,"onUpdate:modelValue":t=>e.opens_at=t,"show-time":``,format:`YYYY-MM-DD HH:mm`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`100%`},"disabled-date":Pt(e.activity_date)},null,8,[`modelValue`,`onUpdate:modelValue`,`disabled-date`])]),_:1}),v(x,{title:`结束预约时间(含)`},{title:s(()=>[...r[65]||=[_(`span`,null,`结束预约时间(含)`,-1),_(`div`,{style:{"font-weight":`normal`,"font-size":`12px`,color:`var(--color-text-3)`,"margin-top":`2px`}},` 预约仅在开始~结束时段内有效,日期不得晚于活动日 `,-1)]]),cell:s(({record:e})=>[v(G,{modelValue:e.closes_at,"onUpdate:modelValue":t=>e.closes_at=t,"show-time":``,format:`YYYY-MM-DD HH:mm`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`100%`},"disabled-date":Pt(e.activity_date)},null,8,[`modelValue`,`onUpdate:modelValue`,`disabled-date`])]),_:1})]),_:1},8,[`data`])])):u(``,!0)]),_:1},8,[`loading`]),_(`div`,Se,[v(a,null,{default:s(()=>[v(i,{onClick:r[28]||=e=>L.value=!1},{default:s(()=>[...r[66]||=[c(`取消`,-1)]]),_:1}),v(i,{type:`primary`,loading:je.value,disabled:Ae.value,onClick:Lt},{default:s(()=>[...r[67]||=[c(`保存`,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})])]),_:1},8,[`visible`])],64)}}}),[[`__scopeId`,`data-v-11c1fb8c`]]);export{C as default};