Files
qhmes/web-dist/js/AiVideo-hJls1DAk.js
2026-06-16 18:19:57 +08:00

2 lines
7.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var W=Object.defineProperty;var $=Object.getOwnPropertySymbols;var X=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable;var z=(n,a,s)=>a in n?W(n,a,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[a]=s,A=(n,a)=>{for(var s in a||(a={}))X.call(a,s)&&z(n,s,a[s]);if($)for(var s of $(a))J.call(a,s)&&z(n,s,a[s]);return n};var F=(n,a,s)=>new Promise((l,c)=>{var u=i=>{try{g(s.next(i))}catch(m){c(m)}},f=i=>{try{g(s.throw(i))}catch(m){c(m)}},g=i=>i.done?l(i.value):Promise.resolve(i.value).then(u,f);g((s=s.apply(n,a)).next())});import{B as Y}from"./BasicForm-ClUSoD_-.js";import"./helper-DcLcf4v6.js";import{u as Z}from"./useForm-D61zovon.js";import{d as V,aU as ee,aH as te,s as se,aX as oe,x as C,au as ae}from"./index-X7Y8jykP.js";import{e as ne,r as y,d as le,C as h,z as p,Q as o,f as r,A as k,F as P,D as U,c as E,u as _,K as ie,H as I,G as x,y as M,E as T}from"./vue-vendor-DNhG1Cve.js";import"./index-BzChaRPg.js";import"./useAppInject-DPZGPcR3.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./BasicForm.vue_vue_type_style_index_0_lang-B29PWQy0.js";import"./index-DO7ZhK45.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./useTimeout-D5AmIBZw.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./index-saD4h7VJ.js";import"./useBreakpoint-DXhPW7nV.js";import"./useEventListener-BRXjwk7A.js";import"./breakpointEnum-BhAg6bcX.js";import"./uniqBy--vsL0WVB.js";import"./index-BDvqZ5j4.js";import"./BasicModal-xH56XuRZ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./index-CuWaQdlK.js";const re=n=>V.post({url:"/airag/video/submit",params:n}),ce=n=>V.get({url:`/airag/video/query/${n}`}),ue=()=>V.get({url:"/airag/video/prompts"}),de=[{field:"prompt",label:"视频描述",component:"InputTextArea",required:!0,componentProps:{placeholder:"请描述你想生成的视频内容,例如:一只金毛犬在沙滩上奔跑,海浪拍打岸边,阳光明媚",rows:5,maxlength:500,showCount:!0}}],pe=["通用演示","产品营销","教育培训","创意设计"],me={通用演示:["一只金毛犬在金色的沙滩上奔跑,海浪轻轻拍打着岸边,阳光明媚,慢动作镜头","航拍壮丽的山脉全景,云雾缭绕在山峰之间,镜头缓缓推进","樱花树下,花瓣随风飘落,一条小溪静静流淌,春日午后的宁静氛围"],产品营销:["一杯咖啡被缓缓倒入透明玻璃杯中,咖啡与牛奶融合形成美丽的纹理,微距特写","一款高端智能手表在旋转展示台上缓缓旋转,灯光打在表面上反射出金属光泽,黑色背景","一双运动鞋踩入水洼溅起水花,慢动作特写,动感活力的画面"],教育培训:["地球从太空视角缓缓旋转,可以看到大气层和云层的细节,星空背景","一本书的书页被风吹动快速翻动,文字和插图若隐若现,知识流动的意象","显微镜下的细胞分裂过程,色彩鲜明的科学可视化风格"],创意设计:["一座未来主义的城市在日落时分,霓虹灯光倒映在雨水的路面上,赛博朋克风格","水墨在水中缓缓扩散,形成抽象的山水画意境,中国风艺术效果","星空下的极光在天空中舞动,色彩绚烂,延时摄影效果"]},ve={class:"content-wrapper"},_e={class:"config-panel"},fe={class:"config-tabs"},ge={class:"preset-prompts"},ye={class:"preset-list"},he={class:"form-container"},ke={class:"action-container"},be={class:"preview-panel"},we={class:"preview-content"},Ce={key:0,class:"empty-state"},xe={key:1,class:"loading-state"},Te={class:"loading-text"},Ie={class:"elapsed-time"},Fe={class:"status-text"},Ve={key:2,class:"result-video-wrapper"},Be=["src"],Se={class:"video-actions"},$e={key:3,class:"error-state"},ze={class:"error-text"},Ae=ne({__name:"AiVideo",setup(n){const{createMessage:a}=se(),s=y("通用演示"),l=y(!1),c=y(""),u=y(""),f=y(0),g=y("任务已提交排队中...");let i=null,m=null;const B=y(A({},me));ue().then(t=>{t&&Object.keys(t).length>0&&(B.value=t)}).catch(()=>{});const q=E(()=>B.value[s.value]||[]),D=E(()=>{const t=Math.floor(f.value/60),e=f.value%60;return t>0?`${t}分${e}秒`:`${e}秒`}),[K,{validate:N,setFieldsValue:G}]=Z({schemas:de,labelWidth:100,actionColOptions:{span:24},showActionButtonGroup:!1});function H(t){G({prompt:t})}function L(){return F(this,null,function*(){try{const t=yield N();if(!t.prompt||!t.prompt.trim()){a.warning("请输入视频描述");return}l.value=!0,c.value="",u.value="",f.value=0,g.value="任务已提交排队中...",m=setInterval(()=>{f.value++},1e3);const e=yield re({prompt:t.prompt.trim(),category:s.value});if(!e||!e.taskId)throw new Error((e==null?void 0:e.message)||"提交任务失败");g.value="视频生成中...",i=setInterval(()=>F(null,null,function*(){try{const v=yield ce(e.taskId);v.status==="SUCCESS"?(b(),l.value=!1,c.value=v.videoUrl,a.success("视频生成成功")):v.status==="FAIL"&&(b(),l.value=!1,u.value=v.message||"视频生成失败")}catch(v){b(),l.value=!1,u.value="查询任务状态失败: "+(v.message||"未知错误")}}),5e3)}catch(t){if(b(),l.value=!1,t!=null&&t.errorFields)return;u.value=t.message||"提交任务失败"}})}function b(){i&&(clearInterval(i),i=null),m&&(clearInterval(m),m=null)}function S(){c.value="",u.value="",f.value=0}function O(){if(!c.value)return;const t=document.createElement("a");t.href=c.value,t.download=`ai-video-${Date.now()}.mp4`,t.target="_blank",t.click()}return le(()=>{b()}),(t,e)=>{const v=oe,R=ee,w=ie("a-button"),j=te;return p(),h("div",ve,[o("div",_e,[o("div",fe,[r(R,{activeKey:s.value,"onUpdate:activeKey":e[0]||(e[0]=d=>s.value=d),tabBarStyle:{margin:0}},{default:k(()=>[(p(!0),h(P,null,U(_(pe),d=>(p(),M(v,{key:d,tab:d},null,8,["tab"]))),128))]),_:1},8,["activeKey"])]),o("div",ge,[e[1]||(e[1]=o("div",{class:"preset-label"},"快捷提示词",-1)),o("div",ye,[(p(!0),h(P,null,U(q.value,(d,Q)=>(p(),M(w,{key:Q,class:"preset-btn",size:"small",onClick:Pe=>H(d)},{default:k(()=>[T(x(d.length>20?d.substring(0,20)+"...":d),1)]),_:2},1032,["onClick"]))),128))])]),o("div",he,[r(_(Y),{onRegister:_(K)},null,8,["onRegister"])]),o("div",ke,[r(w,{type:"primary",size:"large",block:"",onClick:L,loading:l.value,disabled:l.value},{default:k(()=>[r(_(C),{icon:"ant-design:video-camera-outlined"}),T(" "+x(l.value?"生成中...":"开始生成"),1)]),_:1},8,["loading","disabled"])])]),o("div",be,[e[7]||(e[7]=o("div",{class:"panel-title"},"生成结果",-1)),o("div",we,[!c.value&&!l.value?(p(),h("div",Ce,[r(_(C),{icon:"ant-design:video-camera-outlined",size:"64",color:"#ccc"}),e[2]||(e[2]=o("p",null,"在左侧输入视频描述点击开始生成",-1))])):I("",!0),l.value?(p(),h("div",xe,[r(j,{size:"large"}),o("div",Te,[e[3]||(e[3]=o("p",null,"正在生成视频请耐心等待...",-1)),o("p",Ie,"已等待 "+x(D.value),1),o("p",Fe,x(g.value),1)])])):I("",!0),c.value&&!l.value?(p(),h("div",Ve,[o("video",{src:c.value,controls:"",class:"result-video"},null,8,Be),o("div",Se,[r(w,{type:"primary",onClick:O},{default:k(()=>[r(_(C),{icon:"ant-design:download-outlined"}),e[4]||(e[4]=T(" 下载视频 ",-1))]),_:1}),r(w,{onClick:S},{default:k(()=>[r(_(C),{icon:"ant-design:redo-outlined"}),e[5]||(e[5]=T(" 重新生成 ",-1))]),_:1})])])):I("",!0),u.value&&!l.value?(p(),h("div",$e,[r(_(C),{icon:"ant-design:close-circle-outlined",size:"64",color:"#ff4d4f"}),o("p",ze,x(u.value),1),r(w,{type:"primary",onClick:S},{default:k(()=>[...e[6]||(e[6]=[T("重试",-1)])]),_:1})])):I("",!0)])])])}}}),ut=ae(Ae,[["__scopeId","data-v-27eb9d22"]]);export{ut as default};