Files
AIGC/demo/deploy_baota/frontend/static/TextToVideoCreate-30b993c4.js
AIGC Developer dbd06435cb feat: 完成管理员密码登录修复和项目清理
- 修复BCryptPasswordEncoder密码验证问题
- 实现密码设置提示弹窗功能(仅对无密码用户显示一次)
- 优化修改密码逻辑和验证流程
- 更新Welcome页面背景样式
- 清理临时SQL文件和测试代码
- 移动数据库备份文件到database/backups目录
- 删除不必要的MD文档和临时文件
2025-11-21 16:10:00 +08:00

2 lines
18 KiB
JavaScript

import{aA as be,c as X,r as v,h as we,m as Ce,U as Ee,al as Y,z as u,A as p,B as e,P as n,u as i,R as m,J as E,K as U,aj as Ue,aE as Z,M as R,E as ee,ae as Pe,ag as te,Q as Ie,a4 as Re,I as Se,a1 as Le,W as Me}from"./vue-vendor-164775a6.js";import{_ as ze}from"./avatar-default-20a1956c.js";import{_ as Fe,u as Ne,f as Ae,L as Oe}from"./index-69868281.js";import{t as H}from"./textToVideo-2c3be6a0.js";import{E as c,I as oe,t as se,u as We,y as He,h as Be,J as De}from"./element-plus-83a396df.js";import{o as Ge}from"./promptOptimizer-4e5a91ee.js";import{c as qe}from"./userWorks-aba806c8.js";import"./utils-edfcd65b.js";const $e={class:"text-to-video-create-page"},je={class:"top-header"},Je={class:"header-left"},Ke={class:"header-right"},Qe={class:"points-display"},Xe={class:"points-icon"},Ye={class:"points-number"},Ze=["alt"],et={class:"main-content"},tt={class:"left-panel"},ot={class:"creation-tabs"},st={class:"tab active"},it={class:"text-input-section"},at=["placeholder"],lt={class:"optimize-btn"},nt=["disabled"],dt={class:"video-settings"},rt={class:"setting-item"},ct={class:"setting-item"},ut={class:"setting-item"},vt={class:"hd-setting"},pt={class:"cost-text"},ht={class:"generate-section"},mt=["disabled"],_t={key:0,class:"login-tip"},ft={class:"right-panel"},Tt={class:"preview-area"},gt={key:0,class:"task-status"},xt={class:"status-header"},kt={class:"task-id"},Vt={class:"task-description"},yt={class:"video-preview-container"},bt={key:0,class:"generating-container"},wt={class:"generating-placeholder"},Ct={class:"generating-text"},Et={class:"progress-bar-large"},Ut={key:1,class:"completed-container"},Pt={class:"task-info-header"},It={class:"task-checkbox"},Rt={for:"inProgress"},St={class:"video-player-container"},Lt={class:"video-player"},Mt=["src"],zt={key:1,class:"no-video-placeholder"},Ft={class:"no-video-text"},Nt={class:"watermark-overlay"},At={class:"watermark-options"},Ot={class:"watermark-option"},Wt={for:"withWatermark"},Ht={class:"watermark-option"},Bt={for:"withoutWatermark"},Dt={class:"result-actions"},Gt={class:"action-icons"},qt=["title"],$t=["title"],jt={key:2,class:"failed-container"},Jt={class:"failed-placeholder"},Kt={class:"failed-text"},Qt={class:"failed-desc"},Xt={class:"result-actions"},Yt={key:3,class:"status-placeholder"},Zt={class:"status-text"},eo={key:1,class:"preview-content"},to={class:"preview-placeholder"},oo={class:"placeholder-text"},so={key:2,class:"history-section"},io={class:"history-list"},ao={key:0,class:"history-status-checkbox"},lo={class:"history-item-header"},no={class:"history-type"},ro={class:"history-date"},co={class:"history-prompt"},uo={class:"history-preview"},vo={key:0,class:"history-placeholder"},po={class:"queue-text"},ho={class:"queue-link"},mo=["onClick"],_o=["onClick"],fo=["src","onClick"],To={key:0,class:"play-overlay"},go={key:2,class:"history-placeholder"},xo={class:"no-result-text"},ko={class:"history-actions"},Vo=["onClick"],yo={__name:"TextToVideoCreate",setup(bo){const g=be(),x=Ne(),{t}=Ae(),N=X(()=>x.isAuthenticated),_=v(""),P=v("16:9"),I=v(10),S=v(!1),T=v(!1),r=v(null),V=v(0),f=v(""),L=v(null),B=v(!1),M=v("without"),z=v(!1),w=v([]),C=v({}),y=v({}),b=v(!1),A=v(!1),k=v(!1),O=v(null),ie=X(()=>{if(!O.value||!k.value)return{};const o=O.value.getBoundingClientRect();return{position:"fixed",top:`${o.bottom+8}px`,right:`${window.innerWidth-o.right}px`,zIndex:99999}}),ae=()=>{g.push("/")},D=()=>{g.push({path:"/login",query:{redirect:g.currentRoute.value.fullPath}})},le=()=>{g.push("/image-to-video/create")},ne=()=>{g.push("/storyboard-video/create")},de=()=>{k.value=!k.value},re=()=>{k.value=!1,g.push("/profile")},ce=()=>{k.value=!1,g.push("/works")},ue=()=>{k.value=!1,g.push("/subscription")},ve=()=>{k.value=!1,g.push("/settings")},pe=()=>{k.value=!1,x.logout(),g.push("/login")},W=async()=>{var s;if(!x.isAuthenticated){c.warning(t("video.textToVideo.pleaseLoginFirst")),D();return}if(T.value){c.warning(t("video.textToVideo.taskInProgress"));return}if(!_.value.trim()){c.error(t("video.textToVideo.pleaseEnterText"));return}b.value=!0;const o=oe.service({lock:!0,text:t("video.textToVideo.creatingTask"),background:"rgba(0, 0, 0, 0.7)"});try{const d={prompt:_.value.trim(),aspectRatio:P.value,duration:parseInt(I.value),hdMode:S.value},l=await H.createTask(d);l.data&&l.data.success?(r.value=l.data.data,T.value=!0,V.value=0,f.value="PENDING",c.success(t("video.textToVideo.taskCreated")),setTimeout(async()=>{try{await x.fetchCurrentUser(),console.log("[Points Update]",t("video.textToVideo.pointsUpdated"))}catch(a){console.error("[Points Update Error]",t("video.textToVideo.pointsUpdateFailed"),a)}},0),G(),setTimeout(()=>{b.value=!1},2e3)):(c.error(((s=l.data)==null?void 0:s.message)||t("video.textToVideo.createTaskFailed")),T.value=!1,b.value=!1,r.value=null,f.value="",V.value=0)}catch(d){console.error("[Create Task Error]",t("video.textToVideo.createTaskFailed"),d),c.error(t("video.textToVideo.createTaskFailed")),T.value=!1,b.value=!1,r.value=null,f.value="",V.value=0}finally{o.close()}},G=()=>{r.value&&(L.value=H.pollTaskStatus(r.value.taskId,o=>{o&&typeof o.progress=="number"&&(V.value=o.progress),o&&o.status&&(f.value=o.status),o&&o.resultUrl&&o.resultUrl.trim()&&r.value&&(r.value.resultUrl=o.resultUrl,console.log("[Result URL Updated]",o.resultUrl.substring(0,50)+"...")),console.log("[Task Progress]",o)},async o=>{T.value=!1,V.value=100,f.value="COMPLETED",o&&o.resultUrl&&o.resultUrl.trim()&&r.value?(r.value.resultUrl=o.resultUrl,console.log("[Task Completed] Result URL:",o.resultUrl.substring(0,50)+"...")):r.value&&!r.value.resultUrl&&console.warn("[Task Completed] No result URL found"),c.success(t("video.textToVideo.videoCompleted")),setTimeout(async()=>{try{await x.fetchCurrentUser(),console.log("[Points Update]",t("video.textToVideo.pointsUpdated"))}catch(s){console.error("[Points Update Error]",t("video.textToVideo.pointsUpdateFailed"),s)}},0),console.log("[Task Completed]",o)},o=>{T.value=!1,f.value="FAILED",c.error(t("video.textToVideo.videoFailed")+o.message),console.error("[Task Failed]",o)}))},q=o=>({PENDING:t("video.textToVideo.statusPending"),PROCESSING:t("video.textToVideo.statusProcessing"),COMPLETED:t("video.completed"),FAILED:t("video.failed"),CANCELLED:t("video.textToVideo.statusCancelled")})[o]||t("video.textToVideo.statusUnknown"),$=o=>{if(!o)return"";const s=new Date(o),d=s.getFullYear(),l=String(s.getMonth()+1).padStart(2,"0"),a=String(s.getDate()).padStart(2,"0"),h=String(s.getHours()).padStart(2,"0"),F=String(s.getMinutes()).padStart(2,"0");return t("video.textToVideo.dateFormat",{year:d,month:l,day:a,hours:h,minutes:F})},he=async()=>{var o,s,d;if(!_.value.trim()){c.warning(t("video.textToVideo.pleaseEnterPrompt"));return}if(_.value.length>2e3){c.warning(t("video.textToVideo.promptTooLong"));return}try{z.value=!0;const l=oe.service({lock:!1,text:t("video.textToVideo.optimizingPrompt"),background:"rgba(0, 0, 0, 0.3)"}),a=await Ge(_.value.trim(),"text-to-video");if(l.close(),a.data&&a.data.success){const h=a.data.data,F=h.optimizedPrompt;h.optimized&&F!==_.value.trim()?(_.value=F,c.success(t("video.textToVideo.optimizeSuccess"))):c.warning(t("video.textToVideo.optimizeNoChange"))}else c.error(((o=a.data)==null?void 0:o.message)||t("video.textToVideo.optimizeFailed"))}catch(l){console.error("[Optimize Prompt Error]",l);let a=t("video.textToVideo.optimizeFailed");if(l.response){const h=l.response.status;h===400?a=((s=l.response.data)==null?void 0:s.message)||t("video.textToVideo.requestParamError"):h===408||l.code==="ECONNABORTED"?a=t("video.textToVideo.requestTimeout"):h>=500?a=t("video.textToVideo.serverError"):a=((d=l.response.data)==null?void 0:d.message)||t("video.textToVideo.optimizeFailed")}else l.request?a=t("video.textToVideo.networkError"):l.code==="ERR_NETWORK"?a=t("video.textToVideo.networkConnectionError"):a=l.message||t("video.textToVideo.optimizeFailed");c.error(a)}finally{z.value=!1}},me=()=>{W()},_e=()=>{if(r.value&&r.value.resultUrl){const o=document.createElement("a");o.href=r.value.resultUrl,o.download=`video_${r.value.taskId}.mp4`,document.body.appendChild(o),o.click(),document.body.removeChild(o),c.success(t("video.textToVideo.downloadStarted"))}else c.error(t("video.textToVideo.videoUrlNotAvailable"))},fe=()=>{r.value=null,T.value=!1,V.value=0,f.value="",W()},Te=()=>{if(!r.value){c.error(t("video.textToVideo.noWorkToDelete"));return}c.confirm(t("video.textToVideo.deleteConfirm"),t("video.textToVideo.confirmDelete"),{confirmButtonText:t("common.confirm"),cancelButtonText:t("common.cancel"),type:"warning"}).then(()=>{r.value=null,f.value="",c.success(t("video.textToVideo.workDeleted"))}).catch(()=>{c.info(t("video.textToVideo.deleteCancelled"))})},j=o=>o?(o.startsWith("/")||!o.startsWith("http"))&&!o.startsWith("/uploads/")&&!o.startsWith("/api/")?o.startsWith("/")?o:`/${o}`:o:"",J=async()=>{if(!x.isAuthenticated){w.value=[];return}try{const o=await H.getTasks(0,5);if(o.data&&o.data.success){const s=(o.data.data||[]).filter(d=>d.status==="COMPLETED").slice(0,5);w.value=s.map(d=>({...d,resultUrl:d.resultUrl?j(d.resultUrl):null})),console.log("[History Load]",t("video.textToVideo.historyLoadSuccess",{count:w.value.length}))}}catch(o){console.error("[History Load Error]",t("video.textToVideo.historyLoadFailed"),o),w.value=[]}},ge=o=>{o.prompt&&(_.value=o.prompt),o.aspectRatio&&(P.value=o.aspectRatio),o.duration&&(I.value=o.duration),o.hdMode!==void 0&&(S.value=o.hdMode),window.scrollTo({top:0,behavior:"smooth"}),c.success(t("video.textToVideo.historyParamsFilled"))},xe=async o=>{try{c.info(t("video.textToVideo.cancelFunctionTBD"))}catch(s){console.error("[Cancel Task Error]",s)}},ke=o=>{const s=o.target;s.currentTime=1,s.addEventListener("play",()=>{const d=Object.keys(y.value).find(l=>y.value[l]===s);d&&(C.value[d]=!0)}),s.addEventListener("pause",()=>{const d=Object.keys(y.value).find(l=>y.value[l]===s);d&&(C.value[d]=!1)}),s.addEventListener("ended",()=>{const d=Object.keys(y.value).find(l=>y.value[l]===s);d&&(C.value[d]=!1,s.currentTime=1)})},Ve=o=>{console.error("[History Video Load Error]",o.target.src)},ye=(o,s)=>{s&&(y.value[o]=s)},K=o=>{const s=y.value[o.taskId];if(s)if(C.value[o.taskId])s.pause(),C.value[o.taskId]=!1;else{try{s.muted=!1,s.volume=1,s.play()}catch{s.play()}C.value[o.taskId]=!0}};we(()=>x.isAuthenticated,o=>{o?(J(),setTimeout(()=>{b.value||Q()},500)):(w.value=[],A.value=!1)});const Q=async()=>{if(x.isAuthenticated){if(b.value){console.log("[Task Restore] 跳过恢复:正在创建新任务");return}if(A.value&&r.value){console.log("[Task Restore] 跳过恢复:已有任务在进行中");return}try{const o=await qe();if(o.data&&o.data.success&&o.data.data){const d=o.data.data.filter(l=>l.workType==="TEXT_TO_VIDEO");if(d.length>0){const l=d[0];r.value={taskId:l.taskId,prompt:l.prompt,aspectRatio:l.aspectRatio,duration:l.duration,resultUrl:l.resultUrl,createdAt:l.createdAt},l.prompt&&(_.value=l.prompt),l.aspectRatio&&(P.value=l.aspectRatio),l.duration&&(I.value=parseInt(l.duration)||10),T.value=!0,f.value=l.status||"PROCESSING",V.value=50,console.log("[Task Restored]",l.taskId,"Status:",l.status),c.info(t("video.textToVideo.unfinishedTaskDetected")),A.value=!0,G()}}}catch(o){console.error("[Task Restore Error]",o)}}};return Ce(()=>{J(),Q()}),Ee(()=>{L.value&&(L.value(),L.value=null)}),(o,s)=>{const d=Y("el-icon"),l=Y("el-switch");return u(),p("div",$e,[e("header",je,[e("div",Je,[e("button",{class:"back-btn",onClick:ae}," ← "+n(i(t)("common.home")),1)]),e("div",Ke,[e("div",Qe,[e("div",Xe,[m(d,null,{default:E(()=>[m(i(se))]),_:1})]),e("span",Ye,n(i(x).availablePoints),1)]),m(Oe),e("div",{class:"user-avatar",onClick:de,ref_key:"userAvatarRef",ref:O},[e("img",{src:ze,alt:i(t)("video.textToVideo.userAvatar")},null,8,Ze)],512)])]),e("div",et,[e("div",tt,[e("div",ot,[e("div",st,n(i(t)("home.textToVideo")),1),e("div",{class:"tab",onClick:le},n(i(t)("home.imageToVideo")),1),e("div",{class:"tab",onClick:ne},n(i(t)("home.storyboardVideo")),1)]),e("div",it,[U(e("textarea",{"onUpdate:modelValue":s[0]||(s[0]=a=>_.value=a),placeholder:i(t)("video.textToVideo.textInputPlaceholder"),class:"text-input",rows:"8"},null,8,at),[[Ue,_.value]]),e("div",lt,[e("button",{class:"optimize-button",onClick:he,disabled:!_.value.trim()||z.value}," ✨ "+n(z.value?i(t)("video.textToVideo.optimizing"):i(t)("video.textToVideo.oneClickOptimize")),9,nt)])]),e("div",dt,[e("div",rt,[e("label",null,n(i(t)("video.textToVideo.aspectRatio")),1),U(e("select",{"onUpdate:modelValue":s[1]||(s[1]=a=>P.value=a),class:"setting-select"},[...s[7]||(s[7]=[e("option",{value:"16:9"},"16:9",-1),e("option",{value:"9:16"},"9:16",-1),e("option",{value:"1:1"},"1:1",-1)])],512),[[Z,P.value]])]),e("div",ct,[e("label",null,n(i(t)("video.duration")),1),U(e("select",{"onUpdate:modelValue":s[2]||(s[2]=a=>I.value=a),class:"setting-select"},[...s[8]||(s[8]=[e("option",{value:"10"},"10s",-1),e("option",{value:"15"},"15s",-1),e("option",{value:"25"},"25s",-1)])],512),[[Z,I.value]])]),e("div",ut,[e("label",null,n(i(t)("video.textToVideo.hdMode")),1),e("div",vt,[m(l,{modelValue:S.value,"onUpdate:modelValue":s[3]||(s[3]=a=>S.value=a)},null,8,["modelValue"]),e("span",pt,n(i(t)("video.textToVideo.hdModeCost")),1)])])]),e("div",ht,[e("button",{class:"generate-btn",onClick:W,disabled:!N.value||T.value||b.value},n(N.value?T.value||b.value?i(t)("video.textToVideo.taskInProgress"):i(t)("video.textToVideo.startGenerate"):i(t)("video.textToVideo.pleaseLogin")),9,mt),N.value?R("",!0):(u(),p("div",_t,[e("p",null,n(i(t)("video.textToVideo.loginRequired")),1),e("button",{class:"login-link-btn",onClick:D},n(i(t)("video.textToVideo.loginNow")),1)]))])]),e("div",ft,[e("div",Tt,[r.value?(u(),p("div",gt,[e("div",xt,[e("h3",null,n(q(f.value)),1),e("div",kt,n(i(t)("home.textToVideo"))+" "+n($(r.value.createdAt)),1)]),e("div",Vt,n(_.value),1),e("div",yt,[T.value?(u(),p("div",bt,[e("div",wt,[e("div",Ct,n(i(t)("video.generating")),1),e("div",Et,[e("div",{class:"progress-fill-large",style:ee({width:V.value+"%"})},null,4)])])])):f.value==="COMPLETED"?(u(),p("div",Ut,[e("div",Pt,[e("div",It,[U(e("input",{type:"checkbox",id:"inProgress","onUpdate:modelValue":s[4]||(s[4]=a=>B.value=a)},null,512),[[Pe,B.value]]),e("label",Rt,n(i(t)("video.textToVideo.inProgress")),1)])]),e("div",St,[e("div",Lt,[r.value.resultUrl?(u(),p("video",{key:0,src:r.value.resultUrl,controls:"",class:"result-video",poster:""},null,8,Mt)):(u(),p("div",zt,[e("div",Ft,n(i(t)("video.textToVideo.noVideoUrl")),1)])),e("div",Nt,[e("div",At,[e("div",Ot,[U(e("input",{type:"radio",id:"withWatermark",name:"watermark",value:"with","onUpdate:modelValue":s[5]||(s[5]=a=>M.value=a)},null,512),[[te,M.value]]),e("label",Wt,n(i(t)("video.textToVideo.withWatermark")),1)]),e("div",Ht,[U(e("input",{type:"radio",id:"withoutWatermark",name:"watermark",value:"without","onUpdate:modelValue":s[6]||(s[6]=a=>M.value=a)},null,512),[[te,M.value]]),e("label",Bt,n(i(t)("video.textToVideo.withoutWatermark")),1)])])])])]),e("div",Dt,[e("button",{class:"action-btn primary",onClick:me},n(i(t)("video.textToVideo.createSimilar")),1),e("div",Gt,[e("button",{class:"icon-btn",onClick:_e,title:i(t)("video.textToVideo.downloadVideo")},[...s[9]||(s[9]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})],-1)])],8,qt),e("button",{class:"icon-btn",onClick:Te,title:i(t)("video.textToVideo.deleteWork")},[...s[10]||(s[10]=[e("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"})],-1)])],8,$t)])])])):f.value==="FAILED"?(u(),p("div",jt,[e("div",Jt,[s[11]||(s[11]=e("div",{class:"failed-icon"},"❌",-1)),e("div",Kt,n(i(t)("video.textToVideo.generationFailed")),1),e("div",Qt,n(i(t)("video.textToVideo.checkInputOrRetry")),1)]),e("div",Xt,[e("button",{class:"action-btn primary",onClick:fe},n(i(t)("video.textToVideo.regenerate")),1)])])):(u(),p("div",Yt,[e("div",Zt,n(q(f.value)),1)]))])])):(u(),p("div",eo,[e("div",to,[e("div",oo,n(i(t)("video.textToVideo.startCreating")),1)])])),w.value.length>0?(u(),p("div",so,[e("div",io,[(u(!0),p(Ie,null,Re(w.value,a=>(u(),p("div",{key:a.taskId,class:"history-item"},[a.status==="PENDING"||a.status==="PROCESSING"?(u(),p("div",ao,[s[12]||(s[12]=e("input",{type:"checkbox",checked:!0,disabled:""},null,-1)),e("label",null,n(i(t)("video.textToVideo.inProgress")),1)])):R("",!0),e("div",lo,[e("span",no,n(i(t)("home.textToVideo")),1),e("span",ro,n($(a.createdAt)),1)]),e("div",co,n(a.prompt||i(t)("video.textToVideo.noDescription")),1),e("div",uo,[a.status==="PENDING"||a.status==="PROCESSING"?(u(),p("div",vo,[e("div",po,n(i(t)("video.textToVideo.queuing")),1),e("div",ho,n(i(t)("video.textToVideo.subscribeToSpeedUp")),1),e("button",{class:"cancel-btn",onClick:h=>xe(a.taskId)},n(i(t)("common.cancel")),9,mo)])):a.status==="COMPLETED"&&a.resultUrl?(u(),p("div",{key:1,class:"history-video-thumbnail",onClick:h=>K(a)},[e("video",{ref_for:!0,ref:h=>ye(a.taskId,h),src:j(a.resultUrl),muted:"",preload:"metadata",onLoadedmetadata:ke,onError:Ve,onClick:Me(h=>K(a),["stop"])},null,40,fo),C.value[a.taskId]?R("",!0):(u(),p("div",To,[...s[13]||(s[13]=[e("div",{class:"play-icon"},"▶",-1)])]))],8,_o)):(u(),p("div",go,[e("div",xo,n(i(t)("video.textToVideo.noResult")),1)]))]),e("div",ko,[e("button",{class:"similar-btn",onClick:h=>ge(a)},n(i(t)("video.textToVideo.createSimilar")),9,Vo)])]))),128))])])):R("",!0)])])]),(u(),Se(Le,{to:"body"},[k.value?(u(),p("div",{key:0,class:"user-menu-teleport",style:ee(ie.value)},[e("div",{class:"menu-item",onClick:re},[m(d,null,{default:E(()=>[m(i(We))]),_:1}),e("span",null,n(i(t)("common.userProfile")),1)]),e("div",{class:"menu-item",onClick:ce},[m(d,null,{default:E(()=>[m(i(He))]),_:1}),e("span",null,n(i(t)("profile.myWorks")),1)]),e("div",{class:"menu-item",onClick:ue},[m(d,null,{default:E(()=>[m(i(se))]),_:1}),e("span",null,n(i(t)("profile.subscription")),1)]),e("div",{class:"menu-item",onClick:ve},[m(d,null,{default:E(()=>[m(i(Be))]),_:1}),e("span",null,n(i(t)("common.settings")),1)]),s[14]||(s[14]=e("div",{class:"menu-divider"},null,-1)),e("div",{class:"menu-item logout",onClick:pe},[m(d,null,{default:E(()=>[m(i(De))]),_:1}),e("span",null,n(i(t)("common.logout")),1)])],4)):R("",!0)]))])}}},Lo=Fe(yo,[["__scopeId","data-v-afb63e71"]]);export{Lo as default};