import{aA as Qe,r as m,c as Xe,m as Je,Y as Ze,al as y,z as f,A as h,B as s,R as r,J as d,u as a,P as n,O as g,a5 as eo,Q as ue,M as b,a4 as oo,D as H,I as ve,K as to,S as lo,T as so,W as Q}from"./vue-vendor-164775a6.js";import{_ as ao,f as ro,u as no,a as io,L as co,g as uo}from"./index-9349eeb8.js";import{_ as pe}from"./avatar-default-20a1956c.js";import{E as w,a as X,u as vo,o as po,f as _o,v as J,q as mo,r as fo,t as _e,j as ho,x as go,y as yo,z as wo,e as ko,A as bo,B as To}from"./element-plus-83a396df.js";import{g as So,d as me,a as Co,r as xo,b as Do}from"./userWorks-2a8111e1.js";import"./utils-edfcd65b.js";const Uo={class:"works-page"},Vo={class:"sidebar"},zo={class:"nav-menu"},Eo={class:"nav-item active"},Io={class:"divider"},Bo={class:"tools-menu"},Oo={class:"main-content"},Lo={class:"top-header"},Ro={class:"header-right"},Fo={class:"points"},Ao={class:"points-icon"},Mo={class:"points-number"},Wo={class:"user-avatar"},No=["alt"],Po={class:"toolbar"},qo={class:"filters-bar"},Ho={class:"filters-left"},$o={class:"filters-right"},jo={class:"select-row"},Go=["onClick"];const Yo=["src","data-cover","poster"],Ko=["src","alt"],Qo={key:3,class:"work-placeholder"},Xo={class:"placeholder-text"},Jo={key:4,class:"checker"},Zo=["onClick"],et={class:"meta"},ot=["title"],tt={class:"sub"},lt={key:0,class:"detail-content"},st={class:"detail-left"},at={class:"video-container"},rt={key:0,class:"video-error-overlay"},nt={class:"error-content"},it={class:"error-actions"},ct=["src","poster"],dt=["src","alt"],ut={class:"detail-right"},vt={class:"detail-header"},pt={class:"user-info"},_t={class:"avatar"},mt=["alt"],ft={class:"username"},ht={class:"tabs"},gt={key:0,class:"description-section"},yt={class:"section-title"},wt={class:"description-text"},kt={key:1,class:"reference-content"},bt={class:"input-details-section"},Tt={class:"section-title"},St={class:"input-images"},Ct={class:"input-image-item"},xt=["src","alt"],Dt={class:"input-image-item"},Ut=["src","alt"],Vt={class:"description-section"},zt={class:"section-title"},Et={class:"description-text"},It={key:2,class:"description-section"},Bt={class:"section-title"},Ot={class:"description-text"},Lt={class:"metadata-section"},Rt={class:"metadata-item"},Ft={class:"label"},At={class:"value"},Mt={class:"metadata-item"},Wt={class:"label"},Nt={class:"value"},Pt={class:"metadata-item"},qt={class:"label"},Ht={class:"value"},$t={key:0,class:"metadata-item"},jt={class:"label"},Gt={class:"value"},Yt={key:1,class:"metadata-item"},Kt={class:"label"},Qt={class:"value"},Xt={class:"metadata-item"},Jt={class:"label"},Zt={class:"value"},el={key:2,class:"metadata-item"},ol={class:"label"},tl={class:"value"},ll={class:"action-section"},sl={key:0,class:"loading-indicator"},al={key:1,class:"finished"},rl=["title"],nl={__name:"MyWorks",setup(il){const{t}=ro(),x=Qe(),fe=no(),Z=m({username:"",nickname:"",bio:"",avatar:"",id:"",points:0,frozenPoints:0}),I=m("all");m([]);const V=m(""),E=m("all"),B=m(""),$=m("date");m("desc");const O=m(""),L=m(!1),S=m(new Set),M=m(!1),v=m(null),D=m("detail"),R=m(!1),j=m(null),F=m(1),ee=m(20),A=m(!1),W=m(!0),C=m([]),oe=m(!1),N=m(new Set),te=e=>e?e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e:null,le=e=>{var c,k;const o=te(e.resultUrl),l=te(e.thumbnailUrl),i=l||o||"/images/backgrounds/welcome.jpg";return console.log(`转换作品 ${e.id}:`,{原始resultUrl:e.resultUrl,原始thumbnailUrl:e.thumbnailUrl,处理后resultUrl:o,处理后thumbnailUrl:l,最终cover:i}),{id:((c=e.id)==null?void 0:c.toString())||e.taskId||"",title:e.title||e.prompt||"未命名作品",cover:i,resultUrl:o||"",type:e.workType==="TEXT_TO_VIDEO"||e.workType==="IMAGE_TO_VIDEO"||e.workType==="STORYBOARD_VIDEO"?"video":"image",category:e.workType==="TEXT_TO_VIDEO"?"文生视频":e.workType==="IMAGE_TO_VIDEO"?"图生视频":e.workType==="STORYBOARD_VIDEO"?"分镜视频":e.workType==="STORYBOARD_IMAGE"?"分镜图":"未知",sizeText:e.fileSize||"未知大小",createTime:e.createdAt?new Date(e.createdAt).toLocaleString("zh-CN"):"",date:e.createdAt?new Date(e.createdAt).toLocaleDateString("zh-CN"):"",description:e.description||e.prompt||"",prompt:e.prompt||"",duration:e.duration||e.videoDuration||e.length||"",aspectRatio:e.aspectRatio||e.ratio||e.aspect||"",quality:e.quality||e.resolution||"",username:e.username||((k=e.user)==null?void 0:k.username)||e.creator||e.author||e.owner||"未知用户",status:e.status||"COMPLETED"}},P=async()=>{A.value=!0;try{const e=await So({page:F.value-1,size:ee.value});if(e.data.success){const o=e.data.data||[];console.log("原始作品数据:",o),o.forEach((i,c)=>{console.log(`作品 ${c}:`,{id:i.id,title:i.title||i.prompt,status:i.status,resultUrl:i.resultUrl,thumbnailUrl:i.thumbnailUrl,workType:i.workType})});const l=o.map(le);console.log("转换后的作品数据:",l),F.value===1&&(C.value=[]),C.value=C.value.concat(l),W.value=o.length===ee.value}else throw new Error(e.data.message||t("profile.loadWorksFailed"))}catch(e){console.error("加载作品列表失败:",e),w.error(t("profile.loadWorksFailed"))}finally{A.value=!1}},G=Xe(()=>{let e=[...C.value];if(e=e.filter(o=>{const l=o.resultUrl&&N.value.has(o.resultUrl),i=o.cover&&N.value.has(o.cover);return!l&&!i}),V.value){const o=new Date,l=new Date(o.getFullYear(),o.getMonth(),o.getDate());e=e.filter(i=>{if(!i.createdAt&&!i.date)return!1;let c;if(i.createdAt?c=new Date(i.createdAt):i.date&&(c=new Date(i.date)),!c||isNaN(c.getTime()))return!1;const k=new Date(c.getFullYear(),c.getMonth(),c.getDate());if(V.value==="today")return k.getTime()===l.getTime();if(V.value==="week"){const p=new Date(l);return p.setDate(p.getDate()-7),k>=p&&k<=l}else if(V.value==="month"){const p=new Date(l);return p.setDate(p.getDate()-30),k>=p&&k<=l}return!0})}if(I.value==="video"?e=e.filter(o=>o.type==="video"):I.value==="image"&&(e=e.filter(o=>o.type==="image")),E.value!=="all"){const l={text2video:"文生视频",image2video:"图生视频",storyboard:"分镜视频",reference:"参考图"}[E.value];l&&(e=e.filter(i=>i.category===l))}if(B.value&&(e=e.filter(o=>{const l=(o.quality||"").toLowerCase(),i=B.value.toLowerCase();return i==="sd"?l==="sd"||l.includes("标清"):i==="hd"?l==="hd"||l.includes("高清"):i==="uhd"?l==="uhd"||l.includes("超清")||l.includes("4k"):!1})),O.value){const o=O.value.toLowerCase();e=e.filter(l=>l.title.toLowerCase().includes(o)||l.id.includes(o))}return e}),he=()=>{F.value=1,W.value=!0,P()},ge=()=>{console.log("筛选条件变化:",{category:E.value,activeTab:I.value})},ye=()=>{A.value||!W.value||(F.value+=1,P())},we=e=>{const o=e.target,l=o.scrollTop,i=o.scrollHeight,c=o.clientHeight;oe.value=l>300,i-l-c<100&&ye()},ke=()=>{const e=document.querySelector(".content-area");e&&e.scrollTo({top:0,behavior:"smooth"})},be=async e=>{var o;try{const l=await Co(e.id),i=((o=l==null?void 0:l.data)==null?void 0:o.data)||(l==null?void 0:l.data)||null;i?v.value=le(i):v.value=e}catch(l){console.warn("获取作品详情失败,使用已有数据:",l),v.value=e}M.value=!0},se=e=>{if(!e)return"";const o=e.prompt&&e.prompt.trim()?e.prompt:e.description&&e.description.trim()?e.description:"";return o||t("profile.noPrompt")},Te=e=>{if(!e)return"";const o=e.toUpperCase();return{SD:t("works.sd"),HD:t("works.hd"),UHD:t("works.uhd"),"4K":t("works.uhd")}[o]||o},Se=e=>{if(e==null||e==="")return"";if(typeof e=="number")return`${e}s`;if(typeof e=="string"){const o=e.trim();return/^\d+$/.test(o)?`${o}s`:o}return String(e)},ae=()=>{M.value=!1,v.value=null,D.value="detail",R.value=!1},Ce=e=>{console.log("✓ 详情页视频加载成功"),R.value=!1},xe=e=>{var l,i;console.error("❌ 详情页视频加载失败:",(l=e.target)==null?void 0:l.src),R.value=!0;const o=(i=e.target)==null?void 0:i.src;o&&(console.log("🔍 开始诊断详情页视频加载失败原因..."),fetch(o,{method:"HEAD"}).then(c=>{console.log("📊 HTTP 响应状态:",c.status,c.statusText),c.status===403?(console.error("🔒 403 Forbidden - OSS Bucket 权限问题!"),console.error("💡 解决方法:"),console.error(" 1. 检查 OSS Bucket 读取权限设置"),console.error(" 2. 后端需要生成签名 URL")):c.status===404?(console.error("❌ 404 Not Found - 文件不存在!"),console.error("💡 可能原因:"),console.error(" 1. OSS 设置了生命周期规则自动删除"),console.error(" 2. 文件被手动删除"),console.error(" 3. 检查 OSS 控制台是否还有该文件")):c.ok&&(console.log("✓ 文件存在但无法播放"),console.error("💡 可能原因:CORS 配置或视频编码问题"))}).catch(c=>console.error("🌐 网络错误:",c.message)))},De=()=>{R.value=!1,j.value&&j.value.load()},Ue=async()=>{if(v.value)try{await X.confirm(t("works.deleteFailedWorkConfirm"),t("works.deleteConfirmTitle"),{type:"warning",confirmButtonText:t("common.delete"),cancelButtonText:t("common.cancel"),confirmButtonClass:"el-button--danger"}),console.log("删除作品:",v.value.id);const e=await me(v.value.id);if(e.data.success)w.success(t("works.deleteSuccess")),ae(),C.value=C.value.filter(o=>o.id!==v.value.id);else throw new Error(e.data.message||t("works.deleteFailed"))}catch(e){e!=="cancel"&&(console.error("删除作品失败:",e),w.error(e.message||t("works.deleteFailed")))}},re=e=>{e?(w.info(t("works.createSimilarInfo",{title:e.title})),e.type==="video"?x.push("/text-to-video/create"):e.type==="image"?x.push("/image-to-video/create"):x.push("/text-to-video/create")):w.info(t("works.goToCreate"))},Y=async e=>{try{if(!e.resultUrl){w.error(t("works.noDownloadUrl"));return}w.success(t("works.downloadStart",{title:e.title}));try{await xo(e.id)}catch(U){console.warn("记录下载次数失败:",U)}const o=Do(e.id,!0),l=sessionStorage.getItem("token"),i=document.createElement("iframe");i.style.display="none",document.body.appendChild(i);const c=await fetch(o,{method:"GET",headers:{Authorization:`Bearer ${l}`}});if(console.log("下载响应状态:",c.status),console.log("响应类型:",c.type),console.log("是否重定向:",c.redirected),console.log("最终 URL:",c.url),!c.ok)throw new Error(`HTTP ${c.status}: ${c.statusText}`);const k=await c.blob();if(console.log("Blob 大小:",k.size,"bytes"),k.size===0)throw new Error("文件内容为空");const p=window.URL.createObjectURL(k),T=c.headers.get("content-disposition");let _=e.title||"work";if(T){const U=T.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);U&&U[1]&&(_=decodeURIComponent(U[1].replace(/['"]/g,"").replace(/%20/g," ")))}_.includes(".")||(_+=e.type==="video"?".mp4":".png"),console.log("下载文件名:",_);const z=document.createElement("a");z.href=p,z.download=_,document.body.appendChild(z),z.click(),document.body.removeChild(z),document.body.removeChild(i),setTimeout(()=>window.URL.revokeObjectURL(p),1e3),w.success(t("works.downloadComplete"))}catch(o){console.error("下载作品失败:",o),w.error(t("works.downloadFailed"))}},Ve=async(e,o)=>{if(e==="download_with_watermark"||e==="download_without_watermark")await Y(o);else if(e==="rename")w.info(t("works.renameDevMsg"));else if(e==="delete")try{await X.confirm(t("works.deleteWorkConfirm"),t("works.deleteConfirmTitle"),{type:"warning",confirmButtonText:t("common.delete"),cancelButtonText:t("common.cancel")});const l=await me(o.id);if(l.data.success)w.success(t("works.deleteSuccess")),C.value=C.value.filter(i=>i.id!==o.id);else throw new Error(l.data.message||t("works.deleteFailed"))}catch(l){l!=="cancel"&&(console.error("删除作品失败:",l),w.error(l.message||t("works.deleteFailed")))}},ne=e=>{const o=new Set(S.value);o.has(e)?o.delete(e):o.add(e),S.value=o},ze=async()=>{if(S.value.size===0){w.warning(t("works.noItemsSelected"));return}w.success(t("works.bulkDownloadStart",{count:S.value.size}));const e=C.value.filter(o=>S.value.has(o.id));for(const o of e)try{await Y(o),await new Promise(l=>setTimeout(l,500))}catch(l){console.error(`下载作品 ${o.id} 失败:`,l)}w.success(t("works.bulkDownloadComplete"))},Ee=async()=>{try{await X.confirm(t("works.bulkDeleteConfirm",{count:S.value.size}),t("works.deleteConfirmTitle"),{type:"warning",confirmButtonText:t("common.delete"),cancelButtonText:t("common.cancel")}),w.success(t("works.bulkDeleteSuccess")),S.value=new Set}catch{}},Ie=()=>{console.log("导航到个人主页"),x.push("/profile")},Be=()=>{console.log("导航到会员订阅"),x.push("/subscription")},Oe=()=>{console.log("导航到文生视频创作"),x.push("/text-to-video/create")},Le=()=>{console.log("导航到图生视频创作"),x.push("/image-to-video/create")},Re=()=>{console.log("导航到分镜视频创作"),x.push("/storyboard-video/create")},Fe=()=>{V.value="",E.value="all",B.value="",$.value="date",O.value="",w.success(t("works.filtersReset"))},Ae=e=>{const o=e.target;console.log("✓ 视频加载成功:",o.src),console.log("视频信息:",{duration:o.duration,videoWidth:o.videoWidth,videoHeight:o.videoHeight,readyState:o.readyState}),o&&o.duration&&(o.currentTime=.1,o.pause())},Me=e=>{const o=e.target,l=o.src;console.error("❌ 视频加载失败:",l),console.error("错误详情:",e),N.value.add(l),console.log("🔍 开始诊断视频加载失败原因..."),fetch(l,{method:"HEAD"}).then(c=>{console.log("📊 HTTP 响应状态:",c.status,c.statusText),console.log("📊 响应头:",[...c.headers.entries()]),c.status===403?(console.error("🔒 403 Forbidden - OSS Bucket 权限问题!"),console.error("💡 可能原因:"),console.error(' 1. Bucket 从"公共读"改为"私有"'),console.error(" 2. 需要使用签名 URL 访问"),console.error(" 3. IP 白名单限制")):c.status===404?(console.error("❌ 404 Not Found - 文件不存在!"),console.error("💡 可能原因:"),console.error(" 1. 文件被删除(手动或生命周期规则)"),console.error(" 2. 文件路径变化"),console.error(" 3. URL 格式错误")):c.ok&&(console.log("✓ HTTP 状态正常,可能是 CORS 或视频编码问题"),console.error("💡 可能原因:"),console.error(" 1. OSS CORS 配置缺失或错误"),console.error(" 2. 视频编码格式浏览器不支持"))}).catch(c=>{console.error("🌐 网络错误:",c.message),console.error("💡 可能原因:"),console.error(" 1. 网络连接问题"),console.error(" 2. DNS 解析失败"),console.error(" 3. 阿里云账户欠费")});const i=new Image;if(i.onload=()=>console.log("✓ URL 可访问(使用 Image 测试)"),i.onerror=()=>console.error("✗ URL 不可访问(使用 Image 测试)"),i.src=l,o){o.style.display="none";const c=o.parentElement,k=c.querySelector(".fallback-cover-image"),p=c.querySelector(".work-placeholder"),T=o.getAttribute("data-cover");if(T&&T!==l&&T!==""&&!k){console.log("🔄 视频加载失败,尝试使用独立封面图:",T);const _=document.createElement("img");_.className="fallback-cover-image work-thumbnail-video",_.src=T,_.alt="封面图",_.style.cssText="position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover;",_.onerror=()=>{console.error("❌ 封面图也加载失败:",T),_.style.display="none",ie(c,p)},c.appendChild(_)}else console.warn("⚠️ 没有独立封面图,显示占位符"),ie(c,p)}},ie=(e,o)=>{if(o)o.style.display="flex";else{const l=document.createElement("div");l.className="work-placeholder",l.innerHTML=`