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

3 lines
9.3 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 A=(S,u,h)=>new Promise((i,d)=>{var s=r=>{try{g(h.next(r))}catch(c){d(c)}},l=r=>{try{g(h.throw(r))}catch(c){d(c)}},g=r=>r.done?i(r.value):Promise.resolve(r.value).then(s,l);g((h=h.apply(S,u)).next())});import{e as J,h as G,o as H,r as y,d as N,C as b,z as f,Q as o,y as O,H as w,f as a,A as m,R as F,K as L,u as _,F as Q,E as I}from"./vue-vendor-DNhG1Cve.js";import{e as X}from"./index-C69VKHba.js";import Y from"./ImageViewer-DC0qDdlD.js";import{a1 as W,aU as Z,aH as ee,d as R,s as te,aX as oe,x as U,au as ae}from"./index-X7Y8jykP.js";import{u as se}from"./useForm-D61zovon.js";import{B as le}from"./BasicForm-ClUSoD_-.js";import{b as ie}from"./index-CeNCCWzL.js";import"./helper-DcLcf4v6.js";import"./index-BzChaRPg.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"./emoji-mart-vue-fast-R0uJEDq-.js";import"./useTimeout-D5AmIBZw.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./breakpointEnum-BhAg6bcX.js";import"./index-BDvqZ5j4.js";import"./BasicModal-xH56XuRZ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./useAppInject-DPZGPcR3.js";import"./index-CuWaQdlK.js";import"./index-saD4h7VJ.js";import"./useBreakpoint-DXhPW7nV.js";import"./useEventListener-BRXjwk7A.js";import"./uniqBy--vsL0WVB.js";const V=[{field:"drawModelId",label:"模型",component:"JDictSelectTag",required:!0,helpMessage:["1、需要选择已激活的图像模型","2、当前推荐通义万象模型 (wan2.5-i2i-preview)","3、建议上传清晰的模特图和服装图以获得最佳效果"],componentProps:{dictCode:"airag_model where model_type = 'IMAGE' and activate_flag = 1,name,id",placeholder:"请选择图像模型"}},{field:"modelImage",label:"模特图片",component:"JImageUpload",required:!0,componentProps:{fileMax:1,text:"上传模特"},helpMessage:["上传模特图片,建议使用全身照,正面清晰"]},{field:"clothUpload",label:"服装",slot:"clothUpload",component:"Input",required:!1},{field:"userPrompt",label:"提示词",component:"InputTextArea",componentProps:{rows:4,placeholder:"在此输入你的提示词,或使用示例快速填充"},required:!0}],ne=[{field:"drawModelId",label:"模型",component:"JDictSelectTag",required:!0,helpMessage:["1、需要选择已激活的视频模型","2、建议选择支持图生视频的模型"],componentProps:{dictCode:"airag_model where model_type = 'VIDEO' and activate_flag = 1,name,id",placeholder:"请选择视频模型"}},{field:"modelImage",label:"模特图片",component:"JImageUpload",componentProps:{fileMax:1,text:"上传模特"},helpMessage:["上传模特图片,建议使用全身照,正面清晰"]},{field:"clothUpload",label:"",slot:"clothUpload",component:"Input",required:!1},{field:"userPrompt",label:"自定义提示词",component:"InputTextArea",componentProps:{rows:4,placeholder:"在此输入你的提示词,或使用下方示例快速填充"},required:!1}],re={class:"ai-cloth-change-page"},ce={class:"cloth-change-wrapper"},de={class:"config-panel"},pe={class:"config-tabs"},me={class:"form-scroll"},ue={class:"examples-row",role:"toolbar","aria-label":"示例"},ge={class:"section-block"},ve={key:0,class:"ai-notice"},fe={class:"action-bar"},_e={class:"preview-panel"},he={class:"preview-content"},ye={key:0,class:"empty-state"},be={key:1,class:"loading-state"},we={key:2,class:"result-image-wrapper group"},Ie=["src"],ke={class:"hover-actions"},xe={key:3,class:"result-video-wrapper group"},Ce=["src"],Ue={class:"hover-actions"},j="ai_cloth_task_id",je=J({__name:"AiClothChange",setup(S){const{createMessage:u}=te(),{domainUrl:h}=W(),i=y("image"),d=y(""),s=y(!1),l=y(""),g=y(!1),r=y(null);let c=null;const[B,{validate:E,resetSchema:q,getFieldsValue:Se,setFieldsValue:M}]=se({schemas:V,showActionButtonGroup:!1,wrapperCol:{span:24},labelCol:{span:24}});G(i,t=>{l.value="",q(t==="image"?V:ne)});function z(t){const e=(t.userPrompt||"").toString().trim();if(e)return`用户提示:
${e}`}function P(t){const e=()=>{R.get({url:`/airag/chat/getAiPosterResult/${t}`},{isTransformResponse:!1}).then(n=>{if(n.success)if(n.result==="pending"||n.result===null)c=setTimeout(e,3e3);else{const k=/#\s*{\s*domainURL\s*}/g;l.value=n.result.replace(k,h+"/sys/common/static"),s.value=!1,localStorage.removeItem(j),u.success(i.value==="image"?"图片生成成功":"视频生成成功")}else s.value=!1,localStorage.removeItem(j),u.warning(n.message||"生成失败")}).catch(()=>{c=setTimeout(e,3e3)})};e()}function $(){return A(this,null,function*(){const t=(d.value||"").split(",").filter(Boolean);if(t.length===0){u.warning("请上传服装图片");return}try{const e=yield E();s.value=!0,l.value="";const n=[];if(e.modelImage){const v=(e.modelImage||"").toString().split(",")[0];v&&n.push(v)}if(n.push(...t),i.value==="image")e.imageSize="720*1280";else{u.info("敬请期待"),s.value=!1;return}const k=z(e),p={drawModelId:e.drawModelId,content:k,imageUrl:n.join(","),type:i.value==="image"?"cloth_image":"cloth_video",imageSize:e.imageSize},x=yield R.post({url:"/airag/chat/genAiPosterAsync",params:p},{isTransformResponse:!1});if(x.success&&x.result){const v=x.result;localStorage.setItem(j,v),P(v)}else s.value=!1,u.warning("提交任务失败")}catch(e){s.value=!1}})}H(()=>{const t=localStorage.getItem(j);t&&(s.value=!0,l.value="",P(t))}),N(()=>{c&&(clearTimeout(c),c=null)});function T(){if(!l.value)return;const t=document.createElement("a");t.href=l.value,t.download=`ai-cloth-change-${Date.now()}.${i.value==="image"?"jpg":"mp4"}`,t.target="_blank",t.click()}function D(){const t="图像映射: 图一=模特; 图二=服装素材任务: 将图二整体替换到图一身上保持模特面部与姿态不变服装贴合自然光影一致;服装贴合自然光影一致风格写实高清请输出高质量合成图",e="https://jeecgdev.oss-cn-beijing.aliyuncs.com/upload/test/model_1772695749704.jpg";d.value="https://jeecgdev.oss-cn-beijing.aliyuncs.com/upload/test/dress_1772700962866.jpg",M({userPrompt:t,modelImage:e})}function K(){const t="图像映射: 图一=模特; 图二=上衣素材; 图三=下装素材(可选)。任务: 仅将图二的上衣替换到图一上半身(胸部/肩部/袖口),严格不修改面部或下半身; 对齐按肩线/胸围并融合光照; 风格写实高清。请输出高质量合成图",e="https://jeecgdev.oss-cn-beijing.aliyuncs.com/upload/test/model_1772695749704.jpg";d.value="https://jeecgdev.oss-cn-beijing.aliyuncs.com/upload/test/jacket_1772701290346.jpg,https://jeecgdev.oss-cn-beijing.aliyuncs.com/upload/test/pants_1772701320192.jpg",M({userPrompt:t,modelImage:e})}return(t,e)=>{const n=oe,k=Z,p=L("a-button"),x=ie,v=ee;return f(),b(Q,null,[o("div",re,[e[11]||(e[11]=o("div",{class:"page-header"},[o("h1",{class:"page-title"},"AI 换衣"),o("div",{class:"header-desc"},"将模特图片和服装图片上传AI自动生成换衣效果")],-1)),o("div",ce,[o("div",de,[o("div",pe,[a(k,{activeKey:i.value,"onUpdate:activeKey":e[0]||(e[0]=C=>i.value=C),tabBarStyle:{margin:0}},{default:m(()=>[a(n,{key:"image",tab:"生成图片"}),a(n,{key:"video",tab:"生成视频"})]),_:1},8,["activeKey"])]),o("div",me,[o("div",ue,[a(p,{class:"example-btn",type:"default",onClick:F(D,["prevent"])},{default:m(()=>[...e[4]||(e[4]=[I("示例:换整体服装",-1)])]),_:1}),a(p,{class:"example-btn",type:"default",onClick:F(K,["prevent"])},{default:m(()=>[...e[5]||(e[5]=[I("示例:上衣/裤子",-1)])]),_:1})]),a(_(le),{onRegister:_(B)},{clothUpload:m(()=>[o("div",ge,[a(_(X),{value:d.value,"onUpdate:value":e[1]||(e[1]=C=>d.value=C),fileMax:2,text:"上传服装"},null,8,["value"])])]),_:1},8,["onRegister"]),i.value==="video"?(f(),b("div",ve,[a(x,{message:"视频生成可能需要较长时间,请耐心等待~",type:"info","show-icon":"",closable:!1})])):w("",!0)]),o("div",fe,[a(p,{type:"primary",size:"large",block:"",class:"gen-btn",loading:s.value,onClick:$},{default:m(()=>[...e[6]||(e[6]=[I(" 生成 ",-1)])]),_:1},8,["loading"])])]),o("div",_e,[o("div",he,[!l.value&&!s.value?(f(),b("div",ye,[a(_(U),{icon:"ant-design:picture-outlined",size:"64",color:"#ccc"}),e[7]||(e[7]=o("p",null,"在左侧配置后点击「生成」",-1))])):w("",!0),s.value?(f(),b("div",be,[a(v,{size:"large",tip:`正在${i.value==="image"?"生成图片":"生成视频"},请稍候...`},null,8,["tip"])])):w("",!0),i.value==="image"&&l.value&&!s.value?(f(),b("div",we,[o("img",{src:l.value,class:"result-image",alt:"换衣结果"},null,8,Ie),o("div",ke,[a(p,{type:"primary",ghost:"",onClick:e[2]||(e[2]=C=>g.value=!0)},{default:m(()=>[a(_(U),{icon:"ant-design:eye-outlined"}),e[8]||(e[8]=I(" 预览 ",-1))]),_:1}),a(p,{type:"primary",ghost:"",onClick:T},{default:m(()=>[a(_(U),{icon:"ant-design:download-outlined"}),e[9]||(e[9]=I(" 下载 ",-1))]),_:1})])])):w("",!0),i.value==="video"&&l.value&&!s.value?(f(),b("div",xe,[o("video",{ref_key:"videoRef",ref:r,src:l.value,controls:"",class:"result-video"},null,8,Ce),o("div",Ue,[a(p,{type:"primary",ghost:"",onClick:T},{default:m(()=>[a(_(U),{icon:"ant-design:download-outlined"}),e[10]||(e[10]=I(" 下载 ",-1))]),_:1})])])):w("",!0)])])])]),g.value?(f(),O(Y,{key:0,imageUrl:l.value,onHide:e[3]||(e[3]=C=>g.value=!1)},null,8,["imageUrl"])):w("",!0)],64)}}}),nt=ae(je,[["__scopeId","data-v-fde1795d"]]);export{nt as default};