|
|
`):``}function le(e){let t=e.venues;if(!Array.isArray(t))return[];let n=[];for(let e of t){if(!e||typeof e!=`object`)continue;let t=e,r=E(t.name),i=t.pivot,a=``;i&&typeof i==`object`&&!Array.isArray(i)&&(a=D(i.venue_total_quota)),n.push({name:r,quota:a})}return n}var P=[{zh:`名称`,format:e=>E(e.title)},{zh:`活动开始日期`,format:e=>k(e.start_at)},{zh:`活动结束日期`,format:e=>k(e.end_at)},{zh:`预约开始日期`,format:e=>k(e.booking_start_at)},{zh:`预约结束日期`,format:e=>k(e.booking_end_at)},{zh:`每日放票时间`,format:A},{zh:`预约人群`,format:e=>se(e.booking_audience)},{zh:`年龄限制`,format:ce},{zh:`标签`,format:e=>M(e.tags)},{zh:`上架状态`,format:e=>j(e.is_active)},{zh:`封面图`,format:e=>E(e.cover_image)},{zh:`轮播图`,format:e=>N(e.gallery_media)},{zh:`预约须知`,format:e=>O(e.reservation_notice,8e3)},{zh:`活动详情`,format:e=>O(e.detail_html)}],ue=[`场馆`,`放票总数`],F=ue.length,de=40;function fe(e){let t=P.length,n=Math.min(de,Math.max(0,...e.map(e=>le(e).length))),r=[];if(n===0){r.push(P.map(e=>e.zh));for(let t of e)r.push(P.map(e=>e.format(t)))}else{let i=[...P.map(e=>e.zh)];for(let e=0;e<n;e+=1){i.push(`参与场馆${e+1}`);for(let e=1;e<F;e+=1)i.push(``)}let a=[...P.map(()=>``)];for(let e=0;e<n;e+=1)a.push(...ue);r.push(i,a);let o=[];for(let e=0;e<t;e+=1)o.push({s:{r:0,c:e},e:{r:1,c:e}});for(let e=0;e<n;e+=1){let n=t+e*F;o.push({s:{r:0,c:n},e:{r:0,c:n+F-1}})}for(let t of e){let e=P.map(e=>e.format(t)),i=le(t);for(let t=0;t<n;t+=1){let n=i[t];n?e.push(n.name,n.quota):e.push(``,``)}r.push(e)}let s=w.aoa_to_sheet(r);s[`!merges`]=o;let ee=w.book_new();w.book_append_sheet(ee,s,`抢票列表`);let c=new Date;oe(ee,`抢票管理-${`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,`0`)}-${String(c.getDate()).padStart(2,`0`)}`}.xlsx`);return}let i=w.aoa_to_sheet(r),a=w.book_new();w.book_append_sheet(a,i,`抢票列表`);let o=new Date;oe(a,`抢票管理-${`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,`0`)}-${String(o.getDate()).padStart(2,`0`)}`}.xlsx`)}var pe={class:`tg-detail-hub-pane`},me={key:0,class:`tg-hub-activity`},he={class:`tg-hub-activity__head`},ge={class:`tg-hub-activity__title-row`},_e={key:0,class:`tg-hub-activity__tags`},ve={class:`tg-hub-section`},ye={key:0,class:`tg-hub-section`},be={class:`tg-hub-media`},xe={key:0,class:`tg-hub-media__cover`},Se=[`src`],Ce={key:1,class:`tg-hub-media__gallery`},we={class:`tg-hub-gallery-scroll`},Te=[`src`,`onClick`],Ee=[`src`,`onClick`],De={key:1,class:`tg-hub-section`},Oe={class:`tg-hub-table-wrap`},ke={key:2,class:`tg-hub-section`},Ae={class:`tg-hub-rich-box`},je=[`innerHTML`],Me={key:3,class:`tg-hub-section`},Ne={class:`tg-hub-rich-box`},Pe=[`innerHTML`],Fe={class:`tg-detail-hub-pane`},Ie={key:1},Le={class:`tg-detail-hub-pane`},Re={style:{display:`flex`,"justify-content":`flex-end`,gap:`8px`,"margin-top":`16px`}},ze={style:{"margin-top":`8px`,width:`100%`,display:`flex`,"flex-wrap":`wrap`,gap:`8px`}},Be={key:0,style:{color:`#86909c`}},Ve={class:`activity-cover-carousel-wrap`},He={class:`activity-cover-carousel-row__col`},Ue=[`src`],We={class:`activity-cover-carousel-row__col`},Ge={style:{display:`flex`,"flex-direction":`column`,"align-items":`flex-start`,width:`100%`}},Ke={class:`activity-gallery-grid`},qe=[`src`,`onClick`],Je=[`src`,`onClick`],Ye={class:`tg-venue-block`},Xe={class:`tg-venue-table-scroll`},Ze={class:`tg-venue-actions`},Qe={class:`activity-address-coord-row`},$e=[`src`],et=[`src`],tt={style:{display:`flex`,gap:`12px`}},nt={style:{width:`280px`,height:`520px`,overflow:`auto`,border:`1px solid #e5e6eb`,padding:`8px`}},rt=1418,I=C(b({__name:`TicketGrabList`,setup(b){let C=p(null),oe=p(!1),w=p([]),E=p([]),D=g({current:1,pageSize:10,total:0}),O=p(``),k=p(void 0),A=p(void 0),se=p(!1),j=p(!1),ce=p(!1),M=p(null),N=g({title:``,tags:[],start_at:``,end_at:``,booking_start_at:``,booking_end_at:``,daily_release_start_time:`10:00`,daily_release_end_time:`23:59`,age_limit_start:``,age_limit_end:``,booking_audience:`all`,reservation_notice:``,detail_html:``,cover_image:``,gallery_media:[],is_active:!0,venues:[]}),le=p(0),P={maxHeight:`70vh`,overflow:`auto`},ue={maxHeight:`70vh`,overflow:`auto`},F=p(null),de=p(0),I=p(!1),L=h(()=>{let e=F.value;return e?N.venues.find(t=>t._key===e)??null:null}),it=p(!1),at=p(!1),R=p(null),z=p(null),B=p({}),V=p(``),ot=p(!1),st=p(`1`),ct=p(``),H=p(null),lt=p(!1),ut=p(``),dt=p([]),ft=p(``),pt=p(!1),U=p(!1),W=p(``),mt=p([]),ht=p(null),G=p(null),K=p(null),q={lat:31.299379,lng:120.585315},J=null,Y=null,gt=p(!1),_t=p(`image`),vt=p(``);function yt(){return`tgrv-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function bt(){return{_key:yt(),venue_id:void 0,venue_total_quota:1,opening_hours:``,address:``,lat:void 0,lng:void 0,unit_name:``,contact_name:``,contact_phone:``,qr_verify_method:``,detail_html:``}}function X(e){if(e==null||e===``)return;let t=typeof e==`number`?e:parseFloat(String(e).trim());return Number.isFinite(t)?t:void 0}function xt(e){return{_key:yt(),venue_id:typeof e.venue_id==`number`?e.venue_id:Number(e.venue_id)||void 0,venue_total_quota:Math.max(0,Math.floor(Number(e.venue_total_quota)||0)),opening_hours:String(e.opening_hours??``),address:String(e.address??``),lat:X(e.lat),lng:X(e.lng),unit_name:String(e.unit_name??``),contact_name:String(e.contact_name??``),contact_phone:String(e.contact_phone??``),qr_verify_method:String(e.qr_verify_method??``),detail_html:String(e.detail_html??``)}}function Z(e){return!!(e.opening_hours?.trim()||e.address?.trim()||e.unit_name?.trim()||e.contact_name?.trim()||e.contact_phone?.trim()||e.qr_verify_method?.trim()||e.detail_html&&e.detail_html.trim()||typeof e.lat==`number`||typeof e.lng==`number`)}function St(e){if(e)return E.value.find(t=>t.id===e)}function Ct(e,t){let n=St(t);n&&(e.opening_hours=``,e.address=``,e.lat=void 0,e.lng=void 0,e.unit_name=n.unit_name||``,e.contact_name=``,e.contact_phone=``,e.qr_verify_method=``,e.detail_html=n.detail_html?String(n.detail_html):``)}function wt(e){let n=e.venue_id;if(n==null){t.warning(`请先选择场馆`);return}let r=St(n);if(!r){t.warning(`未找到该场馆信息`);return}e.address=r.address||``,e.lat=X(r.lat),e.lng=X(r.lng)}function Tt(e,t){if(t==null){e.venue_id=void 0;return}let n=e.venue_id;if(n===t)return;let r=()=>{e.venue_id=t,Ct(e,t),a(()=>an(e))};if(n==null||!Z(e)){r();return}ne.confirm({title:`更换场馆`,content:`将使用新场馆的单位与详情等默认信息覆盖本行(开放时间、联系人、联系方式须重新填写;不含地址与坐标,可在详情中点击「使用本馆地址」),是否继续?`,onOk:r})}async function Et(){let{data:e}=await S.get(`/me`);C.value=e}function Dt(){return C.value?.full_admin_access===!0}function Ot(){return C.value?.role===`venue_admin`}function kt(){let e=V.value.trim();if(!e){t.warning(`请输入标签内容`);return}if(N.tags.includes(e)){t.warning(`标签已存在`);return}N.tags=[...N.tags,e],V.value=``}function At(e){let t=[...N.tags];t.splice(e,1),N.tags=t}function jt(e,t){if(e==null||e===``)return t;if(typeof e==`string`&&/^\d{1,2}:\d{2}/.test(e)){let t=e.trim().split(`:`),n=Math.min(23,Math.max(0,parseInt(t[0]||`0`,10)||0)),r=Math.min(59,Math.max(0,parseInt(t[1]||`0`,10)||0));return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`}let n=e;if(typeof n?.format==`function`)try{return n.format(`HH:mm`)}catch{return t}return t}let Mt=h({get(){if(N.start_at&&N.end_at)return[N.start_at,N.end_at]},set(e){Array.isArray(e)&&e.length>=2&&e[0]&&e[1]?(N.start_at=String(e[0]),N.end_at=String(e[1])):(N.start_at=``,N.end_at=``)}}),Nt=h({get(){if(N.booking_start_at&&N.booking_end_at)return[N.booking_start_at,N.booking_end_at]},set(e){Array.isArray(e)&&e.length>=2&&e[0]&&e[1]?(N.booking_start_at=String(e[0]),N.booking_end_at=String(e[1])):(N.booking_start_at=``,N.booking_end_at=``)}}),Pt=h({get(){let e=N.age_limit_start?.trim(),t=N.age_limit_end?.trim();if(!(!e&&!t)){if(e&&t)return[e,t];if(e)return[e,e];if(t)return[t,t]}},set(e){Array.isArray(e)&&e.length>=2&&e[0]&&e[1]?(N.age_limit_start=String(e[0]).slice(0,10),N.age_limit_end=String(e[1]).slice(0,10)):(N.age_limit_start=``,N.age_limit_end=``)}});function Ft(e,t){if(e&&/^https?:\/\//i.test(e))return e;let n=t||e||``;if(!n)return``;let r=n.replace(/^\/+/,``);return`${window.location.origin}/storage/${r}`}async function It(e){let t=new FormData;t.append(`file`,e);let{data:n}=await S.post(`/upload`,t);return Ft(n?.url,n?.path)}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 Rt(e){try{let n=Lt(e);if(!n)return!1;N.cover_image=await It(n),N.cover_image=T(N.cover_image),t.success(`封面上传成功`)}catch(e){t.error(e?.response?.data?.message??`封面上传失败`)}return!1}async function zt(e){try{let n=Lt(e);if(!n)return!1;let r=T(await It(n)),i=n.type.startsWith(`video/`);N.gallery_media.push({type:i?`video`:`image`,url:r}),t.success(`轮播资源上传成功`)}catch(e){t.error(e?.response?.data?.message??`轮播资源上传失败`)}return!1}function Bt(...e){Rt(e)}function Vt(...e){zt(e)}function Ht(){N.cover_image=``}function Ut(e){N.gallery_media.splice(e,1)}function Q(e,t){t&&(_t.value=e,vt.value=t,gt.value=!0)}function Wt(){let e=this.quill,n=document.createElement(`input`);n.type=`file`,n.accept=`image/*`,n.onchange=async()=>{let r=n.files?.[0];if(r)try{let t=await It(r),n=e.getSelection(!0)?.index??Math.max(0,e.getLength()-1);e.insertEmbed(n,`image`,t,`user`),e.setSelection(n+1,0)}catch(e){t.error(e?.response?.data?.message??`图片上传失败`)}},n.click()}function Gt(){let e=this.quill,n=document.createElement(`input`);n.type=`file`,n.accept=`video/*`,n.onchange=async()=>{let r=n.files?.[0];if(r)try{let t=await It(r),n=e.getSelection(!0)?.index??Math.max(0,e.getLength()-1);e.insertEmbed(n,`video`,t,`user`),e.setSelection(n+1,0)}catch(e){t.error(e?.response?.data?.message??`视频上传失败`)}},n.click()}let Kt={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:Wt,video:Gt}}},placeholder:`请输入内容`};function qt(){return`CRFBZ-NTART-YU4XX-LCDGK-3J456-VKBK2`}async function Jt(){if(window.TMap)return;let e=qt();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 Yt(e,t){let n=window.TMap;J&&(Y&&Y.setMap(null),Y=new n.MultiMarker({map:J,styles:{marker:new n.MarkerStyle({width:24,height:35})},geometries:[{id:`picked`,styleId:`marker`,position:new n.LatLng(e,t)}]}),J.setCenter(new n.LatLng(e,t)))}async function Xt(e,t){let{data:n}=await S.get(`/map/reverse-geocode`,{params:{lat:e,lng:t}});K.value={lat:e,lng:t,address:n.address||``}}function Zt(){return G.value}async function Qt(){if(await Jt(),!ht.value){t.error(`地图容器未就绪,请重试`);return}let e=window.TMap,n=Zt(),r=typeof n?.lat==`number`?n.lat:q.lat,i=typeof n?.lng==`number`?n.lng:q.lng,a=new e.LatLng(r,i);J?J.setCenter(a):(J=new e.Map(ht.value,{center:a,zoom:13}),J.on(`click`,async e=>{let t=Number(e.latLng.getLat().toFixed(6)),n=Number(e.latLng.getLng().toFixed(6));Yt(t,n),await Xt(t,n)})),typeof n?.lat==`number`&&typeof n?.lng==`number`?(Yt(n.lat,n.lng),K.value={lat:n.lat,lng:n.lng,address:n.address||``}):K.value=null}async function $t(e){G.value=e,pt.value=!0,W.value=``,mt.value=[],U.value=!0;try{await a(),setTimeout(async()=>{try{await Qt()}catch(e){t.error(e?.message??`地图初始化失败`)}finally{U.value=!1}},200)}catch{U.value=!1}}async function en(){if(!W.value.trim()){mt.value=[];return}U.value=!0;try{let{data:e}=await S.get(`/map/search`,{params:{keyword:W.value,region:`苏州`}});mt.value=e}catch(e){t.error(e?.response?.data?.message??`地图搜索失败`)}finally{U.value=!1}}async function tn(e){Yt(e.lat,e.lng),await Xt(e.lat,e.lng)}function nn(){if(!K.value)return t.warning(`请先点击地图或选择搜索结果`),!1;let e=G.value;return e&&(e.lat=K.value.lat,e.lng=K.value.lng,e.address=K.value.address||e.address),pt.value=!1,G.value=null,!0}function rn(){G.value=null}o(()=>{if(J){try{J.destroy?.()}catch{}J=null}Y=null});function an(e){F.value=e._key,de.value+=1,I.value=!0}function on(){I.value=!1,F.value=null}function sn(e){return E.value.find(t=>t.id===e)?.name??`场馆#${e}`}function cn(e){return e===`not_started`?`未开始`:e===`ongoing`?`进行中`:e===`ended`?`已结束`:e??`-`}function ln(e){if(e===`not_started`)return`arcoblue`;if(e===`ongoing`)return`green`;if(e===`ended`)return`gray`}function un(e){let t=String(e??``).trim();return t===`pending`?`待审核`:t===`approved`?`已通过`:t===`rejected`?`已驳回`:t||`—`}function dn(e){let t=String(e??``).trim();if(t===`pending`)return`orangered`;if(t===`approved`)return`green`;if(t===`rejected`)return`red`}function fn(e,t){let n=[e==null?``:String(e).slice(0,10),t==null?``:String(t).slice(0,10)].filter(Boolean);return n.length?n.join(` ~ `):`—`}function pn(e){if(!e)return`—`;let t=e.age_limit_start?String(e.age_limit_start).slice(0,10):``,n=e.age_limit_end?String(e.age_limit_end).slice(0,10):``;return t||n?`${t||`—`} ~ ${n||`—`}`:`不限制`}function mn(e,t){return e?e.length<=t?e:`${e.slice(0,t)}…`:`—`}function hn(){N.venues.push(bt())}function gn(e){if(N.venues.length<=1){t.warning(`至少保留一个场馆`);return}F.value===e._key&&on(),N.venues=N.venues.filter(t=>t._key!==e._key)}function _n(){le.value+=1}function vn(){N.title=``,N.tags=[],V.value=``,N.start_at=``,N.end_at=``,N.booking_start_at=``,N.booking_end_at=``,N.daily_release_start_time=`10:00`,N.daily_release_end_time=`23:59`,N.age_limit_start=``,N.age_limit_end=``,N.booking_audience=`all`,N.reservation_notice=``,N.detail_html=``,N.cover_image=``,N.gallery_media=[],N.is_active=!0,N.venues=[bt()]}async function yn(){let{data:e}=await S.get(`/venues`,{params:{page_size:500}}),t=e.data??e;E.value=Array.isArray(t)?t:[]}function bn(e,t){let n={page:e,page_size:t},r=O.value.trim();return r&&(n.keyword=r),k.value!=null&&k.value>0&&(n.venue_id=k.value),(A.value===`0`||A.value===`1`)&&(n.is_active=A.value),n}async function $(){oe.value=!0;try{let{data:e}=await S.get(`/ticket-grab-events`,{params:bn(D.current,D.pageSize)});w.value=e.data,D.total=e.total}catch(e){t.error(e?.response?.data?.message??`加载失败`)}finally{oe.value=!1}}async function xn(){if(!se.value){se.value=!0;try{let e=[],n=1,r=1/0;for(;e.length<r;){let{data:t}=await S.get(`/ticket-grab-events`,{params:bn(n,100)}),i=t?.data??[];if(r=Number(t?.total??0),e.push(...i),i.length===0||i.length<100||(n+=1,n>1e3))break}if(e.length===0){t.warning(`没有可导出的数据`);return}fe(e),t.success(`导出成功`)}catch(e){let n=e;t.error(n?.response?.data?.message??`导出失败`)}finally{se.value=!1}}}function Sn(){M.value=null,vn(),_n(),on(),j.value=!0}async function Cn(e){M.value=e.id,vn();try{let{data:t}=await S.get(`/ticket-grab-events/${e.id}`);N.title=t.title??``,N.tags=Array.isArray(t.tags)?[...t.tags]:[],V.value=``,N.start_at=t.start_at?String(t.start_at).slice(0,10):``,N.end_at=t.end_at?String(t.end_at).slice(0,10):``,N.booking_start_at=t.booking_start_at?String(t.booking_start_at).slice(0,10):``,N.booking_end_at=t.booking_end_at?String(t.booking_end_at).slice(0,10):``,N.daily_release_start_time=t.daily_release_start_time??`10:00`,N.daily_release_end_time=t.daily_release_end_time??`23:59`,N.age_limit_start=t.age_limit_start?String(t.age_limit_start).slice(0,10):``,N.age_limit_end=t.age_limit_end?String(t.age_limit_end).slice(0,10):``,N.booking_audience=t.booking_audience??`all`,N.reservation_notice=t.reservation_notice??``,N.detail_html=t.detail_html??``;let n=t.cover_image;N.cover_image=n?T(String(n)):``;let r=t.gallery_media;N.gallery_media=Array.isArray(r)?r.map(e=>({...e,url:T(e.url)})):[],N.is_active=!!t.is_active,_n();let i=t.event_venue_pivots??t.eventVenuePivots??[],a=(Array.isArray(i)?i:[]).map(e=>xt(e));N.venues=a.length?a:[bt()],on(),j.value=!0}catch(e){t.error(e?.response?.data?.message??`加载详情失败`)}}function wn(e){if(e.venue_id==null)return null;let t=sn(e.venue_id);return e.opening_hours?.trim()?e.unit_name?.trim()?e.contact_name?.trim()?e.contact_phone?.trim()?e.qr_verify_method?.trim()?e.address?.trim()?e.lat==null||e.lng==null||!Number.isFinite(Number(e.lat))||!Number.isFinite(Number(e.lng))?`请通过「编辑详情」中的地图选点填写场馆「${t}」的经纬度`:!Number.isFinite(e.venue_total_quota)||e.venue_total_quota<=0?`场馆「${t}」的放票数须大于 0`:null:`请填写场馆「${t}」的场馆地址`:`请填写场馆「${t}」的核销方式说明`:`请填写场馆「${t}」的联系方式`:`请填写场馆「${t}」的联系人`:`请填写场馆「${t}」的所在单位`:`请填写场馆「${t}」的开放时间(可点击「编辑详情」)`}async function Tn(){let e=L.value;if(!e)return!0;let n=wn(e);return n?(t.warning(n),!1):!0}function En(){return N.venues.filter(e=>e.venue_id!=null&&e.venue_total_quota>0).map(e=>({venue_id:e.venue_id,venue_total_quota:e.venue_total_quota,opening_hours:e.opening_hours||void 0,address:e.address||void 0,lat:e.lat,lng:e.lng,unit_name:e.unit_name||void 0,contact_name:e.contact_name||void 0,contact_phone:e.contact_phone||void 0,qr_verify_method:e.qr_verify_method||void 0,detail_html:e.detail_html||void 0}))}function Dn(e){return/^\d{1,2}:\d{2}$/.test(String(e||``).trim())}async function On(){if(!N.title.trim())return t.warning(`请填写名称`),!1;if(!N.start_at||!N.end_at)return t.warning(`请选择活动日期`),!1;if(!N.booking_start_at||!N.booking_end_at)return t.warning(`请选择预约日期`),!1;let e=String(N.daily_release_start_time||``).trim(),n=String(N.daily_release_end_time||``).trim();if(!Dn(e)||!Dn(n))return t.warning(`请选择每日放票时间`),!1;if(N.booking_audience!==`all`&&N.booking_audience!==`school_age`)return t.warning(`请选择预约人群`),!1;for(let e of N.venues){if(e.venue_id==null)continue;let n=wn(e);if(n)return t.warning(n),!1}let r=En();if(!r.length)return t.warning(`请至少选择一个场馆并填写放票数(放票数须大于 0)`),!1;let i={title:N.title.trim(),start_at:N.start_at||null,end_at:N.end_at||null,booking_start_at:N.booking_start_at||null,booking_end_at:N.booking_end_at||null,daily_release_start_time:jt(N.daily_release_start_time,`10:00`),daily_release_end_time:jt(N.daily_release_end_time,`23:59`),age_limit_start:N.age_limit_start||null,age_limit_end:N.age_limit_end||null,booking_audience:N.booking_audience,cover_image:N.cover_image||null,gallery_media:N.gallery_media.length?N.gallery_media:void 0,is_active:N.is_active,reservation_notice:N.reservation_notice||null,detail_html:N.detail_html||null,tags:N.tags.length?N.tags:void 0,venues:r};ce.value=!0;try{if(M.value){let e=M.value;return await S.put(`/ticket-grab-events/${e}`,i),t.success(`已保存`),j.value=!1,await $(),await a(),await Nn(w.value.find(t=>t.id===e)??{id:e,title:N.title.trim(),is_active:N.is_active},`2`),!0}let{data:e}=await S.post(`/ticket-grab-events`,i);return t.success(`已创建`),j.value=!1,await $(),await a(),e?.id!=null&&await Nn(e,`2`),!0}catch(e){return t.error(e?.response?.data?.message??`保存失败`),!1}finally{ce.value=!1}}async function kn(e){try{await S.post(`/ticket-grab-events/${e.id}/toggle`),t.success(`已更新`),await $()}catch(e){t.error(e?.response?.data?.message??`操作失败`)}}async function An(e){try{await S.delete(`/ticket-grab-events/${e.id}`),t.success(`删除成功`),await $()}catch(e){let n=e?.response?.data;if(n?.message&&n?.reservation_count!==void 0){t.error(`${n.message}(关联预约数:${n.reservation_count})`);return}t.error(n?.message??e?.message??`删除失败`)}}async function jn(e){it.value=!0,z.value=null,B.value={};try{let{data:t}=await S.get(`/ticket-grab-events/${e}/release-config`);z.value=t;for(let e of t.venues??[]){let t=e.venue_id;B.value[t]={};for(let n of e.release_days??[])B.value[t][n.release_date]=n.day_quota}return!0}catch(e){return t.error(e?.response?.data?.message??`加载放票配置失败`),!1}finally{it.value=!1}}function Mn(e){return{title:e.title,tags:e.tags??[],start_at:e.start_at,end_at:e.end_at,booking_start_at:e.booking_start_at,booking_end_at:e.booking_end_at,is_active:e.is_active,total_quota:e.total_quota,registered_count:e.registered_count,venues:e.venues??[]}}async function Nn(e,t=`1`){R.value=e.id,ct.value=e.title&&String(e.title).trim()||`抢票 #${e.id}`,st.value=t,ot.value=!0,H.value=null,lt.value=!0,z.value=null,B.value={},ft.value=``,ut.value=ie(),dt.value=[];let n=S.get(`/ticket-grab-events/${e.id}`).then(e=>e.data).catch(()=>null),r=S.get(`/ticket-grab-events/${e.id}/verify-portal`).then(e=>e.data).catch(()=>null),[i,a,o]=await Promise.all([n,jn(e.id),r]);if(i){let e={...i};e.cover_image&&=T(String(e.cover_image)),Array.isArray(e.gallery_media)&&(e.gallery_media=e.gallery_media.map(e=>({...e,url:T(String(e.url||``))}))),H.value=e}else H.value=Mn(e);o&&(ft.value=String(o.unified_verify_notice||``).trim(),dt.value=Array.isArray(o.venues)?o.venues:[]),ut.value=ie(),lt.value=!1}function Pn(){ot.value=!1,R.value=null,z.value=null,B.value={},H.value=null}function Fn(e){return String(e??`all`)===`school_age`?`学龄内学生`:`全部人员`}let In=h(()=>{let e=H.value;if(!e)return[];let t=e.event_venue_pivots??e.eventVenuePivots;return Array.isArray(t)?t:[]});function Ln(){navigator.clipboard.writeText(ut.value),t.success(`核销链接已复制`)}function Rn(e){navigator.clipboard.writeText(String(e||``).trim()),t.success(`口令已复制`)}async function zn(){if(!z.value||!R.value)return;let e=[];for(let t of z.value.venues??[]){let n=[],r=B.value[t.venue_id]??{};for(let e of t.release_days??[]){let t=r[e.release_date]??e.day_quota;n.push({date:e.release_date,day_quota:t})}e.push({venue_id:t.venue_id,days:n})}at.value=!0;try{await S.put(`/ticket-grab-events/${R.value}/release-config`,{venue_day_quotas:e}),t.success(`放票日配置已保存`),R.value!=null&&await jn(R.value)}catch(e){let n=e?.response?.data?.message;e?.response?.data?.errors?ne.error({title:`校验失败`,content:JSON.stringify(e.response.data.errors)}):t.error(n??`保存失败`)}finally{at.value=!1}}return i(async()=>{await Promise.all([Et().catch(()=>void 0),yn()]),await $()}),(t,i)=>{let a=s(`a-input`),o=s(`a-option`),p=s(`a-select`),h=s(`a-button`),g=s(`a-space`),b=s(`a-table-column`),S=s(`a-tag`),ne=s(`a-popconfirm`),C=s(`a-table`),ie=s(`a-typography-title`),T=s(`a-divider`),F=s(`a-descriptions-item`),fe=s(`a-descriptions`),G=s(`a-spin`),q=s(`a-tab-pane`),J=s(`a-typography-paragraph`),Y=s(`a-input-number`),yt=s(`a-tabs`),bt=s(`a-alert`),X=s(`a-form-item`),xt=s(`a-form`),Z=s(`a-modal`),St=s(`a-range-picker`),Ct=s(`a-time-picker`),Et=s(`a-switch`),jt=s(`a-upload`),Ft=s(`a-typography-text`),It=s(`a-list-item`),Lt=s(`a-list`),Wt=s(`a-card`);return r(),u(Wt,{title:`抢票管理 / 抢票列表`,bordered:!1},{default:c(()=>[y(g,{direction:`vertical`,fill:``},{default:c(()=>[y(g,{wrap:``,size:12},{default:c(()=>[y(a,{modelValue:O.value,"onUpdate:modelValue":i[0]||=e=>O.value=e,placeholder:`按名称搜索`,"allow-clear":``,style:{width:`180px`}},null,8,[`modelValue`]),Ot()?d(``,!0):(r(),u(p,{key:0,modelValue:k.value,"onUpdate:modelValue":i[1]||=e=>k.value=e,placeholder:`场馆`,"allow-clear":``,"allow-search":``,style:{width:`200px`},onChange:i[2]||=()=>(D.current=1,$())},{default:c(()=>[(r(!0),_(f,null,x(E.value,e=>(r(),u(o,{key:e.id,value:e.id},{default:c(()=>[l(m(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])),y(p,{modelValue:A.value,"onUpdate:modelValue":i[3]||=e=>A.value=e,placeholder:`上架状态`,"allow-clear":``,style:{width:`130px`},onChange:i[4]||=()=>(D.current=1,$())},{default:c(()=>[y(o,{value:`1`},{default:c(()=>[...i[38]||=[l(`上架`,-1)]]),_:1}),y(o,{value:`0`},{default:c(()=>[...i[39]||=[l(`下架`,-1)]]),_:1})]),_:1},8,[`modelValue`]),y(h,{type:`primary`,onClick:i[5]||=()=>(D.current=1,$())},{default:c(()=>[...i[40]||=[l(`查询`,-1)]]),_:1}),y(h,{type:`primary`,onClick:Sn},{default:c(()=>[...i[41]||=[l(`新建抢票`,-1)]]),_:1}),y(h,{loading:se.value,onClick:xn},{default:c(()=>[...i[42]||=[l(`导出`,-1)]]),_:1},8,[`loading`])]),_:1}),y(C,{class:`list-data-table`,scroll:{x:rt},data:w.value,loading:oe.value,"row-key":`id`,pagination:{current:D.current,pageSize:D.pageSize,total:D.total,showTotal:!0,onChange:e=>{D.current=e,$()},onPageSizeChange:e=>{D.pageSize=e,D.current=1,$()}}},{columns:c(()=>[y(b,{title:``,width:50,ellipsis:!0,tooltip:!0},{cell:c(({rowIndex:e})=>[l(m(te(ae)(e,D.current,D.pageSize)),1)]),_:1}),y(b,{title:`名称`,"data-index":`title`,width:140,"min-width":110,ellipsis:!0,tooltip:!0}),y(b,{title:`标签`,width:130,ellipsis:!0,tooltip:!0},{cell:c(({record:e})=>[l(m((e.tags||[]).length?(e.tags||[]).join(`、`):`—`),1)]),_:1}),y(b,{title:`场馆`,width:180,"min-width":140,ellipsis:!0,tooltip:!0},{cell:c(({record:e})=>[l(m((e.venues||[]).map(e=>e.name).join(`、`)||`-`),1)]),_:1}),y(b,{title:`活动状态`,width:72},{cell:c(({record:e})=>[l(m(cn(e.schedule_status)),1)]),_:1}),y(b,{title:`放票总数`,width:72},{cell:c(({record:e})=>[l(m(e.total_quota??0),1)]),_:1}),y(b,{title:`已预约`,width:72},{cell:c(({record:e})=>[l(m(e.registered_count??0),1)]),_:1}),y(b,{title:`上架状态`,width:72},{cell:c(({record:e})=>[y(S,{color:e.is_active?`green`:`gray`},{default:c(()=>[l(m(e.is_active?`上架`:`下架`),1)]),_:2},1032,[`color`])]),_:1}),y(b,{title:`操作`,width:298,"min-width":270,fixed:`right`,align:`left`},{cell:c(({record:e})=>[y(g,{size:2,class:`tg-list-actions`,align:`start`},{default:c(()=>[y(h,{type:`text`,size:`small`,onClick:t=>Cn(e)},{default:c(()=>[...i[43]||=[l(`编辑`,-1)]]),_:1},8,[`onClick`]),y(h,{type:`text`,size:`small`,onClick:t=>Nn(e,`1`)},{default:c(()=>[...i[44]||=[l(`查看`,-1)]]),_:1},8,[`onClick`]),y(h,{type:`text`,size:`small`,status:`warning`,onClick:t=>kn(e)},{default:c(()=>[l(m(e.is_active?`下架`:`上架`),1)]),_:2},1032,[`onClick`]),Dt()?(r(),u(ne,{key:0,content:`确认删除?无预约时方可删除`,onOk:t=>An(e)},{default:c(()=>[y(h,{type:`text`,size:`small`,status:`danger`},{default:c(()=>[...i[45]||=[l(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])):d(``,!0)]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1}),y(Z,{visible:ot.value,"onUpdate:visible":i[8]||=e=>ot.value=e,title:ct.value,width:`960px`,footer:!1,"unmount-on-close":``,"body-class":`tg-detail-hub-modal-body`,onCancel:Pn},{default:c(()=>[y(yt,{"active-key":st.value,"onUpdate:activeKey":i[7]||=e=>st.value=e,type:`rounded`},{default:c(()=>[y(q,{key:`1`,title:`活动信息`},{default:c(()=>[v(`div`,pe,[y(G,{style:{width:`100%`},loading:lt.value},{default:c(()=>[H.value?(r(),_(`div`,me,[v(`div`,he,[v(`div`,ge,[y(ie,{heading:5,class:`tg-hub-activity__name`},{default:c(()=>[l(m(String(H.value.title??`—`)),1)]),_:1}),y(g,{wrap:``,size:8},{default:c(()=>[R.value==null?d(``,!0):(r(),u(S,{key:0,size:`small`},{default:c(()=>[l(`#`+m(R.value),1)]),_:1})),y(S,{color:H.value.is_active?`green`:`gray`,size:`small`},{default:c(()=>[l(m(H.value.is_active?`已上架`:`已下架`),1)]),_:1},8,[`color`]),H.value.schedule_status?(r(),u(S,{key:1,color:ln(String(H.value.schedule_status)),size:`small`},{default:c(()=>[l(m(cn(String(H.value.schedule_status))),1)]),_:1},8,[`color`])):d(``,!0),H.value.audit_status?(r(),u(S,{key:2,color:dn(H.value.audit_status),size:`small`},{default:c(()=>[l(m(un(H.value.audit_status)),1)]),_:1},8,[`color`])):d(``,!0)]),_:1})]),Array.isArray(H.value.tags)&&H.value.tags.length?(r(),_(`div`,_e,[(r(!0),_(f,null,x(H.value.tags,(e,t)=>(r(),u(S,{key:`${e}-${t}`,color:`arcoblue`,size:`small`},{default:c(()=>[l(m(e),1)]),_:2},1024))),128))])):d(``,!0)]),y(T,{class:`tg-hub-divider`}),v(`section`,ve,[i[46]||=v(`h6`,{class:`tg-hub-section__title`},`时间与规则`,-1),y(fe,{column:2,size:`small`,bordered:``,class:`tg-hub-desc`},{default:c(()=>[y(F,{label:`活动日期`},{default:c(()=>[l(m(fn(H.value.start_at,H.value.end_at)),1)]),_:1}),y(F,{label:`预约日期`},{default:c(()=>[l(m(fn(H.value.booking_start_at,H.value.booking_end_at)),1)]),_:1}),y(F,{label:`每日放票时段`,span:2},{default:c(()=>[l(m(String(H.value.daily_release_start_time??`—`))+` ~ `+m(String(H.value.daily_release_end_time??`—`)),1)]),_:1}),y(F,{label:`预约人群`},{default:c(()=>[l(m(Fn(H.value.booking_audience)),1)]),_:1}),y(F,{label:`年龄限制`},{default:c(()=>[l(m(pn(H.value)),1)]),_:1}),y(F,{label:`放票总数`},{default:c(()=>[l(m(Number(H.value.total_quota??0)),1)]),_:1}),y(F,{label:`已预约`},{default:c(()=>[l(m(Number(H.value.registered_count??0)),1)]),_:1})]),_:1})]),H.value.cover_image||Array.isArray(H.value.gallery_media)&&H.value.gallery_media.length?(r(),_(`section`,ye,[i[49]||=v(`h6`,{class:`tg-hub-section__title`},`封面与轮播`,-1),v(`div`,be,[H.value.cover_image?(r(),_(`div`,xe,[i[47]||=v(`div`,{class:`tg-hub-media__sub`},`封面`,-1),v(`img`,{src:String(H.value.cover_image),alt:``,class:`tg-hub-media__cover-img`,onClick:i[6]||=e=>Q(`image`,String(H.value.cover_image))},null,8,Se)])):d(``,!0),Array.isArray(H.value.gallery_media)&&H.value.gallery_media.length?(r(),_(`div`,Ce,[i[48]||=v(`div`,{class:`tg-hub-media__sub`},`轮播`,-1),v(`div`,we,[(r(!0),_(f,null,x(H.value.gallery_media,(e,t)=>(r(),_(`div`,{key:t+e.url,class:`tg-hub-gallery-thumb-wrap`},[e.type===`image`?(r(),_(`img`,{key:0,src:e.url,class:`tg-hub-gallery-thumb`,onClick:t=>Q(`image`,e.url)},null,8,Te)):(r(),_(`video`,{key:1,src:e.url,controls:``,class:`tg-hub-gallery-thumb tg-hub-gallery-thumb--video`,onClick:n(t=>Q(`video`,e.url),[`stop`])},null,8,Ee))]))),128))])])):d(``,!0)])])):d(``,!0),In.value.length?(r(),_(`section`,De,[i[50]||=v(`h6`,{class:`tg-hub-section__title`},`参与场馆与配额`,-1),v(`div`,Oe,[y(C,{data:In.value,size:`small`,pagination:!1,"row-key":`venue_id`,bordered:{cell:!0}},{columns:c(()=>[y(b,{title:`场馆`,"data-index":`venue_id`},{cell:c(({record:e})=>[l(m(sn(e.venue_id)),1)]),_:1}),y(b,{title:`放票数`,width:96},{cell:c(({record:e})=>[l(m(e.venue_total_quota??`—`),1)]),_:1}),y(b,{title:`开放时间`,ellipsis:!0,tooltip:!0},{cell:c(({record:e})=>[l(m(mn(String(e.opening_hours??``),36)),1)]),_:1}),y(b,{title:`地址`,ellipsis:!0,tooltip:!0},{cell:c(({record:e})=>[l(m(mn(String(e.address??``),40)),1)]),_:1})]),_:1},8,[`data`])])])):d(``,!0),String(H.value.reservation_notice||``).trim()?(r(),_(`section`,ke,[i[51]||=v(`h6`,{class:`tg-hub-section__title`},`预约须知`,-1),v(`div`,Ae,[v(`div`,{class:`tg-hub-rich`,innerHTML:String(H.value.reservation_notice)},null,8,je)])])):d(``,!0),String(H.value.detail_html||``).trim()?(r(),_(`section`,Me,[i[52]||=v(`h6`,{class:`tg-hub-section__title`},`活动详情`,-1),v(`div`,Ne,[v(`div`,{class:`tg-hub-rich`,innerHTML:String(H.value.detail_html)},null,8,Pe)])])):d(``,!0)])):d(``,!0)]),_:1},8,[`loading`])])]),_:1}),y(q,{key:`2`,title:`放票设置`},{default:c(()=>[v(`div`,Fe,[it.value?(r(),u(G,{key:0,style:{width:`100%`,padding:`24px`}})):z.value?(r(),_(`div`,Ie,[z.value.event?(r(),u(J,{key:0,type:`secondary`,style:{"margin-top":`0`}},{default:c(()=>[l(` 预约日 `+m(z.value.event.booking_start_at)+` ~ `+m(z.value.event.booking_end_at)+`,每日 `+m(z.value.event.daily_release_start_time)+` 起开放,至 `+m(z.value.event.daily_release_end_time)+` 止。 `,1)]),_:1})):d(``,!0),z.value.venues?.length?(r(),u(yt,{key:1,"default-active-key":`0`},{default:c(()=>[(r(!0),_(f,null,x(z.value.venues,(e,t)=>(r(),u(q,{key:String(t),title:`${sn(e.venue_id)} · 总配额 ${e.venue_total_quota}`},{default:c(()=>[y(C,{data:e.release_days,pagination:!1,scroll:{y:320}},{columns:c(()=>[y(b,{title:`抢票日期`,"data-index":`release_date`,width:120}),y(b,{title:`昨日余票`,width:88},{cell:c(({record:e})=>[l(m(e.carry_in),1)]),_:1}),y(b,{title:`基础放票`,width:120},{cell:c(({record:t})=>[y(Y,{modelValue:B.value[e.venue_id][t.release_date],"onUpdate:modelValue":n=>B.value[e.venue_id][t.release_date]=n,min:0,mode:`button`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024),y(b,{title:`可预约总量`,width:120},{cell:c(({record:e})=>[l(m(e.total_day_pool),1)]),_:1}),y(b,{title:`已预约`,width:72},{cell:c(({record:e})=>[l(m(e.booked_count),1)]),_:1}),y(b,{title:`余量`,width:88},{cell:c(({record:e})=>[l(m(e.current_remaining),1)]),_:1})]),_:2},1032,[`data`])]),_:2},1032,[`title`]))),128))]),_:1})):d(``,!0),z.value.venues?.length?d(``,!0):(r(),u(bt,{key:2,type:`warning`},{default:c(()=>[...i[53]||=[l(`暂无放票日数据,请先保存活动并含预约日期与场馆。`,-1)]]),_:1}))])):d(``,!0)])]),_:1}),y(q,{key:`3`,title:`核销说明`},{default:c(()=>[v(`div`,Le,[ft.value?(r(),u(J,{key:0,type:`secondary`,style:{"margin-bottom":`12px`}},{default:c(()=>[l(m(ft.value),1)]),_:1})):d(``,!0),y(xt,{layout:`vertical`},{default:c(()=>[y(X,{label:`核销登录页(与活动核销相同)`},{default:c(()=>[y(g,null,{default:c(()=>[y(a,{"model-value":ut.value,readonly:``,style:{width:`460px`}},null,8,[`model-value`]),y(h,{type:`primary`,onClick:Ln},{default:c(()=>[...i[54]||=[l(`复制链接`,-1)]]),_:1})]),_:1})]),_:1})]),_:1}),y(T,{orientation:`left`},{default:c(()=>[...i[55]||=[l(`本场参与场馆 · 6 位抢票核销口令`,-1)]]),_:1}),y(C,{data:dt.value,pagination:!1,size:`small`,"row-key":`venue_id`},{columns:c(()=>[y(b,{title:`场馆`,"data-index":`venue_name`}),y(b,{title:`6 位口令`,"data-index":`verify_portal_pin`}),y(b,{title:`操作`,width:100},{cell:c(({record:e})=>[y(h,{type:`text`,size:`mini`,onClick:t=>Rn(String(e.verify_portal_pin||``))},{default:c(()=>[...i[56]||=[l(`复制口令`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])])]),_:1})]),_:1},8,[`active-key`]),v(`div`,Re,[y(h,{onClick:Pn},{default:c(()=>[...i[57]||=[l(`关闭`,-1)]]),_:1}),ee(y(h,{type:`primary`,loading:at.value,disabled:!z.value?.venues?.length,onClick:zn},{default:c(()=>[...i[58]||=[l(` 保存放票配置 `,-1)]]),_:1},8,[`loading`,`disabled`]),[[e,st.value===`2`]])])]),_:1},8,[`visible`,`title`]),y(Z,{visible:j.value,"onUpdate:visible":i[21]||=e=>j.value=e,title:M.value?`编辑抢票`:`新建抢票`,"ok-text":`下一步:放票配置`,width:`70%`,"body-style":P,"ok-loading":ce.value,"unmount-on-close":``,"on-before-ok":On,onCancel:i[22]||=e=>j.value=!1},{default:c(()=>[y(xt,{model:N,layout:`vertical`,class:`admin-modal-form`},{default:c(()=>[y(X,{label:`名称`,required:``},{default:c(()=>[y(a,{modelValue:N.title,"onUpdate:modelValue":i[9]||=e=>N.title=e},null,8,[`modelValue`])]),_:1}),y(X,{label:`活动日期`,required:``},{default:c(()=>[y(St,{modelValue:Mt.value,"onUpdate:modelValue":i[10]||=e=>Mt.value=e,format:`YYYY-MM-DD`,"value-format":`YYYY-MM-DD`,"exchange-time":!1,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),y(X,{label:`预约日期`,required:``},{default:c(()=>[y(St,{modelValue:Nt.value,"onUpdate:modelValue":i[11]||=e=>Nt.value=e,format:`YYYY-MM-DD`,"value-format":`YYYY-MM-DD`,"exchange-time":!1,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),y(X,{label:`每日放票时间`,required:``},{default:c(()=>[y(g,null,{default:c(()=>[y(Ct,{modelValue:N.daily_release_start_time,"onUpdate:modelValue":i[12]||=e=>N.daily_release_start_time=e,format:`HH:mm`,placeholder:`开始时间`,style:{width:`160px`}},null,8,[`modelValue`]),i[59]||=v(`span`,{style:{color:`var(--color-text-3)`}},`至`,-1),y(Ct,{modelValue:N.daily_release_end_time,"onUpdate:modelValue":i[13]||=e=>N.daily_release_end_time=e,format:`HH:mm`,placeholder:`结束时间`,style:{width:`160px`}},null,8,[`modelValue`])]),_:1})]),_:1}),y(X,{label:`预约人群`,required:``},{default:c(()=>[y(p,{modelValue:N.booking_audience,"onUpdate:modelValue":i[14]||=e=>N.booking_audience=e,placeholder:`请选择`},{default:c(()=>[y(o,{value:`all`},{default:c(()=>[...i[60]||=[l(`全部人员`,-1)]]),_:1}),y(o,{value:`school_age`},{default:c(()=>[...i[61]||=[l(`学龄内学生`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),y(X,{label:`年龄限制`,extra:`按身份证出生日期,可选;起止均为空表示不限制;单日可起止选同一天`},{default:c(()=>[y(St,{modelValue:Pt.value,"onUpdate:modelValue":i[15]||=e=>Pt.value=e,format:`YYYY-MM-DD`,"value-format":`YYYY-MM-DD`,"exchange-time":!1,"allow-clear":``,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),y(X,{label:`上架状态`,extra:`关闭后前台不展示该抢票活动`},{default:c(()=>[y(Et,{modelValue:N.is_active,"onUpdate:modelValue":i[16]||=e=>N.is_active=e},null,8,[`modelValue`])]),_:1}),y(X,{label:`标签`,class:`admin-modal-form__full`},{default:c(()=>[y(g,{style:{width:`100%`}},{default:c(()=>[y(a,{modelValue:V.value,"onUpdate:modelValue":i[17]||=e=>V.value=e,placeholder:`请输入标签内容`,onPressEnter:kt},null,8,[`modelValue`]),y(h,{type:`primary`,onClick:kt},{default:c(()=>[...i[62]||=[l(`保存标签`,-1)]]),_:1})]),_:1}),v(`div`,ze,[(r(!0),_(f,null,x(N.tags,(e,t)=>(r(),u(S,{key:`${e}-${t}`,closable:``,style:{"margin-bottom":`0`},onClose:e=>At(t)},{default:c(()=>[l(m(e),1)]),_:2},1032,[`onClose`]))),128)),N.tags.length?d(``,!0):(r(),_(`span`,Be,`暂无标签`))])]),_:1}),y(X,{label:`封面与轮播`,class:`admin-modal-form__full`},{default:c(()=>[v(`div`,Ve,[v(`div`,He,[i[66]||=v(`div`,{class:`activity-cover-carousel-row__sub`},`封面图`,-1),y(g,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:c(()=>[y(jt,{"auto-upload":!1,"show-file-list":!1,accept:`image/*`,"before-upload":Rt,onChange:Bt},{"upload-button":c(()=>[y(h,null,{default:c(()=>[...i[63]||=[l(`上传封面`,-1)]]),_:1})]),_:1}),y(Ft,{type:`secondary`},{default:c(()=>[...i[64]||=[l(`图片尺寸推荐 1200×600`,-1)]]),_:1}),N.cover_image?(r(),u(g,{key:0,direction:`vertical`,align:`start`},{default:c(()=>[v(`img`,{src:N.cover_image,class:`activity-cover-thumb`,onClick:i[18]||=e=>Q(`image`,N.cover_image)},null,8,Ue),y(h,{size:`mini`,status:`danger`,onClick:Ht},{default:c(()=>[...i[65]||=[l(`删除封面`,-1)]]),_:1})]),_:1})):d(``,!0)]),_:1})]),v(`div`,We,[i[70]||=v(`div`,{class:`activity-cover-carousel-row__sub`},`轮播图`,-1),v(`div`,Ge,[y(jt,{"auto-upload":!1,"show-file-list":!1,multiple:``,accept:`image/*,video/*`,"before-upload":zt,onChange:Vt},{"upload-button":c(()=>[y(h,{type:`primary`},{default:c(()=>[...i[67]||=[l(`新增轮播资源`,-1)]]),_:1})]),_:1}),y(Ft,{type:`secondary`,style:{"margin-top":`12px`,display:`block`}},{default:c(()=>[...i[68]||=[l(`图片尺寸推荐 1200×600`,-1)]]),_:1}),v(`div`,Ke,[(r(!0),_(f,null,x(N.gallery_media,(e,t)=>(r(),_(`div`,{key:e.url+t,class:`activity-gallery-item`},[e.type===`image`?(r(),_(`img`,{key:0,src:e.url,class:`activity-gallery-thumb`,onClick:t=>Q(`image`,e.url)},null,8,qe)):(r(),_(`video`,{key:1,src:e.url,controls:``,class:`activity-gallery-thumb activity-gallery-thumb--video`,onClick:n(t=>Q(`video`,e.url),[`stop`])},null,8,Je)),y(h,{size:`mini`,status:`danger`,onClick:e=>Ut(t)},{default:c(()=>[...i[69]||=[l(`删除`,-1)]]),_:1},8,[`onClick`])]))),128))])])])])]),_:1}),y(X,{label:`参与场馆与放票`,required:``,class:`admin-modal-form__full`},{default:c(()=>[v(`div`,Ye,[y(h,{type:`primary`,class:`tg-venue-block__add`,onClick:hn},{default:c(()=>[...i[71]||=[l(`新增场馆`,-1)]]),_:1}),v(`div`,Xe,[y(C,{class:`tg-venue-table`,data:N.venues,pagination:!1,"row-key":`_key`,size:`small`,bordered:{cell:!0},scroll:{x:1040}},{columns:c(()=>[y(b,{title:`场馆`,"min-width":200},{cell:c(({record:e})=>[y(p,{"model-value":e.venue_id,"allow-clear":``,"allow-search":``,placeholder:`选择场馆`,style:{width:`100%`},options:E.value.map(e=>({label:e.name,value:e.id})),"onUpdate:modelValue":t=>Tt(e,t)},null,8,[`model-value`,`options`,`onUpdate:modelValue`])]),_:1}),y(b,{title:`放票数`,width:200},{cell:c(({record:e})=>[y(Y,{modelValue:e.venue_total_quota,"onUpdate:modelValue":t=>e.venue_total_quota=t,min:1,class:`tg-venue-quota-input`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),y(b,{title:`开放时间`,"min-width":120,ellipsis:!0,tooltip:!0},{cell:c(({record:e})=>[l(m(mn(e.opening_hours,20)),1)]),_:1}),y(b,{title:`地址`,"min-width":160,ellipsis:!0,tooltip:!0},{cell:c(({record:e})=>[l(m(mn(e.address,24)),1)]),_:1}),y(b,{title:`操作`,width:136,align:`center`},{cell:c(({record:e})=>[v(`div`,Ze,[y(h,{type:`text`,size:`small`,onClick:t=>an(e)},{default:c(()=>[...i[72]||=[l(`编辑详情`,-1)]]),_:1},8,[`onClick`]),y(h,{type:`text`,size:`small`,status:`danger`,disabled:N.venues.length<=1,onClick:t=>gn(e)},{default:c(()=>[...i[73]||=[l(` 删除 `,-1)]]),_:1},8,[`disabled`,`onClick`])])]),_:1})]),_:1},8,[`data`])])])]),_:1}),y(X,{label:`预约须知`,class:`admin-modal-form__full`},{default:c(()=>[(r(),u(re,{modelValue:N.reservation_notice,"onUpdate:modelValue":i[19]||=e=>N.reservation_notice=e,"editor-options":Kt,"field-key":`tg-reservation`,key:`tg-r-${le.value}`},null,8,[`modelValue`]))]),_:1}),y(X,{label:`活动详情`,class:`admin-modal-form__full`},{default:c(()=>[(r(),u(re,{modelValue:N.detail_html,"onUpdate:modelValue":i[20]||=e=>N.detail_html=e,"editor-options":Kt,"field-key":`tg-detail`,"min-height":280,key:`tg-d-${le.value}`},null,8,[`modelValue`]))]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`,`ok-loading`]),y(Z,{visible:I.value,"onUpdate:visible":i[34]||=e=>I.value=e,title:`编辑场馆详情`,width:`80%`,"body-style":P,"unmount-on-close":``,"on-before-ok":Tn,onOk:on,onCancel:on},{default:c(()=>[L.value?(r(),u(xt,{layout:`vertical`,class:`admin-modal-form`,key:L.value._key},{default:c(()=>[y(X,{label:`开放时间`,required:``},{default:c(()=>[y(a,{modelValue:L.value.opening_hours,"onUpdate:modelValue":i[23]||=e=>L.value.opening_hours=e,placeholder:`可填写面向用户的开放时段说明`,"allow-clear":``},null,8,[`modelValue`])]),_:1}),y(X,{label:`所在单位`,required:``},{default:c(()=>[y(a,{modelValue:L.value.unit_name,"onUpdate:modelValue":i[24]||=e=>L.value.unit_name=e,"allow-clear":``},null,8,[`modelValue`])]),_:1}),y(X,{label:`联系人`,required:``},{default:c(()=>[y(a,{modelValue:L.value.contact_name,"onUpdate:modelValue":i[25]||=e=>L.value.contact_name=e,"allow-clear":``},null,8,[`modelValue`])]),_:1}),y(X,{label:`联系方式`,required:``},{default:c(()=>[y(a,{modelValue:L.value.contact_phone,"onUpdate:modelValue":i[26]||=e=>L.value.contact_phone=e,"allow-clear":``,placeholder:`电话等`},null,8,[`modelValue`])]),_:1}),y(X,{label:`核销方式说明`,required:``},{default:c(()=>[y(a,{modelValue:L.value.qr_verify_method,"onUpdate:modelValue":i[27]||=e=>L.value.qr_verify_method=e,"allow-clear":``,placeholder:`入馆核销方式说明`},null,8,[`modelValue`])]),_:1}),y(X,{label:`场馆地址与经纬度`,required:``,class:`admin-modal-form__full`},{default:c(()=>[v(`div`,Qe,[y(a,{modelValue:L.value.address,"onUpdate:modelValue":i[28]||=e=>L.value.address=e,class:`activity-address-coord-row__address`,placeholder:`场馆地址`,"allow-clear":``},null,8,[`modelValue`]),y(Y,{modelValue:L.value.lng,"onUpdate:modelValue":i[29]||=e=>L.value.lng=e,class:`activity-address-coord-row__lng`,precision:7,placeholder:`经度`,"hide-button":``,disabled:``},null,8,[`modelValue`]),y(Y,{modelValue:L.value.lat,"onUpdate:modelValue":i[30]||=e=>L.value.lat=e,class:`activity-address-coord-row__lat`,precision:7,placeholder:`纬度`,"hide-button":``,disabled:``},null,8,[`modelValue`]),y(h,{type:`primary`,class:`activity-address-coord-row__map`,onClick:i[31]||=e=>$t(L.value)},{default:c(()=>[...i[74]||=[l(`地图选点`,-1)]]),_:1}),y(h,{class:`activity-address-coord-row__map`,onClick:i[32]||=e=>wt(L.value)},{default:c(()=>[...i[75]||=[l(`使用本馆地址`,-1)]]),_:1})])]),_:1}),y(X,{label:`详情`,class:`admin-modal-form__full`},{default:c(()=>[(r(),u(re,{modelValue:L.value.detail_html,"onUpdate:modelValue":i[33]||=e=>L.value.detail_html=e,"editor-options":Kt,"field-key":`tg-venue-d-${L.value._key}`,"min-height":200,key:`tg-vd-${de.value}-${L.value._key}`},null,8,[`modelValue`,`field-key`]))]),_:1})]),_:1})):d(``,!0)]),_:1},8,[`visible`]),y(Z,{visible:gt.value,"onUpdate:visible":i[35]||=e=>gt.value=e,title:`媒体预览`,width:`72%`,footer:!1},{default:c(()=>[_t.value===`image`&&vt.value?(r(),_(`img`,{key:0,src:vt.value,style:{display:`block`,"max-width":`100%`,"max-height":`72vh`,margin:`0 auto`}},null,8,$e)):_t.value===`video`&&vt.value?(r(),_(`video`,{key:1,src:vt.value,controls:``,autoplay:``,style:{display:`block`,width:`100%`,"max-height":`72vh`}},null,8,et)):d(``,!0)]),_:1},8,[`visible`]),y(Z,{visible:pt.value,"onUpdate:visible":i[37]||=e=>pt.value=e,title:`地图选点(腾讯地图)`,width:`70%`,"body-style":ue,"on-before-ok":nn,"unmount-on-close":``,onCancel:rn},{default:c(()=>[y(g,{style:{"margin-bottom":`12px`,width:`100%`}},{default:c(()=>[y(a,{modelValue:W.value,"onUpdate:modelValue":i[36]||=e=>W.value=e,placeholder:`输入关键词搜索,如:苏州博物馆`,style:{width:`420px`}},null,8,[`modelValue`]),y(h,{type:`primary`,loading:U.value,onClick:en},{default:c(()=>[...i[76]||=[l(`搜索`,-1)]]),_:1},8,[`loading`])]),_:1}),v(`div`,tt,[v(`div`,{ref_key:`mapContainerRef`,ref:ht,style:{height:`520px`,flex:`1`,border:`1px solid #e5e6eb`}},null,512),v(`div`,nt,[i[77]||=v(`div`,{style:{"margin-bottom":`8px`,color:`#86909c`}},`搜索结果`,-1),y(Lt,{size:`small`},{default:c(()=>[(r(!0),_(f,null,x(mt.value,(e,t)=>(r(),u(It,{key:t,onClick:t=>tn(e)},{default:c(()=>[y(J,{ellipsis:{rows:1}},{default:c(()=>[l(m(e.title),1)]),_:2},1024),y(Ft,{type:`secondary`},{default:c(()=>[l(m(e.address),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1})])]),K.value?(r(),u(bt,{key:0,type:`info`,style:{"margin-top":`12px`}},{default:c(()=>[l(` 已选坐标:`+m(K.value.lng)+`, `+m(K.value.lat),1),i[78]||=v(`br`,null,null,-1),l(` 地址:`+m(K.value.address||`-`),1)]),_:1})):d(``,!0)]),_:1},8,[`visible`])]),_:1})}}}),[[`__scopeId`,`data-v-e9c9af55`]]);export{I as default}; |