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.

2 lines
22 KiB

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 ee,i as l,it as u,kt as d,nt as f,p,u as m,ut as te,v as h,y as g,z as _}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as v}from"./index-DscUIWPJ.js";import{t as ne}from"./RichEditorField-MwuZH_1q.js";import{t as re}from"./listTable-Djel28e5.js";var ie=[`src`],ae={style:{display:`flex`,"flex-direction":`column`,"align-items":`flex-start`,width:`100%`}},oe={style:{width:`100%`,"margin-bottom":`8px`}},se={style:{display:`grid`,"grid-template-columns":`repeat(3, 180px)`,gap:`12px`,width:`100%`}},ce=[`src`,`onClick`],le=[`src`,`onClick`],ue=[`src`],de=[`src`],fe={style:{display:`flex`,gap:`12px`}},pe={style:{width:`280px`,height:`520px`,overflow:`auto`,border:`1px solid #e5e6eb`,padding:`8px`}},y=1200,b=800,x=g({__name:`VenueList`,setup(g){let x=u(!1),S=u(!1),C=u(!1),w=u(!1),T=u(!1),E=u(``),D=u([]),O=u(!1),k=u(null),me=u([]),A=u([]),j=u([]),M=u([]),N=u(null),he=u(null),P=u(0),F=u(!1),ge=u(`image`),I=u(``),L=null,R=null,z=u(null),B={lat:31.299379,lng:120.585315},_e={maxHeight:`70vh`,overflow:`auto`},V=f({keyword:``,district:``,venue_type:``,ticket_type:``,is_active:`all`});function H(e){if(e==null||e===``)return;let t=typeof e==`number`?e:parseFloat(String(e).trim());return Number.isFinite(t)?t:void 0}function ve(){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 Y(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 U(){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 Y(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 W={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:ve,video:U}}},placeholder:`请输入场馆详情内容`},G=f({name:``,venue_type:``,unit_name:``,district:``,ticket_type:``,open_time:``,reservation_notice:``,study_courses:``,address:``,lat:void 0,lng:void 0,cover_image:``,gallery_media:[],detail_html:``,sort:0,is_active:!0});function ye(){return N.value?.role===`super_admin`}function K(e){let t=(e||``).trim();return t?t.replace(/<[^>]+>/g,` `).replace(/\s+/g,` `):`-`}function be(e,t){return t?e.find(e=>e.item_value===t)?.item_label||t:`-`}function xe(e,t,n=`arcoblue`){return t&&e.find(e=>e.item_value===t)?.item_remark||n}function q(){return`CRFBZ-NTART-YU4XX-LCDGK-3J456-VKBK2`}function Se(){return`szkp-map-admin`}function J(e,t){let n=String(e||``).trim();if(n)return/^https?:\/\//i.test(n)?n:n.startsWith(`/`)?`${window.location.origin}${n}`:`${window.location.origin}/${n}`;let r=String(t||``).trim();if(!r)return``;let i=r.replace(/^\/+/,``);return`${window.location.origin}/storage/${i}`}async function Y(e){let t=new FormData;t.append(`file`,e);let n=(await v.post(`/upload`,t,{headers:{"Content-Type":`multipart/form-data`}}))?.data||{};return J(n.url,n.path)}function X(){P.value+=1}function Z(e,t){t&&(ge.value=e,I.value=t,F.value=!0)}async function Ce(t,n,r,i){if(!t.type.startsWith(`image/`))return!0;let a=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>{let t=new Image;t.onload=()=>e({width:t.width,height:t.height}),t.onerror=()=>n(Error(`图片解析失败`)),t.src=String(r.result||``)},r.onerror=()=>n(Error(`图片读取失败`)),r.readAsDataURL(t)});return a.width>n||a.height>r?(e.warning(`${i}尺寸不能超过 ${n}x${r},当前为 ${a.width}x${a.height}`),!1):!0}function we(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(){x.value=!0;try{let{data:e}=await v.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,is_active:V.is_active===`all`?void 0:V.is_active}});me.value=e}catch(t){e.error(t?.response?.data?.message??`加载场馆失败`)}finally{x.value=!1}}async function Te(){let{data:e}=await v.get(`/dict-items`,{params:{dict_type:`district`,active_only:1}});A.value=e}async function Ee(){let{data:e}=await v.get(`/dict-items`,{params:{dict_type:`venue_type`,active_only:1}});j.value=e}async function De(){let{data:e}=await v.get(`/dict-items`,{params:{dict_type:`ticket_type`,active_only:1}});M.value=e}async function Oe(){let{data:e}=await v.get(`/me`);N.value=e}function ke(){O.value=!0,k.value=null,G.name=``,G.venue_type=``,G.unit_name=``,G.district=``,G.ticket_type=``,G.open_time=``,G.reservation_notice=`<p>门票:</p><p>预约方式:</p><p>参观形式:</p><p>咨询预约时间:</p><p>咨询预约联系电话:</p>`,G.study_courses=``,G.address=``,G.lat=void 0,G.lng=void 0,G.cover_image=``,G.gallery_media=[],G.detail_html=``,G.sort=0,G.is_active=!0,X(),C.value=!0}function Ae(e){O.value=!1,k.value=e.id,G.name=e.name,G.venue_type=e.venue_type??``,G.unit_name=e.unit_name??``,G.district=e.district??``,G.ticket_type=e.ticket_type??``,G.open_time=e.open_time??``,G.reservation_notice=e.reservation_notice??``,G.study_courses=e.study_courses??``,G.address=e.address??``,G.lat=H(e.lat),G.lng=H(e.lng),G.cover_image=e.cover_image??``,G.gallery_media=Array.isArray(e.gallery_media)?[...e.gallery_media]:[],G.detail_html=e.detail_html??``;let t=e.sort;G.sort=typeof t==`number`&&Number.isFinite(t)?t:parseInt(String(t??`0`),10)||0,G.is_active=e.is_active,X(),C.value=!0}async function je(t){try{let n=we(t);if(!n)return e.warning(`未识别到上传文件`),!1;if(!await Ce(n,y,b,`封面图`))return!1;G.cover_image=await Y(n),e.success(`封面上传成功`)}catch(t){e.error(t?.response?.data?.message??`封面上传失败`)}return!1}async function Me(t){try{let n=we(t);if(!n)return e.warning(`未识别到上传文件`),!1;let r=await Y(n);if(!r)return e.error(`上传成功但未返回可用地址`),!1;let i=n.type.startsWith(`video/`);G.gallery_media.push({type:i?`video`:`image`,url:r}),e.success(`轮播资源上传成功`)}catch(t){e.error(t?.response?.data?.message??`轮播资源上传失败`)}return!1}function Ne(...e){je(e)}function Pe(...e){Me(e)}function Fe(e){G.gallery_media.splice(e,1)}function Ie(){G.cover_image=``}function $(){e.error(`图片地址无法访问,请检查后端 storage 访问配置`)}function Le(){Q()}function Re(e,t,n,r){if(e===void 0||t===void 0)return``;let i=`coord:${e},${t};title:${n||`场馆位置`};addr:${r||``}`;return`https://apis.map.qq.com/uri/v1/marker?marker=${encodeURIComponent(i)}&referer=${encodeURIComponent(Se())}`}function ze(t){let n=Re(H(t.lat),H(t.lng),t.name,t.address);if(!n){e.warning(`该场馆尚未设置经纬度`);return}window.open(n,`_blank`)}function Be(){let t=Re(G.lat,G.lng,G.name,G.address);if(!t){e.warning(`请先设置经纬度`);return}window.open(t,`_blank`)}async function Ve(){if(window.TMap)return;let e=q();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 He(e,t){let n=window.TMap;L&&(R&&R.setMap(null),R=new n.MultiMarker({map:L,styles:{marker:new n.MarkerStyle({width:24,height:35})},geometries:[{id:`picked`,styleId:`marker`,position:new n.LatLng(e,t)}]}),L.setCenter(new n.LatLng(e,t)))}function Ue(e,t){let n=window.TMap;if(!L||!n)return;let r=new n.LatLng(e,t);L.resize?.(),L.setCenter(r),L.setZoom(13),setTimeout(()=>{L.resize?.(),L.setCenter(r)},120)}async function We(e,t){let{data:n}=await v.get(`/map/reverse-geocode`,{params:{lat:e,lng:t}});z.value={lat:e,lng:t,address:n.address||``},n.district&&A.value.some(e=>e.item_value===n.district)&&(G.district=n.district)}async function Ge(){await Ve();let t=window.TMap,n=typeof G.lat==`number`?G.lat:B.lat,r=typeof G.lng==`number`?G.lng:B.lng,i=new t.LatLng(n,r);L?L.setCenter(i):(L=new t.Map(he.value,{center:i,zoom:13}),L.on(`click`,async t=>{let n=Number(t.latLng.getLat().toFixed(6)),r=Number(t.latLng.getLng().toFixed(6));He(n,r);try{await We(n,r)}catch(t){e.error(t?.response?.data?.message??`逆地理编码失败`)}})),Ue(n,r),G.lat!==void 0&&G.lng!==void 0?(He(G.lat,G.lng),z.value={lat:G.lat,lng:G.lng,address:G.address||``}):(R&&=(R.setMap(null),null),z.value=null)}async function Ke(){w.value=!0,E.value=``,D.value=[],T.value=!0;try{await i(),setTimeout(async()=>{try{await Ge()}catch(t){e.error(t?.message??`地图初始化失败`)}finally{T.value=!1}},250)}catch{T.value=!1}}async function qe(){if(!E.value.trim()){D.value=[];return}T.value=!0;try{let{data:e}=await v.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 Je(e){He(e.lat,e.lng),z.value={lat:e.lat,lng:e.lng,address:e.address||``};try{await We(e.lat,e.lng)}catch{}}function Ye(){return z.value?(G.lat=z.value.lat,G.lng=z.value.lng,G.address=z.value.address||G.address,w.value=!1,!0):(e.warning(`请先点击地图或选择搜索结果`),!1)}async function Xe(){S.value=!0;try{if(!G.district.trim())return e.warning(`行政区为必填项`),!1;if(!G.address.trim())return e.warning(`场馆地址为必填项`),!1;if(typeof G.lat!=`number`||typeof G.lng!=`number`)return e.warning(`经纬度为必填项`),!1;let t={...G,sort:ye()?G.sort:void 0};return O.value?(await v.post(`/venues`,t),e.success(`创建场馆成功`)):k.value&&(await v.put(`/venues/${k.value}`,t),e.success(`更新场馆成功`)),await Q(),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}finally{S.value=!1}}async function Ze(){return await Xe()}return r(async()=>{await Oe(),await Promise.all([Q(),Te(),Ee(),De()])}),(e,r)=>{let i=a(`a-input`),u=a(`a-option`),f=a(`a-select`),g=a(`a-button`),v=a(`a-space`),y=a(`a-alert`),b=a(`a-table-column`),k=a(`a-tag`),N=a(`a-table`),L=a(`a-card`),R=a(`a-form-item`),B=a(`a-input-number`),H=a(`a-switch`),ve=a(`a-textarea`),U=a(`a-upload`),q=a(`a-typography-text`),Se=a(`a-form`),J=a(`a-modal`),Y=a(`a-typography-paragraph`),X=a(`a-list-item`),Ce=a(`a-list`);return n(),p(l,null,[h(L,{title:`场馆管理 / 场馆列表`},{extra:o(()=>[h(v,{wrap:``},{default:o(()=>[h(i,{modelValue:V.keyword,"onUpdate:modelValue":r[0]||=e=>V.keyword=e,placeholder:`搜索名称/地址/开放时间/预约须知`,style:{width:`260px`}},null,8,[`modelValue`]),h(f,{modelValue:V.venue_type,"onUpdate:modelValue":r[1]||=e=>V.venue_type=e,"allow-clear":``,placeholder:`筛选场馆类型`,style:{width:`180px`}},{default:o(()=>[(n(!0),p(l,null,_(j.value,e=>(n(),c(u,{key:e.id,value:e.item_value},{default:o(()=>[s(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),h(f,{modelValue:V.ticket_type,"onUpdate:modelValue":r[2]||=e=>V.ticket_type=e,"allow-clear":``,placeholder:`筛选门票类型`,style:{width:`180px`}},{default:o(()=>[(n(!0),p(l,null,_(M.value,e=>(n(),c(u,{key:e.id,value:e.item_value},{default:o(()=>[s(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),h(f,{modelValue:V.district,"onUpdate:modelValue":r[3]||=e=>V.district=e,"allow-clear":``,placeholder:`筛选行政区`,style:{width:`180px`}},{default:o(()=>[(n(!0),p(l,null,_(A.value,e=>(n(),c(u,{key:e.id,value:e.item_value},{default:o(()=>[s(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),h(f,{modelValue:V.is_active,"onUpdate:modelValue":r[4]||=e=>V.is_active=e,style:{width:`120px`}},{default:o(()=>[h(u,{value:`all`},{default:o(()=>[...r[24]||=[s(`全部状态`,-1)]]),_:1}),h(u,{value:`1`},{default:o(()=>[...r[25]||=[s(`启用`,-1)]]),_:1}),h(u,{value:`0`},{default:o(()=>[...r[26]||=[s(`禁用`,-1)]]),_:1})]),_:1},8,[`modelValue`]),h(g,{type:`primary`,onClick:Le},{default:o(()=>[...r[27]||=[s(`查询`,-1)]]),_:1}),h(g,{onClick:Q},{default:o(()=>[...r[28]||=[s(`刷新`,-1)]]),_:1}),h(g,{type:`primary`,onClick:ke},{default:o(()=>[...r[29]||=[s(`新增场馆`,-1)]]),_:1})]),_:1})]),default:o(()=>[h(y,{style:{"margin-bottom":`12px`}},{default:o(()=>[...r[30]||=[s(` 场馆管理员账号仅能看到和编辑自己绑定的场馆;超级管理员可管理全部场馆。 `,-1)]]),_:1}),h(N,{class:`list-data-table`,scroll:{x:te(re)},data:me.value,loading:x.value,"row-key":`id`,pagination:{pageSize:10}},{columns:o(()=>[h(b,{title:`ID`,"data-index":`id`,width:80,ellipsis:!0,tooltip:!0}),h(b,{title:`场馆名称`,"data-index":`name`,width:180,"min-width":140,ellipsis:!0,tooltip:!0}),h(b,{title:`场馆类型`,width:140},{cell:o(({record:e})=>[h(k,{color:xe(j.value,e.venue_type,`arcoblue`)},{default:o(()=>[s(d(be(j.value,e.venue_type)),1)]),_:2},1032,[`color`])]),_:1}),h(b,{title:`所属单位名称`,"data-index":`unit_name`,width:180,"min-width":140,ellipsis:!0,tooltip:!0}),h(b,{title:`行政区`,"data-index":`district`,width:120,ellipsis:!0,tooltip:!0}),h(b,{title:`门票类型`,width:120},{cell:o(({record:e})=>[h(k,{color:xe(M.value,e.ticket_type,`green`)},{default:o(()=>[s(d(be(M.value,e.ticket_type)),1)]),_:2},1032,[`color`])]),_:1}),h(b,{title:`开放时间`,width:180,"min-width":140,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(d(K(e.open_time)),1)]),_:1}),h(b,{title:`预约须知`,width:200,"min-width":160,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(d(K(e.reservation_notice)),1)]),_:1}),h(b,{title:`研学课程`,width:200,"min-width":160,ellipsis:!0,tooltip:!0},{cell:o(({record:e})=>[s(d(K(e.study_courses)),1)]),_:1}),h(b,{title:`地址`,"data-index":`address`,width:220,"min-width":160,ellipsis:!0,tooltip:!0}),h(b,{title:`排序`,"data-index":`sort`,width:90,ellipsis:!0,tooltip:!0}),h(b,{title:`状态`,width:100},{cell:o(({record:e})=>[h(k,{color:e.is_active?`green`:`gray`},{default:o(()=>[s(d(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`color`])]),_:1}),h(b,{title:`操作`,width:180,fixed:`right`,align:`center`},{cell:o(({record:e})=>[h(v,null,{default:o(()=>[h(g,{type:`text`,onClick:t=>Ae(e)},{default:o(()=>[...r[31]||=[s(`编辑`,-1)]]),_:1},8,[`onClick`]),h(g,{type:`text`,onClick:t=>ze(e)},{default:o(()=>[...r[32]||=[s(`打开位置`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`])]),_:1}),h(J,{visible:C.value,"onUpdate:visible":r[20]||=e=>C.value=e,title:O.value?`新增场馆`:`编辑场馆`,width:`70%`,"body-style":_e,"confirm-loading":S.value,"on-before-ok":Ze},{default:o(()=>[h(Se,{model:G,layout:`vertical`},{default:o(()=>[h(R,{label:`场馆名称`,required:``},{default:o(()=>[h(i,{modelValue:G.name,"onUpdate:modelValue":r[5]||=e=>G.name=e},null,8,[`modelValue`])]),_:1}),h(R,{label:`场馆类型`},{default:o(()=>[h(f,{modelValue:G.venue_type,"onUpdate:modelValue":r[6]||=e=>G.venue_type=e,"allow-clear":``,placeholder:`请选择场馆类型`},{default:o(()=>[(n(!0),p(l,null,_(j.value,e=>(n(),c(u,{key:e.id,value:e.item_value},{default:o(()=>[s(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),h(R,{label:`所属单位名称`},{default:o(()=>[h(i,{modelValue:G.unit_name,"onUpdate:modelValue":r[7]||=e=>G.unit_name=e},null,8,[`modelValue`])]),_:1}),h(R,{label:`行政区`,required:``},{default:o(()=>[h(f,{modelValue:G.district,"onUpdate:modelValue":r[8]||=e=>G.district=e,"allow-clear":``,placeholder:`请选择行政区`},{default:o(()=>[(n(!0),p(l,null,_(A.value,e=>(n(),c(u,{key:e.id,value:e.item_value},{default:o(()=>[s(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),h(R,{label:`门票类型`},{default:o(()=>[h(f,{modelValue:G.ticket_type,"onUpdate:modelValue":r[9]||=e=>G.ticket_type=e,"allow-clear":``,placeholder:`请选择门票类型`},{default:o(()=>[(n(!0),p(l,null,_(M.value,e=>(n(),c(u,{key:e.id,value:e.item_value},{default:o(()=>[s(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),h(R,{label:`排序`},{default:o(()=>[h(B,{modelValue:G.sort,"onUpdate:modelValue":r[10]||=e=>G.sort=e,min:0,disabled:!ye()},null,8,[`modelValue`,`disabled`])]),_:1}),h(R,{label:`状态`},{default:o(()=>[h(H,{modelValue:G.is_active,"onUpdate:modelValue":r[11]||=e=>G.is_active=e},null,8,[`modelValue`])]),_:1}),h(R,{label:`开放时间`},{default:o(()=>[h(ve,{modelValue:G.open_time,"onUpdate:modelValue":r[12]||=e=>G.open_time=e,"auto-size":{minRows:2,maxRows:4},placeholder:`如:周一至周五 09:00-17:00
周末 09:00-18:00`},null,8,[`modelValue`])]),_:1}),h(R,{label:`场馆地址`,required:``},{default:o(()=>[h(i,{modelValue:G.address,"onUpdate:modelValue":r[13]||=e=>G.address=e},null,8,[`modelValue`])]),_:1}),h(R,{label:`经纬度`,required:``},{default:o(()=>[h(v,null,{default:o(()=>[h(B,{modelValue:G.lng,"onUpdate:modelValue":r[14]||=e=>G.lng=e,precision:7,placeholder:`经度`},null,8,[`modelValue`]),h(B,{modelValue:G.lat,"onUpdate:modelValue":r[15]||=e=>G.lat=e,precision:7,placeholder:`纬度`},null,8,[`modelValue`]),h(g,{onClick:Ke},{default:o(()=>[...r[33]||=[s(`地图选点`,-1)]]),_:1}),h(g,{onClick:Be},{default:o(()=>[...r[34]||=[s(`打开场馆位置`,-1)]]),_:1})]),_:1})]),_:1}),h(R,{label:`封面图(单张)`},{default:o(()=>[h(v,{direction:`vertical`,fill:``},{default:o(()=>[h(U,{"auto-upload":!1,"show-file-list":!1,accept:`image/*`,"before-upload":je,onChange:Ne},{"upload-button":o(()=>[h(g,null,{default:o(()=>[...r[35]||=[s(`上传封面`,-1)]]),_:1})]),_:1}),h(q,{type:`secondary`},{default:o(()=>[...r[36]||=[s(`建议不超过 1200x800`,-1)]]),_:1}),G.cover_image?(n(),c(v,{key:0,direction:`vertical`,align:`start`},{default:o(()=>[m(`img`,{src:G.cover_image,style:{width:`160px`,border:`1px solid #e5e6eb`,"border-radius":`4px`,cursor:`zoom-in`},onError:$,onClick:r[16]||=e=>Z(`image`,G.cover_image)},null,40,ie),h(g,{size:`mini`,status:`danger`,onClick:Ie},{default:o(()=>[...r[37]||=[s(`删除封面`,-1)]]),_:1})]),_:1})):ee(``,!0)]),_:1})]),_:1}),h(R,{label:`轮播图/视频`},{default:o(()=>[m(`div`,ae,[m(`div`,oe,[h(U,{"auto-upload":!1,"show-file-list":!1,multiple:``,accept:`image/*,video/*`,"before-upload":Me,onChange:Pe},{"upload-button":o(()=>[h(g,{type:`primary`},{default:o(()=>[...r[38]||=[s(`新增轮播资源`,-1)]]),_:1})]),_:1})]),m(`div`,se,[(n(!0),p(l,null,_(G.gallery_media,(e,i)=>(n(),c(L,{key:e.url+i,size:`small`,style:{width:`180px`}},{title:o(()=>[s(d(e.type===`video`?`视频`:`图片`),1)]),extra:o(()=>[h(g,{size:`mini`,status:`danger`,onClick:e=>Fe(i)},{default:o(()=>[...r[39]||=[s(`删除`,-1)]]),_:1},8,[`onClick`])]),default:o(()=>[e.type===`image`?(n(),p(`img`,{key:0,src:e.url,style:{width:`140px`,height:`90px`,"object-fit":`cover`,border:`1px solid #e5e6eb`,"border-radius":`4px`,cursor:`zoom-in`},onError:$,onClick:t=>Z(`image`,e.url)},null,40,ce)):(n(),p(`video`,{key:1,src:e.url,controls:``,style:{width:`140px`,height:`90px`,"object-fit":`cover`,cursor:`zoom-in`},onClick:t(t=>Z(`video`,e.url),[`stop`])},null,8,le))]),_:2},1024))),128))])])]),_:1}),h(R,{label:`预约须知(无则删除)`},{default:o(()=>[(n(),c(ne,{modelValue:G.reservation_notice,"onUpdate:modelValue":r[17]||=e=>G.reservation_notice=e,"editor-options":W,"field-key":`venue-reservation`,key:`venue-reservation-${P.value}`},null,8,[`modelValue`]))]),_:1}),h(R,{label:`研学课程`},{default:o(()=>[(n(),c(ne,{modelValue:G.study_courses,"onUpdate:modelValue":r[18]||=e=>G.study_courses=e,"editor-options":W,"field-key":`venue-study`,key:`venue-study-${P.value}`},null,8,[`modelValue`]))]),_:1}),h(R,{label:`场馆详情`},{default:o(()=>[(n(),c(ne,{modelValue:G.detail_html,"onUpdate:modelValue":r[19]||=e=>G.detail_html=e,"editor-options":W,"field-key":`venue-detail`,"min-height":260,key:`venue-detail-${P.value}`},null,8,[`modelValue`]))]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`,`confirm-loading`]),h(J,{visible:F.value,"onUpdate:visible":r[21]||=e=>F.value=e,title:`媒体预览`,width:`72%`,footer:!1},{default:o(()=>[ge.value===`image`?(n(),p(`img`,{key:0,src:I.value,style:{display:`block`,"max-width":`100%`,"max-height":`72vh`,margin:`0 auto`},onError:$},null,40,ue)):(n(),p(`video`,{key:1,src:I.value,controls:``,autoplay:``,style:{display:`block`,width:`100%`,"max-height":`72vh`}},null,8,de))]),_:1},8,[`visible`]),h(J,{visible:w.value,"onUpdate:visible":r[23]||=e=>w.value=e,title:`地图选点(腾讯地图)`,width:`70%`,"body-style":_e,"on-before-ok":Ye},{default:o(()=>[h(v,{style:{"margin-bottom":`12px`,width:`100%`}},{default:o(()=>[h(i,{modelValue:E.value,"onUpdate:modelValue":r[22]||=e=>E.value=e,placeholder:`输入关键词搜索,如:苏州博物馆`,style:{width:`420px`}},null,8,[`modelValue`]),h(g,{type:`primary`,loading:T.value,onClick:qe},{default:o(()=>[...r[40]||=[s(`搜索`,-1)]]),_:1},8,[`loading`])]),_:1}),m(`div`,fe,[m(`div`,{ref_key:`mapContainerRef`,ref:he,style:{height:`520px`,flex:`1`,border:`1px solid #e5e6eb`}},null,512),m(`div`,pe,[r[41]||=m(`div`,{style:{"margin-bottom":`8px`,color:`#86909c`}},`搜索结果`,-1),h(Ce,{size:`small`},{default:o(()=>[(n(!0),p(l,null,_(D.value,(e,t)=>(n(),c(X,{key:t,onClick:t=>Je(e)},{default:o(()=>[h(Y,{ellipsis:{rows:1}},{default:o(()=>[s(d(e.title),1)]),_:2},1024),h(q,{type:`secondary`},{default:o(()=>[s(d(e.address),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1})])]),z.value?(n(),c(y,{key:0,type:`info`,style:{"margin-top":`12px`}},{default:o(()=>[s(` 已选坐标:`+d(z.value.lng)+`, `+d(z.value.lat),1),r[42]||=m(`br`,null,null,-1),s(` 地址:`+d(z.value.address||`-`),1)]),_:1})):ee(``,!0)]),_:1},8,[`visible`])],64)}}});export{x as default};