2 lines
5.8 KiB
JavaScript
2 lines
5.8 KiB
JavaScript
"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 execution,status",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})}}};
|