Files
chuanggao-website/client/dist/assets/MediaLibrary-BFht3tG1.js

2 lines
6.4 KiB
JavaScript
Raw Normal View History

2026-05-12 16:53:18 +08:00
import{d as R,o as Z,b as d,e as t,m as i,z as m,p,U as ee,y as M,W as L,k as y,s as le,F as S,h as $,t as u,Y as ae,r,X as I,J as _,C as f,T as te,g as n,j as w,i as se,H as ne,_ as ie}from"./index-eVF4AHSu.js";import{f as oe,d as D,u as ue,a as re}from"./upload-C79x1DTb.js";import{r as b}from"./media-BgGGvhcR.js";import"./pagination-BgSlm-mj.js";const de={class:"media-library"},ce={class:"page-header"},ve={class:"header-actions"},pe={class:"filter-bar"},fe={class:"media-content"},me={class:"media-grid"},_e=["onClick"],ge={class:"media-thumb"},he={key:1,class:"thumb-placeholder"},ye=["onClick"],we={class:"media-info"},be=["title"],ke={class:"media-size"},Ce={key:0,class:"preview-panel surface"},xe={class:"preview-header"},ze={class:"preview-image"},Ue={class:"preview-meta"},Me={class:"meta-row"},Se={class:"meta-value"},$e={class:"meta-row"},Ve={class:"meta-value"},Te={key:0,class:"meta-row"},Be={class:"meta-value"},Fe={class:"meta-row"},Ne={class:"meta-value"},Pe={class:"meta-row"},Le={class:"meta-url"},Ie={class:"meta-value url-text"},De={class:"preview-actions"},Ee={class:"pagination-bar"},Oe=R({__name:"MediaLibrary",setup(je){const h=r(!1),k=r([]),V=r(0),C=r(1),x=r(24),z=r(""),g=r(""),o=r(new Set),s=r(null),U=r(!1),E=[{label:"全部类型",value:""},{label:"图片",value:"image"},{label:"视频",value:"video"},{label:"文档",value:"document"}],O=[{label:"全部位置",value:""},{label:"轮播图",value:"carousel"},{label:"产品",value:"product"},{label:"案例",value:"case"},{label:"新闻",value:"news"},{label:"页面",value:"page"},{label:"公司",value:"company"}];async function v(){h.value=!0;try{const l=await oe({fileType:z.value||void 0,usedIn:g.value||void 0,page:C.value,size:x.value});k.value=l.records,V.value=l.total}catch(l){console.warn("fetchMediaList failed:",l)}finally{h.value=!1}}Z(v);function j(l){o.value.has(l)?o.value.delete(l):o.value.add(l)}function T(l){return o.value.has(l)}async function A(){const l=document.createElement("input");l.type="file",l.multiple=!0,l.accept="image/*,video/*,.pdf",l.onchange=async()=>{const e=l.files;if(!(!e||e.length===0)){U.value=!0;try{e.length===1?await ue(e[0],g.value||"other"):await re(Array.from(e),g.value||"other"),_.success(`成功上传 ${e.length} 个文件`),await v()}catch(c){_.error(c instanceof Error?c.message:"上传失败")}finally{U.value=!1}}},l.click()}async function H(){if(o.value.size===0){_.warning("请先选择文件");return}try{await I.confirm(`确定删除选中的 ${o.value.size} 个文件?`,"确认删除",{type:"warning"});for(const l of o.value)await D(l);_.success("删除成功"),o.value.clear(),await v()}catch{}}async function J(l){var e;try{await I.confirm(`确定删除「${l.fileName}」?`,"确认删除",{type:"warning"}),await D(l.id),_.success("删除成功"),((e=s.value)==null?void 0:e.id)===l.id&&(s.value=null),await v()}catch{}}function K(l){if(!l)return;const e=b(l)||l;navigator.clipboard.writeText(e).then(()=>{_.success("链接已复制")})}function B(l){return l?l<1024?`${l} B`:l<1024*1024?`${(l/1024).toFixed(1)} KB`:`${(l/(1024*1024)).toFixed(1)} MB`:"-"}function W(l){s.value=l}return(l,e)=>{const c=f("el-button"),F=f("el-option"),N=f("el-select"),P=f("el-image"),X=f("el-checkbox"),Y=f("el-empty"),q=f("el-pagination"),G=te("loading");return n(),d("div",de,[t("div",ce,[e[8]||(e[8]=t("h2",{class:"page-title"},"媒体库",-1)),t("div",ve,[i(c,{type:"primary",icon:p(ee),loading:U.value,onClick:A},{default:m(()=>[...e[7]||(e[7]=[w(" 上传图片 ",-1)])]),_:1},8,["icon","loading"]),o.value.size>0?(n(),M(c,{key:0,type:"danger",icon:p(L),onClick:H},{default:m(()=>[w(" 批量删除 ("+u(o.value.size)+") ",1)]),_:1},8,["icon"])):y("",!0)])]),t("div",pe,[i(N,{modelValue:z.value,"onUpdate:modelValue":e[0]||(e[0]=a=>z.value=a),onChange:v,style:{width:"140px"}},{default:m(()=>[(n(),d(S,null,$(E,a=>i(F,{key:a.value,label:a.label,value:a.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),i(N,{modelValue:g.value,"onUpdate:modelValue":e[1]||(e[1]=a=>g.value=a),onChange:v,style:{width:"140px"}},{default:m(()=>[(n(),d(S,null,