You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
42 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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