@xto/business 1.1.0 → 1.2.0
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.
- package/es/index.mjs +285 -271
- package/lib/index.cjs +6 -6
- package/package.json +13 -5
package/lib/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),N=require("@xto/core"),B=require("@xto/base"),$=require("@xto/form"),w=require("@xto/data"),T=["colspan"],D=["colspan"],L=["value"],P=e.defineComponent({name:"XProTable",__name:"index",props:{columns:{},data:{default:()=>[]},loading:{type:Boolean,default:!1},pagination:{type:Boolean,default:!0},pageSize:{default:10},currentPage:{default:1},total:{default:0},selection:{type:Boolean,default:!1},index:{type:Boolean,default:!1},indexLabel:{default:"#"}},emits:["update:data","update:currentPage","update:pageSize","search","refresh","reset"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("pro-table"),n=e.ref({});e.ref([]),e.computed({get:()=>a.data,set:s=>c("update:data",s)});const k=s=>{c("update:currentPage",s),c("search",{...n.value,page:s})},f=s=>{c("update:pageSize",s),c("search",{...n.value,pageSize:s})},v=()=>{c("search",n.value)},m=()=>{n.value={},c("reset"),c("search",{})},p=()=>{c("refresh")},o=e.computed(()=>a.columns.filter(s=>s.search));return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l).b())},[o.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("search"))},[e.createVNode(e.unref(B.Space),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,r=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:r.prop},[r.searchType==="input"||!r.searchType?(e.openBlock(),e.createBlock(e.unref($.Input),{key:0,modelValue:n.value[r.prop],"onUpdate:modelValue":E=>n.value[r.prop]=E,placeholder:`请输入${r.label}`,clearable:"",onKeyup:e.withKeys(v,["enter"])},null,8,["modelValue","onUpdate:modelValue","placeholder"])):e.createCommentVNode("",!0)],64))),128)),e.createVNode(e.unref(B.Button),{type:"primary",onClick:v},{default:e.withCtx(()=>[...i[0]||(i[0]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(B.Button),{onClick:m},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createTextVNode("重置",-1)])]),_:1}),e.createVNode(e.unref(B.Button),{onClick:p},{default:e.withCtx(()=>[...i[2]||(i[2]=[e.createTextVNode("刷新",-1)])]),_:1})]),_:1})],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toolbar"))},[e.createVNode(e.unref(B.Space),null,{default:e.withCtx(()=>[e.renderSlot(s.$slots,"toolbar")]),_:3})],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("table-wrapper"))},[e.createElementVNode("table",{class:e.normalizeClass(e.unref(l).e("table"))},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[t.selection?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(e.unref(l).e("selection"))},[...i[3]||(i[3]=[e.createElementVNode("input",{type:"checkbox"},null,-1)])],2)):e.createCommentVNode("",!0),t.index?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(e.unref(l).e("index"))},e.toDisplayString(t.indexLabel),3)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,r=>(e.openBlock(),e.createElementBlock("th",{key:r.prop,class:e.normalizeClass(e.unref(l).e("column")),style:e.normalizeStyle({width:r.width,minWidth:r.minWidth,textAlign:r.align||"left"})},e.toDisplayString(r.label),7))),128))])]),e.createElementVNode("tbody",null,[t.loading?(e.openBlock(),e.createElementBlock("tr",{key:0,class:e.normalizeClass(e.unref(l).e("loading-row"))},[e.createElementVNode("td",{colspan:t.columns.length+(t.selection?1:0)+(t.index?1:0)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("loading"))}," 加载中... ",2)],8,T)],2)):t.data.length===0?(e.openBlock(),e.createElementBlock("tr",{key:1,class:e.normalizeClass(e.unref(l).e("empty-row"))},[e.createElementVNode("td",{colspan:t.columns.length+(t.selection?1:0)+(t.index?1:0)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("empty"))}," 暂无数据 ",2)],8,D)],2)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(t.data,(r,E)=>(e.openBlock(),e.createElementBlock("tr",{key:E,class:e.normalizeClass(e.unref(l).e("row"))},[t.selection?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(e.unref(l).e("selection"))},[e.createElementVNode("input",{type:"checkbox",value:r},null,8,L)],2)):e.createCommentVNode("",!0),t.index?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(e.unref(l).e("index"))},e.toDisplayString((t.currentPage-1)*t.pageSize+E+1),3)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,y=>{var g;return e.openBlock(),e.createElementBlock("td",{key:y.prop,class:e.normalizeClass(e.unref(l).e("cell")),style:e.normalizeStyle({textAlign:y.align||"left"})},[e.renderSlot(s.$slots,(g=y.slots)==null?void 0:g.default,{row:r,column:y},()=>[e.createTextVNode(e.toDisplayString(y.formatter?y.formatter(r,y,r[y.prop]):r[y.prop]),1)])],6)}),128))],2))),128))])],2)],2),t.pagination?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("pagination"))},[e.createVNode(e.unref(w.Pagination),{total:t.total,"page-size":t.pageSize,"current-page":t.currentPage,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:k,onSizeChange:f},null,8,["total","page-size","current-page"])],2)):e.createCommentVNode("",!0)],2))}}),H=["onUpdate:modelValue"],I=["value"],U=e.defineComponent({name:"XSearchForm",__name:"index",props:{columns:{default:()=>[]},model:{default:()=>({})},labelWidth:{default:"100px"},labelPosition:{default:"right"}},emits:["search","reset"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("search-form"),n=e.reactive({});a.columns.forEach(m=>{m.defaultValue!==void 0?n[m.prop]=m.defaultValue:a.model[m.prop]!==void 0&&(n[m.prop]=a.model[m.prop])});const k=()=>{c("search",{...n})},f=()=>{a.columns.forEach(m=>{n[m.prop]=m.defaultValue}),c("reset")},v=e.computed(()=>({width:typeof a.labelWidth=="number"?`${a.labelWidth}px`:a.labelWidth}));return(m,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("items"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,o=>(e.openBlock(),e.createElementBlock("div",{key:o.prop,class:e.normalizeClass(e.unref(l).e("item"))},[e.createElementVNode("label",{class:e.normalizeClass(e.unref(l).e("label")),style:e.normalizeStyle(v.value)},e.toDisplayString(o.label),7),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("content"))},[o.type==="input"||!o.type?(e.openBlock(),e.createBlock(e.unref($.Input),{key:0,modelValue:n[o.prop],"onUpdate:modelValue":s=>n[o.prop]=s,placeholder:o.placeholder||`请输入${o.label}`,clearable:""},null,8,["modelValue","onUpdate:modelValue","placeholder"])):o.type==="select"?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:1,"onUpdate:modelValue":s=>n[o.prop]=s,class:e.normalizeClass(e.unref(l).e("select"))},[p[0]||(p[0]=e.createElementVNode("option",{value:""},"请选择",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.options,s=>(e.openBlock(),e.createElementBlock("option",{key:s.value,value:s.value},e.toDisplayString(s.label),9,I))),128))],10,H)),[[e.vModelSelect,n[o.prop]]]):o.type==="date"?(e.openBlock(),e.createBlock(e.unref($.Input),{key:2,modelValue:n[o.prop],"onUpdate:modelValue":s=>n[o.prop]=s,type:"date",placeholder:o.placeholder||`请选择${o.label}`},null,8,["modelValue","onUpdate:modelValue","placeholder"])):(e.openBlock(),e.createBlock(e.unref($.Input),{key:3,modelValue:n[o.prop],"onUpdate:modelValue":s=>n[o.prop]=s,placeholder:o.placeholder||`请输入${o.label}`},null,8,["modelValue","onUpdate:modelValue","placeholder"]))],2)],2))),128))],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("actions"))},[e.createVNode(e.unref(B.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(B.Button),{type:"primary",onClick:k},{default:e.withCtx(()=>[...p[1]||(p[1]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(B.Button),{onClick:f},{default:e.withCtx(()=>[...p[2]||(p[2]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})],2)],2))}}),q=e.defineComponent({name:"XStatistic",__name:"index",props:{title:{default:""},value:{default:0},suffix:{default:""},prefix:{default:""},precision:{default:0},trend:{default:""},trendValue:{default:0},color:{},titleColor:{},valueColor:{}},setup(t){const u=t,a=N.useNamespace("statistic"),c=e.computed(()=>typeof u.value=="number"?u.value.toFixed(u.precision):u.value),l=e.computed(()=>[a.e("trend"),a.em("trend",u.trend)]),n=e.computed(()=>u.trend==="up"?"↑":u.trend==="down"?"↓":"");return(k,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(a).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).e("title")),style:e.normalizeStyle({color:t.titleColor})},e.toDisplayString(t.title),7),e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).e("content"))},[t.prefix?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(a).e("prefix"))},e.toDisplayString(t.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("value")),style:e.normalizeStyle({color:t.valueColor})},e.toDisplayString(c.value),7),t.suffix?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(a).e("suffix"))},e.toDisplayString(t.suffix),3)):e.createCommentVNode("",!0)],2),t.trend?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(l.value)},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("trend-icon"))},e.toDisplayString(n.value),3),e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("trend-value"))},e.toDisplayString(t.trendValue),3)],2)):e.createCommentVNode("",!0)],2))}}),F=e.defineComponent({name:"XExport",__name:"index",props:{data:{default:()=>[]},filename:{default:"export"},sheetName:{default:"Sheet1"},columns:{default:()=>[]}},setup(t){const u=t,a=e.ref(!1),c=()=>{if(u.data.length!==0){a.value=!0;try{const l=u.columns.length>0?u.columns.map(p=>p.title):Object.keys(u.data[0]),n=u.columns.length>0?u.columns.map(p=>p.key):Object.keys(u.data[0]),k=[l.join(","),...u.data.map(p=>n.map(o=>{const s=p[o];return typeof s=="string"&&(s.includes(",")||s.includes('"'))?`"${s.replace(/"/g,'""')}"`:s}).join(","))].join(`
|
|
2
|
-
`),f=new Blob([k],{type:"text/csv;charset=utf-8;"}),v=URL.createObjectURL(f),m=document.createElement("a");m.href=v,m.download=`${u.filename}.csv`,document.body.appendChild(m),m.click(),document.body.removeChild(m),URL.revokeObjectURL(v)}catch(l){console.error("Export failed:",l)}finally{a.value=!1}}};return(l,n)=>(e.openBlock(),e.createBlock(e.unref(
|
|
3
|
-
`),c=[];let l=!1,n="",k=[],f=!1,v="",m=!1,p=!1;const o=()=>{f&&(c.push(`</${v}>`),f=!1,v="")},s=()=>{m&&(c.push("</blockquote>"),m=!1)},i=()=>{p&&(c.push("</table>"),p=!1)};for(let r=0;r<a.length;r++){let
|
|
4
|
-
`))}</code></pre>`),l=!1,n="",k=[]):(o(),s(),i(),l=!0,n=
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),N=require("@xto/core"),b=require("@xto/base"),$=require("@xto/form"),w=require("@xto/data"),T=["colspan"],D=["colspan"],L=["value"],P=e.defineComponent({name:"XProTable",__name:"index",props:{columns:{},data:{default:()=>[]},loading:{type:Boolean,default:!1},pagination:{type:Boolean,default:!0},pageSize:{default:10},currentPage:{default:1},total:{default:0},selection:{type:Boolean,default:!1},index:{type:Boolean,default:!1},indexLabel:{default:"#"}},emits:["update:data","update:currentPage","update:pageSize","search","refresh","reset"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("pro-table"),n=e.ref({});e.ref([]),e.computed({get:()=>a.data,set:s=>c("update:data",s)});const k=s=>{c("update:currentPage",s),c("search",{...n.value,page:s})},f=s=>{c("update:pageSize",s),c("search",{...n.value,pageSize:s})},v=()=>{c("search",n.value)},m=()=>{n.value={},c("reset"),c("search",{})},p=()=>{c("refresh")},o=e.computed(()=>a.columns.filter(s=>s.search));return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l).b())},[o.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("search"))},[e.createVNode(e.unref(b.Space),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,r=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:r.prop},[r.searchType==="input"||!r.searchType?(e.openBlock(),e.createBlock(e.unref($.Input),{key:0,modelValue:n.value[r.prop],"onUpdate:modelValue":C=>n.value[r.prop]=C,placeholder:`请输入${r.label}`,clearable:"",onKeyup:e.withKeys(v,["enter"])},null,8,["modelValue","onUpdate:modelValue","placeholder"])):e.createCommentVNode("",!0)],64))),128)),e.createVNode(e.unref(b.Button),{type:"primary",onClick:v},{default:e.withCtx(()=>[...i[0]||(i[0]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(b.Button),{onClick:m},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createTextVNode("重置",-1)])]),_:1}),e.createVNode(e.unref(b.Button),{onClick:p},{default:e.withCtx(()=>[...i[2]||(i[2]=[e.createTextVNode("刷新",-1)])]),_:1})]),_:1})],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toolbar"))},[e.createVNode(e.unref(b.Space),null,{default:e.withCtx(()=>[e.renderSlot(s.$slots,"toolbar")]),_:3})],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("table-wrapper"))},[e.createElementVNode("table",{class:e.normalizeClass(e.unref(l).e("table"))},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[t.selection?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(e.unref(l).e("selection"))},[...i[3]||(i[3]=[e.createElementVNode("input",{type:"checkbox"},null,-1)])],2)):e.createCommentVNode("",!0),t.index?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(e.unref(l).e("index"))},e.toDisplayString(t.indexLabel),3)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,r=>(e.openBlock(),e.createElementBlock("th",{key:r.prop,class:e.normalizeClass(e.unref(l).e("column")),style:e.normalizeStyle({width:r.width,minWidth:r.minWidth,textAlign:r.align||"left"})},e.toDisplayString(r.label),7))),128))])]),e.createElementVNode("tbody",null,[t.loading?(e.openBlock(),e.createElementBlock("tr",{key:0,class:e.normalizeClass(e.unref(l).e("loading-row"))},[e.createElementVNode("td",{colspan:t.columns.length+(t.selection?1:0)+(t.index?1:0)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("loading"))}," 加载中... ",2)],8,T)],2)):t.data.length===0?(e.openBlock(),e.createElementBlock("tr",{key:1,class:e.normalizeClass(e.unref(l).e("empty-row"))},[e.createElementVNode("td",{colspan:t.columns.length+(t.selection?1:0)+(t.index?1:0)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("empty"))}," 暂无数据 ",2)],8,D)],2)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(t.data,(r,C)=>(e.openBlock(),e.createElementBlock("tr",{key:C,class:e.normalizeClass(e.unref(l).e("row"))},[t.selection?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(e.unref(l).e("selection"))},[e.createElementVNode("input",{type:"checkbox",value:r},null,8,L)],2)):e.createCommentVNode("",!0),t.index?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(e.unref(l).e("index"))},e.toDisplayString((t.currentPage-1)*t.pageSize+C+1),3)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,y=>{var g;return e.openBlock(),e.createElementBlock("td",{key:y.prop,class:e.normalizeClass(e.unref(l).e("cell")),style:e.normalizeStyle({textAlign:y.align||"left"})},[e.renderSlot(s.$slots,(g=y.slots)==null?void 0:g.default,{row:r,column:y},()=>[e.createTextVNode(e.toDisplayString(y.formatter?y.formatter(r,y,r[y.prop]):r[y.prop]),1)])],6)}),128))],2))),128))])],2)],2),t.pagination?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("pagination"))},[e.createVNode(e.unref(w.Pagination),{total:t.total,"page-size":t.pageSize,"current-page":t.currentPage,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:k,onSizeChange:f},null,8,["total","page-size","current-page"])],2)):e.createCommentVNode("",!0)],2))}}),H=["onUpdate:modelValue"],I=["value"],q=e.defineComponent({name:"XSearchForm",__name:"index",props:{columns:{default:()=>[]},model:{default:()=>({})},labelWidth:{default:"100px"},labelPosition:{default:"right"}},emits:["search","reset"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("search-form"),n=e.reactive({});a.columns.forEach(m=>{m.defaultValue!==void 0?n[m.prop]=m.defaultValue:a.model[m.prop]!==void 0&&(n[m.prop]=a.model[m.prop])});const k=()=>{c("search",{...n})},f=()=>{a.columns.forEach(m=>{n[m.prop]=m.defaultValue}),c("reset")},v=e.computed(()=>({width:typeof a.labelWidth=="number"?`${a.labelWidth}px`:a.labelWidth}));return(m,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("items"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,o=>(e.openBlock(),e.createElementBlock("div",{key:o.prop,class:e.normalizeClass(e.unref(l).e("item"))},[e.createElementVNode("label",{class:e.normalizeClass(e.unref(l).e("label")),style:e.normalizeStyle(v.value)},e.toDisplayString(o.label),7),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("content"))},[o.type==="input"||!o.type?(e.openBlock(),e.createBlock(e.unref($.Input),{key:0,modelValue:n[o.prop],"onUpdate:modelValue":s=>n[o.prop]=s,placeholder:o.placeholder||`请输入${o.label}`,clearable:""},null,8,["modelValue","onUpdate:modelValue","placeholder"])):o.type==="select"?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:1,"onUpdate:modelValue":s=>n[o.prop]=s,class:e.normalizeClass(e.unref(l).e("select"))},[p[0]||(p[0]=e.createElementVNode("option",{value:""},"请选择",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.options,s=>(e.openBlock(),e.createElementBlock("option",{key:s.value,value:s.value},e.toDisplayString(s.label),9,I))),128))],10,H)),[[e.vModelSelect,n[o.prop]]]):o.type==="date"?(e.openBlock(),e.createBlock(e.unref($.Input),{key:2,modelValue:n[o.prop],"onUpdate:modelValue":s=>n[o.prop]=s,type:"date",placeholder:o.placeholder||`请选择${o.label}`},null,8,["modelValue","onUpdate:modelValue","placeholder"])):(e.openBlock(),e.createBlock(e.unref($.Input),{key:3,modelValue:n[o.prop],"onUpdate:modelValue":s=>n[o.prop]=s,placeholder:o.placeholder||`请输入${o.label}`},null,8,["modelValue","onUpdate:modelValue","placeholder"]))],2)],2))),128))],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("actions"))},[e.createVNode(e.unref(b.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(b.Button),{type:"primary",onClick:k},{default:e.withCtx(()=>[...p[1]||(p[1]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(b.Button),{onClick:f},{default:e.withCtx(()=>[...p[2]||(p[2]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})],2)],2))}}),U=e.defineComponent({name:"XStatistic",__name:"index",props:{title:{default:""},value:{default:0},suffix:{default:""},prefix:{default:""},precision:{default:0},trend:{default:""},trendValue:{default:0},color:{},titleColor:{},valueColor:{}},setup(t){const u=t,a=N.useNamespace("statistic"),c=e.computed(()=>typeof u.value=="number"?u.value.toFixed(u.precision):u.value),l=e.computed(()=>[a.e("trend"),a.em("trend",u.trend)]),n=e.computed(()=>u.trend==="up"?"arrow-up":u.trend==="down"?"arrow-down":"");return(k,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(a).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).e("title")),style:e.normalizeStyle({color:t.titleColor})},e.toDisplayString(t.title),7),e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).e("content"))},[t.prefix?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(a).e("prefix"))},e.toDisplayString(t.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("value")),style:e.normalizeStyle({color:t.valueColor})},e.toDisplayString(c.value),7),t.suffix?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(a).e("suffix"))},e.toDisplayString(t.suffix),3)):e.createCommentVNode("",!0)],2),t.trend?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(l.value)},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("trend-icon"))},[n.value?(e.openBlock(),e.createBlock(e.unref(b.Icon),{key:0,name:n.value,size:14},null,8,["name"])):e.createCommentVNode("",!0)],2),e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("trend-value"))},e.toDisplayString(t.trendValue),3)],2)):e.createCommentVNode("",!0)],2))}}),F=e.defineComponent({name:"XExport",__name:"index",props:{data:{default:()=>[]},filename:{default:"export"},sheetName:{default:"Sheet1"},columns:{default:()=>[]}},setup(t){const u=t,a=e.ref(!1),c=()=>{if(u.data.length!==0){a.value=!0;try{const l=u.columns.length>0?u.columns.map(p=>p.title):Object.keys(u.data[0]),n=u.columns.length>0?u.columns.map(p=>p.key):Object.keys(u.data[0]),k=[l.join(","),...u.data.map(p=>n.map(o=>{const s=p[o];return typeof s=="string"&&(s.includes(",")||s.includes('"'))?`"${s.replace(/"/g,'""')}"`:s}).join(","))].join(`
|
|
2
|
+
`),f=new Blob([k],{type:"text/csv;charset=utf-8;"}),v=URL.createObjectURL(f),m=document.createElement("a");m.href=v,m.download=`${u.filename}.csv`,document.body.appendChild(m),m.click(),document.body.removeChild(m),URL.revokeObjectURL(v)}catch(l){console.error("Export failed:",l)}finally{a.value=!1}}};return(l,n)=>(e.openBlock(),e.createBlock(e.unref(b.Button),{loading:a.value,onClick:c},{default:e.withCtx(()=>[...n[0]||(n[0]=[e.createTextVNode("导出",-1)])]),icon:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode("📥",-1)])]),_:1},8,["loading"]))}});function x(t){const u={"&":"&","<":"<",">":">",'"':""","'":"'"};return t.replace(/[&<>"']/g,a=>u[a])}function z(t){return t=t.replace(/`([^`]+)`/g,'<code class="md-code">$1</code>'),t=t.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),t=t.replace(/__([^_]+)__/g,"<strong>$1</strong>"),t=t.replace(/\*([^*]+)\*/g,"<em>$1</em>"),t=t.replace(/_([^_]+)_/g,"<em>$1</em>"),t=t.replace(/~~([^~]+)~~/g,"<del>$1</del>"),t=t.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" target="_blank" class="md-link">$1</a>'),t=t.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,'<img src="$2" alt="$1" class="md-image" />'),t}function M(t,u={}){const a=t.split(`
|
|
3
|
+
`),c=[];let l=!1,n="",k=[],f=!1,v="",m=!1,p=!1;const o=()=>{f&&(c.push(`</${v}>`),f=!1,v="")},s=()=>{m&&(c.push("</blockquote>"),m=!1)},i=()=>{p&&(c.push("</table>"),p=!1)};for(let r=0;r<a.length;r++){let C=a[r];if(C.startsWith("```")){l?(c.push(`<pre class="md-code-block"><code class="language-${n}">${x(k.join(`
|
|
4
|
+
`))}</code></pre>`),l=!1,n="",k=[]):(o(),s(),i(),l=!0,n=C.slice(3).trim(),k=[]);continue}if(l){k.push(C);continue}if(C.trim().startsWith("|")&&C.trim().endsWith("|")){p||(o(),s(),p=!0,c.push('<table class="md-table">'));const d=C.trim().slice(1,-1).split("|").map(V=>V.trim());if(d.every(V=>/^[-:]+$/.test(V)))continue;if((r===0||r>0&&!a[r-1].trim().startsWith("|"))&&r<a.length-1){const V=a[r+1];if(V&&V.trim().startsWith("|")&&V.trim().endsWith("|")&&V.trim().slice(1,-1).split("|").map(B=>B.trim()).every(B=>/^[-:]+$/.test(B))){c.push("<thead><tr>"),d.forEach(B=>{c.push(`<th>${z(B)}</th>`)}),c.push("</tr></thead><tbody>");continue}}c.push("<tr>"),d.forEach(V=>{c.push(`<td>${z(V)}</td>`)}),c.push("</tr>");continue}else p&&(c.push("</tbody>"),i());if(!C.trim()){o(),s(),i();continue}if(C.startsWith(">")){o(),m||(c.push('<blockquote class="md-blockquote">'),m=!0);const d=C.replace(/^>\s?/,"");c.push(`<p>${z(d)}</p>`);continue}else m&&s();const y=C.match(/^(#{1,6})\s+(.+)$/);if(y){o();const d=y[1].length,E=z(y[2]);c.push(`<h${d} class="md-heading md-h${d}">${E}</h${d}>`);continue}if(/^[-*_]{3,}$/.test(C.trim())){o(),c.push('<hr class="md-hr" />');continue}const g=C.match(/^[-*+]\s+(.+)$/);if(g){(!f||v!=="ul")&&(o(),c.push('<ul class="md-list">'),f=!0,v="ul"),c.push(`<li>${z(g[1])}</li>`);continue}const h=C.match(/^(\d+)\.\s+(.+)$/);if(h){(!f||v!=="ol")&&(o(),c.push('<ol class="md-list">'),f=!0,v="ol"),c.push(`<li>${z(h[2])}</li>`);continue}o(),u.breaks!==!1?c.push(`<p class="md-paragraph">${z(C)}</p>`):c.push(`<p class="md-paragraph">${z(C)}</p>`)}return o(),s(),i(),l&&c.push(`<pre class="md-code-block"><code>${x(k.join(`
|
|
5
5
|
`))}</code></pre>`),c.join(`
|
|
6
6
|
`)}function j(t){const u=[];return t.split(`
|
|
7
|
-
`).forEach((c,l)=>{const n=c.match(/^(#{1,6})\s+(.+)$/);if(n){const k=n[1].length,f=n[2].trim(),v=`heading-${l}`;u.push({level:k,text:f,id:v})}}),u}const A=["title","disabled","onClick"],R={key:
|
|
7
|
+
`).forEach((c,l)=>{const n=c.match(/^(#{1,6})\s+(.+)$/);if(n){const k=n[1].length,f=n[2].trim(),v=`heading-${l}`;u.push({level:k,text:f,id:v})}}),u}const A=["title","disabled","onClick"],R={key:1,class:"toolbar-label"},W=["value","placeholder","disabled"],X=["innerHTML"],K=e.defineComponent({name:"XMarkdownEditor",__name:"index",props:{modelValue:{default:""},placeholder:{default:"请输入 Markdown 内容..."},height:{default:400},mode:{default:"split"},showToolbar:{type:Boolean,default:!0},showToc:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","change"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("markdown-editor"),n=e.ref(a.modelValue),k=e.ref(),f=e.ref(a.mode),v=e.computed(()=>M(n.value)),m=e.computed(()=>j(n.value)),p=e.computed(()=>({height:typeof a.height=="number"?`${a.height}px`:a.height}));e.watch(()=>a.modelValue,g=>{n.value=g});const o=g=>{const h=g.target.value;n.value=h,c("update:modelValue",h),c("change",h)},s=g=>{f.value=g},i=(g,h="")=>{if(!k.value||a.disabled)return;const d=k.value,E=d.selectionStart,V=d.selectionEnd,S=n.value.substring(E,V),B=n.value.substring(0,E)+g+S+h+n.value.substring(V);n.value=B,c("update:modelValue",B),c("change",B),e.nextTick(()=>{d.focus(),d.setSelectionRange(E+g.length,E+g.length+S.length)})},r=[{icon:"heading",label:"H1",title:"标题1",action:()=>i("# ","")},{icon:"heading",label:"H2",title:"标题2",action:()=>i("## ","")},{icon:"heading",label:"H3",title:"标题3",action:()=>i("### ","")},{type:"divider"},{icon:"bold",title:"粗体",action:()=>i("**","**")},{icon:"italic",title:"斜体",action:()=>i("*","*")},{icon:"strikethrough",title:"删除线",action:()=>i("~~","~~")},{type:"divider"},{icon:"list-bullet",title:"无序列表",action:()=>i("- ","")},{icon:"list-number",title:"有序列表",action:()=>i("1. ","")},{type:"divider"},{icon:"link-text",title:"链接",action:()=>i("[","](url)")},{icon:"image-insert",title:"图片",action:()=>i("")},{icon:"code-inline",title:"代码",action:()=>i("`","`")},{type:"divider"},{icon:"divider-h",title:"分割线",action:()=>i(`
|
|
8
8
|
---
|
|
9
|
-
`,"")},{icon:"□",title:"引用",action:()=>i("> ","")},{icon:"```",title:"代码块",action:()=>i("\n```\n","\n```\n")}],E=e.computed(()=>[l.b(),l.is("disabled",a.disabled),l.is(`mode-${f.value}`)]),y=g=>{if(f.value!=="split")return;const h=document.querySelector(".x-markdown-editor__preview");if(!h)return;const d=g.target,C=d.scrollTop/(d.scrollHeight-d.clientHeight);h.scrollTop=C*(h.scrollHeight-h.clientHeight)};return(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(E.value),style:e.normalizeStyle(p.value)},[t.showToolbar?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("toolbar"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toolbar-left"))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,(d,C)=>e.createElementVNode("button",{key:C,class:e.normalizeClass([e.unref(l).e("toolbar-btn"),{"is-divider":d.type==="divider"}]),title:d.title,disabled:t.disabled,onClick:d.action},[d.type?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",R,e.toDisplayString(d.icon),1))],10,A)),64))],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toolbar-right"))},[e.createElementVNode("button",{class:e.normalizeClass([e.unref(l).e("mode-btn"),{"is-active":f.value==="edit"}]),onClick:h[0]||(h[0]=d=>s("edit"))}," 编辑 ",2),e.createElementVNode("button",{class:e.normalizeClass([e.unref(l).e("mode-btn"),{"is-active":f.value==="split"}]),onClick:h[1]||(h[1]=d=>s("split"))}," 分屏 ",2),e.createElementVNode("button",{class:e.normalizeClass([e.unref(l).e("mode-btn"),{"is-active":f.value==="preview"}]),onClick:h[2]||(h[2]=d=>s("preview"))}," 预览 ",2)],2)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("body"))},[t.showToc&&m.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("toc"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toc-title"))},"目录",2),e.createElementVNode("ul",{class:e.normalizeClass(e.unref(l).e("toc-list"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(d,C)=>(e.openBlock(),e.createElementBlock("li",{key:C,class:e.normalizeClass(e.unref(l).e("toc-item")),style:e.normalizeStyle({paddingLeft:(d.level-1)*12+"px"})},e.toDisplayString(d.text),7))),128))],2)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("content"))},[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("editor-wrapper"))},[e.createElementVNode("textarea",{ref_key:"editorRef",ref:k,class:e.normalizeClass(e.unref(l).e("editor")),value:n.value,placeholder:t.placeholder,disabled:t.disabled,onInput:o,onScroll:y},null,42,W)],2),[[e.vShow,f.value!=="preview"]]),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("preview")),innerHTML:v.value},null,10,X),[[e.vShow,f.value!=="edit"]])],2)],2)],6))}}),O={class:"icon-text"},G={class:"status-label"},Y=e.defineComponent({name:"XAppCard",__name:"index",props:{id:{default:""},name:{default:""},description:{default:""},icon:{default:"📱"},iconBgColor:{default:"#409eff"},status:{default:"draft"},creator:{default:""},createTime:{default:""},category:{default:""},disabled:{type:Boolean,default:!1}},emits:["click","edit","delete","publish"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("app-card"),n=e.computed(()=>{const o={published:{label:"已发布",color:"#67c23a",dotColor:"#67c23a"},draft:{label:"草稿",color:"#909399",dotColor:"#909399"},archived:{label:"已归档",color:"#f56c6c",dotColor:"#f56c6c"}};return o[a.status]||o.draft}),k=e.computed(()=>[l.b(),l.m(a.status),l.is("disabled",a.disabled)]),f=()=>{a.disabled||c("click",a.id)},v=o=>{o.stopPropagation(),a.disabled||c("edit",a.id)},m=o=>{o.stopPropagation(),a.disabled||c("delete",a.id)},p=o=>{o.stopPropagation(),a.disabled||c("publish",a.id)};return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value),onClick:f},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("icon")),style:e.normalizeStyle({backgroundColor:t.iconBgColor})},[e.createElementVNode("span",O,e.toDisplayString(t.icon),1)],6),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("status"))},[e.createElementVNode("span",{class:"status-dot",style:e.normalizeStyle({backgroundColor:n.value.dotColor})},null,4),e.createElementVNode("span",G,e.toDisplayString(n.value.label),1)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("info"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("name"))},e.toDisplayString(t.name),3),t.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("description"))},e.toDisplayString(t.description),3)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("meta"))},[t.creator?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(l).e("creator"))},"创建者: "+e.toDisplayString(t.creator),3)):e.createCommentVNode("",!0),t.createTime?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(l).e("time"))},e.toDisplayString(t.createTime),3)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("actions"))},[e.createElementVNode("button",{class:"action-btn",title:"编辑",onClick:v}," ✏️ "),t.status==="draft"?(e.openBlock(),e.createElementBlock("button",{key:0,class:"action-btn",title:"发布",onClick:p}," 🚀 ")):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"action-btn action-btn--danger",title:"删除",onClick:m}," 🗑️ ")],2)],2))}}),J=["disabled"],Q={class:"role-icon"},Z={class:"role-label"},_={key:0,class:"timestamp"},ee={key:0,class:"loading-indicator"},te={key:0,class:"text-content"},le={key:1,class:"code-block"},ae={class:"code-header"},ne={class:"language"},oe=["onClick"],se={class:"code-content"},ce=["placeholder","disabled","onKeydown"],re=["disabled"],ie=e.defineComponent({name:"XChat",__name:"index",props:{messages:{default:()=>[]},showInput:{type:Boolean,default:!0},placeholder:{default:"输入消息..."},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},maxHeight:{default:400},showClear:{type:Boolean,default:!0},showTimestamp:{type:Boolean,default:!0}},emits:["send","clear","copy"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("chat"),n=e.ref(""),k=e.ref(null),f=e.computed(()=>[l.b(),l.is("disabled",a.disabled)]),v=e.computed(()=>({maxHeight:typeof a.maxHeight=="number"?`${a.maxHeight}px`:a.maxHeight})),m=()=>{n.value.trim()&&!a.disabled&&!a.loading&&(c("send",n.value.trim()),n.value="")},p=()=>{c("clear")},o=async y=>{try{await navigator.clipboard.writeText(y),c("copy",y)}catch(g){console.error("复制失败:",g)}},s=async()=>{await e.nextTick(),k.value&&(k.value.scrollTop=k.value.scrollHeight)};e.watch(()=>a.messages,()=>{s()},{deep:!0});const i=y=>({user:"👤",assistant:"🤖",system:"⚙️"})[y]||"💬",r=y=>({user:"用户",assistant:"AI助手",system:"系统"})[y]||"消息",E=y=>{const g=/```(\w+)?\n([\s\S]*?)```/g,h=[];let d=0,C;for(;(C=g.exec(y))!==null;)C.index>d&&h.push({type:"text",content:y.slice(d,C.index)}),h.push({type:"code",content:C[2],language:C[1]||"plaintext"}),d=C.index+C[0].length;return d<y.length&&h.push({type:"text",content:y.slice(d)}),h.length>0?h:[{type:"text",content:y}]};return(y,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(f.value)},[t.showClear?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("toolbar"))},[e.createElementVNode("button",{class:"clear-btn",onClick:p,disabled:t.disabled||t.messages.length===0}," 🗑️ 清空对话 ",8,J)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"messagesContainer",ref:k,class:e.normalizeClass(e.unref(l).e("messages")),style:e.normalizeStyle(v.value)},[t.messages.length===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("empty"))},[...g[1]||(g[1]=[e.createElementVNode("span",{class:"empty-icon"},"💬",-1),e.createElementVNode("span",{class:"empty-text"},"暂无对话消息",-1)])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.messages,h=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:e.normalizeClass([e.unref(l).e("message"),e.unref(l).em("message",h.role)])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("message-header"))},[e.createElementVNode("span",Q,e.toDisplayString(i(h.role)),1),e.createElementVNode("span",Z,e.toDisplayString(r(h.role)),1),t.showTimestamp&&h.timestamp?(e.openBlock(),e.createElementBlock("span",_,e.toDisplayString(h.timestamp),1)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("message-content"))},[h.loading?(e.openBlock(),e.createElementBlock("span",ee,[...g[2]||(g[2]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createElementVNode("span",{class:"dot"},null,-1),e.createElementVNode("span",{class:"dot"},null,-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(E(h.content),(d,C)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:C},[d.type==="text"?(e.openBlock(),e.createElementBlock("div",te,e.toDisplayString(d.content),1)):(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("div",ae,[e.createElementVNode("span",ne,e.toDisplayString(d.language),1),e.createElementVNode("button",{class:"copy-btn",onClick:V=>o(d.content)}," 📋 复制 ",8,oe)]),e.createElementVNode("pre",se,[e.createElementVNode("code",null,e.toDisplayString(d.content),1)])]))],64))),128))],2)],2))),128))],6),t.showInput?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("input"))},[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":g[0]||(g[0]=h=>n.value=h),placeholder:t.placeholder,disabled:t.disabled||t.loading,class:"input-textarea",onKeydown:e.withKeys(e.withModifiers(m,["ctrl"]),["enter"]),rows:"3"},null,40,ce),[[e.vModelText,n.value]]),e.createElementVNode("button",{class:"send-btn",disabled:t.disabled||t.loading||!n.value.trim(),onClick:m},e.toDisplayString(t.loading?"发送中...":"发送"),9,re)],2)):e.createCommentVNode("",!0)],2))}}),de={key:0},ue={key:1},me={class:"col-session-id"},pe={class:"session-id"},fe={class:"col-title"},he={class:"col-message-count"},ke={class:"col-status"},ge={class:"col-time"},ye={class:"col-actions"},ve=["onClick"],Ee=["onClick"],Ce={class:"pagination-info"},Ve={class:"pagination-controls"},be=["disabled"],Be={class:"pagination-current"},Ne=["disabled"],ze=["value"],$e=e.defineComponent({name:"XLogTable",__name:"index",props:{data:{default:()=>[]},loading:{type:Boolean,default:!1},pagination:{default:void 0},showPagination:{type:Boolean,default:!0}},emits:["page-change","size-change","view-detail","view-trace"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("log-table"),n=o=>({success:{label:"成功",color:"#67c23a"},error:{label:"失败",color:"#f56c6c"},running:{label:"运行中",color:"#409eff"}})[o]||{label:"未知",color:"#909399"},k=e.computed(()=>[l.b(),l.is("loading",a.loading)]),f=o=>{c("page-change",o)},v=o=>{c("size-change",o)},m=o=>{c("view-detail",o)},p=o=>{c("view-trace",o)};return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("wrapper"))},[e.createElementVNode("table",null,[s[4]||(s[4]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",{class:"col-session-id"},"会话ID"),e.createElementVNode("th",{class:"col-title"},"会话标题"),e.createElementVNode("th",{class:"col-message-count"},"消息数"),e.createElementVNode("th",{class:"col-status"},"状态"),e.createElementVNode("th",{class:"col-time"},"最新消息时间"),e.createElementVNode("th",{class:"col-actions"},"操作")])],-1)),e.createElementVNode("tbody",null,[t.loading?(e.openBlock(),e.createElementBlock("tr",de,[e.createElementVNode("td",{colspan:"6",class:e.normalizeClass(e.unref(l).e("loading-cell"))},[...s[3]||(s[3]=[e.createElementVNode("span",{class:"loading-spinner"},null,-1),e.createElementVNode("span",{class:"loading-text"},"加载中...",-1)])],2)])):t.data.length===0?(e.openBlock(),e.createElementBlock("tr",ue,[e.createElementVNode("td",{colspan:"6",class:e.normalizeClass(e.unref(l).e("empty"))}," 暂无日志记录 ",2)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data,i=>(e.openBlock(),e.createElementBlock("tr",{key:i.id},[e.createElementVNode("td",me,[e.createElementVNode("span",pe,e.toDisplayString(i.sessionId),1)]),e.createElementVNode("td",fe,e.toDisplayString(i.title),1),e.createElementVNode("td",he,e.toDisplayString(i.messageCount),1),e.createElementVNode("td",ke,[e.createElementVNode("span",{class:"status-tag",style:e.normalizeStyle({backgroundColor:n(i.status).color})},e.toDisplayString(n(i.status).label),5)]),e.createElementVNode("td",ge,e.toDisplayString(i.latestMessageTime),1),e.createElementVNode("td",ye,[e.createElementVNode("button",{class:"action-link",onClick:r=>m(i)}," 查看详情 ",8,ve),e.createElementVNode("button",{class:"action-link",onClick:r=>p(i)}," 链路追踪 ",8,Ee)])]))),128))])])],2),t.showPagination&&t.pagination?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("pagination"))},[e.createElementVNode("span",Ce," 共 "+e.toDisplayString(t.pagination.total)+" 条 ",1),e.createElementVNode("div",Ve,[e.createElementVNode("button",{class:"pagination-btn",disabled:t.pagination.current<=1,onClick:s[0]||(s[0]=i=>f(t.pagination.current-1))}," 上一页 ",8,be),e.createElementVNode("span",Be,"第 "+e.toDisplayString(t.pagination.current)+" 页",1),e.createElementVNode("button",{class:"pagination-btn",disabled:t.pagination.current>=Math.ceil(t.pagination.total/t.pagination.pageSize),onClick:s[1]||(s[1]=i=>f(t.pagination.current+1))}," 下一页 ",8,Ne)]),e.createElementVNode("select",{class:"pagination-size-select",value:t.pagination.pageSize,onChange:s[2]||(s[2]=i=>v(Number(i.target.value)))},[...s[5]||(s[5]=[e.createElementVNode("option",{value:"10"},"10条/页",-1),e.createElementVNode("option",{value:"20"},"20条/页",-1),e.createElementVNode("option",{value:"50"},"50条/页",-1),e.createElementVNode("option",{value:"100"},"100条/页",-1)])],40,ze)],2)):e.createCommentVNode("",!0)],2))}}),Se=["onClick"],xe={class:"endpoint-path"},we={class:"endpoint-url"},Te={class:"endpoint-desc"},De={class:"param-name"},Le={class:"param-type"},Pe={class:"param-required"},He={key:0,class:"required-tag"},Ie={key:1,class:"optional-tag"},Ue={class:"param-default"},qe={class:"param-desc"},Fe=e.defineComponent({name:"XApiDoc",__name:"index",props:{baseUrl:{default:"https://api.example.com"},endpoints:{default:()=>[]},showCurlExample:{type:Boolean,default:!0},authType:{default:"apikey"},apiKeyPlaceholder:{default:"YOUR_API_KEY"}},emits:["copy-curl"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("api-doc"),n=e.ref(a.endpoints[0]||null),k=e.computed(()=>[l.b()]),f={GET:"#67c23a",POST:"#409eff",PUT:"#e6a23c",DELETE:"#f56c6c",PATCH:"#909399"},v=o=>{const s=o.method,i=`${a.baseUrl}${o.path}`;let r=`curl -X ${s} '${i}'`;return a.authType==="apikey"?r+=` -H 'Authorization: ApiKey ${a.apiKeyPlaceholder}'`:a.authType==="bearer"?r+=` -H 'Authorization: Bearer ${a.apiKeyPlaceholder}'`:a.authType==="basic"&&(r+=" -u 'username:password'"),s!=="GET"&&(r+=" -H 'Content-Type: application/json'"),o.requestBody&&s!=="GET"&&(r+=` -d '${o.requestBody}'`),r},m=async o=>{try{await navigator.clipboard.writeText(o),c("copy-curl",o)}catch(s){console.error("复制失败:",s)}},p=o=>{n.value=o};return(o,s)=>{var i;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("sidebar"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("sidebar-header"))},"API 端点",2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("endpoint-list"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.endpoints,r=>(e.openBlock(),e.createElementBlock("div",{key:`${r.method}-${r.path}`,class:e.normalizeClass([e.unref(l).e("endpoint-item"),{"is-active":n.value===r}]),onClick:E=>p(r)},[e.createElementVNode("span",{class:"method-tag",style:e.normalizeStyle({backgroundColor:f[r.method]})},e.toDisplayString(r.method),5),e.createElementVNode("span",xe,e.toDisplayString(r.path),1)],10,Se))),128))],2)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("content"))},[n.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("header"))},[e.createElementVNode("span",{class:"method-badge",style:e.normalizeStyle({backgroundColor:f[n.value.method]})},e.toDisplayString(n.value.method),5),e.createElementVNode("span",we,e.toDisplayString(t.baseUrl)+e.toDisplayString(n.value.path),1),e.createElementVNode("span",Te,e.toDisplayString(n.value.description),1)],2),(i=n.value.parameters)!=null&&i.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},"请求参数",2),e.createElementVNode("table",{class:e.normalizeClass(e.unref(l).e("params-table"))},[s[1]||(s[1]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"参数名"),e.createElementVNode("th",null,"类型"),e.createElementVNode("th",null,"必填"),e.createElementVNode("th",null,"默认值"),e.createElementVNode("th",null,"说明")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value.parameters,r=>(e.openBlock(),e.createElementBlock("tr",{key:r.name},[e.createElementVNode("td",De,e.toDisplayString(r.name),1),e.createElementVNode("td",Le,e.toDisplayString(r.type),1),e.createElementVNode("td",Pe,[r.required?(e.openBlock(),e.createElementBlock("span",He,"必填")):(e.openBlock(),e.createElementBlock("span",Ie,"可选"))]),e.createElementVNode("td",Ue,e.toDisplayString(r.defaultValue||"-"),1),e.createElementVNode("td",qe,e.toDisplayString(r.description),1)]))),128))])],2)],2)):e.createCommentVNode("",!0),t.showCurlExample?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},[s[2]||(s[2]=e.createTextVNode(" curl 示例 ",-1)),e.createElementVNode("button",{class:"copy-btn",onClick:s[0]||(s[0]=r=>m(v(n.value)))}," 📋 复制 ")],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("code-block"))},[e.createElementVNode("pre",null,[e.createElementVNode("code",null,e.toDisplayString(v(n.value)),1)])],2)],2)):e.createCommentVNode("",!0),n.value.requestBody?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},"请求体示例",2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("code-block"))},[e.createElementVNode("pre",null,[e.createElementVNode("code",null,e.toDisplayString(n.value.requestBody),1)])],2)],2)):e.createCommentVNode("",!0),n.value.responseExample?(e.openBlock(),e.createElementBlock("div",{key:3,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},"响应示例",2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("code-block"))},[e.createElementVNode("pre",null,[e.createElementVNode("code",null,e.toDisplayString(n.value.responseExample),1)])],2)],2)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("empty"))}," 请选择一个 API 端点查看详情 ",2))],2)],2)}}}),Me=e.defineComponent({name:"XVarTag",__name:"index",props:{name:{default:""},type:{default:"string"},value:{default:void 0},showValue:{type:Boolean,default:!1},copyable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},size:{default:"default"},showTypeIcon:{type:Boolean,default:!0}},emits:["click","copy"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("var-tag"),n=e.computed(()=>{const p={string:{icon:"📝",color:"#409eff",label:"文本"},number:{icon:"🔢",color:"#67c23a",label:"数字"},boolean:{icon:"✓",color:"#e6a23c",label:"布尔"},object:{icon:"📦",color:"#909399",label:"对象"},array:{icon:"📚",color:"#909399",label:"数组"},file:{icon:"📁",color:"#f56c6c",label:"文件"}};return p[a.type]||p.string}),k=e.computed(()=>[l.b(),l.m(a.size),l.m(a.type),l.is("disabled",a.disabled),l.is("copyable",a.copyable)]),f=e.computed(()=>a.value===void 0||a.value===null?"-":a.type==="object"||a.type==="array"?JSON.stringify(a.value):String(a.value)),v=()=>{a.disabled||c("click",a.name)},m=async()=>{if(!a.disabled&&a.copyable)try{const p=a.showValue?`${a.name}: ${f.value}`:a.name;await navigator.clipboard.writeText(p),c("copy",a.name,a.value)}catch(p){console.error("复制失败:",p)}};return(p,o)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(k.value),onClick:v},[t.showTypeIcon?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(l).e("icon"))},e.toDisplayString(n.value.icon),3)):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass(e.unref(l).e("name"))},e.toDisplayString(t.name),3),t.showValue?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(l).e("value"))},e.toDisplayString(f.value),3)):e.createCommentVNode("",!0),t.showValue?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass(e.unref(l).e("type")),style:e.normalizeStyle({color:n.value.color})},e.toDisplayString(n.value.label),7)),t.copyable?(e.openBlock(),e.createElementBlock("button",{key:3,class:e.normalizeClass(e.unref(l).e("copy-btn")),onClick:e.withModifiers(m,["stop"])}," 📋 ",2)):e.createCommentVNode("",!0)],2))}});exports.ApiDoc=Fe;exports.AppCard=Y;exports.Chat=ie;exports.Export=F;exports.LogTable=$e;exports.MarkdownEditor=K;exports.ProTable=P;exports.SearchForm=U;exports.Statistic=q;exports.VarTag=Me;
|
|
9
|
+
`,"")},{icon:"quote",title:"引用",action:()=>i("> ","")},{icon:"code-block",title:"代码块",action:()=>i("\n```\n","\n```\n")}],C=e.computed(()=>[l.b(),l.is("disabled",a.disabled),l.is(`mode-${f.value}`)]),y=g=>{if(f.value!=="split")return;const h=document.querySelector(".x-markdown-editor__preview");if(!h)return;const d=g.target,E=d.scrollTop/(d.scrollHeight-d.clientHeight);h.scrollTop=E*(h.scrollHeight-h.clientHeight)};return(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(C.value),style:e.normalizeStyle(p.value)},[t.showToolbar?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("toolbar"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toolbar-left"))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,(d,E)=>e.createElementVNode("button",{key:E,class:e.normalizeClass([e.unref(l).e("toolbar-btn"),{"is-divider":d.type==="divider"}]),title:d.title,disabled:t.disabled,onClick:d.action},[d.type?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(b.Icon),{key:0,name:d.icon,size:16},null,8,["name"])),d.label?(e.openBlock(),e.createElementBlock("span",R,e.toDisplayString(d.label),1)):e.createCommentVNode("",!0)],10,A)),64))],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toolbar-right"))},[e.createElementVNode("button",{class:e.normalizeClass([e.unref(l).e("mode-btn"),{"is-active":f.value==="edit"}]),onClick:h[0]||(h[0]=d=>s("edit"))}," 编辑 ",2),e.createElementVNode("button",{class:e.normalizeClass([e.unref(l).e("mode-btn"),{"is-active":f.value==="split"}]),onClick:h[1]||(h[1]=d=>s("split"))}," 分屏 ",2),e.createElementVNode("button",{class:e.normalizeClass([e.unref(l).e("mode-btn"),{"is-active":f.value==="preview"}]),onClick:h[2]||(h[2]=d=>s("preview"))}," 预览 ",2)],2)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("body"))},[t.showToc&&m.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("toc"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("toc-title"))},"目录",2),e.createElementVNode("ul",{class:e.normalizeClass(e.unref(l).e("toc-list"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(d,E)=>(e.openBlock(),e.createElementBlock("li",{key:E,class:e.normalizeClass(e.unref(l).e("toc-item")),style:e.normalizeStyle({paddingLeft:(d.level-1)*12+"px"})},e.toDisplayString(d.text),7))),128))],2)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("content"))},[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("editor-wrapper"))},[e.createElementVNode("textarea",{ref_key:"editorRef",ref:k,class:e.normalizeClass(e.unref(l).e("editor")),value:n.value,placeholder:t.placeholder,disabled:t.disabled,onInput:o,onScroll:y},null,42,W)],2),[[e.vShow,f.value!=="preview"]]),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("preview")),innerHTML:v.value},null,10,X),[[e.vShow,f.value!=="edit"]])],2)],2)],6))}}),O={class:"icon-text"},G={class:"status-label"},Y=e.defineComponent({name:"XAppCard",__name:"index",props:{id:{default:""},name:{default:""},description:{default:""},icon:{default:"📱"},iconBgColor:{default:"#409eff"},status:{default:"draft"},creator:{default:""},createTime:{default:""},category:{default:""},disabled:{type:Boolean,default:!1}},emits:["click","edit","delete","publish"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("app-card"),n=e.computed(()=>{const o={published:{label:"已发布",color:"#67c23a",dotColor:"#67c23a"},draft:{label:"草稿",color:"#909399",dotColor:"#909399"},archived:{label:"已归档",color:"#f56c6c",dotColor:"#f56c6c"}};return o[a.status]||o.draft}),k=e.computed(()=>[l.b(),l.m(a.status),l.is("disabled",a.disabled)]),f=()=>{a.disabled||c("click",a.id)},v=o=>{o.stopPropagation(),a.disabled||c("edit",a.id)},m=o=>{o.stopPropagation(),a.disabled||c("delete",a.id)},p=o=>{o.stopPropagation(),a.disabled||c("publish",a.id)};return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value),onClick:f},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("icon")),style:e.normalizeStyle({backgroundColor:t.iconBgColor})},[e.createElementVNode("span",O,e.toDisplayString(t.icon),1)],6),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("status"))},[e.createElementVNode("span",{class:"status-dot",style:e.normalizeStyle({backgroundColor:n.value.dotColor})},null,4),e.createElementVNode("span",G,e.toDisplayString(n.value.label),1)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("info"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("name"))},e.toDisplayString(t.name),3),t.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("description"))},e.toDisplayString(t.description),3)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("meta"))},[t.creator?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(l).e("creator"))},"创建者: "+e.toDisplayString(t.creator),3)):e.createCommentVNode("",!0),t.createTime?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(l).e("time"))},e.toDisplayString(t.createTime),3)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("actions"))},[e.createElementVNode("button",{class:"action-btn",title:"编辑",onClick:v}," ✏️ "),t.status==="draft"?(e.openBlock(),e.createElementBlock("button",{key:0,class:"action-btn",title:"发布",onClick:p}," 🚀 ")):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"action-btn action-btn--danger",title:"删除",onClick:m}," 🗑️ ")],2)],2))}}),J=["disabled"],Q={class:"role-icon"},Z={class:"role-label"},_={key:0,class:"timestamp"},ee={key:0,class:"loading-indicator"},te={key:0,class:"text-content"},le={key:1,class:"code-block"},ae={class:"code-header"},ne={class:"language"},oe=["onClick"],se={class:"code-content"},ce=["placeholder","disabled","onKeydown"],re=["disabled"],ie=e.defineComponent({name:"XChat",__name:"index",props:{messages:{default:()=>[]},showInput:{type:Boolean,default:!0},placeholder:{default:"输入消息..."},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},maxHeight:{default:400},showClear:{type:Boolean,default:!0},showTimestamp:{type:Boolean,default:!0}},emits:["send","clear","copy"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("chat"),n=e.ref(""),k=e.ref(null),f=e.computed(()=>[l.b(),l.is("disabled",a.disabled)]),v=e.computed(()=>({maxHeight:typeof a.maxHeight=="number"?`${a.maxHeight}px`:a.maxHeight})),m=()=>{n.value.trim()&&!a.disabled&&!a.loading&&(c("send",n.value.trim()),n.value="")},p=()=>{c("clear")},o=async y=>{try{await navigator.clipboard.writeText(y),c("copy",y)}catch(g){console.error("复制失败:",g)}},s=async()=>{await e.nextTick(),k.value&&(k.value.scrollTop=k.value.scrollHeight)};e.watch(()=>a.messages,()=>{s()},{deep:!0});const i=y=>({user:"👤",assistant:"🤖",system:"⚙️"})[y]||"💬",r=y=>({user:"用户",assistant:"AI助手",system:"系统"})[y]||"消息",C=y=>{const g=/```(\w+)?\n([\s\S]*?)```/g,h=[];let d=0,E;for(;(E=g.exec(y))!==null;)E.index>d&&h.push({type:"text",content:y.slice(d,E.index)}),h.push({type:"code",content:E[2],language:E[1]||"plaintext"}),d=E.index+E[0].length;return d<y.length&&h.push({type:"text",content:y.slice(d)}),h.length>0?h:[{type:"text",content:y}]};return(y,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(f.value)},[t.showClear?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("toolbar"))},[e.createElementVNode("button",{class:"clear-btn",onClick:p,disabled:t.disabled||t.messages.length===0}," 🗑️ 清空对话 ",8,J)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"messagesContainer",ref:k,class:e.normalizeClass(e.unref(l).e("messages")),style:e.normalizeStyle(v.value)},[t.messages.length===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("empty"))},[...g[1]||(g[1]=[e.createElementVNode("span",{class:"empty-icon"},"💬",-1),e.createElementVNode("span",{class:"empty-text"},"暂无对话消息",-1)])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.messages,h=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:e.normalizeClass([e.unref(l).e("message"),e.unref(l).em("message",h.role)])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("message-header"))},[e.createElementVNode("span",Q,e.toDisplayString(i(h.role)),1),e.createElementVNode("span",Z,e.toDisplayString(r(h.role)),1),t.showTimestamp&&h.timestamp?(e.openBlock(),e.createElementBlock("span",_,e.toDisplayString(h.timestamp),1)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("message-content"))},[h.loading?(e.openBlock(),e.createElementBlock("span",ee,[...g[2]||(g[2]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createElementVNode("span",{class:"dot"},null,-1),e.createElementVNode("span",{class:"dot"},null,-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(C(h.content),(d,E)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:E},[d.type==="text"?(e.openBlock(),e.createElementBlock("div",te,e.toDisplayString(d.content),1)):(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("div",ae,[e.createElementVNode("span",ne,e.toDisplayString(d.language),1),e.createElementVNode("button",{class:"copy-btn",onClick:V=>o(d.content)}," 📋 复制 ",8,oe)]),e.createElementVNode("pre",se,[e.createElementVNode("code",null,e.toDisplayString(d.content),1)])]))],64))),128))],2)],2))),128))],6),t.showInput?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("input"))},[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":g[0]||(g[0]=h=>n.value=h),placeholder:t.placeholder,disabled:t.disabled||t.loading,class:"input-textarea",onKeydown:e.withKeys(e.withModifiers(m,["ctrl"]),["enter"]),rows:"3"},null,40,ce),[[e.vModelText,n.value]]),e.createElementVNode("button",{class:"send-btn",disabled:t.disabled||t.loading||!n.value.trim(),onClick:m},e.toDisplayString(t.loading?"发送中...":"发送"),9,re)],2)):e.createCommentVNode("",!0)],2))}}),de={key:0},ue={key:1},me={class:"col-session-id"},pe={class:"session-id"},fe={class:"col-title"},he={class:"col-message-count"},ke={class:"col-status"},ge={class:"col-time"},ye={class:"col-actions"},ve=["onClick"],Ce=["onClick"],Ee={class:"pagination-info"},Ve={class:"pagination-controls"},be=["disabled"],Be={class:"pagination-current"},Ne=["disabled"],ze=["value"],$e=e.defineComponent({name:"XLogTable",__name:"index",props:{data:{default:()=>[]},loading:{type:Boolean,default:!1},pagination:{default:void 0},showPagination:{type:Boolean,default:!0}},emits:["page-change","size-change","view-detail","view-trace"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("log-table"),n=o=>({success:{label:"成功",color:"#67c23a"},error:{label:"失败",color:"#f56c6c"},running:{label:"运行中",color:"#409eff"}})[o]||{label:"未知",color:"#909399"},k=e.computed(()=>[l.b(),l.is("loading",a.loading)]),f=o=>{c("page-change",o)},v=o=>{c("size-change",o)},m=o=>{c("view-detail",o)},p=o=>{c("view-trace",o)};return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("wrapper"))},[e.createElementVNode("table",null,[s[4]||(s[4]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",{class:"col-session-id"},"会话ID"),e.createElementVNode("th",{class:"col-title"},"会话标题"),e.createElementVNode("th",{class:"col-message-count"},"消息数"),e.createElementVNode("th",{class:"col-status"},"状态"),e.createElementVNode("th",{class:"col-time"},"最新消息时间"),e.createElementVNode("th",{class:"col-actions"},"操作")])],-1)),e.createElementVNode("tbody",null,[t.loading?(e.openBlock(),e.createElementBlock("tr",de,[e.createElementVNode("td",{colspan:"6",class:e.normalizeClass(e.unref(l).e("loading-cell"))},[...s[3]||(s[3]=[e.createElementVNode("span",{class:"loading-spinner"},null,-1),e.createElementVNode("span",{class:"loading-text"},"加载中...",-1)])],2)])):t.data.length===0?(e.openBlock(),e.createElementBlock("tr",ue,[e.createElementVNode("td",{colspan:"6",class:e.normalizeClass(e.unref(l).e("empty"))}," 暂无日志记录 ",2)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data,i=>(e.openBlock(),e.createElementBlock("tr",{key:i.id},[e.createElementVNode("td",me,[e.createElementVNode("span",pe,e.toDisplayString(i.sessionId),1)]),e.createElementVNode("td",fe,e.toDisplayString(i.title),1),e.createElementVNode("td",he,e.toDisplayString(i.messageCount),1),e.createElementVNode("td",ke,[e.createElementVNode("span",{class:"status-tag",style:e.normalizeStyle({backgroundColor:n(i.status).color})},e.toDisplayString(n(i.status).label),5)]),e.createElementVNode("td",ge,e.toDisplayString(i.latestMessageTime),1),e.createElementVNode("td",ye,[e.createElementVNode("button",{class:"action-link",onClick:r=>m(i)}," 查看详情 ",8,ve),e.createElementVNode("button",{class:"action-link",onClick:r=>p(i)}," 链路追踪 ",8,Ce)])]))),128))])])],2),t.showPagination&&t.pagination?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("pagination"))},[e.createElementVNode("span",Ee," 共 "+e.toDisplayString(t.pagination.total)+" 条 ",1),e.createElementVNode("div",Ve,[e.createElementVNode("button",{class:"pagination-btn",disabled:t.pagination.current<=1,onClick:s[0]||(s[0]=i=>f(t.pagination.current-1))}," 上一页 ",8,be),e.createElementVNode("span",Be,"第 "+e.toDisplayString(t.pagination.current)+" 页",1),e.createElementVNode("button",{class:"pagination-btn",disabled:t.pagination.current>=Math.ceil(t.pagination.total/t.pagination.pageSize),onClick:s[1]||(s[1]=i=>f(t.pagination.current+1))}," 下一页 ",8,Ne)]),e.createElementVNode("select",{class:"pagination-size-select",value:t.pagination.pageSize,onChange:s[2]||(s[2]=i=>v(Number(i.target.value)))},[...s[5]||(s[5]=[e.createElementVNode("option",{value:"10"},"10条/页",-1),e.createElementVNode("option",{value:"20"},"20条/页",-1),e.createElementVNode("option",{value:"50"},"50条/页",-1),e.createElementVNode("option",{value:"100"},"100条/页",-1)])],40,ze)],2)):e.createCommentVNode("",!0)],2))}}),Se=["onClick"],xe={class:"endpoint-path"},we={class:"endpoint-url"},Te={class:"endpoint-desc"},De={class:"param-name"},Le={class:"param-type"},Pe={class:"param-required"},He={key:0,class:"required-tag"},Ie={key:1,class:"optional-tag"},qe={class:"param-default"},Ue={class:"param-desc"},Fe=e.defineComponent({name:"XApiDoc",__name:"index",props:{baseUrl:{default:"https://api.example.com"},endpoints:{default:()=>[]},showCurlExample:{type:Boolean,default:!0},authType:{default:"apikey"},apiKeyPlaceholder:{default:"YOUR_API_KEY"}},emits:["copy-curl"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("api-doc"),n=e.ref(a.endpoints[0]||null),k=e.computed(()=>[l.b()]),f={GET:"#67c23a",POST:"#409eff",PUT:"#e6a23c",DELETE:"#f56c6c",PATCH:"#909399"},v=o=>{const s=o.method,i=`${a.baseUrl}${o.path}`;let r=`curl -X ${s} '${i}'`;return a.authType==="apikey"?r+=` -H 'Authorization: ApiKey ${a.apiKeyPlaceholder}'`:a.authType==="bearer"?r+=` -H 'Authorization: Bearer ${a.apiKeyPlaceholder}'`:a.authType==="basic"&&(r+=" -u 'username:password'"),s!=="GET"&&(r+=" -H 'Content-Type: application/json'"),o.requestBody&&s!=="GET"&&(r+=` -d '${o.requestBody}'`),r},m=async o=>{try{await navigator.clipboard.writeText(o),c("copy-curl",o)}catch(s){console.error("复制失败:",s)}},p=o=>{n.value=o};return(o,s)=>{var i;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("sidebar"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("sidebar-header"))},"API 端点",2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("endpoint-list"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.endpoints,r=>(e.openBlock(),e.createElementBlock("div",{key:`${r.method}-${r.path}`,class:e.normalizeClass([e.unref(l).e("endpoint-item"),{"is-active":n.value===r}]),onClick:C=>p(r)},[e.createElementVNode("span",{class:"method-tag",style:e.normalizeStyle({backgroundColor:f[r.method]})},e.toDisplayString(r.method),5),e.createElementVNode("span",xe,e.toDisplayString(r.path),1)],10,Se))),128))],2)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("content"))},[n.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("header"))},[e.createElementVNode("span",{class:"method-badge",style:e.normalizeStyle({backgroundColor:f[n.value.method]})},e.toDisplayString(n.value.method),5),e.createElementVNode("span",we,e.toDisplayString(t.baseUrl)+e.toDisplayString(n.value.path),1),e.createElementVNode("span",Te,e.toDisplayString(n.value.description),1)],2),(i=n.value.parameters)!=null&&i.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},"请求参数",2),e.createElementVNode("table",{class:e.normalizeClass(e.unref(l).e("params-table"))},[s[1]||(s[1]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"参数名"),e.createElementVNode("th",null,"类型"),e.createElementVNode("th",null,"必填"),e.createElementVNode("th",null,"默认值"),e.createElementVNode("th",null,"说明")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value.parameters,r=>(e.openBlock(),e.createElementBlock("tr",{key:r.name},[e.createElementVNode("td",De,e.toDisplayString(r.name),1),e.createElementVNode("td",Le,e.toDisplayString(r.type),1),e.createElementVNode("td",Pe,[r.required?(e.openBlock(),e.createElementBlock("span",He,"必填")):(e.openBlock(),e.createElementBlock("span",Ie,"可选"))]),e.createElementVNode("td",qe,e.toDisplayString(r.defaultValue||"-"),1),e.createElementVNode("td",Ue,e.toDisplayString(r.description),1)]))),128))])],2)],2)):e.createCommentVNode("",!0),t.showCurlExample?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},[s[2]||(s[2]=e.createTextVNode(" curl 示例 ",-1)),e.createElementVNode("button",{class:"copy-btn",onClick:s[0]||(s[0]=r=>m(v(n.value)))}," 📋 复制 ")],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("code-block"))},[e.createElementVNode("pre",null,[e.createElementVNode("code",null,e.toDisplayString(v(n.value)),1)])],2)],2)):e.createCommentVNode("",!0),n.value.requestBody?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},"请求体示例",2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("code-block"))},[e.createElementVNode("pre",null,[e.createElementVNode("code",null,e.toDisplayString(n.value.requestBody),1)])],2)],2)):e.createCommentVNode("",!0),n.value.responseExample?(e.openBlock(),e.createElementBlock("div",{key:3,class:e.normalizeClass(e.unref(l).e("section"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("section-title"))},"响应示例",2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("code-block"))},[e.createElementVNode("pre",null,[e.createElementVNode("code",null,e.toDisplayString(n.value.responseExample),1)])],2)],2)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("empty"))}," 请选择一个 API 端点查看详情 ",2))],2)],2)}}}),Me=e.defineComponent({name:"XVarTag",__name:"index",props:{name:{default:""},type:{default:"string"},value:{default:void 0},showValue:{type:Boolean,default:!1},copyable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},size:{default:"default"},showTypeIcon:{type:Boolean,default:!0}},emits:["click","copy"],setup(t,{emit:u}){const a=t,c=u,l=N.useNamespace("var-tag"),n=e.computed(()=>{const p={string:{icon:"📝",color:"#409eff",label:"文本"},number:{icon:"🔢",color:"#67c23a",label:"数字"},boolean:{icon:"✓",color:"#e6a23c",label:"布尔"},object:{icon:"📦",color:"#909399",label:"对象"},array:{icon:"📚",color:"#909399",label:"数组"},file:{icon:"📁",color:"#f56c6c",label:"文件"}};return p[a.type]||p.string}),k=e.computed(()=>[l.b(),l.m(a.size),l.m(a.type),l.is("disabled",a.disabled),l.is("copyable",a.copyable)]),f=e.computed(()=>a.value===void 0||a.value===null?"-":a.type==="object"||a.type==="array"?JSON.stringify(a.value):String(a.value)),v=()=>{a.disabled||c("click",a.name)},m=async()=>{if(!a.disabled&&a.copyable)try{const p=a.showValue?`${a.name}: ${f.value}`:a.name;await navigator.clipboard.writeText(p),c("copy",a.name,a.value)}catch(p){console.error("复制失败:",p)}};return(p,o)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(k.value),onClick:v},[t.showTypeIcon?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(l).e("icon"))},e.toDisplayString(n.value.icon),3)):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass(e.unref(l).e("name"))},e.toDisplayString(t.name),3),t.showValue?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(l).e("value"))},e.toDisplayString(f.value),3)):e.createCommentVNode("",!0),t.showValue?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass(e.unref(l).e("type")),style:e.normalizeStyle({color:n.value.color})},e.toDisplayString(n.value.label),7)),t.copyable?(e.openBlock(),e.createElementBlock("button",{key:3,class:e.normalizeClass(e.unref(l).e("copy-btn")),onClick:e.withModifiers(m,["stop"])}," 📋 ",2)):e.createCommentVNode("",!0)],2))}});exports.ApiDoc=Fe;exports.AppCard=Y;exports.Chat=ie;exports.Export=F;exports.LogTable=$e;exports.MarkdownEditor=K;exports.ProTable=P;exports.SearchForm=q;exports.Statistic=U;exports.VarTag=Me;
|
package/package.json
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xto/business",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Xto Business - Business components",
|
|
5
|
+
"homepage": "https://jinguchu.github.io/xto-ui/",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/jinguchu/xto-ui.git",
|
|
9
|
+
"directory": "packages/business"
|
|
10
|
+
},
|
|
5
11
|
"main": "./lib/index.cjs",
|
|
6
12
|
"module": "./es/index.mjs",
|
|
7
13
|
"types": "./es/index.d.ts",
|
|
@@ -20,15 +26,17 @@
|
|
|
20
26
|
"access": "public"
|
|
21
27
|
},
|
|
22
28
|
"dependencies": {
|
|
23
|
-
"@xto/
|
|
24
|
-
"@xto/
|
|
25
|
-
"@xto/
|
|
26
|
-
"@xto/
|
|
29
|
+
"@xto/base": "^1.4.0",
|
|
30
|
+
"@xto/core": "^1.1.0",
|
|
31
|
+
"@xto/data": "^1.2.0",
|
|
32
|
+
"@xto/form": "^1.2.0"
|
|
27
33
|
},
|
|
28
34
|
"peerDependencies": {
|
|
29
35
|
"vue": "^3.4.0"
|
|
30
36
|
},
|
|
31
37
|
"devDependencies": {
|
|
38
|
+
"@vitejs/plugin-vue": "^5.0.4",
|
|
39
|
+
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
|
32
40
|
"typescript": "^5.4.2",
|
|
33
41
|
"vite": "^5.2.0",
|
|
34
42
|
"vitest": "^1.4.0",
|