99AI/AIWebQuickDeploy/public/admin/assets/plugin-BB9dueQ_.js
2025-03-04 17:36:53 +08:00

9 lines
9.5 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.

/**
* 由 Fantastic-admin 提供技术支持
* Powered by Fantastic-admin
* https://fantastic-admin.github.io
*/
import{_ as be}from"./index.vue_vue_type_script_setup_true_lang-c3O57XSg.js";import{_ as ve}from"./index.vue_vue_type_script_setup_true_lang-BhIKqf2a.js";import{I as C,d as ye,r as p,m as O,n as N,a as we,p as i,q as he,g as y,c as S,b as t,w as n,h as _,y as xe,i as u,z as $,e as d,t as P,F as Ve,s as ke,B as Ie,C as Ce,A as Pe,D as Ue,E as De,G as x,H as E,j as ze,_ as Ae,k as L}from"./index-6QRvoxq4.js";import{Q as Oe}from"./index-BE-LteFu.js";const U={pluginList:g=>C.get("plugin/pluginList",{params:g}),delPlugin:g=>C.post("plugin/delPlugin",g),createPlugin:g=>C.post("plugin/createPlugin",g),updatePlugin:g=>C.post("plugin/updatePlugin",g)},Se=d("div",{class:"flex items-center gap-4"},"插件设置",-1),$e=d("div",{class:"text-sm/6"},[d("div",null," 可自定义插件名称、描述和头像用于前端显示,同时需要设置对应的插件参数。 "),d("div",null,"插件系统包含,内置插件和普通插件两种。"),d("div",null," 插件已支持Suno音乐参数suno-music、Midjourney绘图参数midjourney、Stable Diffusion绘图参数stable-diffusion、 "),d("div",null," Dalle绘画参数dall-e-3、LumaVideo参数luma-video、CogVideoX参数cog-video、Flux绘画参数flux-draw均需通过创意模型配置对应模型。 "),d("div",null," 联网插件(参数net-search)、思维导图(参数mind-map)。联网插件需在 插件应用基础配置 中单独配置联网地址。 "),d("div",null," 若内置插件参数不在支持列表内,将以插件参数作为模型,调用对应模型。 ")],-1),je={style:{maxWidth:"350px"}},Fe={style:{maxHeight:"50px",cursor:"pointer"}},Te=["src"],qe={class:"flex justify-end mr-5"},Be=ye({__name:"plugin",setup(g){p();const j=p(0),f=p(!1),V=p(!1),M=["dall-e-3","stable-diffusion","flux-draw","midjourney","suno-music","luma-video","cog-video","net-search","mind-map"],w=O({name:"",pluginImg:"",description:"",demoData:"",isEnabled:1,parameters:"",sortOrder:100,page:1,size:10}),F=p(`/api/upload/file?dir=${encodeURIComponent("system/plugin")}`),D=p(),b=p(0),R=p(!1),G=p(0),o=O({name:"",pluginImg:"",description:"",demoData:"",isEnabled:1,parameters:"",sortOrder:100}),H=O({name:[{required:!0,message:"请填写App名称",trigger:"blur"}],description:[{required:!0,message:"请填写App介绍信息、用于对外展示",trigger:"blur"}],pluginImg:[{required:!1,message:"请上传插件封面",trigger:"blur"}],demoData:[{required:!1,message:"请填写演示数据",trigger:"blur"}],isEnabled:[{required:!0,type:"number",message:"请选择插件状态",trigger:"change"}],parameters:[{required:!0,message:"请填写调用参数",trigger:"blur"}],sortOrder:[{required:!0,type:"number",message:"请填写排序值",trigger:"change"}]}),T=p([]);p([]);const Q=N(()=>b.value?"更新插件":"新增插件"),W=N(()=>b.value?"确认更新":"确认新增");async function h(){try{V.value=!0;const a=await U.pluginList(w),{rows:e,count:s}=a.data;V.value=!1,j.value=s,T.value=e.sort((r,m)=>m.order-r.order)}catch{V.value=!1}}function J(a){b.value=a.id,R.value=a.role==="user",G.value=a.status;const{name:e,pluginImg:s,description:r,demoData:m,isEnabled:z,parameters:c,sortOrder:A}=a;De(()=>{Object.assign(o,{name:e,pluginImg:s,description:r,demoData:m,isEnabled:z,parameters:c,sortOrder:A})}),f.value=!0}function K(a){b.value=0,a==null||a.resetFields()}async function X(a){await U.delPlugin({id:a.id}),x.success("删除分类成功"),h()}const q=(a,e)=>{console.log("response: ",a.data),o.pluginImg=a.data};async function Y(){if(o.pluginImg){const a=await ee(o.pluginImg);Z(a,q)}}function Z(a,e){const s=new FormData;s.append("file",a),E.post(F.value,s,{headers:{"Content-Type":"multipart/form-data"}}).then(r=>{e(r.data)}).catch(r=>{console.error("上传失败",r)})}async function ee(a){const e=await E.get(a,{responseType:"blob"});let s="downloaded_file";const r=e.headers["content-disposition"];if(r){const m=/filename="([^"]+)"/.exec(r);m!=null&&m[1]&&(s=m[1])}else s=te(a);return new File([e.data],s,{type:e.data.type})}function te(a){const s=new URL(a).pathname;return s.substring(s.lastIndexOf("/")+1)}const le=a=>{if(["image/png","image/jpeg","image/gif","image/webp"].includes(a.type)){if(a.size/1024>300)return x.error("当前限制文件最大不超过 300KB!"),!1}else return x.error("当前系统仅支持 PNG、JPEG、GIF 和 WebP 格式的图片!"),!1};function ae(a){a==null||a.validate(async e=>{if(e){if(b.value){const s={id:b.value,...o};await U.updatePlugin(s),x({type:"success",message:"更新插件成功!"})}else await U.createPlugin(o),x({type:"success",message:"创建新的插件成功!"});f.value=!1,h()}})}return we(()=>{h()}),(a,e)=>{const s=ze,r=Ae,m=ve,z=i("el-image"),c=i("el-table-column"),A=i("el-tag"),k=i("el-button"),ne=i("el-popconfirm"),oe=i("el-table"),se=i("el-pagination"),ie=i("el-row"),re=be,I=i("el-input"),v=i("el-form-item"),ue=i("el-switch"),de=i("el-option"),pe=i("el-select"),B=i("el-icon"),me=i("el-upload"),ce=i("el-form"),ge=i("el-dialog"),fe=he("loading");return y(),S("div",null,[t(m,null,{title:n(()=>[Se]),content:n(()=>[$e]),default:n(()=>[t(r,{outline:"",onClick:e[0]||(e[0]=l=>f.value=!0)},{default:n(()=>[t(s,{name:"ic:baseline-plus"}),_(" 添加插件 ")]),_:1})]),_:1}),t(re,{style:{width:"100%"}},{default:n(()=>[xe((y(),$(oe,{border:"",data:u(T),style:{width:"100%"},size:"large"},{default:n(()=>[t(c,{prop:"pluginImg",label:"封面",width:"100"},{default:n(l=>[t(z,{style:{height:"50px"},src:l.row.pluginImg,fit:"fill"},null,8,["src"])]),_:1}),t(c,{prop:"sortOrder",label:"排序",width:"120"}),_(" /> "),t(c,{prop:"name",label:"名称",width:"120"}),t(c,{prop:"parameters",label:"调用参数",width:"120"}),t(c,{prop:"description",label:"描述信息"},{default:n(l=>[d("template",null,[d("div",je,P(l.row.description),1)]),d("div",Fe,P(l.row.description),1)]),_:1}),t(c,{prop:"isEnabled",label:"状态",width:"100"},{default:n(l=>[t(A,{type:l.row.isEnabled===1?"success":"danger"},{default:n(()=>[_(P(u(Oe)[l.row.isEnabled]),1)]),_:2},1032,["type"])]),_:1}),t(c,{label:"操作",width:"200"},{default:n(l=>[t(k,{link:"",type:"primary",size:"small",onClick:_e=>J(l.row)},{default:n(()=>[_(" 编辑 ")]),_:2},1032,["onClick"]),t(ne,{title:"确认删除此插件么?",width:"200","icon-color":"red",onConfirm:_e=>X(l.row)},{reference:n(()=>[t(k,{link:"",type:"danger",size:"small"},{default:n(()=>[_(" 删除 ")]),_:1})]),_:2},1032,["onConfirm"])]),_:1})]),_:1},8,["data"])),[[fe,u(V)]]),t(ie,{class:"flex justify-end mt-5"},{default:n(()=>[t(se,{"current-page":w.page,"onUpdate:currentPage":e[1]||(e[1]=l=>w.page=l),"page-size":w.size,"onUpdate:pageSize":e[2]||(e[2]=l=>w.size=l),class:"mr-5","page-sizes":[10,20,30,50],layout:"total, sizes, prev, pager, next, jumper",total:u(j),onSizeChange:h,onCurrentChange:h},null,8,["current-page","page-size","total"])]),_:1})]),_:1}),t(ge,{modelValue:u(f),"onUpdate:modelValue":e[11]||(e[11]=l=>Ue(f)?f.value=l:null),"close-on-click-modal":!1,title:u(Q),width:"570",onClose:e[12]||(e[12]=l=>K(u(D)))},{footer:n(()=>[d("span",qe,[t(k,{onClick:e[9]||(e[9]=l=>f.value=!1)},{default:n(()=>[_("取消")]),_:1}),t(k,{type:"primary",onClick:e[10]||(e[10]=l=>ae(u(D)))},{default:n(()=>[_(P(u(W)),1)]),_:1})])]),default:n(()=>[t(ce,{ref_key:"formPackageRef",ref:D,"label-position":"right","label-width":"100px",model:o,rules:H},{default:n(()=>[t(v,{label:"插件名称",prop:"name"},{default:n(()=>[t(I,{modelValue:o.name,"onUpdate:modelValue":e[3]||(e[3]=l=>o.name=l),placeholder:"请填写插件名称"},null,8,["modelValue"])]),_:1}),t(v,{label:"插件状态",prop:"isEnabled"},{default:n(()=>[t(ue,{modelValue:o.isEnabled,"onUpdate:modelValue":e[4]||(e[4]=l=>o.isEnabled=l),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1}),t(v,{label:"插件描述",prop:"description"},{default:n(()=>[t(I,{modelValue:o.description,"onUpdate:modelValue":e[5]||(e[5]=l=>o.description=l),type:"textarea",placeholder:"请填写插件描述、用于对外展示...",rows:4},null,8,["modelValue"])]),_:1}),t(v,{label:"插件参数",prop:"parameters"},{default:n(()=>[t(pe,{modelValue:o.parameters,"onUpdate:modelValue":e[6]||(e[6]=l=>o.parameters=l),placeholder:"请选择或填写插件参数",filterable:"","allow-create":"","default-first-option":"",clearable:""},{default:n(()=>[(y(),S(Ve,null,ke(M,l=>t(de,{key:l,label:l,value:l},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"插件图标",prop:"pluginImg"},{default:n(()=>[t(I,{modelValue:o.pluginImg,"onUpdate:modelValue":e[7]||(e[7]=l=>o.pluginImg=l),placeholder:"请填写或上传插件图标",clearable:""},{append:n(()=>[t(me,{class:"avatar-uploader",action:u(F),"show-file-list":!1,"on-success":q,"before-upload":le,style:{display:"flex","align-items":"center","justify-content":"center"}},{default:n(()=>[o.pluginImg?(y(),S("img",{key:0,src:o.pluginImg,style:{"max-width":"1.5rem","max-height":"1.5rem",margin:"5px 0","object-fit":"contain"}},null,8,Te)):(y(),$(B,{key:1,style:{width:"1rem"}},{default:n(()=>[t(u(Ie))]),_:1}))]),_:1},8,["action"]),o.pluginImg?(y(),$(B,{key:0,onClick:Y,style:{"margin-left":"35px",width:"1rem"}},{default:n(()=>[t(u(Ce))]),_:1})):Pe("",!0)]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"排序ID",prop:"sortOrder"},{default:n(()=>[t(I,{modelValue:o.sortOrder,"onUpdate:modelValue":e[8]||(e[8]=l=>o.sortOrder=l),modelModifiers:{number:!0},placeholder:"请填写排序ID[数字越大越靠前]"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])])}}});typeof L=="function"&&L(Be);export{Be as default};