|
|
import{n as e,st as t}from"./axios-CiYFffbI.js";import{I as n,N as r,O as i,V as a,Y as o,_ as s,d as c,f as l,h as u,i as d,it as f,kt as p,nt as m,p as h,u as g,ut as _,v,y,z as b}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as x,o as S}from"./index-BvpdbDif.js";import{t as ee}from"./RichEditorField-DGsT_W30.js";import{t as te}from"./listTable-Dphyh0Bn.js";import{t as C}from"./mediaUrl-B7aD5nK5.js";var ne={key:1},re={class:`import-file-label`},ie={key:2},ae={key:1},oe={style:{"margin-top":`16px`,"text-align":`right`}},se={style:{color:`#f53f3f`}},ce={style:{color:`#f53f3f`}},le={style:{color:`#f53f3f`}},ue={style:{color:`#f53f3f`}},de={style:{color:`#f53f3f`}},fe={style:{color:`#f53f3f`}},pe={style:{color:`#f53f3f`}},me={style:{color:`#f53f3f`}},he={style:{color:`#f53f3f`}},ge={style:{color:`#f53f3f`}},_e={style:{color:`#f53f3f`}},ve={style:{"margin-left":`8px`,color:`var(--color-text-3)`}},ye={style:{"margin-left":`8px`,color:`var(--color-text-3)`}},be={style:{display:`flex`,gap:`16px`,width:`100%`}},xe={style:{flex:`1 1 50%`,"min-width":`0`}},Se={style:{flex:`1 1 50%`,"min-width":`0`}},Ce={key:0,class:`venue-gallery-grid`,style:{"margin-top":`8px`}},we=[`src`,`onClick`],Te={key:0,style:{color:`#f53f3f`}},Ee={style:{color:`#f53f3f`}},De={class:`venue-address-coord-row`},Oe={key:0,style:{color:`#f53f3f`}},ke={class:`venue-cover-carousel-wrap`},Ae={class:`venue-cover-carousel-row__col`},je=[`src`],Me={key:0,style:{color:`#f53f3f`,"margin-top":`4px`,"font-size":`12px`}},Ne={class:`venue-cover-carousel-row__col`},Pe={style:{display:`flex`,"flex-direction":`column`,"align-items":`flex-start`,width:`100%`}},Fe={style:{width:`100%`,"margin-bottom":`8px`}},Ie={class:`venue-gallery-grid`},Le=[`src`,`onClick`],Re=[`src`,`onClick`],ze={key:0,style:{color:`#f53f3f`,"margin-top":`4px`,"font-size":`12px`}},Be={key:0,style:{color:`#f53f3f`}},Ve=[`src`],He=[`src`],Ue={style:{display:`flex`,gap:`12px`}},We={style:{width:`280px`,height:`520px`,overflow:`auto`,border:`1px solid #e5e6eb`,padding:`8px`}},Ge=3920,Ke=S(y({__name:`VenueList`,setup(y){let S=f(!1),Ke=f(!1),w=f(!1),qe=f(!1),T=f(!1),E=f(``),D=f([]),O=f(!1),k=f(null),Je=f([]),Ye=f([]),A=f([]),Xe=f([]),j=f([]),M=f([]),N=f([]),P=f(null),Ze=f(null),Qe=f(0),$e=f(!1),et=f(`image`),F=f(``),I=null,L=null,R=f(null),tt={lat:31.299379,lng:120.585315},nt={maxHeight:`70vh`,overflow:`auto`},z=m({name:``,venue_types:``,district:``,unit_name:``,ticket_type:``,booking_mode:``,open_mode:``,visit_form:``,open_time:``,consultation_hours:``,contact_phone:``,address:``,lat:``,lng:``,booking_method:``,ticket_content:``,cover_image:``,gallery_media:``,detail_html:``});function B(){Object.keys(z).forEach(e=>{z[e]=``})}let V=m({keyword:``,district:``,venue_type:``,ticket_type:``,booking_mode:``,open_mode:``,appointment_type:``,is_active:``,is_included_in_stats:``,audit_status:``}),H=m({current:1,pageSize:10,total:0}),rt=f(null),it=f(``),at=f(!1),U=f(!1),ot=f(!1),st=f(!1),W=f(null);function G(e){if(e==null||e===``)return;let t=typeof e==`number`?e:parseFloat(String(e).trim());return Number.isFinite(t)?t:void 0}function ct(){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 n=await X(r),i=t.getSelection(!0)?.index??Math.max(0,t.getLength()-1);t.insertEmbed(i,`image`,n,`user`),t.setSelection(i+1,0),e.success(`图片已上传并插入`)}catch(t){e.error(t?.response?.data?.message??`图片上传失败`)}},n.click()}function K(){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 n=await X(r),i=t.getSelection(!0)?.index??Math.max(0,t.getLength()-1);t.insertEmbed(i,`video`,n,`user`),t.setSelection(i+1,0),e.success(`视频已上传并插入`)}catch(t){e.error(t?.response?.data?.message??`视频上传失败`)}},n.click()}let lt={toolbar:{container:[[{header:[1,2,3,!1]}],[`bold`,`italic`,`underline`,`strike`],[{color:[]},{background:[]}],[{list:`ordered`},{list:`bullet`}],[{align:[]}],[`link`,`image`,`video`],[`clean`]],handlers:{image:ct,video:K}}},ut={modules:lt,placeholder:`请输入场馆详情内容`},dt={modules:lt,placeholder:``},q=m({name:``,venue_types:[],unit_name:``,district:``,ticket_type:``,appointment_type:``,booking_mode:``,open_mode:``,open_time:``,reservation_notice:``,ticket_content:``,booking_method:``,visit_form:``,consultation_hours:``,booking_qr_media:[],address:``,contact_phone:``,lat:void 0,lng:void 0,cover_image:``,gallery_media:[],detail_html:``,sort:0,is_active:!0,is_included_in_stats:!1});function J(){return P.value?.role===`super_admin`}function ft(e){return e===`pending`?`待审核`:e===`rejected`?`已退回`:e===`approved`?`已通过`:`-`}function pt(e){return e===`pending`?`orangered`:e===`rejected`?`red`:e===`approved`?`green`:`gray`}async function mt(t){try{await x.post(`/venues/${t.id}/audit/approve`),e.success(`已通过审核`),await Q()}catch(t){e.error(t?.response?.data?.message??`操作失败`)}}function ht(e){rt.value=e.id,it.value=``,at.value=!0}async function gt(){if(!rt.value)return!1;try{return await x.post(`/venues/${rt.value}/audit/reject`,{remark:it.value||void 0}),e.success(`已退回`),at.value=!1,await Q(),!0}catch(t){return e.error(t?.response?.data?.message??`操作失败`),!1}}async function _t(t){try{await x.delete(`/venues/${t.id}`),e.success(`删除成功`),await Q()}catch(t){e.error(t?.response?.data?.message??`删除失败`)}}function vt(e){let t=(e||``).trim();return t?t.replace(/<[^>]+>/g,` `).replace(/\s+/g,` `):`-`}function yt(e,t){return t?e.find(e=>e.item_value===t)?.item_label||t:`-`}function bt(e,t,n=`arcoblue`){return t&&e.find(e=>e.item_value===t)?.item_remark||n}function xt(e){let t=e.venue_types;return Array.isArray(t)&&t.length?t.map(e=>String(e)):e.venue_type?[String(e.venue_type)]:[]}function Y(){return`CRFBZ-NTART-YU4XX-LCDGK-3J456-VKBK2`}function St(e,t){let n=String(e||``).trim();if(n)return C(n);let r=String(t||``).trim();return r?C(r):``}async function X(e){let t=new FormData;t.append(`file`,e);let n=(await x.post(`/upload`,t))?.data||{};return St(n.url,n.path)}function Ct(){Qe.value+=1}function Z(e,t){t&&(et.value=e,F.value=C(t),$e.value=!0)}function wt(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)){for(let t of e)n.push(t);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`||Array.isArray(t))&&n.push(t)}}}return null}async function Q(){S.value=!0;try{let{data:e}=await x.get(`/venues`,{params:{keyword:V.keyword||void 0,district:V.district||void 0,venue_type:V.venue_type||void 0,ticket_type:V.ticket_type||void 0,booking_mode:V.booking_mode||void 0,open_mode:V.open_mode||void 0,appointment_type:V.appointment_type||void 0,is_active:V.is_active||void 0,is_included_in_stats:V.is_included_in_stats||void 0,audit_status:V.audit_status||void 0}});Je.value=e,H.total=e.length}catch(t){e.error(t?.response?.data?.message??`加载场馆失败`)}finally{S.value=!1}}async function Tt(){let{data:e}=await x.get(`/dict-items`,{params:{dict_type:`district`,active_only:1}});Ye.value=e}async function Et(){let{data:e}=await x.get(`/dict-items`,{params:{dict_type:`venue_type`,active_only:1}});A.value=e}async function Dt(){let{data:e}=await x.get(`/dict-items`,{params:{dict_type:`venue_appointment_type`,active_only:1}});Xe.value=e}async function Ot(){let{data:e}=await x.get(`/dict-items`,{params:{dict_type:`venue_open_mode`,active_only:1}});M.value=e}async function kt(){let{data:e}=await x.get(`/dict-items`,{params:{dict_type:`venue_booking_mode`,active_only:1}});j.value=e}async function At(){let{data:e}=await x.get(`/dict-items`,{params:{dict_type:`ticket_type`,active_only:1}});N.value=e}async function jt(){let{data:e}=await x.get(`/me`);P.value=e}function Mt(){O.value=!0,k.value=null,B(),q.name=``,q.venue_types=[],q.unit_name=``,q.district=``,q.ticket_type=``,q.booking_mode=``,q.open_mode=``,q.open_time=``,q.reservation_notice=``,q.ticket_content=``,q.booking_method=``,q.visit_form=``,q.consultation_hours=``,q.booking_qr_media=[],q.address=``,q.contact_phone=``,q.lat=void 0,q.lng=void 0,q.cover_image=``,q.gallery_media=[],q.detail_html=``,q.sort=0,q.is_active=!0,q.is_included_in_stats=!1,Ct(),w.value=!0}function Nt(e){O.value=!1,k.value=e.id,B(),q.name=e.name,q.venue_types=Array.isArray(e.venue_types)&&e.venue_types.length?[...e.venue_types]:e.venue_type?[e.venue_type]:[],q.unit_name=e.unit_name??``,q.district=e.district??``,q.ticket_type=e.ticket_type??``,q.appointment_type=e.appointment_type??``,q.booking_mode=e.booking_mode??``,q.open_mode=e.open_mode??``,q.open_time=e.open_time??``,q.reservation_notice=e.reservation_notice??``,q.ticket_content=e.ticket_content??``,q.booking_method=e.booking_method??``,q.visit_form=e.visit_form??``,q.consultation_hours=e.consultation_hours??``;{let t=e.booking_qr_media;Array.isArray(t)&&t.length?q.booking_qr_media=t.filter(e=>e&&e.url&&e.type===`image`).map(e=>({type:`image`,url:String(e.url)})):q.booking_qr_media=[]}q.address=e.address??``,q.contact_phone=e.contact_phone??``,q.lat=G(e.lat),q.lng=G(e.lng),q.cover_image=e.cover_image??``,q.gallery_media=Array.isArray(e.gallery_media)?[...e.gallery_media]:[],q.detail_html=e.detail_html??``;let t=e.sort;q.sort=typeof t==`number`&&Number.isFinite(t)?t:parseInt(String(t??`0`),10)||0,q.is_active=e.is_active,q.is_included_in_stats=e.is_included_in_stats??!1,Ct(),w.value=!0}async function Pt(t){try{let n=wt(t);if(!n)return e.warning(`未识别到上传文件`),!1;q.cover_image=await X(n),e.success(`封面上传成功`)}catch(t){e.error(t?.response?.data?.message??`封面上传失败`)}return!1}async function Ft(t){try{let n=wt(t);if(!n)return e.warning(`未识别到上传文件`),!1;let r=await X(n);if(!r)return e.error(`上传成功但未返回可用地址`),!1;let i=n.type.startsWith(`video/`);q.gallery_media.push({type:i?`video`:`image`,url:r}),e.success(`轮播资源上传成功`)}catch(t){e.error(t?.response?.data?.message??`轮播资源上传失败`)}return!1}function It(...e){Pt(e)}function Lt(...e){Ft(e)}function Rt(e){q.gallery_media.splice(e,1)}async function zt(t){try{if(!t)return e.warning(`未识别到上传文件`),!1;if(!t.type.startsWith(`image/`))return e.warning(`仅支持图片`),!1;let n=await X(t);if(!n)return e.error(`上传成功但未返回可用地址`),!1;q.booking_qr_media.push({type:`image`,url:n}),e.success(`已上传`)}catch(t){e.error(t?.response?.data?.message??`上传失败`)}return!1}function Bt(e){q.booking_qr_media.splice(e,1)}function Vt(){q.cover_image=``}function Ht(t){let n=t?.target,r=(n?.getAttribute?.(`src`)||n?.src||``).trim();!r||r===`about:blank`||e.error(`图片地址无法访问,请检查后端 storage 访问配置`)}function Ut(){H.current=1,Q()}function Wt(e){H.current=e}function Gt(){V.keyword=``,V.district=``,V.venue_type=``,V.ticket_type=``,V.booking_mode=``,V.open_mode=``,V.is_included_in_stats=``,V.is_active=``,V.audit_status=``,H.current=1,Q()}async function Kt(){if(window.TMap)return;let e=Y();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 qt(e,t){let n=window.TMap;I&&(L&&L.setMap(null),L=new n.MultiMarker({map:I,styles:{marker:new n.MarkerStyle({width:24,height:35})},geometries:[{id:`picked`,styleId:`marker`,position:new n.LatLng(e,t)}]}),I.setCenter(new n.LatLng(e,t)))}function Jt(e,t){let n=window.TMap;if(!I||!n)return;let r=new n.LatLng(e,t);I.resize?.(),I.setCenter(r),I.setZoom(13),setTimeout(()=>{I.resize?.(),I.setCenter(r)},120)}async function Yt(e,t){let{data:n}=await x.get(`/map/reverse-geocode`,{params:{lat:e,lng:t}});R.value={lat:e,lng:t,address:n.address||``},n.district&&Ye.value.some(e=>e.item_value===n.district)&&(q.district=n.district)}async function Xt(){await Kt();let t=window.TMap,n=typeof q.lat==`number`?q.lat:tt.lat,r=typeof q.lng==`number`?q.lng:tt.lng,i=new t.LatLng(n,r);I?I.setCenter(i):(I=new t.Map(Ze.value,{center:i,zoom:13}),I.on(`click`,async t=>{let n=Number(t.latLng.getLat().toFixed(6)),r=Number(t.latLng.getLng().toFixed(6));qt(n,r);try{await Yt(n,r)}catch(t){e.error(t?.response?.data?.message??`逆地理编码失败`)}})),Jt(n,r),q.lat!==void 0&&q.lng!==void 0?(qt(q.lat,q.lng),R.value={lat:q.lat,lng:q.lng,address:q.address||``}):(L&&=(L.setMap(null),null),R.value=null)}async function Zt(){if(O.value){qe.value=!0,E.value=``,D.value=[],T.value=!0;try{await i(),setTimeout(async()=>{try{await Xt()}catch(t){e.error(t?.message??`地图初始化失败`)}finally{T.value=!1}},250)}catch{T.value=!1}}}async function Qt(){if(!E.value.trim()){D.value=[];return}T.value=!0;try{let{data:e}=await x.get(`/map/search`,{params:{keyword:E.value,region:`苏州`}});D.value=e}catch(t){e.error(t?.response?.data?.message??`地图搜索失败`)}finally{T.value=!1}}async function $t(e){qt(e.lat,e.lng),R.value={lat:e.lat,lng:e.lng,address:e.address||``};try{await Yt(e.lat,e.lng)}catch{}}function en(){return R.value?(q.lat=R.value.lat,q.lng=R.value.lng,q.address=R.value.address||q.address,qe.value=!1,!0):(e.warning(`请先点击地图或选择搜索结果`),!1)}function tn(){B();let e=!0;return q.name.trim()||(z.name=`场馆名称为必填项`,e=!1),q.district.trim()||(z.district=`行政区为必填项`,e=!1),q.address.trim()||(z.address=`场馆地址为必填项`,e=!1),(typeof q.lat!=`number`||typeof q.lng!=`number`)&&(z.lat=`经纬度为必填项`,e=!1),q.venue_types.length||(z.venue_types=`主题为必填项`,e=!1),q.unit_name.trim()||(z.unit_name=`所属单位为必填项`,e=!1),q.ticket_type||(z.ticket_type=`门票类型为必填项`,e=!1),q.open_mode||(z.open_mode=`开放模式为必填项`,e=!1),q.visit_form.trim()||(z.visit_form=`参观形式为必填项`,e=!1),q.open_time.trim()||(z.open_time=`开放时间为必填项`,e=!1),q.consultation_hours.trim()||(z.consultation_hours=`咨询时间为必填项`,e=!1),q.contact_phone.trim()||(z.contact_phone=`咨询电话为必填项`,e=!1),q.booking_method.trim()||(z.booking_method=`预约方式为必填项`,e=!1),q.ticket_content.trim()||(z.ticket_content=`门票说明为必填项`,e=!1),q.cover_image||(z.cover_image=`科普场馆主图为必填项`,e=!1),q.gallery_media.length||(z.gallery_media=`科普场馆展示图片为必填项`,e=!1),(!q.detail_html||!q.detail_html.trim())&&(z.detail_html=`场馆简介为必填项`,e=!1),e}async function nn(){Ke.value=!0;try{if(!tn())return e.warning(`请填写所有必填项`),!1;let t={...q,booking_qr_media:q.booking_qr_media||[],sort:J()?q.sort:void 0};return O.value?(await x.post(`/venues`,t),e.success(`创建场馆成功`)):k.value&&(await x.put(`/venues/${k.value}`,t),e.success(`更新场馆成功`)),await Q(),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}finally{Ke.value=!1}}async function rn(){return await nn()}async function an(){try{let e=(await x.get(`/venues/import/template`,{responseType:`blob`,timeout:6e4})).data,t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`场馆导入模板.xlsx`,n.click(),URL.revokeObjectURL(t)}catch(t){e.error(t?.response?.data?.message??`下载失败`)}}function on(){W.value=null,U.value=!0}async function sn(t){let n=t.target,r=n.files?.[0];if(n.value=``,r){ot.value=!0;try{let e=new FormData;e.append(`file`,r);let{data:t}=await x.post(`/venues/import/preview`,e,{headers:{"Content-Type":`multipart/form-data`},timeout:12e4});W.value=t}catch(t){e.error(t?.response?.data?.message??`解析失败`)}finally{ot.value=!1}}}function cn(e){return String(e.name??``)}function ln(e,t){if(t==null||t===``)return`—`;let n=String(t);return e.find(e=>e.item_value===n)?.item_label??n}function $(e,t,n,r){let i=r[t];if(i!=null&&String(i).trim()!==``)return ln(e,i);let a=r[n];return a!=null&&String(a).trim()!==``?String(a):`—`}function un(e){let t=e.venue_types;if(!Array.isArray(t)||t.length===0)return`—`;let n=t.map(e=>ln(A.value,e)).filter(e=>e!==`—`);return n.length?n.join(`,`):`—`}function dn(e){return e===!0?`是`:e===!1?`否`:`—`}function fn(e,t){if(e==null)return`—`;let n=String(e).trim();if(!n)return`—`;let r=n.replace(/<[^>]+>/g,` `).replace(/\s+/g,` `).trim();return r?r.length>t?`${r.slice(0,t)}…`:r:`(富文本)`}async function pn(){let t=W.value?.rows?.filter(e=>e.ok).map(e=>e.payload)??[];if(!t.length){e.warning(`没有可导入的有效行`);return}st.value=!0;try{let{data:n}=await x.post(`/venues/import/confirm`,{rows:t}),r=n?.created_count??0,i=n?.updated_count??0;e.success(i>0&&r>0?`导入成功:新增 ${r} 条,更新 ${i} 条`:i>0?`导入成功:更新 ${i} 条`:`导入成功:新增 ${r} 条`),U.value=!1,W.value=null,await Q()}catch(t){e.error(t?.response?.data?.message??`导入失败`)}finally{st.value=!1}}return r(async()=>{await jt(),await Promise.all([Q(),Tt(),Et(),Dt(),kt(),Ot(),At()])}),(e,r)=>{let i=a(`a-input`),f=a(`a-option`),m=a(`a-select`),y=a(`a-button`),x=a(`a-space`),k=a(`a-alert`),P=a(`a-table-column`),I=a(`a-tag`),L=a(`a-tooltip`),tt=a(`a-popconfirm`),B=a(`a-table`),rt=a(`a-card`),G=a(`a-typography-text`),ct=a(`a-spin`),K=a(`a-modal`),lt=a(`a-textarea`),Y=a(`a-form-item`),St=a(`a-input-number`),X=a(`a-switch`),Ct=a(`a-col`),wt=a(`a-row`),Q=a(`a-upload`),Tt=a(`a-form`),Et=a(`a-typography-paragraph`),Dt=a(`a-list-item`),Ot=a(`a-list`);return n(),h(d,null,[v(rt,{title:`场馆管理 / 场馆列表`},{extra:o(()=>[v(x,{wrap:``},{default:o(()=>[v(i,{modelValue:V.keyword,"onUpdate:modelValue":r[0]||=e=>V.keyword=e,placeholder:`搜索名称/地址/开放时间/预约须知等`,style:{width:`260px`}},null,8,[`modelValue`]),v(m,{modelValue:V.venue_type,"onUpdate:modelValue":r[1]||=e=>V.venue_type=e,"allow-clear":``,placeholder:`筛选主题`,style:{width:`180px`}},{default:o(()=>[(n(!0),h(d,null,b(A.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),v(m,{modelValue:V.district,"onUpdate:modelValue":r[2]||=e=>V.district=e,"allow-clear":``,placeholder:`筛选行政区`,style:{width:`180px`}},{default:o(()=>[(n(!0),h(d,null,b(Ye.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),v(m,{modelValue:V.ticket_type,"onUpdate:modelValue":r[3]||=e=>V.ticket_type=e,"allow-clear":``,placeholder:`筛选门票类型`,style:{width:`180px`}},{default:o(()=>[(n(!0),h(d,null,b(N.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),v(m,{modelValue:V.booking_mode,"onUpdate:modelValue":r[4]||=e=>V.booking_mode=e,"allow-clear":``,placeholder:`筛选预约模式`,style:{width:`180px`}},{default:o(()=>[(n(!0),h(d,null,b(j.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),v(m,{modelValue:V.open_mode,"onUpdate:modelValue":r[5]||=e=>V.open_mode=e,"allow-clear":``,placeholder:`筛选开放模式`,style:{width:`180px`}},{default:o(()=>[(n(!0),h(d,null,b(M.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),v(m,{modelValue:V.is_included_in_stats,"onUpdate:modelValue":r[6]||=e=>V.is_included_in_stats=e,"allow-clear":``,placeholder:`纳入市科协人数统计系统`,style:{width:`180px`}},{default:o(()=>[v(f,{value:`1`},{default:o(()=>[...r[39]||=[s(`纳入统计`,-1)]]),_:1}),v(f,{value:`0`},{default:o(()=>[...r[40]||=[s(`不纳入`,-1)]]),_:1})]),_:1},8,[`modelValue`]),v(m,{modelValue:V.is_active,"onUpdate:modelValue":r[7]||=e=>V.is_active=e,"allow-clear":``,placeholder:`上架状态`,style:{width:`130px`}},{default:o(()=>[v(f,{value:`1`},{default:o(()=>[...r[41]||=[s(`上架`,-1)]]),_:1}),v(f,{value:`0`},{default:o(()=>[...r[42]||=[s(`下架`,-1)]]),_:1})]),_:1},8,[`modelValue`]),v(m,{modelValue:V.audit_status,"onUpdate:modelValue":r[8]||=e=>V.audit_status=e,"allow-clear":``,placeholder:`审核状态`,style:{width:`130px`}},{default:o(()=>[v(f,{value:`approved`},{default:o(()=>[...r[43]||=[s(`已通过`,-1)]]),_:1}),v(f,{value:`pending`},{default:o(()=>[...r[44]||=[s(`待审核`,-1)]]),_:1}),v(f,{value:`rejected`},{default:o(()=>[...r[45]||=[s(`已退回`,-1)]]),_:1})]),_:1},8,[`modelValue`]),v(y,{type:`primary`,onClick:Ut},{default:o(()=>[...r[46]||=[s(`查询`,-1)]]),_:1}),v(y,{onClick:Gt},{default:o(()=>[...r[47]||=[s(`重置`,-1)]]),_:1}),v(y,{type:`primary`,onClick:Mt},{default:o(()=>[...r[48]||=[s(`新增场馆`,-1)]]),_:1}),J()?(n(),c(y,{key:0,onClick:on},{default:o(()=>[...r[49]||=[s(`导入场馆`,-1)]]),_:1})):l(``,!0)]),_:1})]),default:o(()=>[v(k,{style:{"margin-bottom":`12px`}},{default:o(()=>[...r[50]||=[s(` 场馆管理员账号仅能看到和编辑自己绑定的场馆;超级管理员可管理全部场馆。 `,-1)]]),_:1}),v(B,{class:`list-data-table`,scroll:{x:_(te)},data:Je.value,loading:S.value,"row-key":`id`,pagination:{current:H.current,pageSize:H.pageSize,total:H.total,showTotal:!0,showJumper:!0},onPageChange:Wt},{columns:o(()=>[v(P,{title:`ID`,"data-index":`id`,width:80,ellipsis:!0,tooltip:!0}),v(P,{title:`场馆名称`,"data-index":`name`,width:180,"min-width":140,ellipsis:!0,tooltip:!0}),v(P,{title:`主题`,width:200},{cell:o(({record:e})=>[xt(e).length?(n(),c(x,{key:0,wrap:``,size:4},{default:o(()=>[(n(!0),h(d,null,b(xt(e),(t,r)=>(n(),c(I,{key:e.id+`-vt-`+r,color:bt(A.value,t,`arcoblue`)},{default:o(()=>[s(p(yt(A.value,t)),1)]),_:2},1032,[`color`]))),128))]),_:2},1024)):(n(),h(`span`,ne,`-`))]),_:1}),v(P,{title:`行政区`,"data-index":`district`,width:120,ellipsis:!0,tooltip:!0}),v(P,{title:`所属单位`,"data-index":`unit_name`,width:160,"min-width":120,ellipsis:!0,tooltip:!0}),v(P,{title:`门票类型`,width:120},{cell:o(({record:e})=>[v(I,{color:bt(N.value,e.ticket_type,`green`)},{default:o(()=>[s(p(yt(N.value,e.ticket_type)),1)]),_:2},1032,[`color`])]),_:1}),v(P,{title:`预约模式`,width:150},{cell:o(({record:e})=>[g(`span`,null,p(yt(j.value,e.booking_mode)),1)]),_:1}),v(P,{title:`开放模式`,width:150},{cell:o(({record:e})=>[g(`span`,null,p(yt(M.value,e.open_mode)),1)]),_:1}),v(P,{title:`开放时间`,width:180,"min-width":140,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(vt(e.open_time)),1)]),_:1}),v(P,{title:`地址`,"data-index":`address`,width:220,"min-width":160,ellipsis:!0,tooltip:!0}),v(P,{title:`排序`,"data-index":`sort`,width:90,ellipsis:!0,tooltip:!0}),v(P,{title:`上架状态`,width:100},{cell:o(({record:e})=>[v(I,{color:e.is_active?`green`:`gray`},{default:o(()=>[s(p(e.is_active?`上架`:`下架`),1)]),_:2},1032,[`color`])]),_:1}),v(P,{title:`审核状态`,width:120},{cell:o(({record:e})=>[e.audit_status===`rejected`&&e.audit_remark?(n(),c(L,{key:0,content:e.audit_remark},{default:o(()=>[v(I,{color:pt(e.audit_status)},{default:o(()=>[s(p(ft(e.audit_status)),1)]),_:2},1032,[`color`])]),_:2},1032,[`content`])):(n(),c(I,{key:1,color:pt(e.audit_status)},{default:o(()=>[s(p(ft(e.audit_status)),1)]),_:2},1032,[`color`]))]),_:1}),v(P,{title:`操作`,width:180,fixed:`right`,align:`center`},{cell:o(({record:e})=>[v(x,{wrap:``},{default:o(()=>[v(y,{type:`text`,onClick:t=>Nt(e)},{default:o(()=>[...r[51]||=[s(`编辑`,-1)]]),_:1},8,[`onClick`]),J()&&(e.audit_status===`pending`||e.audit_status===`rejected`)?(n(),h(d,{key:0},[v(y,{type:`text`,status:`success`,onClick:t=>mt(e)},{default:o(()=>[...r[52]||=[s(`通过`,-1)]]),_:1},8,[`onClick`]),v(y,{type:`text`,status:`danger`,onClick:t=>ht(e)},{default:o(()=>[...r[53]||=[s(`退回`,-1)]]),_:1},8,[`onClick`])],64)):l(``,!0),J()?(n(),c(tt,{key:1,content:`删除后该场馆关联的活动、预约等数据将一并删除,且不可恢复,确认删除?`,onOk:t=>_t(e)},{default:o(()=>[v(y,{type:`text`,status:`danger`},{default:o(()=>[...r[54]||=[s(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])):l(``,!0)]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1}),v(K,{visible:U.value,"onUpdate:visible":r[10]||=e=>U.value=e,title:`导入场馆`,width:`80%`,footer:!1,"body-style":nt},{default:o(()=>[v(x,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:o(()=>[v(k,{type:`info`},{default:o(()=>[...r[55]||=[s(` 请先下载模板,按「选项」工作表中的下拉值填写;多个主题用英文逗号分隔。封面与轮播图不在导入范围内,请在列表中编辑上传。经纬度可留空,导入后请在列表编辑中通过「地图选点」填写;经度与纬度须成对填写或同时留空。 `,-1)]]),_:1}),v(x,{wrap:``},{default:o(()=>[v(y,{type:`primary`,onClick:an},{default:o(()=>[...r[56]||=[s(`下载导入模板`,-1)]]),_:1}),g(`label`,re,[r[57]||=g(`span`,{class:`import-file-btn`},`选择 Excel 并预览`,-1),g(`input`,{class:`import-file-input`,type:`file`,accept:`.xlsx,.xls`,onChange:sn},null,32)])]),_:1}),v(ct,{loading:ot.value,style:{width:`100%`}},{default:o(()=>[W.value?(n(),h(d,{key:0},[v(G,{type:`secondary`},{default:o(()=>[s(` 共 `+p(W.value.summary.total)+` 行,有效 `+p(W.value.summary.valid)+`,无效 `+p(W.value.summary.invalid),1)]),_:1}),v(B,{data:W.value.rows,pagination:!1,size:`small`,scroll:{x:Ge},class:`venue-import-preview-table`,style:{"margin-top":`12px`}},{columns:o(()=>[v(P,{title:`行号`,width:64,fixed:`left`},{cell:o(({record:e})=>[s(p(e.row_index),1)]),_:1}),v(P,{title:`结果`,width:76,fixed:`left`},{cell:o(({record:e})=>[v(I,{color:e.ok?`green`:`red`},{default:o(()=>[s(p(e.ok?`OK`:`错误`),1)]),_:2},1032,[`color`])]),_:1}),v(P,{title:`导入`,width:88,fixed:`left`},{cell:o(({record:e})=>[e.ok&&e.import_action===`update`?(n(),c(I,{key:0,color:`orangered`},{default:o(()=>[...r[58]||=[s(`更新`,-1)]]),_:1})):e.ok&&e.import_action===`create`?(n(),c(I,{key:1,color:`arcoblue`},{default:o(()=>[...r[59]||=[s(`新增`,-1)]]),_:1})):(n(),h(`span`,ie,`—`))]),_:1}),v(P,{title:`校验说明`,width:220,fixed:`left`},{cell:o(({record:e})=>[e.ok?(n(),h(`span`,ae,`—`)):(n(),c(G,{key:0,type:`danger`,ellipsis:{rows:3,showTooltip:!0}},{default:o(()=>[s(p(e.errors.join(`;`)),1)]),_:2},1024))]),_:1}),v(P,{title:`场馆名称`,width:140,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(cn(e.payload)),1)]),_:1}),v(P,{title:`主题`,width:180,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(un(e.payload)),1)]),_:1}),v(P,{title:`行政区`,width:100,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(String(e.payload.district??``)||`—`),1)]),_:1}),v(P,{title:`预约类型`,width:120},{cell:o(({record:e})=>[s(p($(Xe.value,`appointment_type`,`_raw_appointment_label`,e.payload)),1)]),_:1}),v(P,{title:`门票类型`,width:100},{cell:o(({record:e})=>[s(p($(N.value,`ticket_type`,`_raw_ticket_type_label`,e.payload)),1)]),_:1}),v(P,{title:`预约模式`,width:130},{cell:o(({record:e})=>[s(p($(j.value,`booking_mode`,`_raw_booking_mode_label`,e.payload)),1)]),_:1}),v(P,{title:`开放模式`,width:130},{cell:o(({record:e})=>[s(p($(M.value,`open_mode`,`_raw_open_mode_label`,e.payload)),1)]),_:1}),v(P,{title:`所属单位`,width:120,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(String(e.payload.unit_name??``)||`—`),1)]),_:1}),v(P,{title:`预约方式`,width:140,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(vt(String(e.payload.booking_method??``))),1)]),_:1}),v(P,{title:`参观形式`,width:120,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(String(e.payload.visit_form??``)||`—`),1)]),_:1}),v(P,{title:`开放时间`,width:130,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(String(e.payload.open_time??``)||`—`),1)]),_:1}),v(P,{title:`咨询预约时间`,width:130,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(String(e.payload.consultation_hours??``)||`—`),1)]),_:1}),v(P,{title:`咨询预约联系电话`,width:120,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(String(e.payload.contact_phone??``)||`—`),1)]),_:1}),v(P,{title:`排序`,width:64},{cell:o(({record:e})=>[s(p(e.payload.sort===0||e.payload.sort?String(e.payload.sort):`—`),1)]),_:1}),v(P,{title:`启用`,width:64},{cell:o(({record:e})=>[s(p(dn(e.payload.is_active)),1)]),_:1}),v(P,{title:`纳入统计`,width:80},{cell:o(({record:e})=>[s(p(dn(e.payload.is_included_in_stats)),1)]),_:1}),v(P,{title:`场馆地址`,width:160,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(p(String(e.payload.address??``)||`—`),1)]),_:1}),v(P,{title:`经度`,width:100},{cell:o(({record:e})=>[s(p(e.payload.lng!=null&&e.payload.lng!==``?String(e.payload.lng):`—`),1)]),_:1}),v(P,{title:`纬度`,width:100},{cell:o(({record:e})=>[s(p(e.payload.lat!=null&&e.payload.lat!==``?String(e.payload.lat):`—`),1)]),_:1}),v(P,{title:`门票说明`,width:180,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[v(L,{content:String(e.payload.ticket_content??``)},{default:o(()=>[g(`span`,null,p(fn(e.payload.ticket_content,48)),1)]),_:2},1032,[`content`])]),_:1}),v(P,{title:`场馆详情`,width:200},{cell:o(({record:e})=>[v(L,{content:String(e.payload.detail_html??``)},{default:o(()=>[g(`span`,null,p(fn(e.payload.detail_html,40)),1)]),_:2},1032,[`content`])]),_:1}),v(P,{title:`预约须知`,width:200,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[v(L,{content:String(e.payload.reservation_notice??``)},{default:o(()=>[g(`span`,null,p(fn(e.payload.reservation_notice,48)),1)]),_:2},1032,[`content`])]),_:1})]),_:1},8,[`data`,`scroll`]),g(`div`,oe,[v(x,null,{default:o(()=>[v(y,{onClick:r[9]||=e=>U.value=!1},{default:o(()=>[...r[60]||=[s(`取消`,-1)]]),_:1}),v(y,{type:`primary`,loading:st.value,disabled:W.value.summary.valid===0,onClick:pn},{default:o(()=>[...r[61]||=[s(` 确认导入 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})])],64)):l(``,!0)]),_:1},8,[`loading`])]),_:1})]),_:1},8,[`visible`]),v(K,{visible:at.value,"onUpdate:visible":r[12]||=e=>at.value=e,title:`退回场馆`,"on-before-ok":gt},{default:o(()=>[v(lt,{modelValue:it.value,"onUpdate:modelValue":r[11]||=e=>it.value=e,placeholder:`退回说明(选填)`,"auto-size":{minRows:3,maxRows:8}},null,8,[`modelValue`])]),_:1},8,[`visible`]),v(K,{visible:w.value,"onUpdate:visible":r[35]||=e=>w.value=e,title:O.value?`新增场馆`:`编辑场馆`,width:`70%`,"body-style":nt,"confirm-loading":Ke.value,"on-before-ok":rn},{default:o(()=>[v(Tt,{model:q,layout:`vertical`,class:`admin-modal-form`},{default:o(()=>[v(Y,{label:`场馆名称`,required:``,help:z.name},u({default:o(()=>[v(i,{modelValue:q.name,"onUpdate:modelValue":r[13]||=e=>q.name=e},null,8,[`modelValue`])]),_:2},[z.name?{name:`help`,fn:o(()=>[g(`span`,se,p(z.name),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`主题(可多选)`,required:``,help:z.venue_types},u({default:o(()=>[v(m,{modelValue:q.venue_types,"onUpdate:modelValue":r[14]||=e=>q.venue_types=e,multiple:``,placeholder:`请选择主题`},{default:o(()=>[(n(!0),h(d,null,b(A.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:2},[z.venue_types?{name:`help`,fn:o(()=>[g(`span`,ce,p(z.venue_types),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`行政区`,required:``,help:z.district},u({default:o(()=>[v(m,{modelValue:q.district,"onUpdate:modelValue":r[15]||=e=>q.district=e,"allow-clear":``,placeholder:`请选择行政区`},{default:o(()=>[(n(!0),h(d,null,b(Ye.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:2},[z.district?{name:`help`,fn:o(()=>[g(`span`,le,p(z.district),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`所属单位`,required:``,help:z.unit_name},u({default:o(()=>[v(i,{modelValue:q.unit_name,"onUpdate:modelValue":r[16]||=e=>q.unit_name=e,placeholder:`所属单位名称`},null,8,[`modelValue`])]),_:2},[z.unit_name?{name:`help`,fn:o(()=>[g(`span`,ue,p(z.unit_name),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`门票类型`,required:``,help:z.ticket_type},u({default:o(()=>[v(m,{modelValue:q.ticket_type,"onUpdate:modelValue":r[17]||=e=>q.ticket_type=e,placeholder:`请选择门票类型`},{default:o(()=>[(n(!0),h(d,null,b(N.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:2},[z.ticket_type?{name:`help`,fn:o(()=>[g(`span`,de,p(z.ticket_type),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`预约模式`,help:z.booking_mode},u({default:o(()=>[v(m,{modelValue:q.booking_mode,"onUpdate:modelValue":r[18]||=e=>q.booking_mode=e,"allow-clear":``,placeholder:`请选择预约模式`},{default:o(()=>[(n(!0),h(d,null,b(j.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:2},[z.booking_mode?{name:`help`,fn:o(()=>[g(`span`,fe,p(z.booking_mode),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`开放模式`,required:``,help:z.open_mode},u({default:o(()=>[v(m,{modelValue:q.open_mode,"onUpdate:modelValue":r[19]||=e=>q.open_mode=e,placeholder:`请选择开放模式`},{default:o(()=>[(n(!0),h(d,null,b(M.value,e=>(n(),c(f,{key:e.id,value:e.item_value},{default:o(()=>[s(p(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:2},[z.open_mode?{name:`help`,fn:o(()=>[g(`span`,pe,p(z.open_mode),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`参观形式`,required:``,help:z.visit_form},u({default:o(()=>[v(i,{modelValue:q.visit_form,"onUpdate:modelValue":r[20]||=e=>q.visit_form=e,placeholder:`参观形式说明`},null,8,[`modelValue`])]),_:2},[z.visit_form?{name:`help`,fn:o(()=>[g(`span`,me,p(z.visit_form),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`开放时间`,required:``,help:z.open_time},u({default:o(()=>[v(i,{modelValue:q.open_time,"onUpdate:modelValue":r[21]||=e=>q.open_time=e,placeholder:`如:周一至周五 09:00-17:00,周末 09:00-18:00`},null,8,[`modelValue`])]),_:2},[z.open_time?{name:`help`,fn:o(()=>[g(`span`,he,p(z.open_time),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`咨询时间`,required:``,help:z.consultation_hours},u({default:o(()=>[v(i,{modelValue:q.consultation_hours,"onUpdate:modelValue":r[22]||=e=>q.consultation_hours=e,placeholder:`咨询时间说明`},null,8,[`modelValue`])]),_:2},[z.consultation_hours?{name:`help`,fn:o(()=>[g(`span`,ge,p(z.consultation_hours),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`咨询电话`,required:``,help:z.contact_phone},u({default:o(()=>[v(i,{modelValue:q.contact_phone,"onUpdate:modelValue":r[23]||=e=>q.contact_phone=e,placeholder:`前台可点击拨打`},null,8,[`modelValue`])]),_:2},[z.contact_phone?{name:`help`,fn:o(()=>[g(`span`,_e,p(z.contact_phone),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`排序`},{default:o(()=>[v(St,{modelValue:q.sort,"onUpdate:modelValue":r[24]||=e=>q.sort=e,min:0,disabled:!J()},null,8,[`modelValue`,`disabled`])]),_:1}),v(wt,{gutter:16},{default:o(()=>[v(Ct,{span:12},{default:o(()=>[v(Y,{label:`上架状态`},{default:o(()=>[v(X,{modelValue:q.is_active,"onUpdate:modelValue":r[25]||=e=>q.is_active=e},null,8,[`modelValue`]),g(`span`,ve,p(q.is_active?`上架`:`下架`),1)]),_:1})]),_:1}),v(Ct,{span:12},{default:o(()=>[v(Y,{label:`纳入市科协人数统计系统`},{default:o(()=>[v(X,{modelValue:q.is_included_in_stats,"onUpdate:modelValue":r[26]||=e=>q.is_included_in_stats=e},null,8,[`modelValue`]),g(`span`,ye,p(q.is_included_in_stats?`是`:`否`),1)]),_:1})]),_:1})]),_:1}),v(Y,{label:`预约方式与预约二维码`,required:``,class:`admin-modal-form__full`},{help:o(()=>[z.booking_method?(n(),h(`span`,Te,p(z.booking_method),1)):l(``,!0)]),default:o(()=>[g(`div`,be,[g(`div`,xe,[r[62]||=g(`div`,{class:`venue-form-split-label`},[s(`预约方式 `),g(`span`,{style:{color:`#f53f3f`}},`*`)],-1),v(i,{modelValue:q.booking_method,"onUpdate:modelValue":r[27]||=e=>q.booking_method=e,placeholder:`单行文字说明`,style:{width:`100%`}},null,8,[`modelValue`])]),g(`div`,Se,[r[66]||=g(`div`,{class:`venue-form-split-label`},`预约二维码`,-1),v(Q,{"auto-upload":!1,"show-file-list":!1,limit:20,multiple:``,accept:`image/*`,"on-before-upload":zt},{"upload-button":o(()=>[v(y,{type:`primary`,size:`small`},{default:o(()=>[...r[63]||=[s(`上传图片`,-1)]]),_:1})]),_:1}),v(G,{type:`secondary`,style:{"margin-top":`8px`,display:`block`,"font-size":`12px`}},{default:o(()=>[...r[64]||=[s(`推荐 1200×600`,-1)]]),_:1}),q.booking_qr_media.length?(n(),h(`div`,Ce,[(n(!0),h(d,null,b(q.booking_qr_media,(e,t)=>(n(),h(`div`,{key:`booking-qr-${t}`,class:`venue-gallery-item`},[g(`img`,{src:_(C)(e.url),class:`venue-gallery-thumb`,onError:Ht,onClick:t=>Z(`image`,e.url)},null,40,we),v(y,{size:`mini`,status:`danger`,onClick:e=>Bt(t)},{default:o(()=>[...r[65]||=[s(`删除`,-1)]]),_:1},8,[`onClick`])]))),128))])):l(``,!0)])])]),_:1}),v(Y,{label:`门票说明`,required:``,class:`admin-modal-form__full`,help:z.ticket_content},u({default:o(()=>[v(lt,{modelValue:q.ticket_content,"onUpdate:modelValue":r[28]||=e=>q.ticket_content=e,"auto-size":{minRows:3,maxRows:12},placeholder:`门票说明`},null,8,[`modelValue`])]),_:2},[z.ticket_content?{name:`help`,fn:o(()=>[g(`span`,Ee,p(z.ticket_content),1)]),key:`0`}:void 0]),1032,[`help`]),v(Y,{label:`场馆地址与经纬度`,required:``,class:`admin-modal-form__full`},{extra:o(()=>[...r[68]||=[s(`经纬度不可手动编辑,请使用地图选点自动填充。`,-1)]]),help:o(()=>[z.address||z.lat||z.lng?(n(),h(`span`,Oe,p(z.address||z.lat||z.lng),1)):l(``,!0)]),default:o(()=>[g(`div`,De,[v(i,{modelValue:q.address,"onUpdate:modelValue":r[29]||=e=>q.address=e,class:`venue-address-coord-row__address`,placeholder:`场馆地址`,"allow-clear":``},null,8,[`modelValue`]),v(St,{modelValue:q.lng,"onUpdate:modelValue":r[30]||=e=>q.lng=e,class:`venue-address-coord-row__lng`,precision:7,placeholder:`经度`,"hide-button":``,disabled:``},null,8,[`modelValue`]),v(St,{modelValue:q.lat,"onUpdate:modelValue":r[31]||=e=>q.lat=e,class:`venue-address-coord-row__lat`,precision:7,placeholder:`纬度`,"hide-button":``,disabled:``},null,8,[`modelValue`]),O.value?(n(),c(y,{key:0,type:`primary`,class:`venue-address-coord-row__map`,onClick:Zt},{default:o(()=>[...r[67]||=[s(`地图选点`,-1)]]),_:1})):l(``,!0)])]),_:1}),v(Y,{label:`科普场馆图片`,required:``,class:`admin-modal-form__full`},{default:o(()=>[g(`div`,ke,[g(`div`,Ae,[r[72]||=g(`div`,{class:`venue-cover-carousel-row__sub`},[s(`科普场馆主图 `),g(`span`,{style:{color:`#f53f3f`}},`*`)],-1),v(x,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:o(()=>[v(Q,{"auto-upload":!1,"show-file-list":!1,accept:`image/*`,"before-upload":Pt,onChange:It},{"upload-button":o(()=>[v(y,null,{default:o(()=>[...r[69]||=[s(`上传封面`,-1)]]),_:1})]),_:1}),v(G,{type:`secondary`},{default:o(()=>[...r[70]||=[s(`图片尺寸推荐 1200×600`,-1)]]),_:1}),q.cover_image?(n(),c(x,{key:0,direction:`vertical`,align:`start`},{default:o(()=>[g(`img`,{src:_(C)(q.cover_image),style:{width:`80px`,border:`1px solid #e5e6eb`,"border-radius":`4px`,cursor:`zoom-in`},onError:Ht,onClick:r[32]||=e=>Z(`image`,q.cover_image)},null,40,je),v(y,{size:`mini`,status:`danger`,onClick:Vt},{default:o(()=>[...r[71]||=[s(`删除封面`,-1)]]),_:1})]),_:1})):l(``,!0)]),_:1}),z.cover_image?(n(),h(`div`,Me,p(z.cover_image),1)):l(``,!0)]),g(`div`,Ne,[r[76]||=g(`div`,{class:`venue-cover-carousel-row__sub`},[s(`科普场馆展示图片 `),g(`span`,{style:{color:`#f53f3f`}},`*`)],-1),g(`div`,Pe,[g(`div`,Fe,[v(Q,{"auto-upload":!1,"show-file-list":!1,multiple:``,accept:`image/*,video/*`,"before-upload":Ft,onChange:Lt},{"upload-button":o(()=>[v(y,{type:`primary`},{default:o(()=>[...r[73]||=[s(`新增轮播资源`,-1)]]),_:1})]),_:1}),v(G,{type:`secondary`,style:{"margin-top":`12px`,display:`block`}},{default:o(()=>[...r[74]||=[s(`图片尺寸推荐 1200×600`,-1)]]),_:1})]),g(`div`,Ie,[(n(!0),h(d,null,b(q.gallery_media,(e,i)=>(n(),h(`div`,{key:e.url+i,class:`venue-gallery-item`},[e.type===`image`?(n(),h(`img`,{key:0,src:_(C)(e.url),class:`venue-gallery-thumb`,onError:Ht,onClick:t=>Z(`image`,e.url)},null,40,Le)):(n(),h(`video`,{key:1,src:_(C)(e.url),controls:``,class:`venue-gallery-thumb venue-gallery-thumb--video`,onClick:t(t=>Z(`video`,e.url),[`stop`])},null,8,Re)),v(y,{size:`mini`,status:`danger`,onClick:e=>Rt(i)},{default:o(()=>[...r[75]||=[s(`删除`,-1)]]),_:1},8,[`onClick`])]))),128))])]),z.gallery_media?(n(),h(`div`,ze,p(z.gallery_media),1)):l(``,!0)])])]),_:1}),v(Y,{label:`预约须知`,class:`admin-modal-form__full`},{default:o(()=>[(n(),c(ee,{modelValue:q.reservation_notice,"onUpdate:modelValue":r[33]||=e=>q.reservation_notice=e,"editor-options":dt,"field-key":`venue-reservation`,key:`venue-reservation-${Qe.value}`},null,8,[`modelValue`]))]),_:1}),v(Y,{label:`场馆简介`,required:``,class:`admin-modal-form__full`},{help:o(()=>[z.detail_html?(n(),h(`span`,Be,p(z.detail_html),1)):l(``,!0)]),default:o(()=>[(n(),c(ee,{modelValue:q.detail_html,"onUpdate:modelValue":r[34]||=e=>q.detail_html=e,"editor-options":ut,"field-key":`venue-detail`,"min-height":260,key:`venue-detail-${Qe.value}`},null,8,[`modelValue`]))]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`,`confirm-loading`]),v(K,{visible:$e.value,"onUpdate:visible":r[36]||=e=>$e.value=e,title:`媒体预览`,width:`72%`,footer:!1},{default:o(()=>[et.value===`image`&&F.value?(n(),h(`img`,{key:0,src:F.value,style:{display:`block`,"max-width":`100%`,"max-height":`72vh`,margin:`0 auto`},onError:Ht},null,40,Ve)):et.value===`video`&&F.value?(n(),h(`video`,{key:1,src:F.value,controls:``,autoplay:``,style:{display:`block`,width:`100%`,"max-height":`72vh`}},null,8,He)):l(``,!0)]),_:1},8,[`visible`]),v(K,{visible:qe.value,"onUpdate:visible":r[38]||=e=>qe.value=e,title:`地图选点(腾讯地图)`,width:`70%`,"body-style":nt,"on-before-ok":en},{default:o(()=>[v(x,{style:{"margin-bottom":`12px`,width:`100%`}},{default:o(()=>[v(i,{modelValue:E.value,"onUpdate:modelValue":r[37]||=e=>E.value=e,placeholder:`输入关键词搜索,如:苏州博物馆`,style:{width:`420px`}},null,8,[`modelValue`]),v(y,{type:`primary`,loading:T.value,onClick:Qt},{default:o(()=>[...r[77]||=[s(`搜索`,-1)]]),_:1},8,[`loading`])]),_:1}),g(`div`,Ue,[g(`div`,{ref_key:`mapContainerRef`,ref:Ze,style:{height:`520px`,flex:`1`,border:`1px solid #e5e6eb`}},null,512),g(`div`,We,[r[78]||=g(`div`,{style:{"margin-bottom":`8px`,color:`#86909c`}},`搜索结果`,-1),v(Ot,{size:`small`},{default:o(()=>[(n(!0),h(d,null,b(D.value,(e,t)=>(n(),c(Dt,{key:t,onClick:t=>$t(e)},{default:o(()=>[v(Et,{ellipsis:{rows:1}},{default:o(()=>[s(p(e.title),1)]),_:2},1024),v(G,{type:`secondary`},{default:o(()=>[s(p(e.address),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1})])]),R.value?(n(),c(k,{key:0,type:`info`,style:{"margin-top":`12px`}},{default:o(()=>[s(` 已选坐标:`+p(R.value.lng)+`, `+p(R.value.lat),1),r[79]||=g(`br`,null,null,-1),s(` 地址:`+p(R.value.address||`-`),1)]),_:1})):l(``,!0)]),_:1},8,[`visible`])],64)}}}),[[`__scopeId`,`data-v-666cc21b`]]);export{Ke as default}; |