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