Files
JuYou/API/static/web/assets/ModelConfigDialog-BZPjXRWk.js
2026-08-25 17:59:42 +08:00

2 lines
10 KiB
JavaScript

import{d as de,B as me,o as u,c,e as a,w as m,a as s,F as O,v as P,j as b,t as L,b as N,D as ce,s as k,q as E,K as ve,X as fe,A as X,k as B,m as G,r as g,L as _e,p as ge,f as ye}from"./index-p1BAR2Hc.js";import{a as I}from"./CreativeSelect-CikGCVMP.js";import{_ as be}from"./_plugin-vue_export-helper-DlAUqK2U.js";function M(r){if(!r)return"价格未配置";const y=Number(r.price);return Number.isFinite(y)?`${Number(y.toFixed(4))} 积分/${r.unit||"次"}`:"价格未配置"}function ke(r){return(r==null?void 0:r.model_type)==="text"&&r.text_billing_mode==="per_token"}function Ve(r,y,i="default"){if(!r)return"价格未配置";if(ke(r)){const v=y.find(o=>o.model_id===r.id&&o.price_key.toLowerCase()==="input"),T=y.find(o=>o.model_id===r.id&&o.price_key.toLowerCase()==="output");return`输入 ${M(v)} · 输出 ${M(T)}`}return M(y.find(v=>v.model_id===r.id&&v.price_key.toLowerCase()===i.toLowerCase()))}const Ce={class:"model-config-list"},we={class:"model-config-header"},xe={key:0,class:"price"},je={key:1,class:"prompt-buttons"},Oe=["onClick"],Be={class:"model-config-row"},Ue={class:"model-select"},$e={key:0,class:"resolution-select"},Le={key:1,class:"resolution-select"},Ne={class:"prompt-layout"},Te={class:"prompt-sidebar"},Pe={class:"prompt-sidebar-head"},Se={class:"prompt-list"},ze=["onClick"],De={key:0,class:"prompt-empty"},Fe={class:"prompt-editor"},Ee={class:"prompt-actions"},Ie=de({__name:"ModelConfigDialog",props:{modelValue:{type:Boolean},options:{},configs:{},saving:{type:Boolean,default:!1},prompts:{default:()=>[]},promptSelections:{default:()=>({})},projectType:{default:"video_redraw"},analysisOnly:{type:Boolean}},emits:["update:modelValue","save","prompt-select","prompt-create","prompt-update","prompt-delete"],setup(r,{emit:y}){const i=r,v=y,T=X(()=>{const t=[{purpose:"prompt_reverse",label:i.projectType==="video_redraw"?"反推模型":"文本模型",type:"text"}];return i.analysisOnly||t.push({purpose:"image_generation",label:"图片模型",type:"image"},{purpose:"video_generation",label:"视频模型",type:"video"}),t}),o=G({prompt_reverse:{model_id:"",settings:{prompt:""}},image_generation:{model_id:"",settings:{aspect_ratio:"16:9",resolution:"1k",prompt:""}},video_generation:{model_id:"",settings:{aspect_ratio:"16:9",resolution:"480p",prompt:""}}}),H=["1k","2k","4k"],Q=["480p","720p","1080p"],W=H.map(t=>({value:t,label:t.toUpperCase()})),Y=Q.map(t=>({value:t,label:t.toUpperCase()}));me(()=>[i.modelValue,i.configs,i.options.models],()=>{var t;if(i.modelValue){for(const e of T.value){const _=i.configs.find(d=>d.model_type===e.type||d.purpose===e.purpose);o[e.purpose].model_id=(_==null?void 0:_.model_id)||((t=R(e)[0])==null?void 0:t.value)||"",Object.assign(o[e.purpose].settings,(_==null?void 0:_.settings)||{})}o.image_generation.settings.aspect_ratio="16:9",o.video_generation.settings.aspect_ratio="16:9",o.video_generation.settings.resolution||(o.video_generation.settings.resolution="480p")}},{immediate:!0});function R(t){return i.options.models.filter(e=>e.model_type===t.type&&(t.purpose!=="prompt_reverse"||i.projectType!=="video_redraw"||e.multimodal)).map(e=>({label:`【${e.channel_name}${e.name}`,value:e.id}))}function J(t){const e=t==="prompt_reverse"?"default":o[t].settings.resolution,_=i.options.models.find(d=>d.id===o[t].model_id);return Ve(_,i.options.prices||[],String(e))}function Z(){v("save",Object.fromEntries(T.value.map(t=>[t.purpose,JSON.parse(JSON.stringify(o[t.purpose]))])))}const S=B(!1),V=B(""),q=B(""),U=B("image_generation"),$=B(""),C=B(!1),w=B(!1),l=G({id:"",name:"",type:"",content:""}),h=[{value:"剧本反推",label:"剧本反推"},{value:"剧本分析",label:"剧本分析"},{value:"角色生成",label:"角色生成"},{value:"场景生成",label:"场景生成"},{value:"道具生成",label:"道具生成"},{value:"分镜图生成",label:"分镜图生成"},{value:"首尾帧生成",label:"首尾帧生成"},{value:"视频生成",label:"视频生成"}],x=X(()=>i.prompts.filter(t=>t.type===V.value));function ee(t,e,_){U.value=t,V.value=e,q.value=_;const d=i.promptSelections[e]||"";$.value=d;const j=x.value.find(z=>z.id===d)||x.value[0];j?Object.assign(l,j):Object.assign(l,{id:"",name:"",type:e,content:o[t].settings.prompt||""}),d&&j&&(o[t].settings.prompt=j.content),C.value=!1,w.value=!1,S.value=!0}function te(t){$.value=t.id,Object.assign(l,t),t.id&&(o[U.value].settings.prompt=t.content),t.id&&v("prompt-select",{purpose:U.value,type:V.value,promptId:t.id,content:t.content})}function oe(t,e){$.value=e?t.id:"",e&&(Object.assign(l,t),o[U.value].settings.prompt=t.content),v("prompt-select",{purpose:U.value,type:V.value,promptId:e?t.id:"",content:e?t.content:""})}function le(){w.value=!0,C.value=!1,Object.assign(l,{id:"",name:"",type:V.value,content:""})}function ne(){var t;!l.id||((t=i.prompts.find(e=>e.id===l.id))==null?void 0:t.editable)===!1||(C.value=!0,w.value=!1)}function se(){w.value=!1,C.value=!1;const t=x.value.find(e=>e.id===$.value);t&&Object.assign(l,t)}function ae(){const t=l.name.trim(),e=l.content.trim();!t||!e||(w.value?v("prompt-create",{name:t,type:V.value,content:e}):l.id&&v("prompt-update",{id:l.id,name:t,type:l.type||V.value,content:e}),o[U.value].settings.prompt=e,w.value=!1,C.value=!1)}function ie(){const t=x.value.find(e=>e.id===l.id);(t==null?void 0:t.editable)!==!1&&v("prompt-delete",t)}const A=t=>t==="prompt_reverse"?i.projectType==="video_redraw"?[{type:"剧本反推",label:"剧本反推提示词"}]:i.projectType==="script_analysis"?[{type:"剧本分析",label:"模型分析提示词"}]:[]:t==="image_generation"?[{type:"角色生成",label:"角色生图提示词"},{type:"场景生成",label:"场景生图提示词"},{type:"道具生成",label:"道具生图提示词"}]:t==="video_generation"?[{type:"视频生成",label:"视频生成提示词"}]:[];return(t,e)=>{const _=g("el-icon"),d=g("el-button"),j=g("el-dialog"),z=g("el-switch"),D=g("el-input"),F=g("el-form-item"),pe=g("el-option"),re=g("el-select"),ue=g("el-form");return u(),c(O,null,[a(j,{"model-value":r.modelValue,title:"模型配置",width:"min(860px, calc(100vw - 28px))",class:"web-dialog creative-dialog model-config-dialog",onClose:e[3]||(e[3]=p=>v("update:modelValue",!1))},{footer:m(()=>[a(d,{onClick:e[2]||(e[2]=p=>v("update:modelValue",!1))},{default:m(()=>[...e[13]||(e[13]=[b("取消",-1)])]),_:1}),a(d,{type:"primary",loading:r.saving,onClick:Z},{default:m(()=>[...e[14]||(e[14]=[b("保存配置",-1)])]),_:1},8,["loading"])]),default:m(()=>[s("div",Ce,[(u(!0),c(O,null,P(T.value,p=>(u(),c("section",{key:p.purpose,class:"model-config-card"},[s("header",we,[s("strong",null,L(p.label),1),J(p.purpose)?(u(),c("span",xe,L(J(p.purpose)),1)):k("",!0),A(p.purpose).length?(u(),c("div",je,[(u(!0),c(O,null,P(A(p.purpose),f=>(u(),c("button",{key:f.type,type:"button",class:"prompt-button",onClick:n=>ee(p.purpose,f.type,f.label)},[a(_,null,{default:m(()=>[a(N(_e))]),_:1}),b(L(f.label),1)],8,Oe))),128))])):k("",!0)]),s("div",Be,[s("div",Ue,[e[10]||(e[10]=s("label",null,"模型",-1)),a(I,{modelValue:o[p.purpose].model_id,"onUpdate:modelValue":f=>o[p.purpose].model_id=f,options:R(p),filterable:"",placeholder:"请选择模型"},null,8,["modelValue","onUpdate:modelValue","options"])]),p.type==="image"?(u(),c("div",$e,[e[11]||(e[11]=s("label",null,"分辨率",-1)),a(I,{modelValue:o.image_generation.settings.resolution,"onUpdate:modelValue":e[0]||(e[0]=f=>o.image_generation.settings.resolution=f),options:N(W),placeholder:"请选择分辨率"},null,8,["modelValue","options"])])):k("",!0),p.type==="video"?(u(),c("div",Le,[e[12]||(e[12]=s("label",null,"分辨率",-1)),a(I,{modelValue:o.video_generation.settings.resolution,"onUpdate:modelValue":e[1]||(e[1]=f=>o.video_generation.settings.resolution=f),options:N(Y),placeholder:"请选择分辨率"},null,8,["modelValue","options"])])):k("",!0)])]))),128))])]),_:1},8,["model-value"]),a(j,{modelValue:S.value,"onUpdate:modelValue":e[9]||(e[9]=p=>S.value=p),title:q.value,width:"min(900px, calc(100vw - 28px))",class:"web-dialog creative-dialog prompt-preset-dialog"},{default:m(()=>{var p,f;return[s("div",Ne,[s("aside",Te,[s("div",Pe,[s("span",null,[e[15]||(e[15]=s("strong",null,"提示词列表",-1)),s("em",null,L(x.value.length),1)]),a(d,{size:"small",icon:N(ce),onClick:le},{default:m(()=>[...e[16]||(e[16]=[b("新建",-1)])]),_:1},8,["icon"])]),s("div",Se,[(u(!0),c(O,null,P(x.value,n=>(u(),c("div",{key:n.id,class:ge(["prompt-item-row",{active:n.id===$.value}])},[s("button",{type:"button",class:"prompt-item",onClick:K=>te(n)},[s("span",null,L(n.name),1),s("em",null,L(n.scope==="user"?"自定义":"系统"),1)],8,ze),a(z,{"model-value":n.id===$.value,size:"small",onClick:e[4]||(e[4]=ye(()=>{},["stop"])),onChange:K=>oe(n,!!K)},null,8,["model-value","onChange"])],2))),128)),x.value.length?k("",!0):(u(),c("p",De," 暂无提示词 "))])]),s("section",Fe,[w.value||C.value?(u(),c(O,{key:0},[a(ue,{"label-position":"top"},{default:m(()=>[a(F,{label:"提示词名称"},{default:m(()=>[a(D,{modelValue:l.name,"onUpdate:modelValue":e[5]||(e[5]=n=>l.name=n),placeholder:"请输入提示词名称"},null,8,["modelValue"])]),_:1}),C.value?(u(),E(F,{key:0,label:"适用类型"},{default:m(()=>[a(re,{modelValue:l.type,"onUpdate:modelValue":e[6]||(e[6]=n=>l.type=n)},{default:m(()=>[(u(),c(O,null,P(h,n=>a(pe,{key:n.value,label:n.label,value:n.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1})):k("",!0),a(F,{label:"提示词内容"},{default:m(()=>[a(D,{modelValue:l.content,"onUpdate:modelValue":e[7]||(e[7]=n=>l.content=n),type:"textarea",rows:14,resize:"none"},null,8,["modelValue"])]),_:1})]),_:1}),s("div",Ee,[a(d,{onClick:se},{default:m(()=>[...e[17]||(e[17]=[b("取消",-1)])]),_:1}),a(d,{type:"primary",onClick:ae},{default:m(()=>[...e[18]||(e[18]=[b("保存",-1)])]),_:1})])],64)):(u(),c(O,{key:1},[s("header",null,[e[21]||(e[21]=s("span",null,"内容预览",-1)),s("div",null,[l.id&&((p=i.prompts.find(n=>n.id===l.id))==null?void 0:p.scope)==="user"?(u(),E(d,{key:0,link:"",icon:N(ve),onClick:ne},{default:m(()=>[...e[19]||(e[19]=[b("编辑",-1)])]),_:1},8,["icon"])):k("",!0),l.id&&((f=i.prompts.find(n=>n.id===l.id))==null?void 0:f.scope)==="user"?(u(),E(d,{key:1,link:"",type:"danger",icon:N(fe),onClick:ie},{default:m(()=>[...e[20]||(e[20]=[b("删除",-1)])]),_:1},8,["icon"])):k("",!0)])]),a(D,{modelValue:l.content,"onUpdate:modelValue":e[8]||(e[8]=n=>l.content=n),type:"textarea",rows:18,readonly:"",resize:"none"},null,8,["modelValue"])],64))])])]}),_:1},8,["modelValue","title"])],64)}}}),qe=be(Ie,[["__scopeId","data-v-4a016d9e"]]);export{qe as M};