|
|
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,O as r,V as i,Y as a,_ as o,d as s,f as c,i as l,it as u,kt as d,l as f,nt as p,p as m,u as h,ut as g,v as _,y as v,z as y}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as b}from"./http-LCi9aT1G.js";import{u as x}from"./index-WHgPiCoq.js";import{t as S}from"./RichEditorField-BujbFuqI.js";import{t as C}from"./useModalDirtyGuard-Cg6oNoR1.js";import{n as w,t as ee}from"./adminMediaLimits-CWjmuo-b.js";import{t as te}from"./listTableRowIndex-PNK2HoFW.js";import{t as T}from"./mediaUrl-BANAk4U0.js";var ne=[`src`,`onClick`],re={key:1,style:{color:`#86909c`}},ie=[`src`],ae=[`src`],oe={class:`study-tour-modal-shell`},se={class:`study-tour-tab-pane`},ce={class:`study-tour-tags-field`},le={class:`study-tour-tags-input-row`},ue={class:`study-tour-tags-list`},de={key:0,style:{color:`#86909c`}},fe={class:`venue-add-row venue-add-row--system`},pe={class:`venue-add-row`},me={class:`venue-items-box`},he={key:0,class:`venue-item-addr`},ge={key:0,class:`cover-preview-wrap`},_e=[`src`],ve={class:`study-tour-tab-pane`},ye={class:`study-tour-tab-pane`},be={class:`route-group-head`},xe={class:`study-tour-tab-pane`},Se={class:`course-sort`},Ce={class:`study-tour-tab-pane`},we={class:`study-tour-tab-pane`},Te=1100,E=`72vh`,D=x(v({__name:`StudyTourList`,setup(v){let x=u(!1),D=u(!1),O=u(!1),k=u(!0),A=u(null),j=u([]),M=u([]),N=u([]),Ee=u([]),P=u(null),De=u(``),F=u(void 0),I=u(void 0),L=u(void 0),R=u(void 0),Oe=u(``),z=p({current:1,pageSize:10}),ke={height:E,overflow:`hidden`,padding:`12px 20px 16px`},B=u(0),V=u(`basic`),H=u(!1),Ae=u(`image`),je=u(``),U=u(``),W=u(void 0),G=u(``),K=u(``),q=u(``),Me=u(null),Ne=u(!1),J=u(!1),Y=p({name:``,tags:[],venue_items:[],org_name:``,seasons:[],suitable_count:``,grade_levels:[],duration:``,contact_person:``,contact_phones:``,cover_image:``,intro_html:``,route_plans:[],courses:[],fee_html:``,implementation_html:``,sort:0,is_on_shelf:!0}),Pe=f(()=>new Map(N.value.map(e=>[e.item_value,e.item_label]))),Fe=f(()=>k.value?J.value?`新增线路(已从申报表导入)`:`新增线路`:`编辑线路`);function Ie(){return JSON.stringify({name:Y.name,tags:Y.tags,venue_items:Y.venue_items,org_name:Y.org_name,seasons:Y.seasons,suitable_count:Y.suitable_count,grade_levels:Y.grade_levels,duration:Y.duration,contact_person:Y.contact_person,contact_phones:Y.contact_phones,cover_image:Y.cover_image,intro_html:Y.intro_html,route_plans:Y.route_plans,courses:Y.courses,fee_html:Y.fee_html,implementation_html:Y.implementation_html,sort:Y.sort,is_on_shelf:Y.is_on_shelf,tagInput:U.value,customVenueName:G.value,customVenueAddress:K.value})}function X(){q.value=Ie()}function Le(){return O.value&&Ie()!==q.value}let Re=C(Le,`研学线路有未保存改动,确认关闭吗?`);function ze(e){return Array.isArray(e.venue_items)&&e.venue_items.length?e.venue_items.map(e=>e.type===`custom`?{type:`custom`,name:e.name||``,address:e.address||``}:{type:`system`,venue_id:Number(e.venue_id)||0}).filter(e=>e.type===`system`?e.venue_id>0:!!e.name.trim()):(e.venue_ids||[]).map(e=>({type:`system`,venue_id:e}))}function Be(e,t){if(e.type===`system`){let n=M.value.find(t=>t.id===e.venue_id);return n?`${t+1}. ${n.name}`:`${t+1}. 场馆#${e.venue_id}`}return`${t+1}. ${e.name}(自定义)`}function Ve(e,t){let n=(e||[]).map(e=>t.get(e)||e).filter(Boolean);return n.length?n.join(`、`):`-`}function He(e,t){let n=String(e||``).trim();if(n)return T(n);let r=String(t||``).trim();return r?T(r):``}async function Z(e){let t=new FormData;t.append(`file`,e);let{data:n}=await b.post(`/upload`,t);return He(n?.url,n?.path)}function Q(){B.value+=1}function Ue(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}function We(){let t=this.quill,n=document.createElement(`input`);n.type=`file`,n.accept=`image/*`,n.onchange=async()=>{let r=n.files?.[0];if(!r)return;let i=w(r);if(i){e.warning(i);return}try{let n=await Z(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??t?.message??`图片上传失败`)}},n.click()}function Ge(){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 Z(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??t?.message??`视频上传失败`)}},n.click()}function Ke(e){return{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:We,video:Ge}}},placeholder:e}}let qe=Ke(`请输入线路简介`),Je=Ke(`请输入线路收费标准`),Ye=Ke(`请输入线路计划实施情况`);function Xe(){Y.name=``,Y.tags=[],Y.venue_items=[],Y.org_name=``,Y.seasons=[],Y.suitable_count=``,Y.grade_levels=[],Y.duration=``,Y.contact_person=``,Y.contact_phones=``,Y.cover_image=``,Y.intro_html=``,Y.route_plans=[],Y.courses=[],Y.fee_html=``,Y.implementation_html=``,Y.sort=0,Y.is_on_shelf=!0,U.value=``,W.value=void 0,G.value=``,K.value=``,V.value=`basic`}function Ze(e){Y.name=e.name,Y.tags=Array.isArray(e.tags)?[...e.tags]:[],Y.venue_items=ze(e),Y.org_name=e.org_name||``,Y.seasons=Array.isArray(e.seasons)?[...e.seasons]:[],Y.suitable_count=e.suitable_count||``,Y.grade_levels=Array.isArray(e.grade_levels)?[...e.grade_levels]:[],Y.duration=e.duration||``,Y.contact_person=e.contact_person||``,Y.contact_phones=e.contact_phones||``,Y.cover_image=e.cover_image||``,Y.intro_html=e.intro_html||``,Y.route_plans=Array.isArray(e.route_plans)?e.route_plans.map(e=>({date_label:e.date_label||``,items:(e.items||[]).map(e=>({time:e.time||``,activity:e.activity||``,location:e.location||``}))})):[],Y.courses=Array.isArray(e.courses)?e.courses.map((e,t)=>({sort:e.sort??t+1,name:e.name||``,content:e.content||``})):[],Y.fee_html=e.fee_html||``,Y.implementation_html=e.implementation_html||``,Y.sort=e.sort??0,Y.is_on_shelf=e.is_on_shelf!==!1}function Qe(){let t=W.value;if(!t){e.warning(`请选择系统场馆`);return}if(Y.venue_items.some(e=>e.type===`system`&&e.venue_id===t)){e.warning(`该场馆已添加`);return}Y.venue_items.push({type:`system`,venue_id:t}),W.value=void 0}function $e(){let t=G.value.trim();if(!t){e.warning(`请填写自定义场馆名称`);return}let n={type:`custom`,name:t},r=K.value.trim();r&&(n.address=r),Y.venue_items.push(n),G.value=``,K.value=``}function et(e){if(e<=0)return;let t=[...Y.venue_items];[t[e-1],t[e]]=[t[e],t[e-1]],Y.venue_items=t}function tt(e){if(e>=Y.venue_items.length-1)return;let t=[...Y.venue_items];[t[e+1],t[e]]=[t[e],t[e+1]],Y.venue_items=t}function nt(e){Y.venue_items.splice(e,1)}function rt(){Y.route_plans.push({date_label:``,items:[{time:``,activity:``,location:``}]})}function it(e){Y.route_plans.splice(e,1)}function at(e){let t=Y.route_plans[e];t&&Y.route_plans.splice(e+1,0,{date_label:t.date_label,items:t.items.map(e=>({time:e.time,activity:e.activity,location:e.location}))})}function ot(e){Y.route_plans[e]?.items.push({time:``,activity:``,location:``})}function st(e,t){Y.route_plans[e]?.items.splice(t,1)}function ct(e){if(e<=0)return;let t=[...Y.route_plans];[t[e-1],t[e]]=[t[e],t[e-1]],Y.route_plans=t}function lt(e){if(e>=Y.route_plans.length-1)return;let t=[...Y.route_plans];[t[e+1],t[e]]=[t[e],t[e+1]],Y.route_plans=t}function ut(e,t){let n=Y.route_plans[e]?.items;!n||t<=0||([n[t-1],n[t]]=[n[t],n[t-1]])}function dt(e,t){let n=Y.route_plans[e]?.items;!n||t>=n.length-1||([n[t+1],n[t]]=[n[t],n[t+1]])}function ft(e){return!e.time.trim()&&!e.activity.trim()&&!e.location.trim()}function pt(){for(let e=0;e<Y.route_plans.length;e++){let t=Y.route_plans[e];if(!t.date_label.trim())return`线路规划第 ${e+1} 个日期分组未填写日期/分组名称`;for(let n=0;n<t.items.length;n++)if(ft(t.items[n]))return`线路规划「${t.date_label.trim()||`第 ${e+1} 组`}」第 ${n+1} 行行程的时间、行程安排、地点均未填写`}return null}function mt(){for(let e=0;e<Y.courses.length;e++){let t=Y.courses[e];if(!t.name.trim()&&!t.content.trim())return`研学课程第 ${e+1} 项未填写课程名称与课程内容`}return null}function ht(){Y.courses.push({sort:Y.courses.length+1,name:``,content:``})}function gt(e){Y.courses.splice(e,1),Y.courses.forEach((e,t)=>{e.sort=t+1})}function _t(e){if(e<=0)return;let t=[...Y.courses];[t[e-1],t[e]]=[t[e],t[e-1]],t.forEach((e,t)=>{e.sort=t+1}),Y.courses=t}function vt(e){if(e>=Y.courses.length-1)return;let t=[...Y.courses];[t[e+1],t[e]]=[t[e],t[e+1]],t.forEach((e,t)=>{e.sort=t+1}),Y.courses=t}function yt(){let t=U.value.trim();if(!t){e.warning(`请输入标签内容`);return}if(Y.tags.includes(t)){e.warning(`标签已存在`);return}Y.tags=[...Y.tags,t],U.value=``}function bt(e){let t=[...Y.tags];t.splice(e,1),Y.tags=t}function xt(){return P.value?.role===`venue_admin`}async function St(){let[e,t]=await Promise.all([b.get(`/dict-items`,{params:{dict_type:`study_tour_season`,active_only:1}}),b.get(`/dict-items`,{params:{dict_type:`study_tour_grade_level`,active_only:1}})]);N.value=e.data||[],Ee.value=t.data||[]}async function Ct(){let{data:e}=await b.get(`/me`);P.value=e}async function $(t=!1){x.value=!0;try{let e={},n=De.value.trim();n&&(e.keyword=n),F.value!=null&&F.value>0&&(e.venue_id=F.value),(I.value===`0`||I.value===`1`)&&(e.is_on_shelf=I.value),L.value&&(e.season=L.value),R.value&&(e.grade_level=R.value);let r=Oe.value.trim();r&&(e.org_name=r);let[i,a]=await Promise.all([b.get(`/study-tours`,{params:e}),b.get(`/venues`)]);j.value=i.data,M.value=a.data,t||(z.current=1)}catch(t){e.error(t?.response?.data?.message??`加载研学线路失败`)}finally{x.value=!1}}function wt(e){z.current=e}async function Tt(t){try{await b.put(`/study-tours/${t.id}`,{is_on_shelf:!t.is_on_shelf}),e.success(`状态已切换`),await $(!0)}catch(t){e.error(t?.response?.data?.message??`操作失败`)}}function Et(){k.value=!0,A.value=null,J.value=!1,Xe(),Q(),X(),O.value=!0,r(()=>{X()})}function Dt(e){k.value=!1,A.value=e.id,J.value=!1,Xe(),Ze(e),Q(),X(),O.value=!0,r(()=>{X()})}function Ot(){Me.value?.click()}async function kt(t){let n=t.target,i=n.files?.[0];if(n.value=``,!i)return;let a=i.name.split(`.`).pop()?.toLowerCase();if(a!==`doc`&&a!==`docx`){e.warning(`请选择 .doc 或 .docx 申报表`);return}if(i.size>10*1024*1024){e.warning(`申报表文件不能超过 10MB`);return}Ne.value=!0;try{let t=new FormData;t.append(`file`,i);let{data:n}=await b.post(`/study-tours/parse-doc`,t,{timeout:12e4}),a=n?.parsed;if(!a||typeof a!=`object`){e.error(`申报表解析结果为空`);return}k.value=!0,A.value=null,J.value=!0,Xe(),Ze(a),Q(),V.value=`basic`,O.value=!0,X(),r(()=>{X()});let o=Array.isArray(n?.warnings)?n.warnings.filter(Boolean):[];o.length?e.warning(`已从申报表导入,请核对后保存。${o.join(`;`)}`):e.success(`已从申报表导入,请核对后保存`)}catch(t){e.error(t?.response?.data?.message??`申报表导入失败`)}finally{Ne.value=!1}}async function At(t){try{let n=Ue(t);if(!n)return e.warning(`未识别到上传文件`),!1;let r=w(n);if(r)return e.warning(r),!1;Y.cover_image=await Z(n),e.success(`封面上传成功`)}catch(t){e.error(t?.response?.data?.message??`封面上传失败`)}return!1}function jt(){Y.cover_image=``}function Mt(e,t){t&&(Ae.value=e,je.value=T(t),H.value=!0)}function Nt(){e.error(`图片地址无法访问,请检查后端 storage 访问配置`)}function Pt(){return{name:Y.name.trim(),tags:Y.tags.map(e=>e.trim()).filter(Boolean),venue_items:Y.venue_items.map(e=>{if(e.type===`system`)return{type:`system`,venue_id:e.venue_id};let t={type:`custom`,name:e.name.trim()};return e.address?.trim()&&(t.address=e.address.trim()),t}),org_name:Y.org_name.trim(),seasons:[...Y.seasons],suitable_count:Y.suitable_count.trim(),grade_levels:[...Y.grade_levels],duration:Y.duration.trim(),contact_person:Y.contact_person.trim(),contact_phones:Y.contact_phones.trim(),cover_image:Y.cover_image||``,intro_html:Y.intro_html||``,route_plans:Y.route_plans.map(e=>({date_label:e.date_label.trim(),items:e.items.map(e=>({time:e.time.trim(),activity:e.activity.trim(),location:e.location.trim()}))})),courses:Y.courses.map((e,t)=>({sort:e.sort||t+1,name:e.name.trim(),content:e.content.trim()})),fee_html:Y.fee_html||``,implementation_html:Y.implementation_html||``,sort:Y.sort??0,is_on_shelf:Y.is_on_shelf}}async function Ft(){if(!Y.name.trim())return e.warning(`请填写线路名称`),V.value=`basic`,!1;if(!Y.venue_items.length)return e.warning(`请至少添加一个场馆(系统或自定义)`),V.value=`basic`,!1;let t=pt();if(t)return e.warning(t),V.value=`route`,!1;let n=mt();if(n)return e.warning(n),V.value=`courses`,!1;D.value=!0;try{let t=Pt();return k.value?(await b.post(`/study-tours`,t),e.success(`新增线路成功`)):A.value&&(await b.put(`/study-tours/${A.value}`,t),e.success(`更新线路成功`)),O.value=!1,X(),await $(),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}finally{D.value=!1}}async function It(t){try{await b.delete(`/study-tours/${t.id}`),e.success(`删除成功`),await $()}catch(t){e.error(t?.response?.data?.message??`删除失败`)}}function Lt(e){return Array.isArray(e.venue_items)&&e.venue_items.length?e.venue_items.length:(e.venue_ids||[]).length}return n(async()=>{await Ct().catch(()=>void 0),await St().catch(()=>void 0),await $()}),(e,n)=>{let r=i(`a-input-search`),u=i(`a-input`),f=i(`a-option`),p=i(`a-select`),v=i(`a-button`),b=i(`a-space`),C=i(`a-table-column`),w=i(`a-tag`),E=i(`a-popconfirm`),k=i(`a-table`),A=i(`a-card`),P=i(`a-modal`),q=i(`a-form-item`),J=i(`a-input-number`),Ie=i(`a-switch`),X=i(`a-empty`),Le=i(`a-upload`),ze=i(`a-typography-text`),He=i(`a-form`),Z=i(`a-tab-pane`),Q=i(`a-tabs`);return t(),m(l,null,[_(A,{title:`研学线路管理 / 线路列表`},{default:a(()=>[_(b,{wrap:``,style:{"margin-bottom":`12px`}},{default:a(()=>[_(r,{modelValue:De.value,"onUpdate:modelValue":n[0]||=e=>De.value=e,placeholder:`关键词(线路名称 / 自定义场馆)`,style:{width:`260px`},"allow-clear":``,onSearch:$,onClear:$},null,8,[`modelValue`]),_(u,{modelValue:Oe.value,"onUpdate:modelValue":n[1]||=e=>Oe.value=e,placeholder:`组织单位`,style:{width:`160px`},"allow-clear":``,onPressEnter:$,onClear:$},null,8,[`modelValue`]),xt()?c(``,!0):(t(),s(p,{key:0,modelValue:F.value,"onUpdate:modelValue":n[2]||=e=>F.value=e,placeholder:`系统场馆`,"allow-clear":``,"allow-search":``,style:{width:`180px`},onChange:$},{default:a(()=>[(t(!0),m(l,null,y(M.value,e=>(t(),s(f,{key:e.id,value:e.id},{default:a(()=>[o(d(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])),_(p,{modelValue:L.value,"onUpdate:modelValue":n[3]||=e=>L.value=e,placeholder:`季节`,"allow-clear":``,style:{width:`120px`},onChange:$},{default:a(()=>[(t(!0),m(l,null,y(N.value,e=>(t(),s(f,{key:e.item_value,value:e.item_value},{default:a(()=>[o(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),_(p,{modelValue:R.value,"onUpdate:modelValue":n[4]||=e=>R.value=e,placeholder:`学段`,"allow-clear":``,style:{width:`120px`},onChange:$},{default:a(()=>[(t(!0),m(l,null,y(Ee.value,e=>(t(),s(f,{key:e.item_value,value:e.item_value},{default:a(()=>[o(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),_(p,{modelValue:I.value,"onUpdate:modelValue":n[5]||=e=>I.value=e,placeholder:`上架状态`,"allow-clear":``,style:{width:`120px`},onChange:$},{default:a(()=>[_(f,{value:`1`},{default:a(()=>[...n[27]||=[o(`上架`,-1)]]),_:1}),_(f,{value:`0`},{default:a(()=>[...n[28]||=[o(`下架`,-1)]]),_:1})]),_:1},8,[`modelValue`]),_(v,{type:`primary`,onClick:n[6]||=()=>$()},{default:a(()=>[...n[29]||=[o(`查询`,-1)]]),_:1}),h(`input`,{ref_key:`importDocInput`,ref:Me,type:`file`,accept:`.doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document`,style:{display:`none`},onChange:kt},null,544),_(v,{loading:Ne.value,onClick:Ot},{default:a(()=>[...n[30]||=[o(`从申报表导入`,-1)]]),_:1},8,[`loading`]),_(v,{type:`primary`,onClick:Et},{default:a(()=>[...n[31]||=[o(`新建线路`,-1)]]),_:1})]),_:1}),_(k,{class:`list-data-table study-tour-table`,scroll:{x:Te},data:j.value,loading:x.value,"row-key":`id`,pagination:{current:z.current,pageSize:z.pageSize,total:j.value.length,showTotal:!0},onPageChange:wt},{columns:a(()=>[_(C,{title:``,width:50},{cell:a(({rowIndex:e})=>[o(d(g(te)(e,z.current,z.pageSize)),1)]),_:1}),_(C,{title:`线路名称`,"data-index":`name`,width:150,ellipsis:!0,tooltip:!0}),_(C,{title:`组织单位`,width:140,ellipsis:!0,tooltip:!0},{cell:a(({record:e})=>[o(d(e.org_name||`-`),1)]),_:1}),_(C,{title:`封面`,width:72,align:`center`},{cell:a(({record:e})=>[g(T)(e.cover_image)?(t(),m(`img`,{key:0,src:g(T)(e.cover_image),alt:``,style:{width:`44px`,height:`44px`,"object-fit":`cover`,"border-radius":`4px`,cursor:`pointer`},onClick:t=>Mt(`image`,e.cover_image),onError:Nt},null,40,ne)):(t(),m(`span`,re,`-`))]),_:1}),_(C,{title:`季节`,width:100,ellipsis:!0},{cell:a(({record:e})=>[o(d(Ve(e.seasons,Pe.value)),1)]),_:1}),_(C,{title:`场馆数`,width:72},{cell:a(({record:e})=>[o(d(Lt(e)),1)]),_:1}),_(C,{title:`排序`,"data-index":`sort`,width:64}),_(C,{title:`上架`,width:80},{cell:a(({record:e})=>[_(w,{color:e.is_on_shelf?`green`:`gray`},{default:a(()=>[o(d(e.is_on_shelf?`上架`:`下架`),1)]),_:2},1032,[`color`])]),_:1}),_(C,{title:`操作`,width:200,fixed:`right`,align:`center`},{cell:a(({record:e})=>[_(b,{wrap:``,size:4},{default:a(()=>[_(v,{type:`text`,onClick:t=>Dt(e)},{default:a(()=>[...n[32]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),_(v,{type:`text`,status:`warning`,onClick:t=>Tt(e)},{default:a(()=>[o(d(e.is_on_shelf?`下架`:`上架`),1)]),_:2},1032,[`onClick`]),_(E,{content:`确定删除该线路?`,onOk:t=>It(e)},{default:a(()=>[_(v,{type:`text`,status:`danger`},{default:a(()=>[...n[33]||=[o(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`pagination`])]),_:1}),_(P,{visible:H.value,"onUpdate:visible":n[7]||=e=>H.value=e,footer:!1,width:`auto`},{default:a(()=>[Ae.value===`image`?(t(),m(`img`,{key:0,src:je.value,alt:`预览`,style:{"max-width":`100%`,"max-height":`75vh`,display:`block`,margin:`0 auto`}},null,8,ie)):(t(),m(`video`,{key:1,src:je.value,controls:``,style:{"max-width":`100%`,"max-height":`75vh`,display:`block`,margin:`0 auto`}},null,8,ae))]),_:1},8,[`visible`]),_(P,{visible:O.value,"onUpdate:visible":n[26]||=e=>O.value=e,title:Fe.value,width:`82%`,"body-style":ke,"confirm-loading":D.value,"on-before-ok":Ft,"on-before-cancel":g(Re),class:`study-tour-edit-modal`},{default:a(()=>[h(`div`,oe,[_(Q,{"active-key":V.value,"onUpdate:activeKey":n[25]||=e=>V.value=e,type:`rounded`,class:`study-tour-edit-tabs`},{default:a(()=>[_(Z,{key:`basic`,title:`基本情况`},{default:a(()=>[h(`div`,se,[_(He,{model:Y,layout:`vertical`,class:`admin-modal-form study-tour-basic-form`},{default:a(()=>[_(q,{label:`线路名称`,required:``},{default:a(()=>[_(u,{modelValue:Y.name,"onUpdate:modelValue":n[8]||=e=>Y.name=e},null,8,[`modelValue`])]),_:1}),_(q,{label:`组织单位名称`},{default:a(()=>[_(u,{modelValue:Y.org_name,"onUpdate:modelValue":n[9]||=e=>Y.org_name=e},null,8,[`modelValue`])]),_:1}),_(q,{label:`排序`},{default:a(()=>[_(J,{modelValue:Y.sort,"onUpdate:modelValue":n[10]||=e=>Y.sort=e,min:0},null,8,[`modelValue`])]),_:1}),_(q,{label:`上架状态`},{default:a(()=>[_(Ie,{modelValue:Y.is_on_shelf,"onUpdate:modelValue":n[11]||=e=>Y.is_on_shelf=e},null,8,[`modelValue`])]),_:1}),_(q,{label:`适宜人数`},{default:a(()=>[_(u,{modelValue:Y.suitable_count,"onUpdate:modelValue":n[12]||=e=>Y.suitable_count=e,placeholder:`如 30人、10-30人`},null,8,[`modelValue`])]),_:1}),_(q,{label:`对应季节(多选)`},{default:a(()=>[_(p,{modelValue:Y.seasons,"onUpdate:modelValue":n[13]||=e=>Y.seasons=e,multiple:``,"allow-clear":``,placeholder:`请选择`},{default:a(()=>[(t(!0),m(l,null,y(N.value,e=>(t(),s(f,{key:e.item_value,value:e.item_value},{default:a(()=>[o(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),_(q,{label:`适配学段(多选)`},{default:a(()=>[_(p,{modelValue:Y.grade_levels,"onUpdate:modelValue":n[14]||=e=>Y.grade_levels=e,multiple:``,"allow-clear":``,placeholder:`请选择`},{default:a(()=>[(t(!0),m(l,null,y(Ee.value,e=>(t(),s(f,{key:e.item_value,value:e.item_value},{default:a(()=>[o(d(e.item_label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),_(q,{label:`研学时长`},{default:a(()=>[_(u,{modelValue:Y.duration,"onUpdate:modelValue":n[15]||=e=>Y.duration=e,placeholder:`如 3天2晚、单日6小时`},null,8,[`modelValue`])]),_:1}),_(q,{label:`线路联络人`},{default:a(()=>[_(u,{modelValue:Y.contact_person,"onUpdate:modelValue":n[16]||=e=>Y.contact_person=e},null,8,[`modelValue`])]),_:1}),_(q,{label:`咨询电话(多个以顿号、分隔)`},{default:a(()=>[_(u,{modelValue:Y.contact_phones,"onUpdate:modelValue":n[17]||=e=>Y.contact_phones=e,placeholder:`15800000000、0512-12345678`},null,8,[`modelValue`])]),_:1}),_(q,{label:`标签`},{default:a(()=>[h(`div`,ce,[h(`div`,le,[_(u,{modelValue:U.value,"onUpdate:modelValue":n[18]||=e=>U.value=e,placeholder:`请输入标签`,class:`study-tour-tags-input`},null,8,[`modelValue`]),_(v,{type:`primary`,onClick:yt},{default:a(()=>[...n[34]||=[o(`添加`,-1)]]),_:1})]),h(`div`,ue,[(t(!0),m(l,null,y(Y.tags,(e,n)=>(t(),s(w,{key:`${e}-${n}`,closable:``,onClose:e=>bt(n)},{default:a(()=>[o(d(e),1)]),_:2},1032,[`onClose`]))),128)),Y.tags.length?c(``,!0):(t(),m(`span`,de,`暂无标签`))])])]),_:1}),_(q,{label:`场馆(系统 + 自定义,可排序)`,required:``,class:`admin-modal-form__full`},{default:a(()=>[_(b,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:a(()=>[h(`div`,fe,[_(p,{modelValue:W.value,"onUpdate:modelValue":n[19]||=e=>W.value=e,"allow-search":``,"allow-clear":``,placeholder:`选择系统场馆`,class:`venue-add-select`},{default:a(()=>[(t(!0),m(l,null,y(M.value,e=>(t(),s(f,{key:e.id,value:e.id},{default:a(()=>[o(d(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),_(v,{type:`outline`,class:`venue-add-btn`,onClick:Qe},{default:a(()=>[...n[35]||=[o(`添加系统场馆`,-1)]]),_:1})]),h(`div`,pe,[_(u,{modelValue:G.value,"onUpdate:modelValue":n[20]||=e=>G.value=e,placeholder:`自定义场馆名称`,class:`venue-add-input`},null,8,[`modelValue`]),_(u,{modelValue:K.value,"onUpdate:modelValue":n[21]||=e=>K.value=e,placeholder:`地址(可选,纯展示)`,class:`venue-add-input`},null,8,[`modelValue`]),_(v,{type:`outline`,onClick:$e},{default:a(()=>[...n[36]||=[o(`添加自定义场馆`,-1)]]),_:1})]),h(`div`,me,[(t(!0),m(l,null,y(Y.venue_items,(e,r)=>(t(),m(`div`,{key:`vi-${r}-${e.type}`,class:`venue-item-row`},[h(`span`,null,d(Be(e,r)),1),e.type===`custom`&&e.address?(t(),m(`span`,he,d(e.address),1)):c(``,!0),_(b,null,{default:a(()=>[_(v,{size:`mini`,disabled:r===0,onClick:e=>et(r)},{default:a(()=>[...n[37]||=[o(`上移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(v,{size:`mini`,disabled:r===Y.venue_items.length-1,onClick:e=>tt(r)},{default:a(()=>[...n[38]||=[o(`下移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(E,{content:`确定移除该场馆?`,onOk:e=>nt(r)},{default:a(()=>[_(v,{size:`mini`,status:`danger`},{default:a(()=>[...n[39]||=[o(`移除`,-1)]]),_:1})]),_:1},8,[`onOk`])]),_:2},1024)]))),128)),Y.venue_items.length?c(``,!0):(t(),s(X,{key:0,description:`未添加场馆`}))])]),_:1})]),_:1}),_(q,{label:`封面图`,class:`admin-modal-form__full`},{default:a(()=>[_(b,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:a(()=>[_(Le,{"auto-upload":!1,"show-file-list":!1,accept:`image/*`,"before-upload":At},{"upload-button":a(()=>[_(v,null,{default:a(()=>[...n[40]||=[o(`上传封面`,-1)]]),_:1})]),_:1}),_(ze,{type:`secondary`},{default:a(()=>[o(d(g(ee)),1)]),_:1}),Y.cover_image?(t(),m(`div`,ge,[h(`img`,{src:g(T)(Y.cover_image),alt:`封面`,class:`study-tour-cover-thumb`,onError:Nt},null,40,_e),_(v,{size:`mini`,status:`danger`,onClick:jt},{default:a(()=>[...n[41]||=[o(`删除封面`,-1)]]),_:1})])):c(``,!0)]),_:1})]),_:1})]),_:1},8,[`model`])])]),_:1}),_(Z,{key:`intro`,title:`线路简介`},{default:a(()=>[h(`div`,ve,[_(S,{modelValue:Y.intro_html,"onUpdate:modelValue":n[22]||=e=>Y.intro_html=e,"field-key":`study-intro-${B.value}`,"editor-options":g(qe),"min-height":420},null,8,[`modelValue`,`field-key`,`editor-options`])])]),_:1}),_(Z,{key:`route`,title:`线路规划`},{default:a(()=>[h(`div`,ye,[_(b,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:a(()=>[_(v,{type:`primary`,onClick:rt},{default:a(()=>[...n[42]||=[o(`新增日期分组`,-1)]]),_:1}),Y.route_plans.length?c(``,!0):(t(),s(X,{key:0,description:`暂无线路规划,可点击上方按钮添加`})),(t(!0),m(l,null,y(Y.route_plans,(e,r)=>(t(),m(`div`,{key:`rp-${r}`,class:`route-group-card`},[h(`div`,be,[_(u,{modelValue:e.date_label,"onUpdate:modelValue":t=>e.date_label=t,placeholder:`日期/分组,如 线路一、第一天、上午`,class:`route-date-input`},null,8,[`modelValue`,`onUpdate:modelValue`]),_(b,{wrap:``},{default:a(()=>[_(v,{size:`small`,disabled:r===0,onClick:e=>ct(r)},{default:a(()=>[...n[43]||=[o(`上移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(v,{size:`small`,disabled:r===Y.route_plans.length-1,onClick:e=>lt(r)},{default:a(()=>[...n[44]||=[o(`下移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(E,{content:`确定删除该日期分组?`,onOk:e=>it(r)},{default:a(()=>[_(v,{size:`small`,status:`danger`},{default:a(()=>[...n[45]||=[o(`删除分组`,-1)]]),_:1})]),_:1},8,[`onOk`]),_(v,{size:`small`,type:`outline`,onClick:e=>at(r)},{default:a(()=>[...n[46]||=[o(`复制分组`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_(k,{data:e.items,pagination:!1,size:`small`,"row-key":(e,t)=>`rp-${r}-${t}`},{columns:a(()=>[_(C,{title:`时间`,width:140},{cell:a(({record:e})=>[_(u,{modelValue:e.time,"onUpdate:modelValue":t=>e.time=t,placeholder:`9:00-10:00`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),_(C,{title:`行程安排`},{cell:a(({record:e})=>[_(u,{modelValue:e.activity,"onUpdate:modelValue":t=>e.activity=t,placeholder:`行程安排`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),_(C,{title:`地点`,width:180},{cell:a(({record:e})=>[_(u,{modelValue:e.location,"onUpdate:modelValue":t=>e.location=t,placeholder:`地点`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),_(C,{title:`操作`,width:168,align:`center`},{cell:a(({rowIndex:t})=>[_(b,{size:4},{default:a(()=>[_(v,{type:`text`,size:`mini`,disabled:t===0,onClick:e=>ut(r,t)},{default:a(()=>[...n[47]||=[o(`上移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(v,{type:`text`,size:`mini`,disabled:t===e.items.length-1,onClick:e=>dt(r,t)},{default:a(()=>[...n[48]||=[o(`下移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(E,{content:`确定删除该行程?`,onOk:e=>st(r,t)},{default:a(()=>[_(v,{type:`text`,status:`danger`,size:`mini`},{default:a(()=>[...n[49]||=[o(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])]),_:2},1024)]),_:2},1024)]),_:2},1032,[`data`,`row-key`]),_(v,{size:`small`,style:{"margin-top":`8px`},onClick:e=>ot(r)},{default:a(()=>[...n[50]||=[o(`添加行程行`,-1)]]),_:1},8,[`onClick`])]))),128))]),_:1})])]),_:1}),_(Z,{key:`courses`,title:`研学课程`},{default:a(()=>[h(`div`,xe,[_(b,{direction:`vertical`,fill:``,style:{width:`100%`}},{default:a(()=>[_(v,{type:`primary`,onClick:ht},{default:a(()=>[...n[51]||=[o(`新增课程`,-1)]]),_:1}),Y.courses.length?c(``,!0):(t(),s(X,{key:0,description:`暂无研学课程`})),(t(!0),m(l,null,y(Y.courses,(e,r)=>(t(),m(`div`,{key:`course-${r}`,class:`course-row`},[h(`span`,Se,d(r+1),1),_(u,{modelValue:e.name,"onUpdate:modelValue":t=>e.name=t,placeholder:`课程名称`,class:`course-name-input`},null,8,[`modelValue`,`onUpdate:modelValue`]),_(u,{modelValue:e.content,"onUpdate:modelValue":t=>e.content=t,placeholder:`课程内容`,class:`course-content-input`},null,8,[`modelValue`,`onUpdate:modelValue`]),_(b,null,{default:a(()=>[_(v,{size:`mini`,disabled:r===0,onClick:e=>_t(r)},{default:a(()=>[...n[52]||=[o(`上移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(v,{size:`mini`,disabled:r===Y.courses.length-1,onClick:e=>vt(r)},{default:a(()=>[...n[53]||=[o(`下移`,-1)]]),_:1},8,[`disabled`,`onClick`]),_(E,{content:`确定删除该课程?`,onOk:e=>gt(r)},{default:a(()=>[_(v,{size:`mini`,status:`danger`},{default:a(()=>[...n[54]||=[o(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])]),_:2},1024)]))),128))]),_:1})])]),_:1}),_(Z,{key:`fee`,title:`收费标准`},{default:a(()=>[h(`div`,Ce,[_(S,{modelValue:Y.fee_html,"onUpdate:modelValue":n[23]||=e=>Y.fee_html=e,"field-key":`study-fee-${B.value}`,"editor-options":g(Je),"min-height":420},null,8,[`modelValue`,`field-key`,`editor-options`])])]),_:1}),_(Z,{key:`impl`,title:`计划实施`},{default:a(()=>[h(`div`,we,[_(S,{modelValue:Y.implementation_html,"onUpdate:modelValue":n[24]||=e=>Y.implementation_html=e,"field-key":`study-impl-${B.value}`,"editor-options":g(Ye),"min-height":420},null,8,[`modelValue`,`field-key`,`editor-options`])])]),_:1})]),_:1},8,[`active-key`])])]),_:1},8,[`visible`,`title`,`confirm-loading`,`on-before-cancel`])],64)}}}),[[`__scopeId`,`data-v-2455bdc9`]]);export{D as default}; |