flex-mcp 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{d as $e,u as Se,r as m,p as le,A as De,c as y,b as a,f as o,w as n,g as l,B as $,k as q,C as Ie,D as ce,o as w,h,N as Ce,j as W,E as ze,n as I,G as ye,H as Ae,I as Te,J as X,K as Ve,L as _e,m as te,F as fe,s as me,t as K,M as He,O as Ue,x as Ne,y as xe,P as Oe,Q as je,R as Le,S as Ee,U as Pe,V as ge,W as Je,X as qe,Y as Fe,Z as Be,_ as We,v as Ke,a as Ye,q as Ge,z as Qe,i as Xe}from"./index-NmCbGUEa.js";import{g as Ze,p as et,_ as tt,u as Re,I as at,C as st,M as lt}from"./InitScriptEditor-RtEtxdk9.js";import{_ as Me}from"./_plugin-vue_export-helper-DlAUqK2U.js";const nt={class:"variables-manager"},ot={class:"variables-toolbar"},rt={class:"variables-table-container"},it={class:"modal-form-wrapper"},ut=$e({__name:"VariablesManager",props:{config:{}},emits:["update"],setup(ne,{emit:_}){const f=ne,p=_,A=Se(),c=m(!1),E=m(!1),z=m(null),O=m(),R=m(""),U={pageSize:10,showSizePicker:!0,pageSizes:[10,20,50]},G=C=>({style:"cursor: pointer; transition: all 0.2s ease;",onMouseenter:u=>{u.currentTarget.style.backgroundColor="rgba(99, 102, 241, 0.04)"},onMouseleave:u=>{u.currentTarget.style.backgroundColor=""}}),H=[{title:"变量名",key:"name",width:100,render(C){return I("strong",C.name)}},{title:"值",key:"value",width:500,render(C){if(C.isSecret)return I(ye,{type:"info",depth:3,italic:!0},{default:()=>"****** (敏感信息)"});const u=String(C.value).split(`
1
+ import{d as $e,u as Se,r as m,p as le,A as De,c as y,b as a,f as o,w as n,g as l,B as $,k as q,C as Ie,D as ce,o as w,h,N as Ce,j as W,E as ze,n as I,G as ye,H as Ae,I as Te,J as X,K as Ve,L as _e,m as te,F as fe,s as me,t as K,M as He,O as Ue,x as Ne,y as xe,P as Oe,Q as je,R as Le,S as Ee,U as Pe,V as ge,W as Je,X as qe,Y as Fe,Z as Be,_ as We,v as Ke,a as Ye,q as Ge,z as Qe,i as Xe}from"./index-DAOSS2K-.js";import{g as Ze,p as et,_ as tt,u as Re,I as at,C as st,M as lt}from"./InitScriptEditor-DzzTB5Qk.js";import{_ as Me}from"./_plugin-vue_export-helper-DlAUqK2U.js";const nt={class:"variables-manager"},ot={class:"variables-toolbar"},rt={class:"variables-table-container"},it={class:"modal-form-wrapper"},ut=$e({__name:"VariablesManager",props:{config:{}},emits:["update"],setup(ne,{emit:_}){const f=ne,p=_,A=Se(),c=m(!1),E=m(!1),z=m(null),O=m(),R=m(""),U={pageSize:10,showSizePicker:!0,pageSizes:[10,20,50]},G=C=>({style:"cursor: pointer; transition: all 0.2s ease;",onMouseenter:u=>{u.currentTarget.style.backgroundColor="rgba(99, 102, 241, 0.04)"},onMouseleave:u=>{u.currentTarget.style.backgroundColor=""}}),H=[{title:"变量名",key:"name",width:100,render(C){return I("strong",C.name)}},{title:"值",key:"value",width:500,render(C){if(C.isSecret)return I(ye,{type:"info",depth:3,italic:!0},{default:()=>"****** (敏感信息)"});const u=String(C.value).split(`
2
2
  `).map((b,Q,oe)=>{const ae=[I("span",{class:"value-line"},b)];return Q<oe.length-1&&ae.push(I("br")),ae}).flat();return I("div",{class:"variable-value-cell"},u)}},{title:"描述",key:"description",width:300,render(C){return I(ye,{depth:3},{default:()=>C.description||"-"})}},{title:"操作",key:"actions",width:150,render(C){return I(Ae,{size:"small"},{default:()=>[I($,{size:"small",onClick:()=>V(C)},{default:()=>"编辑"}),I($,{size:"small",type:"error",onClick:()=>P(C.id)},{default:()=>"删除"})]})}}],B=le(()=>{if(!R.value)return f.config.variables;const C=R.value.toLowerCase();return f.config.variables.filter(u=>{var b;return u.name.toLowerCase().includes(C)||((b=u.description)==null?void 0:b.toLowerCase().includes(C))})}),x=m({name:"",value:"",description:"",isSecret:!1}),L={name:{required:!0,message:"请输入变量名",trigger:"blur"},value:{required:!0,message:"请输入变量值",trigger:"blur"}};function V(C){z.value=C,x.value={name:C.name,value:C.value,description:C.description||"",isSecret:C.isSecret||!1},c.value=!0}function P(C){const u=f.config.variables.filter(b=>b.id!==C);p("update",{variables:u})}async function ve(){var C,u;try{await((C=O.value)==null?void 0:C.validate()),E.value=!0;const b={id:((u=z.value)==null?void 0:u.id)||Ze(),name:x.value.name,value:x.value.value,description:x.value.description||void 0,isSecret:x.value.isSecret},Q=[...f.config.variables],oe=Q.findIndex(ae=>ae.id===b.id);oe!==-1?Q[oe]=b:Q.push(b),p("update",{variables:Q}),c.value=!1,J()}catch(b){A.error(b.message)}finally{E.value=!1}}function J(){z.value=null,x.value={name:"",value:"",description:"",isSecret:!1}}return De(()=>c.value,C=>{C||J()}),(C,u)=>(w(),y("div",nt,[a("div",ot,[o(l($),{type:"primary",size:"large",class:"add-variable-btn",onClick:u[0]||(u[0]=b=>c.value=!0)},{icon:n(()=>[...u[8]||(u[8]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4v16m8-8H4",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[u[9]||(u[9]=h(" 添加变量 ",-1))]),_:1}),o(l(q),{value:R.value,"onUpdate:value":u[1]||(u[1]=b=>R.value=b),placeholder:"搜索变量名或描述...",size:"large",clearable:"",class:"search-input"},{prefix:n(()=>[...u[10]||(u[10]=[a("svg",{class:"search-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),_:1},8,["value"])]),a("div",rt,[o(l(Ie),{columns:H,data:B.value,pagination:U,"row-props":G,class:"modern-table"},null,8,["data"])]),o(l(ce),{show:c.value,"onUpdate:show":u[7]||(u[7]=b=>c.value=b),preset:"dialog",title:z.value?"编辑变量":"添加变量",class:"variable-edit-modal",style:{maxHeight:"90vh"}},{action:n(()=>[o(l($),{onClick:u[6]||(u[6]=b=>c.value=!1)},{default:n(()=>[...u[12]||(u[12]=[h("取消",-1)])]),_:1}),o(l($),{type:"primary",loading:E.value,onClick:ve},{default:n(()=>[...u[13]||(u[13]=[h("保存",-1)])]),_:1},8,["loading"])]),default:n(()=>[a("div",it,[o(l(Ce),{ref_key:"formRef",ref:O,model:x.value,rules:L},{default:n(()=>[o(l(W),{path:"name",label:"变量名"},{default:n(()=>[o(l(q),{value:x.value.name,"onUpdate:value":u[2]||(u[2]=b=>x.value.name=b),placeholder:"例如: API_KEY"},null,8,["value"])]),_:1}),o(l(W),{path:"value",label:"值"},{default:n(()=>[o(l(q),{value:x.value.value,"onUpdate:value":u[3]||(u[3]=b=>x.value.value=b),type:x.value.isSecret?"password":"textarea",rows:x.value.isSecret?void 0:3,placeholder:"变量值"},null,8,["value","type","rows"])]),_:1}),o(l(W),{path:"description",label:"描述"},{default:n(()=>[o(l(q),{value:x.value.description,"onUpdate:value":u[4]||(u[4]=b=>x.value.description=b),type:"textarea",rows:2,placeholder:"可选"},null,8,["value"])]),_:1}),o(l(W),{path:"isSecret",label:"敏感信息"},{default:n(()=>[o(l(ze),{checked:x.value.isSecret,"onUpdate:checked":u[5]||(u[5]=b=>x.value.isSecret=b)},{default:n(()=>[...u[11]||(u[11]=[h("标记为敏感信息(导出时使用占位符)",-1)])]),_:1},8,["checked"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["show","title"])]))}}),dt=Me(ut,[["__scopeId","data-v-f50b6ccd"]]),ct={class:"prompts-manager"},vt={class:"prompts-toolbar"},pt={class:"prompts-table-container"},ft={class:"modal-header"},mt={class:"modal-title"},gt={class:"modal-subtitle"},wt={class:"modal-content-wrapper"},ht={class:"tab-pane-content"},bt={class:"form-section"},kt={class:"form-grid-2"},yt={class:"form-section"},xt={class:"section-header"},Ct={class:"parameters-list"},$t={class:"parameter-header"},St={class:"parameter-index"},Dt={class:"parameter-fields"},Mt={key:0,class:"empty-parameters"},_t={class:"tab-pane-content"},zt={style:{display:"flex","align-items":"center",gap:"8px"}},Tt={viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{width:"18px",height:"18px"}},Ut={class:"messages-section"},Nt={class:"message-header"},jt={class:"save-status-indicator"},It=["title"],Bt={key:0,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},At={key:1,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Vt={key:0,class:"monaco-wrapper"},Et={key:0,class:"empty-messages"},Rt={class:"modal-footer"},Ht={class:"test-content"},Ot={class:"test-messages"},Lt={class:"test-message-header"},Pt={class:"test-message-content"},Jt={key:0,class:"test-message-empty"},qt=$e({__name:"PromptsManager",setup(ne){const _=Se(),f=m(!1),p=m(!1),A=m(!1),c=m(!1),E=m(!1),z=m(null),O=m(),R=m(""),U=m([]),G=m("content"),H=m(!1),B=m(-1),x=m(new Map),L=m(!1),V=[{label:"用户",value:"user"},{label:"助手",value:"assistant"}],P={pageSize:10,showSizePicker:!0,pageSizes:[10,20,50]},ve=d=>({style:"cursor: pointer; transition: all 0.2s ease;",onMouseenter:t=>{t.currentTarget.style.backgroundColor="rgba(99, 102, 241, 0.04)"},onMouseleave:t=>{t.currentTarget.style.backgroundColor=""}}),J=[{title:"名称",key:"name",width:200,render(d){return I("strong",d.name)}},{title:"描述",key:"description",render(d){return I(ye,{depth:3},{default:()=>d.description||"-"})}},{title:"参数数量",key:"arguments",width:120,render(d){return I(ye,{depth:3},{default:()=>{var t;return`${((t=d.arguments)==null?void 0:t.length)||0} 个`}})}},{title:"消息数量",key:"messages",width:120,render(d){return I(ye,{depth:3},{default:()=>{var t;return`${((t=d.messages)==null?void 0:t.length)||0} 条`}})}},{title:"操作",key:"actions",width:200,render(d){return I(Ae,{size:"small"},{default:()=>[I($,{size:"small",onClick:()=>ue(d)},{default:()=>"编辑"}),I($,{size:"small",type:"info",onClick:()=>r(d)},{default:()=>"测试"}),I($,{size:"small",type:"error",onClick:()=>we(d.id)},{default:()=>"删除"})]})}}],C=le(()=>{if(!R.value)return U.value;const d=R.value.toLowerCase();return U.value.filter(t=>{var e;return t.name.toLowerCase().includes(d)||((e=t.description)==null?void 0:e.toLowerCase().includes(d))})}),u=m({name:"",description:"",arguments:[],messages:[]}),b=m({arguments:{}}),Q=le(()=>!p.value||!u.value.messages||u.value.messages.length===0?[]:u.value.messages.filter(t=>t.content.text).map(t=>({...t,content:{...t.content,text:et(t.content.text,b.value.arguments)}}))),oe={name:{required:!0,message:"请输入提示词名称",trigger:"blur"},messages:{required:!0,validator:(d,t)=>!t||t.length===0?new Error("至少需要一条消息"):!0,trigger:"blur"}};function ae(d){return x.value.get(d)||!1}function se(d){x.value.set(d,!0)}function ie(d){H.value&&B.value===d?(H.value=!1,B.value=-1):(H.value=!0,B.value=d)}async function Z(){var d,t;try{E.value=!0;const e=await X.get("/prompts");e.data.success&&(U.value=e.data.data)}catch(e){_.error(((t=(d=e.response)==null?void 0:d.data)==null?void 0:t.error)||"加载提示词失败")}finally{E.value=!1}}function pe(){z.value=null,T(),f.value=!0,G.value="content"}function ue(d){z.value=d,u.value={name:d.name,description:d.description||"",arguments:d.arguments?[...d.arguments]:[],messages:d.messages&&d.messages.length>0?[...d.messages]:[{role:"user",content:{type:"text",text:""}}]},x.value.clear(),f.value=!0,G.value="content"}async function we(d){var t,e;try{await X.delete(`/prompts/${d}`),_.success("删除成功"),await Z()}catch(s){_.error(((e=(t=s.response)==null?void 0:t.data)==null?void 0:e.error)||"删除失败")}}function he(){u.value.arguments.push({name:"",description:"",required:!1})}function re(d){u.value.arguments.splice(d,1)}function be(){u.value.messages.push({role:"user",content:{type:"text",text:""}}),se(u.value.messages.length-1)}function de(d){u.value.messages.splice(d,1),x.value.delete(d),B.value===d?(H.value=!1,B.value=-1):B.value>d&&B.value--}async function ke(){var d,t,e;try{await((d=O.value)==null?void 0:d.validate()),A.value=!0;const s={name:u.value.name,description:u.value.description||void 0,arguments:u.value.arguments.filter(i=>i.name),messages:u.value.messages.filter(i=>i.content.text)};z.value?(await X.put(`/prompts/${z.value.id}`,s),_.success("更新成功")):(await X.post("/prompts",s),_.success("创建成功")),x.value.clear(),f.value=!1,await Z(),T()}catch(s){_.error(((e=(t=s.response)==null?void 0:t.data)==null?void 0:e.error)||"保存失败")}finally{A.value=!1}}async function g(){var d,t,e;try{await((d=O.value)==null?void 0:d.validate()),c.value=!0;const s=u.value.arguments.filter(i=>i.name);b.value.arguments=s.reduce((i,j)=>(i[j.name]=b.value.arguments[j.name]||"",i),{}),p.value=!0}catch(s){_.error(((e=(t=s.response)==null?void 0:t.data)==null?void 0:e.error)||"测试失败")}finally{c.value=!1}}async function r(d){z.value=d,u.value={name:d.name,description:d.description||"",arguments:d.arguments?[...d.arguments]:[],messages:d.messages?[...d.messages]:[]};const t=u.value.arguments.filter(e=>e.name);b.value.arguments=t.reduce((e,s)=>(e[s.name]="",e),{}),await g()}function T(){z.value=null,u.value={name:"",description:"",arguments:[],messages:[{role:"user",content:{type:"text",text:`# 提示词模板
3
3
 
4
4
  ## 变量替换
@@ -27,4 +27,4 @@ import{d as $e,u as Se,r as m,p as le,A as De,c as y,b as a,f as o,w as n,g as l
27
27
  ${M}${N}`)}if(v.length>0){const M=v.slice(0,10).join(`
28
28
  `),N=v.length>10?`
29
29
  ... 还有 ${v.length-10} 个错误`:"";f.error(`数据校验失败:
30
- ${M}${N}`);return}z.value=!0,x.value=!0,L.value=`正在导入 ${i.length} 条数据...`;try{const M=i.map(D=>{const k={};return p.tableDefinition.columns.forEach(Y=>{const F=D[Y.name];let ee=F;if(F!=null&&F!=="")switch(Y.type){case"number":ee=typeof F=="string"?Number(F):F;break;case"boolean":ee=typeof F=="boolean"?F:!!F;break;case"date":typeof F=="string"&&(ee=new Date(F).toISOString());break;case"json":if(typeof F=="string")try{ee=JSON.parse(F)}catch{ee=F}break}else if(Y.defaultValue!==void 0)ee=Y.defaultValue;else if(Y.nullable)ee=null;else switch(Y.type){case"string":ee="";break;case"number":ee=0;break;case"boolean":ee=!1;break;case"date":ee=new Date().toISOString();break;case"json":ee={};break}k[Y.name]=ee}),{rowData:k}}),N=await X.put(`/tables/data/${p.tableId}/batch`,{rows:M});N.data.success?(de(),await b(),A("saved"),R.value=!1,f.success(`成功导入 ${i.length} 条数据`)):f.error("导入失败:"+(N.data.error||"未知错误"))}catch(M){f.error("导入失败: "+(((s=(e=M.response)==null?void 0:e.data)==null?void 0:s.error)||M.message))}finally{z.value=!1,x.value=!1}}catch(i){f.error("文件读取失败: "+(i.message||"未知错误"))}}async function T(t){var s;const e=(s=t.fileList[0])==null?void 0:s.file;if(e)try{const i=await e.text();await r(i)}catch(i){f.error("文件读取失败: "+(i.message||"未知错误"))}}async function d(){if(!B.value.trim()){f.warning("请输入 JSON 数据");return}await r(B.value.trim()),B.value=""}return(t,e)=>(w(),y("div",Wt,[a("div",Kt,[a("div",Yt,[o(l($),{size:"large",onClick:e[0]||(e[0]=s=>U.value=!U.value),type:U.value?"warning":"success",ghost:""},{icon:n(()=>[U.value?(w(),y("svg",Gt,[...e[6]||(e[6]=[a("path",{d:"M19 11H5a2 2 0 00-2 2v7a2 2 0 002 2h14a2 2 0 002-2v-7a2 2 0 00-2-2zM7 11V7a5 5 0 0110 0v4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):(w(),y("svg",Qt,[...e[7]||(e[7]=[a("path",{d:"M19 11H5a2 2 0 00-2 2v7a2 2 0 002 2h14a2 2 0 002-2v-7a2 2 0 00-2-2zM7 11V7a5 5 0 0110 0v4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),a("path",{d:"M12 15v2M9 17h6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])]))]),default:n(()=>[h(" "+K(U.value?"解锁编辑":"锁定编辑"),1)]),_:1},8,["type"]),o(l($),{type:"primary",size:"large",onClick:Q,disabled:!ne.tableDefinition||U.value},{icon:n(()=>[...e[8]||(e[8]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4v16m8-8H4",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[e[9]||(e[9]=h(" 添加行 ",-1))]),_:1},8,["disabled"]),o(l($),{size:"large",onClick:oe,disabled:E.value.length===0||U.value,type:"error",ghost:""},{icon:n(()=>[...e[10]||(e[10]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[h(" 删除选中 ("+K(E.value.length)+") ",1)]),_:1},8,["disabled"]),o(l($),{size:"large",onClick:g,disabled:!ne.tableDefinition||c.value.length===0},{icon:n(()=>[...e[11]||(e[11]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[e[12]||(e[12]=h(" 导出 JSON ",-1))]),_:1},8,["disabled"]),o(l($),{size:"large",onClick:e[1]||(e[1]=s=>R.value=!0),disabled:!ne.tableDefinition},{icon:n(()=>[...e[13]||(e[13]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[e[14]||(e[14]=h(" 导入 JSON ",-1))]),_:1},8,["disabled"])]),a("div",Xt,[a("div",Zt,[O.value?(w(),y("div",{key:0,class:Ne(["save-success-indicator",{flash:O.value}])},null,2)):te("",!0)]),o(l(je),{type:"info",size:"large"},{default:n(()=>[h(" 共 "+K(c.value.length)+" 行(编辑即保存) ",1)]),_:1})])]),ne.tableDefinition?(w(),y("div",ea,[a("div",ta,[o(l(Ie),{columns:P.value,data:c.value,pagination:V.value,"row-key":s=>s.id||`new-${c.value.indexOf(s)}`,"row-props":J,"max-height":600,"scroll-x":ve.value,bordered:!0,"single-line":!1,"onUpdate:checkedRowKeys":ae,class:"editable-data-table excel-table"},null,8,["columns","data","pagination","row-key","scroll-x"])],512)])):(w(),y("div",aa,[o(l(ge),{description:"请先创建或选择表定义"})])),o(l(ce),{show:R.value,"onUpdate:show":e[4]||(e[4]=s=>R.value=s),preset:"card",bordered:!1,class:"import-modal",style:{width:"90vw",maxWidth:"600px"}},{header:n(()=>[...e[15]||(e[15]=[a("div",{class:"modal-header"},[a("div",{class:"modal-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])]),a("div",null,[a("h3",{class:"modal-title"},"导入表数据"),a("p",{class:"modal-subtitle"},"从 JSON 文件导入表数据")])],-1)])]),default:n(()=>[a("div",sa,[o(l(Ve),{"default-value":"file",type:"line"},{default:n(()=>[o(l(_e),{name:"file",tab:"文件上传"},{default:n(()=>[o(l(Je),{"file-list":[],accept:".json",max:1,onChange:T},{default:n(()=>[o(l(qe),null,{default:n(()=>[...e[16]||(e[16]=[a("div",{class:"upload-area"},[a("svg",{class:"upload-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4m17-7l-5-5m0 0L7 8m9-5v12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})]),a("p",{class:"upload-text"},"点击或拖拽 JSON 文件到此处"),a("p",{class:"upload-hint"},"支持导入表数据")],-1)])]),_:1})]),_:1})]),_:1}),o(l(_e),{name:"text",tab:"直接编辑/粘贴"},{default:n(()=>[a("div",la,[o(l(q),{value:B.value,"onUpdate:value":e[2]||(e[2]=s=>B.value=s),type:"textarea",placeholder:"请粘贴或输入 JSON 数据(数组格式)...",rows:15,class:"json-textarea"},null,8,["value"]),a("div",na,[o(l($),{onClick:d,type:"primary",disabled:!B.value.trim()},{default:n(()=>[...e[17]||(e[17]=[h(" 导入 ",-1)])]),_:1},8,["disabled"]),o(l($),{onClick:e[3]||(e[3]=s=>B.value="")},{default:n(()=>[...e[18]||(e[18]=[h(" 清空 ",-1)])]),_:1})])])]),_:1})]),_:1})])]),_:1},8,["show"]),o(l(ce),{show:x.value,"onUpdate:show":e[5]||(e[5]=s=>x.value=s),"mask-closable":!1,"close-on-esc":!1,"auto-focus":!1,preset:"dialog",closable:!1,"show-icon":!1,style:{width:"400px"}},{default:n(()=>[a("div",oa,[o(l(Fe),{size:"large"},{description:n(()=>[a("div",ra,K(L.value),1)]),_:1})])]),_:1},8,["show"])]))}}),ua=Me(ia,[["__scopeId","data-v-da42254c"]]),da={class:"tables-page"},ca={class:"tables-toolbar"},va={class:"toolbar-left"},pa={class:"table-select-with-icon"},fa={class:"toolbar-right"},ma={class:"toolbar-switch"},ga={class:"explore-config-panel"},wa={class:"explore-config-list"},ha={key:0,class:"empty-tables-hint"},ba={class:"explore-config-item-info"},ka={class:"table-name"},ya={key:0,class:"table-description"},xa={key:0,class:"tables-table-container"},Ca={key:1,class:"no-table-selected"},$a={class:"columns-section"},Sa={class:"columns-header"},Da={class:"columns-list"},Ma={class:"column-index"},_a={key:0,class:"empty-columns"},za={class:"form-actions"},Ta={class:"modal-header"},Ua={class:"modal-subtitle"},Na={class:"column-descriptions-section"},ja={class:"column-description-label"},Ia={class:"column-name-label"},Ba={key:0,class:"empty-columns-hint"},Aa={class:"form-actions"},Va=$e({__name:"Tables",setup(ne){const _=Se(),f=Re(),p=m([]),A=m(null),c=m(null),E=m(!1),z=m(!1),O=m(!1),R=m(!1),U=m(!1),G=m(!1),H=m(!1),B=m(null),x=m(""),L=m({}),V=m(!0),P=m({}),ve=[{label:"字符串",value:"string"},{label:"数字",value:"number"},{label:"布尔值",value:"boolean"},{label:"日期",value:"date"},{label:"JSON",value:"json"}],J=m({name:"",description:"",columns:[]}),C={name:{required:!0,message:"表名不能为空",trigger:"blur"}},u=le(()=>p.value.map(g=>({label:g.name,value:g.id,description:g.description})));function b(g){if(g){const r=p.value.find(T=>T.id===g);r&&pe(r)}else A.value=null,c.value=null}const Q=le({get:()=>E.value,set:g=>{E.value=g}});Te(async()=>{await Z(),await oe()});async function oe(){try{if(await f.fetchConfig(),f.currentConfig){const g=f.currentConfig;V.value=g.enableExploreTable!==!1}}catch(g){console.error("加载配置失败:",g)}}async function ae(g){H.value=!0;try{await f.updateConfig({enableExploreTable:g}),_.success(g?"已允许 AI 探索数据表":"已禁止 AI 探索数据表")}catch(r){_.error("更新配置失败: "+(r.message||"未知错误")),V.value=!g}finally{H.value=!1}}function se(g){return g.allowExplore!==!1}async function ie(g,r){var T,d;P.value[g]=!0;try{const t=p.value.find(s=>s.id===g);if(!t){_.error("表不存在");return}(await X.put(`/tables/definitions/${g}`,{allowExplore:r})).data.success&&(t.allowExplore=r,_.success(r?`已允许 AI 探索表「${t.name}」`:`已禁止 AI 探索表「${t.name}」`),c.value&&c.value.id===g&&(c.value.allowExplore=r))}catch(t){_.error("更新失败: "+(((d=(T=t.response)==null?void 0:T.data)==null?void 0:d.error)||t.message))}finally{P.value[g]=!1}}async function Z(){var g,r;try{const T=await X.get("/tables/definitions");T.data.success&&(p.value=T.data.data,p.value.length>0&&!A.value&&pe(p.value[0]))}catch(T){_.error("加载表列表失败: "+(((r=(g=T.response)==null?void 0:g.data)==null?void 0:r.error)||T.message))}}function pe(g){A.value=g.id,c.value=g}function ue(){J.value.columns.push({name:"",type:"string",nullable:!0,description:""})}function we(g){J.value.columns.splice(g,1)}async function he(){B.value&&await B.value.validate(async g=>{var r,T;if(!g){if(J.value.columns.length===0){_.warning("至少需要定义一个列");return}U.value=!0;try{const d=await X.post("/tables/definitions",J.value);d.data.success&&(_.success("表创建成功"),E.value=!1,J.value={name:"",description:"",columns:[]},await Z(),pe(d.data.data))}catch(d){_.error("保存失败: "+(((T=(r=d.response)==null?void 0:r.data)==null?void 0:T.error)||d.message))}finally{U.value=!1}}})}async function re(){var g,r;if(c.value){R.value=!0;try{(await X.delete(`/tables/definitions/${c.value.id}`)).data.success&&(_.success("表删除成功"),A.value=null,c.value=null,O.value=!1,await Z())}catch(T){_.error("删除失败: "+(((r=(g=T.response)==null?void 0:g.data)==null?void 0:r.error)||T.message))}finally{R.value=!1}}}function be(){}De(z,g=>{g&&c.value&&(x.value=c.value.description||"",L.value={},c.value.columns&&c.value.columns.forEach(r=>{L.value[r.name]=r.description||""}))});function de(g){switch(g){case"string":return"info";case"number":return"success";case"boolean":return"warning";case"date":return"default";case"json":return"error";default:return"default"}}async function ke(){var g,r;if(!c.value||!A.value){_.error("请先选择一个表");return}G.value=!0;try{const T=c.value.columns.map(t=>({...t,description:L.value[t.name]||void 0})),d=await X.put(`/tables/definitions/${A.value}`,{description:x.value||null,columns:T});d.data.success&&(_.success("表声明和字段声明更新成功"),z.value=!1,c.value&&(c.value.description=d.data.data.description,c.value.columns=d.data.data.columns),await Z())}catch(T){_.error("更新失败: "+(((r=(g=T.response)==null?void 0:g.data)==null?void 0:r.error)||T.message))}finally{G.value=!1}}return(g,r)=>{var d,t;const T=Ke("n-tag");return w(),y("div",da,[a("div",ca,[a("div",va,[a("div",pa,[o(l(Ue),{value:A.value,"onUpdate:value":[r[0]||(r[0]=e=>A.value=e),b],options:u.value,placeholder:"选择表...",size:"large",clearable:"",filterable:"",class:"table-select"},{empty:n(()=>[o(l(ge),{description:"暂无表",size:"small"})]),_:1},8,["value","options"]),(d=c.value)!=null&&d.description?(w(),xe(l(Ee),{key:0,trigger:"hover",placement:"top"},{trigger:n(()=>[...r[14]||(r[14]=[a("div",{class:"table-info-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)])]),default:n(()=>[h(" "+K(c.value.description),1)]),_:1})):te("",!0)])]),a("div",fa,[a("div",ma,[o(l(Be),{value:V.value,"onUpdate:value":[r[1]||(r[1]=e=>V.value=e),ae],size:"medium",loading:H.value},{checked:n(()=>[...r[15]||(r[15]=[h("允许 AI 探索数据表",-1)])]),unchecked:n(()=>[...r[16]||(r[16]=[h("禁止 AI 探索数据表",-1)])]),_:1},8,["value","loading"]),o(l(We),{trigger:"hover",placement:"bottom-end",style:{width:"400px",maxHeight:"500px"}},{trigger:n(()=>[...r[17]||(r[17]=[a("div",{class:"explore-config-icon",title:"配置表探索权限"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94L14.4 2.81c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z",fill:"currentColor"})])],-1)])]),default:n(()=>[a("div",ga,[r[18]||(r[18]=a("div",{class:"explore-config-header"},[a("h4",null,"配置表探索权限"),a("p",{class:"explore-config-hint"},"控制哪些表允许被 AI 探索(默认为允许)")],-1)),a("div",wa,[p.value.length===0?(w(),y("div",ha,[o(l(ge),{description:"暂无表",size:"small"})])):te("",!0),(w(!0),y(fe,null,me(p.value,e=>(w(),y("div",{key:e.id,class:"explore-config-item"},[a("div",ba,[a("span",ka,K(e.name),1),e.description?(w(),y("span",ya,K(e.description),1)):te("",!0)]),o(l(Be),{value:se(e),"onUpdate:value":s=>ie(e.id,s),size:"small",loading:P.value[e.id]},null,8,["value","onUpdate:value","loading"])]))),128))])])]),_:1})]),c.value?(w(),xe(l($),{key:0,size:"large",ghost:"",onClick:r[2]||(r[2]=e=>z.value=!0),class:"edit-table-btn"},{icon:n(()=>[...r[19]||(r[19]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),a("path",{d:"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[20]||(r[20]=h(" 编辑表声明 ",-1))]),_:1})):te("",!0),c.value?(w(),xe(l($),{key:1,type:"error",size:"large",ghost:"",onClick:r[3]||(r[3]=e=>O.value=!0),class:"delete-table-btn"},{icon:n(()=>[...r[21]||(r[21]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[22]||(r[22]=h(" 删除表 ",-1))]),_:1})):te("",!0),o(l($),{type:"primary",size:"large",onClick:r[4]||(r[4]=e=>E.value=!0),class:"create-table-btn"},{icon:n(()=>[...r[23]||(r[23]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4v16m8-8H4",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[24]||(r[24]=h(" 创建新表 ",-1))]),_:1})])]),c.value?(w(),y("div",xa,[o(ua,{"table-definition":c.value,"table-id":A.value,onSaved:be},null,8,["table-definition","table-id"])])):(w(),y("div",Ca,[o(l(ge),{description:"请选择一个表进行编辑"})])),o(l(ce),{show:O.value,"onUpdate:show":r[5]||(r[5]=e=>O.value=e),preset:"dialog",type:"warning",title:"确认删除",content:`确定要删除表「${(t=c.value)==null?void 0:t.name}」吗?此操作将同时删除表中的所有数据,且不可恢复。`,"positive-text":"确认删除","negative-text":"取消","positive-button-props":{type:"error"},loading:R.value,onPositiveClick:re,onNegativeClick:r[6]||(r[6]=e=>O.value=!1)},null,8,["show","content","loading"]),o(l(ce),{show:Q.value,"onUpdate:show":r[10]||(r[10]=e=>Q.value=e),preset:"card",bordered:!1,class:"table-definition-modal",style:{width:"90vw",maxWidth:"800px"}},{header:n(()=>[...r[25]||(r[25]=[a("div",{class:"modal-header"},[a("div",{class:"modal-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M3 3h18v18H3V3zm2 2v14h14V5H5zm2 2h10v2H7V7zm0 4h10v2H7v-2zm0 4h7v2H7v-2z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])]),a("div",null,[a("h3",{class:"modal-title"}," 创建新表 "),a("p",{class:"modal-subtitle"}," 定义表的结构和列类型(创建后不可修改) ")])],-1)])]),default:n(()=>[o(l(Ce),{ref_key:"tableFormRef",ref:B,model:J.value,rules:C,class:"table-form"},{default:n(()=>[o(l(W),{path:"name",label:"表名"},{default:n(()=>[o(l(q),{value:J.value.name,"onUpdate:value":r[7]||(r[7]=e=>J.value.name=e),placeholder:"例如: users, products",size:"large"},null,8,["value"])]),_:1}),o(l(W),{path:"description",label:"描述"},{default:n(()=>[o(l(q),{value:J.value.description,"onUpdate:value":r[8]||(r[8]=e=>J.value.description=e),placeholder:"表的用途说明",size:"large",type:"textarea",rows:2},null,8,["value"])]),_:1}),o(l(W),{label:"列定义"},{default:n(()=>[a("div",$a,[a("div",Sa,[r[28]||(r[28]=a("span",null,null,-1)),o(l($),{dashed:"",onClick:ue,size:"medium"},{icon:n(()=>[...r[26]||(r[26]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4v16m8-8H4",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[27]||(r[27]=h(" 添加列 ",-1))]),_:1})]),a("div",Da,[(w(!0),y(fe,null,me(J.value.columns,(e,s)=>(w(),y("div",{key:s,class:"column-row"},[a("span",Ma,"#"+K(s+1),1),o(l(W),{path:`columns[${s}].name`,"show-label":!1,rule:{required:!0,message:"必填",trigger:"blur"},class:"column-field-name"},{default:n(()=>[o(l(q),{value:e.name,"onUpdate:value":i=>e.name=i,placeholder:"列名"},null,8,["value","onUpdate:value"])]),_:2},1032,["path"]),o(l(W),{path:`columns[${s}].type`,"show-label":!1,rule:{required:!0,message:"必填",trigger:"change"},class:"column-field-type"},{default:n(()=>[o(l(Ue),{value:e.type,"onUpdate:value":i=>e.type=i,options:ve},null,8,["value","onUpdate:value"])]),_:2},1032,["path"]),o(l(ze),{checked:!e.nullable,"onUpdate:checked":i=>e.nullable=!i,class:"column-field-nullable"},{default:n(()=>[...r[29]||(r[29]=[h("必要",-1)])]),_:1},8,["checked","onUpdate:checked"]),o(l(W),{path:`columns[${s}].description`,"show-label":!1,class:"column-field-description"},{default:n(()=>[o(l(q),{value:e.description,"onUpdate:value":i=>e.description=i,placeholder:"列说明(可选)"},null,8,["value","onUpdate:value"])]),_:2},1032,["path"]),o(l($),{type:"error",text:"",size:"small",onClick:i=>we(s),class:"column-delete-btn"},{default:n(()=>[...r[30]||(r[30]=[h(" 删除 ",-1)])]),_:1},8,["onClick"])]))),128)),J.value.columns.length===0?(w(),y("div",_a,[o(l(ge),{description:"暂无列,点击上方添加列按钮添加",size:"small"})])):te("",!0)])])]),_:1}),a("div",za,[o(l($),{size:"large",onClick:r[9]||(r[9]=e=>Q.value=!1)},{default:n(()=>[...r[31]||(r[31]=[h(" 取消 ",-1)])]),_:1}),o(l($),{type:"primary",size:"large",loading:U.value,onClick:he},{default:n(()=>[...r[32]||(r[32]=[h(" 保存 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1},8,["show"]),o(l(ce),{show:z.value,"onUpdate:show":r[13]||(r[13]=e=>z.value=e),preset:"card",bordered:!1,class:"edit-table-description-modal",style:{width:"90vw",maxWidth:"600px"}},{header:n(()=>{var e;return[a("div",Ta,[r[34]||(r[34]=a("div",{class:"modal-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),a("path",{d:"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),a("div",null,[r[33]||(r[33]=a("h3",{class:"modal-title"}," 编辑表声明 ",-1)),a("p",Ua," 编辑表「"+K((e=c.value)==null?void 0:e.name)+"」的描述信息 ",1)])])]}),default:n(()=>[o(l(Ce),{ref:"editTableFormRef",class:"edit-table-form"},{default:n(()=>[o(l(W),{label:"表声明"},{default:n(()=>[o(l(q),{value:x.value,"onUpdate:value":r[11]||(r[11]=e=>x.value=e),placeholder:"表的用途说明",size:"large",type:"textarea",rows:4},null,8,["value"])]),_:1}),o(l(W),{label:"字段声明"},{default:n(()=>{var e,s;return[a("div",Na,[(w(!0),y(fe,null,me(((e=c.value)==null?void 0:e.columns)||[],i=>(w(),y("div",{key:i.name,class:"column-description-row"},[a("div",ja,[a("span",Ia,K(i.name),1),o(T,{size:"tiny",type:de(i.type),style:{"margin-left":"8px"}},{default:n(()=>[h(K(i.type),1)]),_:2},1032,["type"])]),o(l(q),{value:L.value[i.name],"onUpdate:value":j=>L.value[i.name]=j,placeholder:`${i.name} 字段的说明(可选)`,size:"medium",clearable:""},null,8,["value","onUpdate:value","placeholder"])]))),128)),!((s=c.value)!=null&&s.columns)||c.value.columns.length===0?(w(),y("div",Ba,[o(l(ge),{description:"当前表没有字段",size:"small"})])):te("",!0)])]}),_:1}),a("div",Aa,[o(l($),{size:"large",onClick:r[12]||(r[12]=e=>z.value=!1)},{default:n(()=>[...r[35]||(r[35]=[h(" 取消 ",-1)])]),_:1}),o(l($),{type:"primary",size:"large",loading:G.value,onClick:ke},{default:n(()=>[...r[36]||(r[36]=[h(" 保存 ",-1)])]),_:1},8,["loading"])])]),_:1},512)]),_:1},8,["show"])])}}}),Ea=Me(Va,[["__scopeId","data-v-bf1554c4"]]),Ra={class:"dashboard-container"},Ha={style:{position:"absolute",width:"0",height:"0"}},Oa={key:0,class:"loading-state"},La={key:1,class:"dashboard-content"},Pa=$e({__name:"Dashboard",setup(ne){const _=Se(),f=Re(),p=Ye(),A=Ge(),c=Xe(),E=m(A.query.section||"components"),z=le(()=>f.currentConfig),O=le(()=>f.loading),R=le(()=>{var V;return((V=p.user)==null?void 0:V.role)==="admin"}),U=["variables","tables"],G={components:lt,tools:st,variables:dt,init:at,tables:Ea,prompts:Ft},H=le(()=>G[E.value]);async function B(){try{await f.fetchConfig()}catch(V){_.error(V.message)}}async function x(V){if(z.value)try{await f.updateConfig(V),_.success("更新成功")}catch(P){_.error(P.message)}}function L(V){return R.value&&U.includes(V)?(_.warning("超级管理员不允许访问此功能"),c.replace({name:"UserDashboard",query:{section:"components"}}),E.value="components",!0):!1}return De(()=>A.query.section,V=>{if(!V)return;const P=V;L(P)||(E.value=P)},{immediate:!0}),Te(()=>{const V=A.query.section;L(V),B()}),(V,P)=>(w(),y("div",Ra,[(w(),y("svg",Ha,[...P[0]||(P[0]=[a("defs",null,[a("linearGradient",{id:"loading-gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%"},[a("stop",{offset:"0%","stop-color":"#6366f1"}),a("stop",{offset:"50%","stop-color":"#8b5cf6"}),a("stop",{offset:"100%","stop-color":"#ec4899"})])],-1)])])),O.value&&!z.value?(w(),y("div",Oa,[...P[1]||(P[1]=[a("div",{class:"loading-spinner"},[a("svg",{class:"spinner",viewBox:"0 0 50 50"},[a("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none","stroke-width":"4"})])],-1),a("p",{class:"loading-text"},"加载配置中...",-1)])])):z.value?(w(),y("div",La,[(w(),xe(Qe(H.value),{config:z.value,onUpdate:x},null,40,["config"]))])):te("",!0)]))}}),Wa=Me(Pa,[["__scopeId","data-v-5f9aa991"]]);export{Wa as default};
30
+ ${M}${N}`);return}z.value=!0,x.value=!0,L.value=`正在导入 ${i.length} 条数据...`;try{const M=i.map(D=>{const k={};return p.tableDefinition.columns.forEach(Y=>{const F=D[Y.name];let ee=F;if(F!=null&&F!=="")switch(Y.type){case"number":ee=typeof F=="string"?Number(F):F;break;case"boolean":ee=typeof F=="boolean"?F:!!F;break;case"date":typeof F=="string"&&(ee=new Date(F).toISOString());break;case"json":if(typeof F=="string")try{ee=JSON.parse(F)}catch{ee=F}break}else if(Y.defaultValue!==void 0)ee=Y.defaultValue;else if(Y.nullable)ee=null;else switch(Y.type){case"string":ee="";break;case"number":ee=0;break;case"boolean":ee=!1;break;case"date":ee=new Date().toISOString();break;case"json":ee={};break}k[Y.name]=ee}),{rowData:k}}),N=await X.put(`/tables/data/${p.tableId}/batch`,{rows:M});N.data.success?(de(),await b(),A("saved"),R.value=!1,f.success(`成功导入 ${i.length} 条数据`)):f.error("导入失败:"+(N.data.error||"未知错误"))}catch(M){f.error("导入失败: "+(((s=(e=M.response)==null?void 0:e.data)==null?void 0:s.error)||M.message))}finally{z.value=!1,x.value=!1}}catch(i){f.error("文件读取失败: "+(i.message||"未知错误"))}}async function T(t){var s;const e=(s=t.fileList[0])==null?void 0:s.file;if(e)try{const i=await e.text();await r(i)}catch(i){f.error("文件读取失败: "+(i.message||"未知错误"))}}async function d(){if(!B.value.trim()){f.warning("请输入 JSON 数据");return}await r(B.value.trim()),B.value=""}return(t,e)=>(w(),y("div",Wt,[a("div",Kt,[a("div",Yt,[o(l($),{size:"large",onClick:e[0]||(e[0]=s=>U.value=!U.value),type:U.value?"warning":"success",ghost:""},{icon:n(()=>[U.value?(w(),y("svg",Gt,[...e[6]||(e[6]=[a("path",{d:"M19 11H5a2 2 0 00-2 2v7a2 2 0 002 2h14a2 2 0 002-2v-7a2 2 0 00-2-2zM7 11V7a5 5 0 0110 0v4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):(w(),y("svg",Qt,[...e[7]||(e[7]=[a("path",{d:"M19 11H5a2 2 0 00-2 2v7a2 2 0 002 2h14a2 2 0 002-2v-7a2 2 0 00-2-2zM7 11V7a5 5 0 0110 0v4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),a("path",{d:"M12 15v2M9 17h6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])]))]),default:n(()=>[h(" "+K(U.value?"解锁编辑":"锁定编辑"),1)]),_:1},8,["type"]),o(l($),{type:"primary",size:"large",onClick:Q,disabled:!ne.tableDefinition||U.value},{icon:n(()=>[...e[8]||(e[8]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4v16m8-8H4",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[e[9]||(e[9]=h(" 添加行 ",-1))]),_:1},8,["disabled"]),o(l($),{size:"large",onClick:oe,disabled:E.value.length===0||U.value,type:"error",ghost:""},{icon:n(()=>[...e[10]||(e[10]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[h(" 删除选中 ("+K(E.value.length)+") ",1)]),_:1},8,["disabled"]),o(l($),{size:"large",onClick:g,disabled:!ne.tableDefinition||c.value.length===0},{icon:n(()=>[...e[11]||(e[11]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[e[12]||(e[12]=h(" 导出 JSON ",-1))]),_:1},8,["disabled"]),o(l($),{size:"large",onClick:e[1]||(e[1]=s=>R.value=!0),disabled:!ne.tableDefinition},{icon:n(()=>[...e[13]||(e[13]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[e[14]||(e[14]=h(" 导入 JSON ",-1))]),_:1},8,["disabled"])]),a("div",Xt,[a("div",Zt,[O.value?(w(),y("div",{key:0,class:Ne(["save-success-indicator",{flash:O.value}])},null,2)):te("",!0)]),o(l(je),{type:"info",size:"large"},{default:n(()=>[h(" 共 "+K(c.value.length)+" 行(编辑即保存) ",1)]),_:1})])]),ne.tableDefinition?(w(),y("div",ea,[a("div",ta,[o(l(Ie),{columns:P.value,data:c.value,pagination:V.value,"row-key":s=>s.id||`new-${c.value.indexOf(s)}`,"row-props":J,"max-height":600,"scroll-x":ve.value,bordered:!0,"single-line":!1,"onUpdate:checkedRowKeys":ae,class:"editable-data-table excel-table"},null,8,["columns","data","pagination","row-key","scroll-x"])],512)])):(w(),y("div",aa,[o(l(ge),{description:"请先创建或选择表定义"})])),o(l(ce),{show:R.value,"onUpdate:show":e[4]||(e[4]=s=>R.value=s),preset:"card",bordered:!1,class:"import-modal",style:{width:"90vw",maxWidth:"600px"}},{header:n(()=>[...e[15]||(e[15]=[a("div",{class:"modal-header"},[a("div",{class:"modal-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])]),a("div",null,[a("h3",{class:"modal-title"},"导入表数据"),a("p",{class:"modal-subtitle"},"从 JSON 文件导入表数据")])],-1)])]),default:n(()=>[a("div",sa,[o(l(Ve),{"default-value":"file",type:"line"},{default:n(()=>[o(l(_e),{name:"file",tab:"文件上传"},{default:n(()=>[o(l(Je),{"file-list":[],accept:".json",max:1,onChange:T},{default:n(()=>[o(l(qe),null,{default:n(()=>[...e[16]||(e[16]=[a("div",{class:"upload-area"},[a("svg",{class:"upload-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4m17-7l-5-5m0 0L7 8m9-5v12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})]),a("p",{class:"upload-text"},"点击或拖拽 JSON 文件到此处"),a("p",{class:"upload-hint"},"支持导入表数据")],-1)])]),_:1})]),_:1})]),_:1}),o(l(_e),{name:"text",tab:"直接编辑/粘贴"},{default:n(()=>[a("div",la,[o(l(q),{value:B.value,"onUpdate:value":e[2]||(e[2]=s=>B.value=s),type:"textarea",placeholder:"请粘贴或输入 JSON 数据(数组格式)...",rows:15,class:"json-textarea"},null,8,["value"]),a("div",na,[o(l($),{onClick:d,type:"primary",disabled:!B.value.trim()},{default:n(()=>[...e[17]||(e[17]=[h(" 导入 ",-1)])]),_:1},8,["disabled"]),o(l($),{onClick:e[3]||(e[3]=s=>B.value="")},{default:n(()=>[...e[18]||(e[18]=[h(" 清空 ",-1)])]),_:1})])])]),_:1})]),_:1})])]),_:1},8,["show"]),o(l(ce),{show:x.value,"onUpdate:show":e[5]||(e[5]=s=>x.value=s),"mask-closable":!1,"close-on-esc":!1,"auto-focus":!1,preset:"dialog",closable:!1,"show-icon":!1,style:{width:"400px"}},{default:n(()=>[a("div",oa,[o(l(Fe),{size:"large"},{description:n(()=>[a("div",ra,K(L.value),1)]),_:1})])]),_:1},8,["show"])]))}}),ua=Me(ia,[["__scopeId","data-v-da42254c"]]),da={class:"tables-page"},ca={class:"tables-toolbar"},va={class:"toolbar-left"},pa={class:"table-select-with-icon"},fa={class:"toolbar-right"},ma={class:"toolbar-switch"},ga={class:"explore-config-panel"},wa={class:"explore-config-list"},ha={key:0,class:"empty-tables-hint"},ba={class:"explore-config-item-info"},ka={class:"table-name"},ya={key:0,class:"table-description"},xa={key:0,class:"tables-table-container"},Ca={key:1,class:"no-table-selected"},$a={class:"columns-section"},Sa={class:"columns-header"},Da={class:"columns-list"},Ma={class:"column-index"},_a={key:0,class:"empty-columns"},za={class:"form-actions"},Ta={class:"modal-header"},Ua={class:"modal-subtitle"},Na={class:"column-descriptions-section"},ja={class:"column-description-label"},Ia={class:"column-name-label"},Ba={key:0,class:"empty-columns-hint"},Aa={class:"form-actions"},Va=$e({__name:"Tables",setup(ne){const _=Se(),f=Re(),p=m([]),A=m(null),c=m(null),E=m(!1),z=m(!1),O=m(!1),R=m(!1),U=m(!1),G=m(!1),H=m(!1),B=m(null),x=m(""),L=m({}),V=m(!0),P=m({}),ve=[{label:"字符串",value:"string"},{label:"数字",value:"number"},{label:"布尔值",value:"boolean"},{label:"日期",value:"date"},{label:"JSON",value:"json"}],J=m({name:"",description:"",columns:[]}),C={name:{required:!0,message:"表名不能为空",trigger:"blur"}},u=le(()=>p.value.map(g=>({label:g.name,value:g.id,description:g.description})));function b(g){if(g){const r=p.value.find(T=>T.id===g);r&&pe(r)}else A.value=null,c.value=null}const Q=le({get:()=>E.value,set:g=>{E.value=g}});Te(async()=>{await Z(),await oe()});async function oe(){try{if(await f.fetchConfig(),f.currentConfig){const g=f.currentConfig;V.value=g.enableExploreTable!==!1}}catch(g){console.error("加载配置失败:",g)}}async function ae(g){H.value=!0;try{await f.updateConfig({enableExploreTable:g}),_.success(g?"已允许 AI 探索数据表":"已禁止 AI 探索数据表")}catch(r){_.error("更新配置失败: "+(r.message||"未知错误")),V.value=!g}finally{H.value=!1}}function se(g){return g.allowExplore!==!1}async function ie(g,r){var T,d;P.value[g]=!0;try{const t=p.value.find(s=>s.id===g);if(!t){_.error("表不存在");return}(await X.put(`/tables/definitions/${g}`,{allowExplore:r})).data.success&&(t.allowExplore=r,_.success(r?`已允许 AI 探索表「${t.name}」`:`已禁止 AI 探索表「${t.name}」`),c.value&&c.value.id===g&&(c.value.allowExplore=r))}catch(t){_.error("更新失败: "+(((d=(T=t.response)==null?void 0:T.data)==null?void 0:d.error)||t.message))}finally{P.value[g]=!1}}async function Z(){var g,r;try{const T=await X.get("/tables/definitions");T.data.success&&(p.value=T.data.data,p.value.length>0&&!A.value&&pe(p.value[0]))}catch(T){_.error("加载表列表失败: "+(((r=(g=T.response)==null?void 0:g.data)==null?void 0:r.error)||T.message))}}function pe(g){A.value=g.id,c.value=g}function ue(){J.value.columns.push({name:"",type:"string",nullable:!0,description:""})}function we(g){J.value.columns.splice(g,1)}async function he(){B.value&&await B.value.validate(async g=>{var r,T;if(!g){if(J.value.columns.length===0){_.warning("至少需要定义一个列");return}U.value=!0;try{const d=await X.post("/tables/definitions",J.value);d.data.success&&(_.success("表创建成功"),E.value=!1,J.value={name:"",description:"",columns:[]},await Z(),pe(d.data.data))}catch(d){_.error("保存失败: "+(((T=(r=d.response)==null?void 0:r.data)==null?void 0:T.error)||d.message))}finally{U.value=!1}}})}async function re(){var g,r;if(c.value){R.value=!0;try{(await X.delete(`/tables/definitions/${c.value.id}`)).data.success&&(_.success("表删除成功"),A.value=null,c.value=null,O.value=!1,await Z())}catch(T){_.error("删除失败: "+(((r=(g=T.response)==null?void 0:g.data)==null?void 0:r.error)||T.message))}finally{R.value=!1}}}function be(){}De(z,g=>{g&&c.value&&(x.value=c.value.description||"",L.value={},c.value.columns&&c.value.columns.forEach(r=>{L.value[r.name]=r.description||""}))});function de(g){switch(g){case"string":return"info";case"number":return"success";case"boolean":return"warning";case"date":return"default";case"json":return"error";default:return"default"}}async function ke(){var g,r;if(!c.value||!A.value){_.error("请先选择一个表");return}G.value=!0;try{const T=c.value.columns.map(t=>({...t,description:L.value[t.name]||void 0})),d=await X.put(`/tables/definitions/${A.value}`,{description:x.value||null,columns:T});d.data.success&&(_.success("表声明和字段声明更新成功"),z.value=!1,c.value&&(c.value.description=d.data.data.description,c.value.columns=d.data.data.columns),await Z())}catch(T){_.error("更新失败: "+(((r=(g=T.response)==null?void 0:g.data)==null?void 0:r.error)||T.message))}finally{G.value=!1}}return(g,r)=>{var d,t;const T=Ke("n-tag");return w(),y("div",da,[a("div",ca,[a("div",va,[a("div",pa,[o(l(Ue),{value:A.value,"onUpdate:value":[r[0]||(r[0]=e=>A.value=e),b],options:u.value,placeholder:"选择表...",size:"large",clearable:"",filterable:"",class:"table-select"},{empty:n(()=>[o(l(ge),{description:"暂无表",size:"small"})]),_:1},8,["value","options"]),(d=c.value)!=null&&d.description?(w(),xe(l(Ee),{key:0,trigger:"hover",placement:"top"},{trigger:n(()=>[...r[14]||(r[14]=[a("div",{class:"table-info-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)])]),default:n(()=>[h(" "+K(c.value.description),1)]),_:1})):te("",!0)])]),a("div",fa,[a("div",ma,[o(l(Be),{value:V.value,"onUpdate:value":[r[1]||(r[1]=e=>V.value=e),ae],size:"medium",loading:H.value},{checked:n(()=>[...r[15]||(r[15]=[h("允许 AI 探索数据表",-1)])]),unchecked:n(()=>[...r[16]||(r[16]=[h("禁止 AI 探索数据表",-1)])]),_:1},8,["value","loading"]),o(l(We),{trigger:"hover",placement:"bottom-end",style:{width:"400px",maxHeight:"500px"}},{trigger:n(()=>[...r[17]||(r[17]=[a("div",{class:"explore-config-icon",title:"配置表探索权限"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94L14.4 2.81c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z",fill:"currentColor"})])],-1)])]),default:n(()=>[a("div",ga,[r[18]||(r[18]=a("div",{class:"explore-config-header"},[a("h4",null,"配置表探索权限"),a("p",{class:"explore-config-hint"},"控制哪些表允许被 AI 探索(默认为允许)")],-1)),a("div",wa,[p.value.length===0?(w(),y("div",ha,[o(l(ge),{description:"暂无表",size:"small"})])):te("",!0),(w(!0),y(fe,null,me(p.value,e=>(w(),y("div",{key:e.id,class:"explore-config-item"},[a("div",ba,[a("span",ka,K(e.name),1),e.description?(w(),y("span",ya,K(e.description),1)):te("",!0)]),o(l(Be),{value:se(e),"onUpdate:value":s=>ie(e.id,s),size:"small",loading:P.value[e.id]},null,8,["value","onUpdate:value","loading"])]))),128))])])]),_:1})]),c.value?(w(),xe(l($),{key:0,size:"large",ghost:"",onClick:r[2]||(r[2]=e=>z.value=!0),class:"edit-table-btn"},{icon:n(()=>[...r[19]||(r[19]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),a("path",{d:"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[20]||(r[20]=h(" 编辑表声明 ",-1))]),_:1})):te("",!0),c.value?(w(),xe(l($),{key:1,type:"error",size:"large",ghost:"",onClick:r[3]||(r[3]=e=>O.value=!0),class:"delete-table-btn"},{icon:n(()=>[...r[21]||(r[21]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[22]||(r[22]=h(" 删除表 ",-1))]),_:1})):te("",!0),o(l($),{type:"primary",size:"large",onClick:r[4]||(r[4]=e=>E.value=!0),class:"create-table-btn"},{icon:n(()=>[...r[23]||(r[23]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4v16m8-8H4",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[24]||(r[24]=h(" 创建新表 ",-1))]),_:1})])]),c.value?(w(),y("div",xa,[o(ua,{"table-definition":c.value,"table-id":A.value,onSaved:be},null,8,["table-definition","table-id"])])):(w(),y("div",Ca,[o(l(ge),{description:"请选择一个表进行编辑"})])),o(l(ce),{show:O.value,"onUpdate:show":r[5]||(r[5]=e=>O.value=e),preset:"dialog",type:"warning",title:"确认删除",content:`确定要删除表「${(t=c.value)==null?void 0:t.name}」吗?此操作将同时删除表中的所有数据,且不可恢复。`,"positive-text":"确认删除","negative-text":"取消","positive-button-props":{type:"error"},loading:R.value,onPositiveClick:re,onNegativeClick:r[6]||(r[6]=e=>O.value=!1)},null,8,["show","content","loading"]),o(l(ce),{show:Q.value,"onUpdate:show":r[10]||(r[10]=e=>Q.value=e),preset:"card",bordered:!1,class:"table-definition-modal",style:{width:"90vw",maxWidth:"800px"}},{header:n(()=>[...r[25]||(r[25]=[a("div",{class:"modal-header"},[a("div",{class:"modal-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M3 3h18v18H3V3zm2 2v14h14V5H5zm2 2h10v2H7V7zm0 4h10v2H7v-2zm0 4h7v2H7v-2z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])]),a("div",null,[a("h3",{class:"modal-title"}," 创建新表 "),a("p",{class:"modal-subtitle"}," 定义表的结构和列类型(创建后不可修改) ")])],-1)])]),default:n(()=>[o(l(Ce),{ref_key:"tableFormRef",ref:B,model:J.value,rules:C,class:"table-form"},{default:n(()=>[o(l(W),{path:"name",label:"表名"},{default:n(()=>[o(l(q),{value:J.value.name,"onUpdate:value":r[7]||(r[7]=e=>J.value.name=e),placeholder:"例如: users, products",size:"large"},null,8,["value"])]),_:1}),o(l(W),{path:"description",label:"描述"},{default:n(()=>[o(l(q),{value:J.value.description,"onUpdate:value":r[8]||(r[8]=e=>J.value.description=e),placeholder:"表的用途说明",size:"large",type:"textarea",rows:2},null,8,["value"])]),_:1}),o(l(W),{label:"列定义"},{default:n(()=>[a("div",$a,[a("div",Sa,[r[28]||(r[28]=a("span",null,null,-1)),o(l($),{dashed:"",onClick:ue,size:"medium"},{icon:n(()=>[...r[26]||(r[26]=[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4v16m8-8H4",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:n(()=>[r[27]||(r[27]=h(" 添加列 ",-1))]),_:1})]),a("div",Da,[(w(!0),y(fe,null,me(J.value.columns,(e,s)=>(w(),y("div",{key:s,class:"column-row"},[a("span",Ma,"#"+K(s+1),1),o(l(W),{path:`columns[${s}].name`,"show-label":!1,rule:{required:!0,message:"必填",trigger:"blur"},class:"column-field-name"},{default:n(()=>[o(l(q),{value:e.name,"onUpdate:value":i=>e.name=i,placeholder:"列名"},null,8,["value","onUpdate:value"])]),_:2},1032,["path"]),o(l(W),{path:`columns[${s}].type`,"show-label":!1,rule:{required:!0,message:"必填",trigger:"change"},class:"column-field-type"},{default:n(()=>[o(l(Ue),{value:e.type,"onUpdate:value":i=>e.type=i,options:ve},null,8,["value","onUpdate:value"])]),_:2},1032,["path"]),o(l(ze),{checked:!e.nullable,"onUpdate:checked":i=>e.nullable=!i,class:"column-field-nullable"},{default:n(()=>[...r[29]||(r[29]=[h("必要",-1)])]),_:1},8,["checked","onUpdate:checked"]),o(l(W),{path:`columns[${s}].description`,"show-label":!1,class:"column-field-description"},{default:n(()=>[o(l(q),{value:e.description,"onUpdate:value":i=>e.description=i,placeholder:"列说明(可选)"},null,8,["value","onUpdate:value"])]),_:2},1032,["path"]),o(l($),{type:"error",text:"",size:"small",onClick:i=>we(s),class:"column-delete-btn"},{default:n(()=>[...r[30]||(r[30]=[h(" 删除 ",-1)])]),_:1},8,["onClick"])]))),128)),J.value.columns.length===0?(w(),y("div",_a,[o(l(ge),{description:"暂无列,点击上方添加列按钮添加",size:"small"})])):te("",!0)])])]),_:1}),a("div",za,[o(l($),{size:"large",onClick:r[9]||(r[9]=e=>Q.value=!1)},{default:n(()=>[...r[31]||(r[31]=[h(" 取消 ",-1)])]),_:1}),o(l($),{type:"primary",size:"large",loading:U.value,onClick:he},{default:n(()=>[...r[32]||(r[32]=[h(" 保存 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1},8,["show"]),o(l(ce),{show:z.value,"onUpdate:show":r[13]||(r[13]=e=>z.value=e),preset:"card",bordered:!1,class:"edit-table-description-modal",style:{width:"90vw",maxWidth:"600px"}},{header:n(()=>{var e;return[a("div",Ta,[r[34]||(r[34]=a("div",{class:"modal-icon"},[a("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),a("path",{d:"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),a("div",null,[r[33]||(r[33]=a("h3",{class:"modal-title"}," 编辑表声明 ",-1)),a("p",Ua," 编辑表「"+K((e=c.value)==null?void 0:e.name)+"」的描述信息 ",1)])])]}),default:n(()=>[o(l(Ce),{ref:"editTableFormRef",class:"edit-table-form"},{default:n(()=>[o(l(W),{label:"表声明"},{default:n(()=>[o(l(q),{value:x.value,"onUpdate:value":r[11]||(r[11]=e=>x.value=e),placeholder:"表的用途说明",size:"large",type:"textarea",rows:4},null,8,["value"])]),_:1}),o(l(W),{label:"字段声明"},{default:n(()=>{var e,s;return[a("div",Na,[(w(!0),y(fe,null,me(((e=c.value)==null?void 0:e.columns)||[],i=>(w(),y("div",{key:i.name,class:"column-description-row"},[a("div",ja,[a("span",Ia,K(i.name),1),o(T,{size:"tiny",type:de(i.type),style:{"margin-left":"8px"}},{default:n(()=>[h(K(i.type),1)]),_:2},1032,["type"])]),o(l(q),{value:L.value[i.name],"onUpdate:value":j=>L.value[i.name]=j,placeholder:`${i.name} 字段的说明(可选)`,size:"medium",clearable:""},null,8,["value","onUpdate:value","placeholder"])]))),128)),!((s=c.value)!=null&&s.columns)||c.value.columns.length===0?(w(),y("div",Ba,[o(l(ge),{description:"当前表没有字段",size:"small"})])):te("",!0)])]}),_:1}),a("div",Aa,[o(l($),{size:"large",onClick:r[12]||(r[12]=e=>z.value=!1)},{default:n(()=>[...r[35]||(r[35]=[h(" 取消 ",-1)])]),_:1}),o(l($),{type:"primary",size:"large",loading:G.value,onClick:ke},{default:n(()=>[...r[36]||(r[36]=[h(" 保存 ",-1)])]),_:1},8,["loading"])])]),_:1},512)]),_:1},8,["show"])])}}}),Ea=Me(Va,[["__scopeId","data-v-c01436bb"]]),Ra={class:"dashboard-container"},Ha={style:{position:"absolute",width:"0",height:"0"}},Oa={key:0,class:"loading-state"},La={key:1,class:"dashboard-content"},Pa=$e({__name:"Dashboard",setup(ne){const _=Se(),f=Re(),p=Ye(),A=Ge(),c=Xe(),E=m(A.query.section||"components"),z=le(()=>f.currentConfig),O=le(()=>f.loading),R=le(()=>{var V;return((V=p.user)==null?void 0:V.role)==="admin"}),U=["variables","tables"],G={components:lt,tools:st,variables:dt,init:at,tables:Ea,prompts:Ft},H=le(()=>G[E.value]);async function B(){try{await f.fetchConfig()}catch(V){_.error(V.message)}}async function x(V){if(z.value)try{await f.updateConfig(V),_.success("更新成功")}catch(P){_.error(P.message)}}function L(V){return R.value&&U.includes(V)?(_.warning("超级管理员不允许访问此功能"),c.replace({name:"UserDashboard",query:{section:"components"}}),E.value="components",!0):!1}return De(()=>A.query.section,V=>{if(!V)return;const P=V;L(P)||(E.value=P)},{immediate:!0}),Te(()=>{const V=A.query.section;L(V),B()}),(V,P)=>(w(),y("div",Ra,[(w(),y("svg",Ha,[...P[0]||(P[0]=[a("defs",null,[a("linearGradient",{id:"loading-gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%"},[a("stop",{offset:"0%","stop-color":"#6366f1"}),a("stop",{offset:"50%","stop-color":"#8b5cf6"}),a("stop",{offset:"100%","stop-color":"#ec4899"})])],-1)])])),O.value&&!z.value?(w(),y("div",Oa,[...P[1]||(P[1]=[a("div",{class:"loading-spinner"},[a("svg",{class:"spinner",viewBox:"0 0 50 50"},[a("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none","stroke-width":"4"})])],-1),a("p",{class:"loading-text"},"加载配置中...",-1)])])):z.value?(w(),y("div",La,[(w(),xe(Qe(H.value),{config:z.value,onUpdate:x},null,40,["config"]))])):te("",!0)]))}}),Wa=Me(Pa,[["__scopeId","data-v-5f9aa991"]]);export{Wa as default};