46dd6f3243
feat: 支持更多插件标准接口
2 lines
6.9 KiB
JavaScript
2 lines
6.9 KiB
JavaScript
import{x as D,o as c,c as f,w as e,a,a8 as S,b as l,K as p,e as o,t as g,G as _,d,A as B,L as m,a9 as T,J as k,s as x,f as h,F as w,u as N,V,N as C,P as v,H as b,q as E,O as U,aa as j,T as u,j as F}from"./index-9075b0bb.js";import{_ as $}from"./ConfigDetailCard-d45b9ca7.js";import"./UiParentCard.vue_vue_type_script_setup_true_lang-73bcbbd5.js";const G={class:"d-sm-flex align-center justify-space-between"},y=D({__name:"ExtensionCard",props:{title:String,link:String},setup(n){const s=n,i=t=>{window.open(t,"_blank")};return(t,r)=>(c(),f(k,{variant:"outlined",elevation:"0",class:"withbg"},{default:e(()=>[a(S,{style:{padding:"10px 20px"}},{default:e(()=>[l("div",G,[a(p,null,{default:e(()=>[o(g(s.title),1)]),_:1}),a(_),a(d,{icon:"mdi-link",variant:"plain",onClick:r[0]||(r[0]=K=>i(s.link))})])]),_:1}),a(B),a(m,null,{default:e(()=>[T(t.$slots,"default")]),_:3})]),_:3}))}}),P=l("div",{style:{"background-color":"white",width:"100%",padding:"16px","border-radius":"10px"}},[l("h3",null,"🧩 已安装的插件")],-1),q={style:{"min-height":"180px","max-height":"180px",overflow:"hidden"}},A={class:"d-flex align-center gap-2"},I=l("div",{style:{"background-color":"white",width:"100%",padding:"16px","border-radius":"10px"}},[l("h3",null,"🧩 插件市场 [待开发]")],-1),L=l("span",{class:"text-h5"},"插件配置",-1),O=l("span",{class:"text-h5"},"从 Git 仓库链接安装插件",-1),z=l("small",null,"github, gitee, gitlab 等公开的仓库都行。",-1),H=l("br",null,null,-1),J={name:"ExtensionPage",components:{ExtensionCard:y,ConfigDetailCard:$},data(){return{extension_data:{data:[]},extension_url:"",status:"",dialog:!1,snack_message:"",snack_show:!1,snack_success:"success",install_loading:!1,uninstall_loading:!1,configDialog:!1,extension_config:{}}},mounted(){this.getExtensions()},methods:{getExtensions(){u.get("/api/extensions").then(n=>{this.extension_data.data=n.data.data,console.log(this.extension_data)})},newExtension(){this.install_loading=!0,console.log(this.install_loading),u.post("/api/extensions/install",{url:this.extension_url}).then(n=>{if(this.install_loading=!1,n.data.status==="error"){this.snack_message=n.data.message,this.snack_show=!0,this.snack_success="error";return}this.extension_data.data=n.data.data,console.log(this.extension_data),this.extension_url="",this.snack_message=n.data.message,this.snack_show=!0,this.snack_success="success",this.dialog=!1,this.getExtensions()}).catch(n=>{this.install_loading=!1,this.snack_message=n,this.snack_show=!0,this.snack_success="error"})},uninstallExtension(n){this.uninstall_loading=!0,u.post("/api/extensions/uninstall",{name:n}).then(s=>{if(this.uninstall_loading=!1,s.data.status==="error"){this.snack_message=s.data.message,this.snack_show=!0,this.snack_success="error";return}this.extension_data.data=s.data.data,console.log(this.extension_data),this.snack_message=s.data.message,this.snack_show=!0,this.snack_success="success",this.dialog=!1,this.getExtensions()}).catch(s=>{this.uninstall_loading=!1,this.snack_message=s,this.snack_show=!0,this.snack_success="error"})},updateExtension(n){this.update_loading=!0,u.post("/api/extensions/update",{name:n}).then(s=>{if(this.update_loading=!1,s.data.status==="error"){this.snack_message=s.data.message,this.snack_show=!0,this.snack_success="error";return}this.extension_data.data=s.data.data,console.log(this.extension_data),this.snack_message=s.data.message,this.snack_show=!0,this.snack_success="success",this.dialog=!1,this.getExtensions()}).catch(s=>{this.update_loading=!1,this.snack_message=s,this.snack_show=!0,this.snack_success="error"})},openExtensionConfig(n){this.curr_namespace=n,this.configDialog=!0,u.get("/api/configs?namespace="+n).then(s=>{this.extension_config=s.data.data,console.log(this.extension_config)}).catch(s=>{this.snack_message=s,this.snack_show=!0,this.snack_success="error"})},updateConfig(){u.post("/api/configs",{config:this.extension_config,namespace:this.curr_namespace}).then(n=>{n.data.status==="success"?(this.snack_message=n.data.message,this.snack_show=!0,this.snack_success="success"):(this.snack_message=n.data.message,this.snack_show=!0,this.snack_success="error")}).catch(n=>{this.snack_message=n,this.snack_show=!0,this.snack_success="error"})}}},W=Object.assign(J,{setup(n){return(s,i)=>(c(),x(w,null,[a(V,null,{default:e(()=>[a(h,{cols:"12",md:"12"},{default:e(()=>[P]),_:1}),(c(!0),x(w,null,N(s.extension_data.data,t=>(c(),f(h,{cols:"12",md:"6",lg:"4"},{default:e(()=>[(c(),f(y,{key:t.name,title:t.name,link:t.repo,style:{"margin-bottom":"16px"}},{default:e(()=>[l("p",q,g(t.desc),1),l("div",A,[a(F,null,{default:e(()=>[o("mdi-account")]),_:1}),l("span",null,g(t.author),1),a(_),a(d,E({variant:"plain",onClick:r=>s.openExtensionConfig(t.name)},s.props),{default:e(()=>[o("配置")]),_:2},1040,["onClick"]),a(d,{variant:"plain",onClick:r=>s.updateExtension(t.name),loading:s.update_loading},{default:e(()=>[o("更新")]),_:2},1032,["onClick","loading"]),a(d,{variant:"plain",onClick:r=>s.uninstallExtension(t.name),loading:s.uninstall_loading},{default:e(()=>[o("卸载")]),_:2},1032,["onClick","loading"])])]),_:2},1032,["title","link"]))]),_:2},1024))),256)),a(h,{cols:"12",md:"12"},{default:e(()=>[I]),_:1})]),_:1}),a(b,{modelValue:s.configDialog,"onUpdate:modelValue":i[1]||(i[1]=t=>s.configDialog=t),width:"750"},{activator:e(({props:t})=>[]),default:e(()=>[a(k,null,{default:e(()=>[a(p,null,{default:e(()=>[L]),_:1}),a(m,null,{default:e(()=>[a(C,null,{default:e(()=>[a($,{config:s.extension_config},null,8,["config"])]),_:1})]),_:1}),a(v,null,{default:e(()=>[a(_),a(d,{color:"blue-darken-1",variant:"text",onClick:s.updateConfig},{default:e(()=>[o(" 保存并关闭 ")]),_:1},8,["onClick"]),a(d,{color:"blue-darken-1",variant:"text",onClick:i[0]||(i[0]=t=>s.configDialog=!1)},{default:e(()=>[o(" 关闭 ")]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),a(b,{modelValue:s.dialog,"onUpdate:modelValue":i[5]||(i[5]=t=>s.dialog=t),persistent:"",width:"700"},{activator:e(({props:t})=>[a(d,E(t,{icon:"mdi-plus",size:"x-large",style:{position:"fixed",right:"52px",bottom:"52px"},color:"darkprimary"}),null,16)]),default:e(()=>[a(k,null,{default:e(()=>[a(p,null,{default:e(()=>[O]),_:1}),a(m,null,{default:e(()=>[a(C,null,{default:e(()=>[a(V,null,{default:e(()=>[a(h,{cols:"12"},{default:e(()=>[a(U,{label:"Git 库链接",modelValue:s.extension_url,"onUpdate:modelValue":i[2]||(i[2]=t=>s.extension_url=t),required:""},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),z,H,l("small",null,g(s.status),1)]),_:1}),a(v,null,{default:e(()=>[a(_),a(d,{color:"blue-darken-1",variant:"text",onClick:i[3]||(i[3]=t=>s.dialog=!1)},{default:e(()=>[o(" 关闭 ")]),_:1}),a(d,{color:"blue-darken-1",variant:"text",loading:s.install_loading,onClick:i[4]||(i[4]=t=>s.newExtension(s.extension_url))},{default:e(()=>[o(" 安装 ")]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),a(j,{timeout:2e3,elevation:"24",color:s.snack_success,modelValue:s.snack_show,"onUpdate:modelValue":i[6]||(i[6]=t=>s.snack_show=t)},{default:e(()=>[o(g(s.snack_message),1)]),_:1},8,["color","modelValue"])],64))}});export{W as default};
|