import{x as e,y as a,g as l,w as t,U as o,V as n,aC as i,aS as u,h as r,aT as d,aU as s,l as c,al as m,am as p,aV as _,aW as f,u as v,ao as y,a9 as h,j as g,k as w,T as k,a1 as b,aX as C,v as x,a as V,D as z}from"./element-plus.DhcJM-BD.js";import{_ as R}from"./index.XAb1m6gg.js";import{o as U,B as $,aD as B,t as T,H as j,K as q,I as F,J as D,aQ as K,V as L,v as M,Y as A,a9 as S,u as E,Z as I,M as O,X as P,R as W,am as X,r as G,ac as H,c as J}from"./.pnpm.DGfAnZKL.js";import{l as Q}from"./index.Ch_NPM5t.js";import{_ as Y}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./codemirror.CR5zRbyM.js";const Z="/monitor/resource",N={ /** * 获取目录列表 * @param query 查询参数 */ listResource:e=>Q({url:`${Z}/list`,method:"get",params:e}), /** * 上传文件 * @param formData 文件数据 */ uploadFile:e=>Q({url:`${Z}/upload`,method:"post",data:e,headers:{"Content-Type":"multipart/form-data"}}), /** * 下载文件 * @param path 文件路径 */ downloadFile:e=>Q({url:`${Z}/download`,method:"get",params:{path:e},responseType:"blob"}), /** * 删除文件或目录 * @param body 文件路径数组 */ deleteResource:e=>Q({url:`${Z}/delete`,method:"delete",data:e}), /** * 移动文件或目录 * @param body 移动参数 */ moveResource:e=>Q({url:`${Z}/move`,method:"post",data:e}), /** * 复制文件或目录 * @param body 复制参数 */ copyResource:e=>Q({url:`${Z}/copy`,method:"post",data:e}), /** * 重命名文件或目录 * @param body 重命名参数 */ renameResource:e=>Q({url:`${Z}/rename`,method:"post",data:e}), /** * 创建目录 * @param body 创建目录参数 */ createDirectory:e=>Q({url:`${Z}/create-dir`,method:"post",data:e}), /** * 导出资源列表 * @param body 导出条件 */ exportResource:e=>Q({url:`${Z}/export`,method:"post",data:e,responseType:"blob"})},ee={class:"app-container"},ae={class:"search-container"},le={class:"card-header"},te={class:"breadcrumb-container"},oe={class:"data-table__toolbar"},ne={class:"data-table__toolbar--left"},ie={class:"data-table__toolbar--right"},ue={class:"file-name"},re=["onClick"],de={key:0},se={key:1,class:"grid-view"},ce=["onClick"],me={class:"item-icon"},pe={class:"item-name"},_e={key:0,class:"item-size"},fe=Y(U({name:"ResourceMonitor",inheritAttrs:!1,__name:"index",setup(U){const Q=G([]),Y=G(!1),Z=G([]),fe=G([{name:"资源根目录",path:"/"}]),ve=G(!1),ye=G("list"),he=G(0),ge=G(!1),we=G(),ke=G("/"),be=H({page_no:1,page_size:10}),Ce=H({name:void 0,page_no:1,page_size:10}),xe=G(!1),Ve=G(!1),ze=G(!1),Re=G(!1),Ue=G(),$e=G([]),Be=H({dir_name:""}),Te=H({new_name:"",old_path:""}),je=J(()=>{const e={include_hidden:ve.value,page_no:be.page_no,page_size:be.page_size};return ke.value&&"/"!==ke.value&&(e.path=ke.value),Ce.name&&(e.name=Ce.name),e});async function qe(){var e;Y.value=!0;try{const a=null==(e=(await N.listResource(je.value)).data)?void 0:e.data;a&&Array.isArray(a.items)?(Q.value=a.items,he.value=a.total,void 0!==a.page_no&&(be.page_no=a.page_no),void 0!==a.page_size&&(be.page_size=a.page_size)):(Q.value=[],he.value=0)}catch(a){Q.value=[],he.value=0}finally{Y.value=!1}}function Fe(){if("/"===ke.value)return void(fe.value=[{name:"资源根目录",path:"/"}]);const e=ke.value.split("/").filter(e=>""!==e);fe.value=[{name:"资源根目录",path:"/"},...e.map((a,l)=>({name:a,path:e.slice(0,l+1).join("/")}))]}function De(e){let a=e.file_url;a&&!a.startsWith("http")&&(a=`${window.location.origin}${a}`),window.open(a,"_blank")}function Ke(e){Z.value=e}function Le(){xe.value=!0,$e.value=[]}function Me(e,a){$e.value=a}async function Ae(){if(0!==$e.value.length)try{Re.value=!0;const e=new FormData;$e.value.forEach(a=>{e.append("file",a.raw)});const a="/"===ke.value?"":ke.value;e.append("target_path",a),await N.uploadFile(e),xe.value=!1,qe()}catch(e){}finally{Re.value=!1}else V.warning("请选择要上传的文件")}function Se(){xe.value=!1,$e.value=[]}function Ee(){Be.dir_name="",Ve.value=!0}async function Ie(){if(Be.dir_name.trim())try{const e="/"===ke.value?"":ke.value;await N.createDirectory({parent_path:e,dir_name:Be.dir_name.trim()}),Ve.value=!1,qe()}catch(e){}else V.warning("请输入文件夹名称")}async function Oe(){await qe()}async function Pe(){Ce.page_no=1,await qe()}async function We(){we.value.resetFields(),Ce.page_no=1,ge.value=!1,await qe()}function Xe(){qe()}async function Ge(){if(Te.new_name.trim())try{await N.renameResource({old_path:Te.old_path,new_name:Te.new_name.trim()}),ze.value=!1,qe()}catch(e){}else V.warning("请输入新名称")}function He(e){be.page_no=e.page,be.page_size=e.limit,qe()}async function Je(){if(0!==Z.value.length)try{await z.confirm(`确定要删除选中的 ${Z.value.length} 个文件吗?`,"确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});const e=Z.value.map(e=>e.file_url);await N.deleteResource(e),qe()}catch(e){}else V.warning("请选择要删除的文件")}function Qe(e){if(!e||null===e)return"-";const a=["B","KB","MB","GB","TB"];let l=0,t=e;for(;t>=1024&&l{qe()}),(V,U)=>{const $=a,G=e,H=l,J=t,ge=c,je=w,Ye=g,Ze=n,Ne=o,ea=i,aa=r,la=u,ta=v,oa=p,na=m,ia=R,ua=k,ra=b,da=x,sa=B("hasPerm"),ca=y;return T(),j("div",ee,[q("div",ae,[F(J,{ref_key:"queryFormRef",ref:we,model:Ce,inline:!0,"label-suffix":":",onSubmit:S(Pe,["prevent"])},{default:D(()=>[F(G,{prop:"name",label:"关键词"},{default:D(()=>[F($,{modelValue:Ce.name,"onUpdate:modelValue":U[0]||(U[0]=e=>Ce.name=e),placeholder:"请输入文件名或目录名",clearable:"",style:{width:"200px"},onKeyup:K(Pe,["enter"])},null,8,["modelValue"])]),_:1}),F(G,{class:"search-buttons"},{default:D(()=>[L((T(),M(H,{type:"primary",icon:"search","native-type":"submit"},{default:D(()=>[...U[15]||(U[15]=[A(" 查询 ",-1)])]),_:1})),[[sa,["module_monitor:resource:query"]]]),L((T(),M(H,{icon:"refresh",onClick:We},{default:D(()=>[...U[16]||(U[16]=[A(" 重置 ",-1)])]),_:1})),[[sa,["module_monitor:resource:query"]]])]),_:1})]),_:1},8,["model"])]),F(ua,{class:"data-table"},{header:D(()=>[q("div",le,[q("span",null,[F(ge,{content:"资源文件管理系统: 点击路径可以快速返回上级目录"},{default:D(()=>[F(E(h),{class:"w-4 h-4 mx-1"})]),_:1}),U[17]||(U[17]=A(" 文件列表(当前路径): ",-1))]),q("div",te,[U[18]||(U[18]=q("span",{class:"breadcrumb-label"},null,-1)),F(Ye,{separator:"/"},{default:D(()=>[(T(!0),j(W,null,X(fe.value,(e,a)=>(T(),M(je,{key:a,class:O({"is-link":afunction(e){ke.value=e.path,Fe(),qe()}(e)},{default:D(()=>[A(I(e.name),1)]),_:2},1032,["class","onClick"]))),128))]),_:1})])])]),footer:D(()=>[F(ia,{total:he.value,"onUpdate:total":U[4]||(U[4]=e=>he.value=e),page:be.page_no,"onUpdate:page":U[5]||(U[5]=e=>be.page_no=e),limit:be.page_size,"onUpdate:limit":U[6]||(U[6]=e=>be.page_size=e),onPagination:He},null,8,["total","page","limit"])]),default:D(()=>[q("div",oe,[q("div",ne,[F(Ne,{gutter:10},{default:D(()=>[F(Ze,{span:1.5},{default:D(()=>[L((T(),M(H,{type:"success",icon:"plus",onClick:Le},{default:D(()=>[...U[19]||(U[19]=[A(" 上传文件 ",-1)])]),_:1})),[[sa,["module_monitor:resource:upload"]]])]),_:1}),F(Ze,{span:1.5},{default:D(()=>[L((T(),M(H,{type:"primary",icon:"folder-add",onClick:Ee},{default:D(()=>[...U[20]||(U[20]=[A(" 新建文件夹 ",-1)])]),_:1})),[[sa,["module_monitor:resource:create_dir"]]])]),_:1}),F(Ze,{span:1.5},{default:D(()=>[L((T(),M(H,{type:"danger",icon:"delete",disabled:0===Z.value.length,onClick:Je},{default:D(()=>[...U[21]||(U[21]=[A(" 批量删除 ",-1)])]),_:1},8,["disabled"])),[[sa,["module_monitor:resource:delete"]]])]),_:1})]),_:1})]),q("div",ie,[F(Ne,{gutter:10},{default:D(()=>[F(Ze,{span:1.5},{default:D(()=>[L((T(),M(ea,{modelValue:ve.value,"onUpdate:modelValue":U[1]||(U[1]=e=>ve.value=e),onChange:Xe},{default:D(()=>[...U[22]||(U[22]=[A(" 显示隐藏文件 ",-1)])]),_:1},8,["modelValue"])),[[sa,["module_monitor:resource:query"]]])]),_:1}),F(Ze,{span:1.5},{default:D(()=>[F(la,null,{default:D(()=>[L((T(),M(H,{type:"list"===ye.value?"primary":"",onClick:U[2]||(U[2]=e=>ye.value="list")},{default:D(()=>[F(aa,null,{default:D(()=>[F(E(d))]),_:1})]),_:1},8,["type"])),[[sa,["module_monitor:resource:query"]]]),L((T(),M(H,{type:"grid"===ye.value?"primary":"",onClick:U[3]||(U[3]=e=>ye.value="grid")},{default:D(()=>[F(aa,null,{default:D(()=>[F(E(s))]),_:1})]),_:1},8,["type"])),[[sa,["module_monitor:resource:query"]]])]),_:1})]),_:1}),F(Ze,{span:1.5},{default:D(()=>[F(ge,{content:"刷新"},{default:D(()=>[L(F(H,{type:"primary",icon:"refresh",circle:"",onClick:Oe},null,512),[[sa,["module_monitor:resource:query"]]])]),_:1})]),_:1})]),_:1})])]),"list"===ye.value?L((T(),M(na,{key:0,ref:"dataTableRef",data:Q.value,"row-key":"file_url",class:"data-table__content",height:"500","max-height":"500",border:"",stripe:"",onSelectionChange:Ke},{empty:D(()=>[F(ta,{"image-size":80,description:"暂无数据"})]),default:D(()=>[F(oa,{type:"selection","min-width":"40",align:"center"}),F(oa,{type:"index",fixed:"",label:"序号","min-width":"50"},{default:D(e=>[A(I((Ce.page_no-1)*Ce.page_size+e.$index+1),1)]),_:1}),F(oa,{label:"名称",prop:"name","min-width":"200"},{default:D(({row:e})=>[q("div",ue,[F(aa,{class:"file-icon"},{default:D(()=>[e.is_dir?(T(),M(E(_),{key:0})):(T(),M(E(f),{key:1}))]),_:2},1024),q("span",{class:O({"file-name-clickable":!0}),onClick:a=>function(e){e.is_dir?("/"===ke.value?ke.value=e.name:ke.value=ke.value+"/"+e.name,Fe(),qe()):De(e)}(e)},I(e.name),9,re)])]),_:1}),F(oa,{label:"大小",prop:"size","min-width":"120",align:"center"},{default:D(({row:e})=>[e.is_dir?P("",!0):(T(),j("span",de,I(Qe(e.size)),1))]),_:1}),F(oa,{label:"修改时间",prop:"modified_time","min-width":"180",sortable:""}),F(oa,{fixed:"right",label:"操作",align:"center","min-width":"200",class:"search-buttons"},{default:D(({row:e})=>[e.is_dir?P("",!0):L((T(),M(H,{key:0,type:"success",size:"small",link:"",icon:"download",onClick:a=>async function(e){try{const a=(await N.downloadFile(e.file_url)).data,l=window.URL.createObjectURL(a),t=document.createElement("a");t.href=l,t.download=e.name,document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(l)}catch(a){}}(e)},{default:D(()=>[...U[23]||(U[23]=[A(" 下载 ",-1)])]),_:1},8,["onClick"])),[[sa,["module_monitor:resource:download"]]]),L((T(),M(H,{type:"primary",size:"small",link:"",icon:"edit",onClick:a=>{return l=e,Te.old_path=l.file_url,Te.new_name=l.name,void(ze.value=!0);var l}},{default:D(()=>[...U[24]||(U[24]=[A(" 重命名 ",-1)])]),_:1},8,["onClick"])),[[sa,["module_monitor:resource:rename"]]]),L((T(),M(H,{type:"danger",size:"small",link:"",icon:"delete",onClick:a=>async function(e){try{await z.confirm(`确定要删除 ${e.name} 吗?`,"确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),await N.deleteResource([e.file_url]),qe()}catch(a){}}(e)},{default:D(()=>[...U[25]||(U[25]=[A(" 删除 ",-1)])]),_:1},8,["onClick"])),[[sa,["module_monitor:resource:delete"]]])]),_:1})]),_:1},8,["data"])),[[ca,Y.value]]):(T(),j("div",se,[(T(!0),j(W,null,X(Q.value,e=>(T(),j("div",{key:e.file_url,class:"grid-item",onClick:a=>function(e){e.is_dir?("/"===ke.value?ke.value=e.name:ke.value=ke.value+"/"+e.name,Fe(),qe()):De(e)}(e)},[q("div",me,[e.is_dir?(T(),M(aa,{key:0,size:"48"},{default:D(()=>[F(E(_))]),_:1})):(T(),M(aa,{key:1,size:"48"},{default:D(()=>[F(E(f))]),_:1}))]),q("div",pe,I(e.name),1),e.is_dir?P("",!0):(T(),j("div",_e,I(Qe(e.size)),1))],8,ce))),128))]))]),_:1}),F(da,{modelValue:xe.value,"onUpdate:modelValue":U[8]||(U[8]=e=>xe.value=e),title:"上传文件",width:"500px","before-close":Se},{footer:D(()=>[F(H,{onClick:U[7]||(U[7]=e=>xe.value=!1)},{default:D(()=>[...U[28]||(U[28]=[A("取消",-1)])]),_:1}),L((T(),M(H,{type:"primary",loading:Re.value,onClick:Ae},{default:D(()=>[...U[29]||(U[29]=[A(" 确定上传 ",-1)])]),_:1},8,["loading"])),[[sa,["module_monitor:resource:upload"]]])]),default:D(()=>[F(ra,{ref_key:"uploadRef",ref:Ue,"auto-upload":!1,multiple:!0,"file-list":$e.value,drag:"",onChange:Me},{tip:D(()=>[...U[26]||(U[26]=[q("div",{class:"el-upload__tip",style:{color:"red"}}," 不支持多文件上传,单个文件不超过100MB,多文件上传,取最后一个文件上传 ",-1)])]),default:D(()=>[F(aa,{class:"el-icon--upload"},{default:D(()=>[F(E(C))]),_:1}),U[27]||(U[27]=q("div",{class:"el-upload__text"},[A(" 将文件拖到此处,或 "),q("em",null,"点击上传")],-1))]),_:1},8,["file-list"])]),_:1},8,["modelValue"]),F(da,{modelValue:Ve.value,"onUpdate:modelValue":U[11]||(U[11]=e=>Ve.value=e),title:"新建文件夹",width:"400px"},{footer:D(()=>[F(H,{onClick:U[10]||(U[10]=e=>Ve.value=!1)},{default:D(()=>[...U[30]||(U[30]=[A("取消",-1)])]),_:1}),L((T(),M(H,{type:"primary",onClick:Ie},{default:D(()=>[...U[31]||(U[31]=[A(" 确定 ",-1)])]),_:1})),[[sa,["module_monitor:resource:create_dir"]]])]),default:D(()=>[F(J,{model:Be,"label-width":"80px"},{default:D(()=>[F(G,{label:"文件夹名",required:""},{default:D(()=>[F($,{modelValue:Be.dir_name,"onUpdate:modelValue":U[9]||(U[9]=e=>Be.dir_name=e),placeholder:"请输入文件夹名称",onKeyup:K(Ie,["enter"])},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),F(da,{modelValue:ze.value,"onUpdate:modelValue":U[14]||(U[14]=e=>ze.value=e),title:"重命名",width:"400px"},{footer:D(()=>[F(H,{onClick:U[13]||(U[13]=e=>ze.value=!1)},{default:D(()=>[...U[32]||(U[32]=[A("取消",-1)])]),_:1}),L((T(),M(H,{type:"primary",onClick:Ge},{default:D(()=>[...U[33]||(U[33]=[A(" 确定 ",-1)])]),_:1})),[[sa,["module_monitor:resource:rename"]]])]),default:D(()=>[F(J,{model:Te,"label-width":"80px"},{default:D(()=>[F(G,{label:"新名称",required:""},{default:D(()=>[F($,{modelValue:Te.new_name,"onUpdate:modelValue":U[12]||(U[12]=e=>Te.new_name=e),placeholder:"请输入新名称",onKeyup:K(Ge,["enter"])},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-b71294f1"]]);export{fe as default};