EASYAIuniappNewUI/dist/build/mp-weixin/composables/useWorkFlow.js
2025-02-08 18:50:38 +08:00

2 lines
5.8 KiB
JavaScript
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.

"use strict";const e=require("../common/vendor.js"),t=require("../types/index.js"),a=require("../utils/request.js"),o=require("./useCommon.js"),s=require("../stores/appStore.js"),n=require("../utils/common.js");exports.getModelListByWorkflowId=e=>a.request(`/draw/getModelListById/${e}`),exports.useWorkFlow=function(){const i=e.ref({}),l=[{param:"seed",component:"Seed",title:"随机种子"},{param:"seed_2",component:"Seed",title:"随机种子"},{param:"seed_3",component:"Seed",title:"随机种子"},{param:"seed_4",component:"Seed",title:"随机种子"},{param:"seed_5",component:"Seed",title:"随机种子"},{param:"ckpt_name",component:"ModeSelect",title:"大模型选择"},{param:"positive",component:"Positive",title:"正向提示词"},{param:"width",component:"Width",title:"图片宽度"},{param:"height",component:"Height",title:"图片高度"},{param:"batch_size",component:"CustomNumberBox",title:"生成批次"},{param:"image_path_origin",component:"ImageUpload",title:"原图上传"},{param:"image_path_mask",component:"ImageUpload",title:"遮罩上传"},{param:"image_path_face",component:"ImageUpload",title:"参考上传"},{param:"image_path_style",component:"ImageUpload",title:"参考上传"},{param:"advance_select_image_preview",component:"ImageSelectPreview",title:"高级-图像预览选择"},{param:"advance_select_image_preview_2",component:"ImageSelectPreview",title:"高级-图像预览选择"},{param:"advance_select_image_preview_3",component:"ImageSelectPreview",title:"高级-图像预览选择"},{param:"advance_select_image_preview_4",component:"ImageSelectPreview",title:"高级-图像预览选择"}],r=e.ref({}),{localTasks:u}=e.storeToRefs(s.useAppStore()),c=e.computed((()=>i.value&&i.value.params?i.value.params.filter((e=>"output"!==e.name)):[])),d=e.computed((()=>{var e;return i.value&&i.value.params&&(null==(e=i.value.params.find((e=>"output"===e.name)))?void 0:e.outputType)||"image"})),m=()=>{i.value&&i.value.params&&i.value.params.forEach((e=>{r.value[e.name]=e.param}))},p=e.inject("socketState");if(!p)throw new Error("socketState is not provided");const v=async(s={params:{type:t.IWebsocketSceneType.drawProcessPush,data:{scene_str:""}}})=>{var n,i,l,r,u,c;if(!o.isLogin.value)throw new Error("未登录状态不允许初始化Websocket");if(console.log("socket init executionstatus",null==(n=p.socket)?void 0:n.readyState),(null==p?void 0:p.isInitialized)&&(null==(l=null==(i=p.options)?void 0:i.params)?void 0:l.type)===(null==(r=s.params)?void 0:r.type))return void console.log("WebSocket is already initialized");(null==p?void 0:p.isInitialized)&&(null==(u=null==p?void 0:p.options.params)?void 0:u.type)!==(null==(c=s.params)?void 0:c.type)&&(console.log("WebSocket is already initialized,but scene is different,reinitialize"),await new Promise((t=>{e.index.closeSocket({code:1e3,reason:"Initializing new WebSocket",success(e){t(!0)},fail(e){t(!1)}})})),p.isInitialized=!1);const{params:d}=s,{type:m,data:v}=d,{uniPlatform:_}=e.index.getSystemInfoSync();p.socket=e.index.connectSocket({url:`${a.getBaseWsURL()}?user_id=${o.getLoginInfo()._id}&type=${m}&platform=${_}&data=${v}`,complete:()=>{console.log("WebSocket connect complete")}}),p.isInitialized=!0,e.index.onSocketOpen((e=>{console.log("WebSocket opened",e),p.options=s,s.onConnect&&s.onConnect()})),e.index.onSocketMessage((e=>{s.onMessage&&s.onMessage(e.data),g(e.data)})),e.index.onSocketError((e=>{console.error("WebSocket onError",e),p.isInitialized=!1,s.onConnectError&&s.onConnectError(e)})),e.index.onSocketClose((()=>{p.isInitialized=!1,console.log("WebSocket onClose"),s.onDisconnect&&s.onDisconnect()}))},g=(e,t)=>{console.log("原始消息",e);const a=n.parseJSONToObject(e);console.log("handleSocketMessage",a);const{type:s,data:i,queue_status:l}=a;if(l){const e=u.value.findIndex((e=>e._id===l.task_id));-1!==e&&(u.value[e].progress=l.progress,u.value[e].queue=l.queue,l.time_remained&&(u.value[e].time_remained=l.time_remained),l.message&&(u.value[e].message=l.message)),"started"===l.status&&-1!==e&&(u.value[e].status=4,u.value[e].message="任务开始"),"failed"!==l.status&&-1!==e&&3===u.value[e].status&&(u.value[e].status=0,u.value[e].message=l.message),"success"===l.status&&-1!==e&&1!==u.value[e].status&&(u.value[e].output=l.data.output,u.value[e].type=l.data.type,u.value[e].status=1,console.log("localTasks",u),o.refreshUserInfo().then()),"failed"===l.status&&-1!==e&&2!==u.value[e].status&&(u.value[e].status=2,u.value[e].message=l.message)}},_=async()=>{const e={params:{...r.value},workflow_id:i.value._id,user_id:o.getLoginInfo()._id,options:{workflow_id:i.value._id,workflow_title:i.value.title,workflow_name:i.value.name},type:d.value};return await(t=e,a.request("/draw/history",{method:"POST",data:t}));var t};return{workflow:i,workFlowParamLists:c,bindParam:r,params_component_list:l,socketInit:v,handleFindComponentName:e=>{const t=l.find((t=>t.param===e));return null==t?void 0:t.component},handleGetWorkFlwById:async e=>{i.value=await a.request(`/workflow/${e}`),m()},handleSubmitTaskTask:async()=>{if(!o.isLogin.value)return void e.index.showToast({title:"请先登录",icon:"none",duration:2e3});await((e=200)=>new Promise((t=>{var a;const o=setTimeout((()=>{t(!1)}),e);p&&p.socket&&p.isInitialized?null==(a=p.socket)||a.send({data:"ping",success(e){console.log(e),clearTimeout(o),t(!0)}}):t(!1)})))()||await v();const t=await _();if(console.log("newTask",t),!t)return;u.value.unshift(t);const s={params:{...r.value},options:{workflow_id:i.value._id,task_id:t._id}},n=await(l=s,a.request("/draw/customWorkflow",{method:"POST",data:l}));var l;"success"===n.status&&n.output&&n.output.length>0&&(await(async(e,t)=>{const a=u.value.findIndex((t=>t._id===e._id));-1!==a&&(u.value[a].output=t.output,u.value[a].status=1,u.value=[...u.value])})(t,n),o.refreshUserInfo().then()),"failed"!==n.status&&"rejected"!==n.status||e.index.showToast({title:n.message,icon:"none",duration:2e3})}}};