2 lines
7.5 KiB
Java
2 lines
7.5 KiB
Java
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};
|