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

8 lines
12 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 le=Object.defineProperty,ae=Object.defineProperties;var ne=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable;var H=(a,o,r)=>o in a?le(a,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[o]=r,G=(a,o)=>{for(var r in o||(o={}))ie.call(o,r)&&H(a,r,o[r]);if(N)for(var r of N(o))re.call(o,r)&&H(a,r,o[r]);return a},j=(a,o)=>ae(a,ne(o));var I=(a,o,r)=>new Promise((A,P)=>{var L=c=>{try{h(r.next(c))}catch(y){P(y)}},u=c=>{try{h(r.throw(c))}catch(y){P(y)}},h=c=>c.done?A(c.value):Promise.resolve(c.value).then(L,u);h((r=r.apply(a,o)).next())});import{e as ce,o as ue,r as _,d as de,C as p,z as m,Q as t,f as d,u as g,F as Q,D as Y,A as V,K as ve,H as B,G as S,c as pe,R as me,E}from"./vue-vendor-DNhG1Cve.js";import{B as fe}from"./BasicForm-ClUSoD_-.js";import"./helper-DcLcf4v6.js";import{u as _e}from"./useForm-D61zovon.js";import{d as D,u as ge,v as F,s as ye,bR as xe,aH as he,x as w,au as ke}from"./index-X7Y8jykP.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 be=[{label:"视频尺寸",field:"size",component:"Select",defaultValue:"1920x1080",componentProps:{options:[{label:"1280x720 (720P)",value:"1280x720"},{label:"720x1280",value:"720x1280"},{label:"1024x1024",value:"1024x1024"},{label:"1920x1080 (1080P)",value:"1920x1080"},{label:"1080x1920",value:"1080x1920"},{label:"2048x1080 (2K)",value:"2048x1080"},{label:"3840x2160 (4K)",value:"3840x2160"}],placeholder:"请选择视频尺寸"}},{label:"视频帧率",field:"fps",component:"Select",defaultValue:30,componentProps:{options:[{label:"30 FPS",value:30},{label:"60 FPS",value:60}],placeholder:"请选择视频帧率"}},{label:"视频时长",field:"duration",component:"Select",defaultValue:5,componentProps:{options:[{label:"5秒",value:5},{label:"10秒",value:10}],placeholder:"请选择视频时长"}},{label:"是否ai合成音效",field:"izAiAudio",component:"Select",defaultValue:0,componentProps:{options:[{label:"",value:0},{label:"",value:1}]}}],Ie=a=>D.post({url:"/airag/video/submit",params:a},{isTransformResponse:!1}),q=a=>D.get({url:`/airag/video/query/${a}`},{isTransformResponse:!1}),Se=a=>D.get({url:"/airag/video/listByUser",params:a},{isTransformResponse:!1}),we=a=>D.delete({url:"/airag/video/deleteVideoRecord",params:a},{isTransformResponse:!1,joinParamsToUrl:!0}),Te={class:"ai-video-page"},Ce={class:"content-wrapper"},Ue={class:"control-panel"},Ve={class:"form-container"},Fe={class:"form-item-group"},Ae={class:"preset-group"},Pe={class:"preset-items"},$e=["onClick"],ze={class:"action-btn-group"},Re={class:"preview-panel"},Be={class:"preview-content"},Ee={key:0,class:"empty-state"},De={key:1,class:"loading-state"},Le={class:"loading-text"},Ke={class:"elapsed-time"},Me={class:"status-text"},Ne={key:2,class:"video-player-wrapper"},He=["src"],Ge={key:0,class:"video-info-section"},je={class:"current-video-info"},Qe={class:"info-text"},Ye={class:"history-panel"},qe={class:"history-list-wrapper"},Je={key:0,class:"empty-history"},Oe={key:1,class:"history-list"},We={class:"item-header"},Xe=["title"],Ze={class:"item-time"},et={class:"item-actions"},T="ai_video_task_id",tt=ce({__name:"AiVideo",setup(a){const{createMessage:o}=ye(),r=ge(),A=be.filter(s=>!["text"].includes(s.field)),[P,{validate:L}]=_e({schemas:A,showActionButtonGroup:!1,wrapperCol:{span:24},labelCol:{span:24}}),u=_(!1),h=_(null),c=_(""),y=_(""),x=_(""),K=_([]),M=_(!1),k=_(0),$=_("任务已提交排队中...");let C=null,U=null;const J=pe(()=>{const s=Math.floor(k.value/60),e=k.value%60;return s>0?`${s}分${e}秒`:`${e}秒`}),O=[{title:"沙滩金毛犬",content:"一只金毛犬在金色的沙滩上奔跑海浪轻轻拍打着岸边阳光明媚慢动作镜头"},{title:"航拍山脉全景",content:"航拍壮丽的山脉全景云雾缭绕在山峰之间镜头缓缓推进"},{title:"咖啡微距特写",content:"一杯咖啡被缓缓倒入透明玻璃杯中咖啡与牛奶融合形成美丽的纹理微距特写"},{title:"极光延时摄影",content:"星空下的极光在天空中舞动色彩绚烂延时摄影效果"},{title:"女讲师教学",content:"女讲师站在 PPT 前手持教鞭指向内容表情认真亲和讲解自然流畅手势得体大方光线明亮清晰背景干净整洁1080P 高清画面稳定流畅适合知识讲解课程教学风格专业清晰有说服力"},{title:"口红带货主播",content:`画面主体: 一位美丽的年轻中国女主播,特写镜头,面对镜头微笑。
外貌着装: 她穿着浅色职业装,妆容精致无瑕。
核心动作: 她一只手握着一支高端口红,另一只手优雅地打开盖子,露出丝滑的膏体。她温柔地将口红涂抹在自己的嘴唇上,动作轻柔,目光专注且含笑。
背景环境: 身后是明亮整洁的直播工作室,有环形灯补光,背景呈柔和的虚化效果。
画面质感: 高色彩饱和度电影级布光4k分辨率60fps。
特殊效果: 使用慢镜头捕捉口红涂抹瞬间的丝滑质感。
语言风格:中文,适合电商直播带货场景,风格专业、清晰、有说服力`}];function z(){return I(this,null,function*(){var s,e;try{const l=(s=r.getUserInfo)==null?void 0:s.id;if(!l)return;const n=yield Se({userId:l});if(n&&n.result){const v=Array.isArray(n.result)?n.result:((e=n.result)==null?void 0:e.records)||[];K.value=v.map(i=>j(G({},i),{videoFullUrl:i.videoUrl?F(i.videoUrl):""}))}}catch(l){}})}z();function W(s){M.value||(M.value=!0,x.value=s,setTimeout(()=>{M.value=!1},300))}function f(){C&&(clearInterval(C),C=null),U&&(clearInterval(U),U=null)}function X(){return I(this,null,function*(){var s;try{const e=yield L();if(!x.value.trim()){o.warn("请输入文案内容");return}u.value=!0,c.value="",k.value=0,$.value="任务已提交排队中...",e.prompt=x.value.trim(),U=setInterval(()=>{k.value++},1e3);const l=yield Ie(e);if(!l||!l.success||!((s=l.result)!=null&&s.taskId)){o.error((l==null?void 0:l.message)||"提交任务失败"),u.value=!1,f();return}const n=l.result.taskId;localStorage.setItem(T,n),$.value="视频生成中...",C=setInterval(()=>I(null,null,function*(){try{const v=yield q(n);if(v!=null&&v.success&&v.result){const{status:i,videoUrl:R,message:b}=v.result;i==="SUCCESS"?(f(),u.value=!1,localStorage.removeItem(T),c.value=F(R)||"",y.value=x.value,o.success("视频生成成功"),yield z()):i==="FAIL"&&(f(),u.value=!1,localStorage.removeItem(T),o.error(b||"视频生成失败"))}}catch(v){f(),u.value=!1,o.error("查询任务状态失败: "+(v.message||"未知错误"))}}),5e3)}catch(e){if(f(),u.value=!1,e!=null&&e.errorFields)return;o.error(e.message||"提交任务失败")}})}function Z(s){c.value=s.videoFullUrl||F(s.videoUrl)||"",y.value=s.content,setTimeout(()=>{var e,l;(l=(e=h.value)==null?void 0:e.play)==null||l.call(e)},0)}function ee(s){x.value=s.content,o.success("已将文案填入输入框")}function te(s){const e=s.videoFullUrl||F(s.videoUrl);if(!e){o.error("下载地址不存在");return}const l=document.createElement("a");l.href=e,l.download=s.fileName||`video-${Date.now()}.mp4`,l.target="_blank",document.body.appendChild(l),l.click(),document.body.removeChild(l)}function se(s){return I(this,null,function*(){var l;const e=(l=r.getUserInfo)==null?void 0:l.id;if(e)try{const n=yield we({userId:e,recordId:s});n.success?(o.success("已删除"),yield z()):o.error(n.message||"删除失败")}catch(n){o.error("删除失败")}})}function oe(s){return(s==null?void 0:s.createTime)||""}return ue(()=>{const s=localStorage.getItem(T);s&&(u.value=!0,c.value="",k.value=0,$.value="任务恢复中继续等待...",U=setInterval(()=>{k.value++},1e3),C=setInterval(()=>I(null,null,function*(){try{const e=yield q(s);if(e!=null&&e.success&&e.result){const{status:l,videoUrl:n,message:v}=e.result;l==="SUCCESS"?(f(),u.value=!1,localStorage.removeItem(T),c.value=F(n)||"",o.success("视频生成成功"),yield z()):l==="FAIL"&&(f(),u.value=!1,localStorage.removeItem(T),o.error(v||"视频生成失败"))}}catch(e){f(),u.value=!1,o.error("查询任务状态失败: "+(e.message||"未知错误"))}}),5e3))}),de(()=>{f()}),(s,e)=>{const l=xe,n=ve("a-button"),v=he;return m(),p("div",Te,[e[15]||(e[15]=t("div",{class:"page-header"},[t("div",{class:"title"},"AI视频"),t("div",{class:"subtitle"},"将文本快速转换为生动的视频内容")],-1)),t("div",Ce,[t("div",Ue,[e[4]||(e[4]=t("div",{class:"panel-title"},"视频配置",-1)),t("div",Ve,[d(g(fe),{onRegister:g(P),schemas:g(A)},null,8,["onRegister","schemas"]),t("div",Fe,[e[1]||(e[1]=t("label",{class:"form-label"},"文案",-1)),d(l,{value:x.value,"onUpdate:value":e[0]||(e[0]=i=>x.value=i),rows:4,maxlength:500,"show-count":"",placeholder:"请输入要生成视频的文案内容"},null,8,["value"])]),t("div",Ae,[e[2]||(e[2]=t("div",{class:"preset-label"},"常用场景",-1)),t("div",Pe,[(m(),p(Q,null,Y(O,(i,R)=>t("div",{key:R,class:"preset-item",onClick:me(b=>W(i.content),["prevent"])},S(i.title),9,$e)),64))])])]),t("div",ze,[d(n,{type:"primary",size:"large",block:"",loading:u.value,onClick:X},{default:V(()=>[d(g(w),{icon:"ant-design:video-camera-outlined"}),e[3]||(e[3]=E(" 开始生成 ",-1))]),_:1},8,["loading"])])]),t("div",Re,[e[9]||(e[9]=t("div",{class:"panel-title"},"预览区域",-1)),t("div",Be,[!c.value&&!u.value?(m(),p("div",Ee,[d(g(w),{icon:"ant-design:video-camera-outlined",size:"72",color:"#c0c4cc"}),e[5]||(e[5]=t("p",null,"填写左侧文案并点击开始生成",-1)),e[6]||(e[6]=t("p",{class:"tip"},"支持调整视频长度风格和效果生成更加个性化的视频内容",-1))])):B("",!0),u.value?(m(),p("div",De,[d(v,{size:"large"}),t("div",Le,[e[7]||(e[7]=t("p",null,"正在生成视频请耐心等待...",-1)),t("p",Ke,"已等待 "+S(J.value),1),t("p",Me,S($.value),1)])])):B("",!0),c.value&&!u.value?(m(),p("div",Ne,[t("video",{ref_key:"videoRef",ref:h,src:c.value,controls:"",class:"video-control"},null,8,He)])):B("",!0)]),c.value?(m(),p("div",Ge,[t("div",je,[e[8]||(e[8]=t("span",{class:"info-label"},"当前视频",-1)),t("span",Qe,S(y.value),1)])])):B("",!0)]),t("div",Ye,[e[14]||(e[14]=t("div",{class:"panel-title"},"生成历史",-1)),t("div",qe,[K.value.length===0?(m(),p("div",Je,[...e[10]||(e[10]=[t("p",null,"暂无生成历史",-1)])])):(m(),p("div",Oe,[(m(!0),p(Q,null,Y(K.value,(i,R)=>(m(),p("div",{key:i.id,class:"history-item"},[t("div",We,[t("span",{class:"item-title",title:i.content},S(i.content),9,Xe),t("span",Ze,S(oe(i)),1)]),t("div",et,[d(n,{type:"text",size:"small",onClick:b=>Z(i)},{default:V(()=>[d(g(w),{icon:"ant-design:play-circle-outlined"}),e[11]||(e[11]=E(" 播放 ",-1))]),_:1},8,["onClick"]),d(n,{type:"text",size:"small",onClick:b=>ee(i)},{default:V(()=>[d(g(w),{icon:"ant-design:copy-outlined"}),e[12]||(e[12]=E(" 复用文案 ",-1))]),_:1},8,["onClick"]),d(n,{type:"text",size:"small",onClick:b=>te(i)},{default:V(()=>[d(g(w),{icon:"ant-design:download-outlined"}),e[13]||(e[13]=E(" 下载 ",-1))]),_:1},8,["onClick"]),d(n,{type:"text",size:"small",danger:"",onClick:b=>se(i.id)},{default:V(()=>[d(g(w),{icon:"ant-design:delete-outlined"})]),_:1},8,["onClick"])])]))),128))]))])])])])}}}),At=ke(tt,[["__scopeId","data-v-37f55e46"]]);export{At as default};