2 lines
12 KiB
Java
2 lines
12 KiB
Java
var se=Object.defineProperty,ie=Object.defineProperties;var ue=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var Z=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var j=(m,f,d)=>f in m?se(m,f,{enumerable:!0,configurable:!0,writable:!0,value:d}):m[f]=d,$=(m,f)=>{for(var d in f||(f={}))Z.call(f,d)&&j(m,d,f[d]);if(O)for(var d of O(f))F.call(f,d)&&j(m,d,f[d]);return m},x=(m,f)=>ie(m,ue(f));var R=(m,f)=>{var d={};for(var p in m)Z.call(m,p)&&f.indexOf(p)<0&&(d[p]=m[p]);if(m!=null&&O)for(var p of O(m))f.indexOf(p)<0&&F.call(m,p)&&(d[p]=m[p]);return d};var V=(m,f,d)=>new Promise((p,h)=>{var b=l=>{try{g(d.next(l))}catch(k){h(k)}},S=l=>{try{g(d.throw(l))}catch(k){h(k)}},g=l=>l.done?p(l.value):Promise.resolve(l.value).then(b,S);g((d=d.apply(m,f)).next())});import"./index-BDvqZ5j4.js";import{M as re}from"./BasicModal-xH56XuRZ.js";import{s as pe,F as de,aB as me,aG as ve,av as fe,aw as ye,bR as _e,au as ge}from"./index-X7Y8jykP.js";import{queryById as G,saveTools as ke}from"./AiragMcp.api-Cq7GCN8X.js";import{a as ce}from"./useModal-DaJ3Bflg.js";import"./index-DSsDi_fL.js";import{C as we}from"./Group-UHkub2tu.js";import{e as Ce,y,z as _,A as t,r as E,u as be,K as Ie,Q as w,f as o,b as Ae,E as s,H}from"./vue-vendor-DNhG1Cve.js";import{O as Ue}from"./index-CuWaQdlK.js";import{A as he}from"./index-DO7ZhK45.js";import{_ as Pe}from"./index-DTjkSGYl.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useTimeout-D5AmIBZw.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./index-BzChaRPg.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./useAppInject-DPZGPcR3.js";import"./Checkbox-Dbxs4we4.js";import"./index-BuONesFs.js";import"./eagerComputed-BTlOruLW.js";import"./fromPairs-Dx9PT-t0.js";import"./useMaxLevel-DE205ncc.js";import"./index-CfNJyBRj.js";import"./dropdown-jkliuVyN.js";import"./index-DfHu-LAS.js";import"./Group-DBzJABA_.js";import"./RadioButton-DRBix2Fq.js";import"./index-C7ckZv9Z.js";import"./DirectoryTree-nk_YTTIy.js";import"./FolderOpenOutlined-SzIPA7z0.js";import"./index-Cl-8Hzo4.js";import"./scrollTo-D49dA-9c.js";import"./operationUnit-vCu2co3e.js";const qe={class:"modal"},Te={class:"tool-edit-content"},Ee={class:"section"},Se={class:"section"},Be={class:"section-header"},ze={class:"section"},Oe={class:"section-header"},Ne=Ce({__name:"PluginToolEditModal",emits:["success","register"],setup(m,{emit:f}){const d=f,{createMessage:p}=pe(),h=E(!1),b=E(void 0),S=E(!1),g=E(-1),l=Ae({name:"",description:"",path:"",method:"GET"}),k=E([]),P=E([]),J=[{title:"参数名称",key:"name",width:150},{title:"参数描述",key:"description",width:200},{title:"参数类型",key:"type",width:120},{title:"传入方式",key:"location",width:150},{title:"是否必须",key:"required",width:100},{title:"默认值",key:"defaultValue",width:150},{title:"操作",key:"action",width:100}],L=[{title:"参数名称",key:"name",width:200},{title:"参数描述",key:"description",width:200},{title:"参数类型",key:"type",width:150},{title:"操作",key:"action",width:100}];let z=0;const[K,{closeModal:D}]=ce(a=>V(null,null,function*(){if(b.value=a==null?void 0:a.pluginId,S.value=!!(a!=null&&a.tool),l.name="",l.description="",l.path="",l.method="GET",k.value=[],P.value=[],g.value=-1,a!=null&&a.tool&&(l.name=a.tool.name||"",l.description=a.tool.description||"",l.path=a.tool.path||"",l.method=a.tool.method||"GET",k.value=(a.tool.parameters||[]).map(e=>x($({},e),{tempId:`req_${z++}`,required:e.required!==void 0?e.required:!1})),P.value=(a.tool.responses||[]).map(e=>x($({},e),{tempId:`resp_${z++}`})),b.value)){const e=yield G(b.value),n=e.result||e;if(n.tools)try{const C=typeof n.tools=="string"?JSON.parse(n.tools):n.tools;g.value=C.findIndex(I=>I.name===a.tool.name)}catch(C){g.value=-1}}}));function Q(a){a.name&&!/^[a-zA-Z0-9_]+$/.test(a.name)&&(p.warning("参数名称只能包含字母、数字和下划线"),a.name=a.name.replace(/[^a-zA-Z0-9_]/g,""))}function W(a){if(!a.name)return;const e=a.type,n=a.name;e==="Object"||e==="Array"?/^[a-zA-Z0-9_.\[\]]+$/.test(n)||(p.warning("参数名称只能包含字母、数字、下划线、点和中括号"),a.name=n.replace(/[^a-zA-Z0-9_.\[\]]/g,"")):/^[a-zA-Z0-9_]+$/.test(n)||(p.warning("非Object/Array类型参数名称只能包含字母、数字和下划线"),a.name=n.replace(/[^a-zA-Z0-9_]/g,""))}function X(a){a.type!=="Object"&&a.type!=="Array"&&a.name&&/[.\[\]]/.test(a.name)&&(p.warning("非Object/Array类型不支持使用点号和中括号"),a.name=a.name.replace(/[.\[\]]/g,""))}function $e(a){}function Y(){k.value.push({tempId:`req_${z++}`,name:"",description:"",type:"String",location:"Body",required:!1,defaultValue:""})}function ee(a){k.value.splice(a,1)}function te(){P.value.push({tempId:`resp_${z++}`,name:"",description:"",type:"String"})}function ae(a){P.value.splice(a,1)}function oe(){return V(this,null,function*(){try{if(h.value=!0,!l.name||!l.description||!l.path||!l.method){p.warning("请填写完整的工具基本信息");return}if(!/^[a-zA-Z0-9_-]+$/.test(l.name)){p.warning("工具名称只能包含字母、数字、下划线和中划线");return}if(!b.value){p.error("插件ID不存在");return}const a=yield G(b.value),e=a.result||a;let n=[];if(e.tools)try{const c=typeof e.tools=="string"?JSON.parse(e.tools):e.tools;Array.isArray(c)?n=[...c]:n=[]}catch(c){n=[]}Array.isArray(n)||(n=[]);const C=k.value.map(c=>{const U=c,{tempId:B}=U;return R(U,["tempId"])}),I=P.value.map(c=>{const U=c,{tempId:B}=U;return R(U,["tempId"])}),i={name:l.name,description:l.description,path:l.path,method:l.method,enabled:!0,parameters:C,responses:I};if(S.value&&g.value>=0&&g.value<n.length)n[g.value]=i;else{if(n.some(B=>B.name===l.name)){p.error("工具名称已存在,请使用不同的名称");return}n.push(i)}const q=JSON.stringify(n),T=yield ke(b.value,q);T.success?(p.success("保存成功"),d("success"),D()):p.error(T.message||"保存失败")}finally{h.value=!1}})}function le(){D()}function ne(){l.path&&!l.path.startsWith("/")&&(l.path="/"+l.path)}return(a,e)=>{const n=ve,C=me,I=he,i=ye,q=fe,T=Ue,c=_e,B=de,A=Ie("a-button"),U=we,M=Pe;return _(),y(re,{destroyOnClose:"",onRegister:be(K),canFullscreen:!1,width:"1400px",title:S.value?"编辑工具":"新增工具",wrapClassName:"plugin-tool-edit-modal"},{footer:t(()=>[o(A,{onClick:le},{default:t(()=>[...e[31]||(e[31]=[s("关闭",-1)])]),_:1}),o(A,{type:"primary",onClick:oe,loading:h.value},{default:t(()=>[...e[32]||(e[32]=[s("保存",-1)])]),_:1},8,["loading"])]),default:t(()=>[w("div",qe,[w("div",Te,[w("div",Ee,[e[9]||(e[9]=w("h3",{class:"section-title"},"基本信息",-1)),o(B,{model:l,layout:"vertical"},{default:t(()=>[o(T,{gutter:24},{default:t(()=>[o(I,{span:12},{default:t(()=>[o(C,{label:"工具名称",required:""},{default:t(()=>[o(n,{value:l.name,"onUpdate:value":e[0]||(e[0]=v=>l.name=v),placeholder:"请输入工具名称"},null,8,["value"])]),_:1})]),_:1}),o(I,{span:12},{default:t(()=>[o(C,{label:"请求方式",required:""},{default:t(()=>[o(q,{value:l.method,"onUpdate:value":e[1]||(e[1]=v=>l.method=v),placeholder:"请选择请求方式"},{default:t(()=>[o(i,{value:"GET"},{default:t(()=>[...e[4]||(e[4]=[s("GET",-1)])]),_:1}),o(i,{value:"POST"},{default:t(()=>[...e[5]||(e[5]=[s("POST",-1)])]),_:1}),o(i,{value:"PUT"},{default:t(()=>[...e[6]||(e[6]=[s("PUT",-1)])]),_:1}),o(i,{value:"DELETE"},{default:t(()=>[...e[7]||(e[7]=[s("DELETE",-1)])]),_:1}),o(i,{value:"PATCH"},{default:t(()=>[...e[8]||(e[8]=[s("PATCH",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),o(T,{gutter:24},{default:t(()=>[o(I,{span:24},{default:t(()=>[o(C,{label:"访问路径",required:""},{default:t(()=>[o(n,{value:l.path,"onUpdate:value":e[2]||(e[2]=v=>l.path=v),placeholder:"请输入访问路径,如:/api/user/{userId}",onBlur:ne},null,8,["value"])]),_:1})]),_:1})]),_:1}),o(T,{gutter:24},{default:t(()=>[o(I,{span:24},{default:t(()=>[o(C,{label:"描述",required:""},{default:t(()=>[o(c,{value:l.description,"onUpdate:value":e[3]||(e[3]=v=>l.description=v),rows:3,placeholder:"请输入工具描述"},null,8,["value"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),w("div",Se,[w("div",Be,[e[11]||(e[11]=w("h3",{class:"section-title"},"请求参数",-1)),o(A,{type:"primary",size:"small",onClick:Y},{default:t(()=>[...e[10]||(e[10]=[s("添加参数",-1)])]),_:1})]),o(M,{dataSource:k.value,columns:J,pagination:!1,bordered:"",size:"small",rowKey:"tempId"},{bodyCell:t(({column:v,record:u,index:N})=>[v.key==="name"?(_(),y(n,{key:0,value:u.name,"onUpdate:value":r=>u.name=r,placeholder:"参数名称(字母数字下划线)",onBlur:r=>Q(u)},null,8,["value","onUpdate:value","onBlur"])):v.key==="description"?(_(),y(n,{key:1,value:u.description,"onUpdate:value":r=>u.description=r,placeholder:"参数描述"},null,8,["value","onUpdate:value"])):v.key==="type"?(_(),y(q,{key:2,value:u.type,"onUpdate:value":r=>u.type=r,style:{width:"100%"}},{default:t(()=>[o(i,{value:"String"},{default:t(()=>[...e[12]||(e[12]=[s("String",-1)])]),_:1}),o(i,{value:"Number"},{default:t(()=>[...e[13]||(e[13]=[s("Number",-1)])]),_:1}),o(i,{value:"Integer"},{default:t(()=>[...e[14]||(e[14]=[s("Integer",-1)])]),_:1}),o(i,{value:"Boolean"},{default:t(()=>[...e[15]||(e[15]=[s("Boolean",-1)])]),_:1})]),_:1},8,["value","onUpdate:value"])):v.key==="location"?(_(),y(q,{key:3,value:u.location,"onUpdate:value":r=>u.location=r,style:{width:"100%"},onChange:r=>void 0},{default:t(()=>[o(i,{value:"Body"},{default:t(()=>[...e[16]||(e[16]=[s("Raw(json)",-1)])]),_:1}),o(i,{value:"Form-Data"},{default:t(()=>[...e[17]||(e[17]=[s("Form-Data",-1)])]),_:1}),o(i,{value:"Query"},{default:t(()=>[...e[18]||(e[18]=[s("Query",-1)])]),_:1}),o(i,{value:"Header"},{default:t(()=>[...e[19]||(e[19]=[s("Header",-1)])]),_:1}),o(i,{value:"Path"},{default:t(()=>[...e[20]||(e[20]=[s("Path",-1)])]),_:1})]),_:1},8,["value","onUpdate:value","onChange"])):v.key==="required"?(_(),y(U,{key:4,checked:u.required,"onUpdate:checked":r=>u.required=r},null,8,["checked","onUpdate:checked"])):v.key==="defaultValue"?(_(),y(n,{key:5,value:u.defaultValue,"onUpdate:value":r=>u.defaultValue=r,placeholder:"默认值"},null,8,["value","onUpdate:value"])):v.key==="action"?(_(),y(A,{key:6,type:"link",danger:"",size:"small",onClick:r=>ee(N)},{default:t(()=>[...e[21]||(e[21]=[s("删除",-1)])]),_:1},8,["onClick"])):H("",!0)]),_:1},8,["dataSource"])]),w("div",ze,[w("div",Oe,[e[23]||(e[23]=w("h3",{class:"section-title"},"输出参数",-1)),o(A,{type:"primary",size:"small",onClick:te},{default:t(()=>[...e[22]||(e[22]=[s("添加参数",-1)])]),_:1})]),o(M,{dataSource:P.value,columns:L,pagination:!1,bordered:"",size:"small",rowKey:"tempId"},{bodyCell:t(({column:v,record:u,index:N})=>[v.key==="name"?(_(),y(n,{key:0,value:u.name,"onUpdate:value":r=>u.name=r,placeholder:"参数名称(支持点号和数组语法,如data.name、data[].name)",onBlur:r=>W(u)},null,8,["value","onUpdate:value","onBlur"])):v.key==="description"?(_(),y(n,{key:1,value:u.description,"onUpdate:value":r=>u.description=r,placeholder:"参数描述"},null,8,["value","onUpdate:value"])):v.key==="type"?(_(),y(q,{key:2,value:u.type,"onUpdate:value":r=>u.type=r,style:{width:"100%"},onChange:r=>X(u)},{default:t(()=>[o(i,{value:"String"},{default:t(()=>[...e[24]||(e[24]=[s("String",-1)])]),_:1}),o(i,{value:"Number"},{default:t(()=>[...e[25]||(e[25]=[s("Number",-1)])]),_:1}),o(i,{value:"Integer"},{default:t(()=>[...e[26]||(e[26]=[s("Integer",-1)])]),_:1}),o(i,{value:"Boolean"},{default:t(()=>[...e[27]||(e[27]=[s("Boolean",-1)])]),_:1}),o(i,{value:"Object"},{default:t(()=>[...e[28]||(e[28]=[s("Object",-1)])]),_:1}),o(i,{value:"Array"},{default:t(()=>[...e[29]||(e[29]=[s("Array",-1)])]),_:1})]),_:1},8,["value","onUpdate:value","onChange"])):v.key==="action"?(_(),y(A,{key:3,type:"link",danger:"",size:"small",onClick:r=>ae(N)},{default:t(()=>[...e[30]||(e[30]=[s("删除",-1)])]),_:1},8,["onClick"])):H("",!0)]),_:1},8,["dataSource"])])])])]),_:1},8,["onRegister","title"])}}}),At=ge(Ne,[["__scopeId","data-v-0d42f459"]]);export{At as default};
|