Files
qhmes/deploy-qhmes/frontend/js/AiragMcpAddModal-ChMp88cc.js
2026-05-15 11:34:12 +08:00

2 lines
12 KiB
Java
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.
var A=(J,R,T)=>new Promise((P,y)=>{var h=i=>{try{k(T.next(i))}catch(c){y(c)}},_=i=>{try{k(T.throw(i))}catch(c){y(c)}},k=i=>i.done?P(i.value):Promise.resolve(i.value).then(h,_);k((T=T.apply(J,R)).next())});import{d as le,ah as w,aC as C,as as U,aF as t,au as q,k as r,G as m,f as b,ag as O,e as ne,u as X,n as F}from"./vue-vendor-C7Zq48Yl.js";import"./index-Du0A3ksf.js";import{M as se}from"./BasicModal-0sAdFEk_.js";import{B as re}from"./BasicForm-BJnSRkIE.js";import"./index-Di-j2gt4.js";import{saveOrUpdate as ue,saveAndSync as ie}from"./AiragMcp.api-CieQuCEg.js";import{ak as pe,u as de,d as me}from"./index-BI6CMai0.js";import{u as ce}from"./useForm-BZtHZyx2.js";import"./ModalHeader-keHdAHWH.js";import"./antd-vue-vendor-BPnV8VqP.js";import"./useTimeout-DDl4l82I.js";import"./vxe-table-vendor-B88kchpX.js";import"./index-DeEq83Ov.js";import"./useWindowSizeFn-PRZSD86C.js";import"./index-pxs5MULf.js";import"./index-BgYCgfME.js";import"./index-f8O7TghW.js";import"./useIntersectionObserver-BMxdTqP3.js";import"./componentMap-BBZeqR-K.js";import"./useFormItem-BdW6EoZe.js";import"./download-UE0L9Rfp.js";import"./base64Conver-24EVOS6V.js";import"./index-CIBZG4nR.js";import"./index-BhQEwnQQ.js";import"./useCountdown-DqnNWBp6.js";import"./useFormItemSingle-BbRhswfn.js";import"./JSelectUser-B71zikzw.js";import"./props-DAezUTeZ.js";import"./JSelectBiz-CnEaVMUF.js";import"./JAddInput-D6qcyZjQ.js";import"./areaDataUtil-CbYCy3Ig.js";import"./index-CNkz_PUv.js";import"./index-CUdllngZ.js";import"./bem-EhXRi4nW.js";import"./props-D4vdsy3J.js";import"./useContextMenu-Cwx1lIOK.js";import"./depart.api-DeMNV8zW.js";import"./TreeIcon-DE4jdeZV.js";import"./JSelectDept-DRDVeruW.js";import"./JPopup-Bva6u6tk.js";import"./usePopBiz-CG0vVpgI.js";import"./useMethods-DVip17X8.js";import"./index-Dg4HCEvo.js";import"./JEllipsis-DqRFTSm0.js";import"./JUpload-Cz9HN61B.js";import"./index-MGIrEF-A.js";import"./index-MREkPhsT.js";import"./JAreaLinkage-BeRUFHSB.js";import"./JCodeEditor-CLVZA7Uj.js";import"./htmlmixed-NhwyF9-q.js";import"./vue-CgbRSACy.js";/* empty css */import"./EasyCronInput-7xfJ3nBh.js";const fe={class:"modal"},ve={class:"mcp-content"},ke={class:"headers-table-wrapper"},ye={class:"headers-table-container"},he=le({__name:"AiragMcpAddModal",emits:["success","register"],setup(J,{emit:R}){const T=R,{createMessage:P}=de(),y=b(!1),h=b(!1),_=b(void 0),k=b("mcp"),i=b("sse"),c=b("none"),M=b("X-Access-Token"),L=b(""),z=ne(()=>k.value==="plugin"?"请输入BaseURL例如https://api.example.com可选不填使用当前系统地址":i.value==="sse"||i.value==="http"?"请输入服务端点URL例如https://example.com/stream":"请输入启动命令,例如:./start-mcp-service"),f=b([]),D=[{title:"键",dataIndex:"key",key:"key",width:"40%"},{title:"值",dataIndex:"value",key:"value",width:"45%"},{title:"操作",key:"action",width:"15%"}];function H(){f.value.push({key:"",value:""})}function G(e){if(f.value.length<=1){const a=f.value[0];if(!a.key&&!a.value)return;a.key="",a.value="",P.success("已清空数据");return}f.value.splice(e,1)}function x(){const e=f.value.filter(o=>o.key&&o.value);if(e.length===0)return"";const a=e.reduce((o,u)=>(o[u.key]=u.value,o),{});return JSON.stringify(a)}function j(e){if(!e){f.value=[{key:"",value:""}];return}try{const a=JSON.parse(e),o=Object.entries(a);o.length===0?f.value=[{key:"",value:""}]:f.value=o.map(([u,n])=>({key:u,value:String(n)}))}catch(a){f.value=[{key:"",value:""}]}}function E(e){c.value=e,N([{field:"tokenParamName",required:e==="token",show:e==="token"},{field:"tokenParamValue",required:!1,show:e==="token"}])}function K(e){k.value=e.target.value,k.value==="plugin"?(N([{field:"category",label:"类型"},{field:"endpoint",label:"BaseURL",required:!1},{field:"type",show:!1},{field:"headers",label:"请求头",show:!0},{field:"authType",label:"授权方式",required:!0,show:!0},{field:"tokenParamName",label:"Token参数名",required:c.value==="token",show:c.value==="token"},{field:"tokenParamValue",label:"Token参数值",required:!1,show:c.value==="token"}]),V({type:"api",authType:c.value||"none",tokenParamName:M.value||"X-Access-Token"})):(N([{field:"category",label:"类型"},{field:"endpoint",label:i.value==="stdio"?"命令":"URL",required:!0},{field:"type",label:"MCP类型",show:!0},{field:"headers",label:"请求头",show:()=>i.value!=="stdio"},{field:"authType",show:!1},{field:"tokenParamName",show:!1},{field:"tokenParamValue",show:!1}]),V({type:i.value||"sse",authType:void 0,tokenParamName:void 0,tokenParamValue:void 0}))}const[$,{resetFields:Q,validate:B,setFieldsValue:V,updateSchema:N}]=ce({showActionButtonGroup:!1,layout:"vertical",baseColProps:{span:24},schemas:[{field:"name",component:"Input",label:"名称",required:!0,componentProps:{placeholder:"请输入名称"}},{field:"icon",label:"图标",component:"JImageUpload"},{field:"category",component:"RadioGroup",label:"类型",required:!0,slot:"category",defaultValue:"mcp"},{field:"type",component:"Select",label:"MCP类型",required:!0,slot:"type",defaultValue:"sse"},{field:"endpoint",component:"Input",label:"URL",required:!0,slot:"endpoint"},{field:"headers",component:"InputTextArea",label:"请求头",slot:"headers",show:!1},{field:"authType",component:"Select",label:"授权方式",required:!0,slot:"authType",defaultValue:"none",show:!1},{field:"tokenParamName",component:"Input",label:"Token参数名",required:!1,slot:"tokenParamName",defaultValue:"X-Access-Token",show:!1},{field:"tokenParamValue",component:"Input",label:"Token参数值",required:!1,slot:"tokenParamValue",show:!1},{field:"descr",component:"InputTextArea",label:"描述",componentProps:{rows:3,placeholder:"请输入描述"}}]}),[W,{closeModal:I}]=pe(e=>A(null,null,function*(){if(yield Q(),h.value=!1,_.value=e==null?void 0:e.id,e&&Object.keys(e).length>0){e.id?y.value=!0:y.value=!1;const a=e.category||"mcp";k.value=a;const o=e.type||"sse";i.value=o;let u="none",n="X-Access-Token",g="";if(a==="plugin"){if(e.metadata)try{const v=typeof e.metadata=="string"?JSON.parse(e.metadata):e.metadata;u=v.authType||"none",n=v.tokenParamName||"X-Access-Token",g=v.tokenParamValue||""}catch(v){}let d={};if(e.headers)try{d=typeof e.headers=="string"?JSON.parse(e.headers):e.headers,u==="token"&&n&&d[n]&&(g=d[n],delete d[n])}catch(v){}c.value=u,M.value=n,L.value=g,N([{field:"category",label:"类型",componentProps:{disabled:!0}},{field:"endpoint",label:"BaseURL",required:!1},{field:"type",show:!1},{field:"headers",label:"请求头",show:!0},{field:"authType",label:"授权方式",required:!0,show:!0},{field:"tokenParamName",label:"Token参数名",required:u==="token",show:u==="token"},{field:"tokenParamValue",label:"Token参数值",required:!1,show:u==="token"}]),j(Object.keys(d).length>0?JSON.stringify(d):""),F(()=>{V({icon:e.icon,name:e.name,descr:e.descr,category:a,type:o,endpoint:e.endpoint,authType:u,tokenParamName:n,tokenParamValue:g})})}else N([{field:"category",label:"类型",componentProps:{disabled:!0}},{field:"endpoint",label:o==="stdio"?"命令":"URL",required:!0},{field:"type",label:"MCP类型",show:!0},{field:"headers",label:"请求头",show:()=>o!=="stdio"},{field:"authType",show:!1},{field:"tokenParamName",show:!1},{field:"tokenParamValue",show:!1}]),j(e.headers),F(()=>{V({icon:e.icon,name:e.name,descr:e.descr,category:a,type:o,endpoint:e.endpoint})})}else y.value=!1,k.value="mcp",i.value="sse",c.value="none",M.value="X-Access-Token",L.value="",f.value=[{key:"",value:""}],N([{field:"category",label:"类型"},{field:"endpoint",label:"URL"},{field:"headers",label:"请求头",show:!0},{field:"authType",show:!1},{field:"tokenParamName",show:!1},{field:"tokenParamValue",show:!1}]),V({category:"mcp",type:"sse",authType:"none",tokenParamName:"X-Access-Token",tokenParamValue:""})}));function Y(e){i.value=e,N([{field:"endpoint",label:e==="stdio"?"命令":"URL"},{field:"headers",label:"请求头",show:()=>e!=="stdio"}])}function Z(){return A(this,null,function*(){try{h.value=!0;const e=yield B();if(_.value&&(e.id=_.value),e.category==="plugin"){if(e.authType==="token"&&!e.tokenParamName){P.error("Token授权方式需要填写Token参数名和参数值");return}let o={};const u=x();if(u)try{o=JSON.parse(u)}catch(g){o={}}e.authType==="token"&&e.tokenParamName&&e.tokenParamValue&&(o[e.tokenParamName]=e.tokenParamValue),e.headers=Object.keys(o).length>0?JSON.stringify(o):"";const n={};if(e.metadata)try{Object.assign(n,typeof e.metadata=="string"?JSON.parse(e.metadata):e.metadata)}catch(g){}n.authType=e.authType||"none",e.authType==="token"&&(n.tokenParamName=e.tokenParamName||"X-Access-Token",n.tokenParamValue=e.tokenParamValue||""),e.metadata=JSON.stringify(n),e.type="api"}else e.headers=x(),delete e.authType,delete e.tokenParamName,delete e.tokenParamValue;const a=yield ue(e);a.success?(P.success(a.message||"保存成功"),T("success"),I()):P.error(a.message||"保存失败")}finally{h.value=!1}})}function ee(){return A(this,null,function*(){try{h.value=!0;const e=yield B();_.value&&(e.id=_.value),e.headers=x();const a=yield ie(e);a.success?(P.success(a.message||"保存并同步成功"),T("success"),I()):P.error(a.message||"保存并同步失败")}finally{h.value=!1}})}function ae(){I()}return(e,a)=>{const o=w("a-radio"),u=w("a-radio-group"),n=w("a-select-option"),g=w("a-select"),d=w("a-input"),v=w("a-button"),te=w("a-table"),oe=w("a-form-item-rest");return U(),C(se,{destroyOnClose:"",onRegister:X(W),canFullscreen:!1,width:"640px",title:y.value?"编辑MCP":"新增MCP",wrapClassName:"airag-mcp-modal"},{footer:t(()=>[r(v,{onClick:ae},{default:t(()=>[...a[9]||(a[9]=[m("关闭",-1)])]),_:1}),r(v,{type:"primary",onClick:Z,loading:h.value},{default:t(()=>[...a[10]||(a[10]=[m("保存",-1)])]),_:1},8,["loading"]),k.value==="mcp"?(U(),C(v,{key:0,type:"primary",onClick:ee,loading:h.value},{default:t(()=>[...a[11]||(a[11]=[m("保存并同步",-1)])]),_:1},8,["loading"])):O("",!0)]),default:t(()=>[q("div",fe,[q("div",ve,[r(re,{onRegister:X($)},{category:t(({model:s,field:l})=>[r(u,{value:s[l],"onUpdate:value":p=>s[l]=p,onChange:K,disabled:y.value},{default:t(()=>[r(o,{value:"mcp"},{default:t(()=>[...a[0]||(a[0]=[m("MCP",-1)])]),_:1}),r(o,{value:"plugin"},{default:t(()=>[...a[1]||(a[1]=[m("插件",-1)])]),_:1})]),_:1},8,["value","onUpdate:value","disabled"])]),type:t(({model:s,field:l})=>[r(g,{value:s[l],"onUpdate:value":p=>s[l]=p,onChange:Y,disabled:y.value},{default:t(()=>[r(n,{value:"sse"},{default:t(()=>[...a[2]||(a[2]=[m("SSE",-1)])]),_:1}),r(n,{value:"stdio"},{default:t(()=>[...a[3]||(a[3]=[m("STDIO",-1)])]),_:1}),r(n,{value:"http"},{default:t(()=>[...a[4]||(a[4]=[m("HTTP",-1)])]),_:1})]),_:1},8,["value","onUpdate:value","disabled"])]),endpoint:t(({model:s,field:l})=>[r(d,{value:s[l],"onUpdate:value":p=>s[l]=p,placeholder:z.value,autocomplete:"new-password"},null,8,["value","onUpdate:value","placeholder"])]),headers:t(()=>[r(oe,null,{default:t(()=>[q("div",ke,[r(v,{type:"primary",size:"small",onClick:H,style:{"margin-bottom":"8px"}},{default:t(()=>[...a[5]||(a[5]=[m(" 添加 ",-1)])]),_:1}),q("div",ye,[r(te,{dataSource:f.value,columns:D,pagination:!1,size:"small",bordered:""},{bodyCell:t(({column:s,record:l,index:p})=>[s.key==="key"?(U(),C(d,{key:0,value:l.key,"onUpdate:value":S=>l.key=S,placeholder:"请输入键",size:"small"},null,8,["value","onUpdate:value"])):O("",!0),s.key==="value"?(U(),C(d,{key:1,value:l.value,"onUpdate:value":S=>l.value=S,placeholder:"请输入值",size:"small"},null,8,["value","onUpdate:value"])):O("",!0),s.key==="action"?(U(),C(v,{key:2,type:"link",danger:"",size:"small",onClick:S=>G(p)},{default:t(()=>[...a[6]||(a[6]=[m("删除",-1)])]),_:1},8,["onClick"])):O("",!0)]),_:1},8,["dataSource"])])])]),_:1})]),authType:t(({model:s,field:l})=>[r(g,{value:s[l],"onUpdate:value":p=>s[l]=p,onChange:E},{default:t(()=>[r(n,{value:"none"},{default:t(()=>[...a[7]||(a[7]=[m("不需要授权",-1)])]),_:1}),r(n,{value:"token"},{default:t(()=>[...a[8]||(a[8]=[m("Token / API Key",-1)])]),_:1})]),_:1},8,["value","onUpdate:value"])]),tokenParamName:t(({model:s,field:l})=>[r(d,{value:s[l],"onUpdate:value":p=>s[l]=p,placeholder:"请输入Token参数名"},null,8,["value","onUpdate:value"])]),tokenParamValue:t(({model:s,field:l})=>[r(d,{autocomplete:"new-password",value:s[l],"onUpdate:value":p=>s[l]=p,type:"password",placeholder:"请输入Token值"},null,8,["value","onUpdate:value"])]),_:1},8,["onRegister"])])])]),_:1},8,["onRegister","title"])}}}),ga=me(he,[["__scopeId","data-v-0ec00e79"]]);export{ga as default};