chainlesschain 0.156.6 → 0.156.7
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/README.md +24 -0
- package/package.json +2 -1
- package/src/assets/web-panel/assets/{ActionButton-Dme4LGax.js → ActionButton-Cs4QdjYb.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-B3-5BjRm.js → Analytics-Xot0e9TT.js} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-DvVLRyPs.js → AppLayout-3qsE1-pz.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-wLmjCc9u.js → BaseInput-Tg40P4JM.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BfbEUJDW.js → Checkbox-CheA2Ety.js} +1 -1
- package/src/assets/web-panel/assets/{Col-HJI40OzO.js → Col-Cdfsmnaq.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-ADVAwcbQ.js → Compact-D3LSgEpW.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-DcNB5TYu.js → Cron-9MV6k-MV.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-p_Wuj0Un.js → Dashboard-A1TZC5_t.js} +1 -1
- package/src/assets/web-panel/assets/{Dropdown-CrXGzreQ.js → Dropdown-DZxUTZvw.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-B97Dibo2.js → FormItemContext-C3_-j_SR.js} +1 -1
- package/src/assets/web-panel/assets/{Git-90CPsOOr.js → Git-Cw-gW-kh.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-B_3zNQNB.js → Memory-CMweTJyn.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-DNQz9UXh.js → Notes-B_W3BfZF.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CgXUnp-W.js → Organization-Dz_jGbAM.js} +1 -1
- package/src/assets/web-panel/assets/{Overflow-BVsn6SM5.js → Overflow-Dka3nWV9.js} +1 -1
- package/src/assets/web-panel/assets/{Permissions-DIFqcnjU.js → Permissions-DvXVIlHX.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-mscN7CK5.js → Providers-DUfX_ynl.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BFUWxIkx.js → Row-DZhDSo2Q.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-Dpa4h-q_.js → RssFeed-CHQpUl3h.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DR6HKo_S.js → Security-FUSOn89T.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-VNikEgM4.js → Skeleton-DxmZ7zRw.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-Ny_4GO6a.js → Templates-BVbmyn38.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-C7MTh_xj.js → Trigger-xAvohiq9.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BNRFHgJ9.js → VideoEditing-BUWYQv2y.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BUfg4IAx.js → Wallet-BDYdEwFf.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-Cia89OyQ.js → WebAuthn-CvpuagtK.js} +1 -1
- package/src/assets/web-panel/assets/{WorkflowEditor-C1OsMtqv.js → WorkflowEditor-BR7W5cjw.js} +1 -1
- package/src/assets/web-panel/assets/{colors-C_wDMX2Q.js → colors-C5kDbQCi.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-C1ikzEN-.js → compact-item-Bo_1zDrX.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-XExBTk9v.js → createContext-CniPpJsG.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-mXvd_Kdq.js → hasIn-ClDc6Sz8.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6Hyy0Bc.js → index--lcO-bOn.js} +1 -1
- package/src/assets/web-panel/assets/{index-lPIeHtHE.js → index-6tQekF0Y.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfncNR8d.js → index-8qWxPHSb.js} +1 -1
- package/src/assets/web-panel/assets/{index-C53dnYiq.js → index-B7nGNm_C.js} +1 -1
- package/src/assets/web-panel/assets/{index-CMYADk0v.js → index-B8y0NO-M.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMcLOtIo.js → index-BAlSSCbs.js} +1 -1
- package/src/assets/web-panel/assets/{index-DJkIheU6.js → index-BCXFoTAw.js} +1 -1
- package/src/assets/web-panel/assets/{index-kLUQdSDJ.js → index-BHruTebo.js} +1 -1
- package/src/assets/web-panel/assets/{index-1ZqkTPt2.js → index-BJx6C3J8.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbpKJ2W0.js → index-BUTCJTbj.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6P9mWuk.js → index-BYShDlZ0.js} +1 -1
- package/src/assets/web-panel/assets/{index-D9tzxSFs.js → index-Bv2OmZAS.js} +1 -1
- package/src/assets/web-panel/assets/{index-BFFb9yPd.js → index-C92K4iDE.js} +1 -1
- package/src/assets/web-panel/assets/{index-v4Oi0d0l.js → index-CCdb36il.js} +1 -1
- package/src/assets/web-panel/assets/{index-B-TI0cZ2.js → index-CKR2ITFk.js} +1 -1
- package/src/assets/web-panel/assets/{index-fLUJs2Sr.js → index-CMcGcbea.js} +1 -1
- package/src/assets/web-panel/assets/{index-BirLVqrC.js → index-CTetsi8W.js} +1 -1
- package/src/assets/web-panel/assets/{index-LpE6Six-.js → index-CXxLp7Aw.js} +1 -1
- package/src/assets/web-panel/assets/{index-qtDQSqTG.js → index-CeSV8f3b.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwMlStra.js → index-Ch5mAXeh.js} +1 -1
- package/src/assets/web-panel/assets/{index-BOqmUcij.js → index-CwhWEkmA.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_oSE2Nk.js → index-D2fe9a6f.js} +1 -1
- package/src/assets/web-panel/assets/index-D3UDIt7h.js +1 -0
- package/src/assets/web-panel/assets/{index-CxwU-EjS.js → index-D90sLw5Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1eekAaa.js → index-D9bolkbl.js} +1 -1
- package/src/assets/web-panel/assets/{index-BL27IhbN.js → index-DNY0K7iI.js} +1 -1
- package/src/assets/web-panel/assets/{index-Du7KGlCP.js → index-DSiHmo4b.js} +1 -1
- package/src/assets/web-panel/assets/{index-CttcpCq_.js → index-DTYnvYqB.js} +1 -1
- package/src/assets/web-panel/assets/{index-jg5cpQg9.js → index-DaLYbr0E.js} +1 -1
- package/src/assets/web-panel/assets/{index-DYLE4bnY.js → index-DkSNIJhM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZjQgmBq.js → index-DnQkqOZj.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaMG8ksh.js → index-Dn_OQQaV.js} +3 -3
- package/src/assets/web-panel/assets/{index-Dz6RDRcu.js → index-Dtfrhky9.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTle6zcb.js → index-JNbd08FN.js} +1 -1
- package/src/assets/web-panel/assets/index-PT376OZM.js +1 -0
- package/src/assets/web-panel/assets/{index-BBOVB9YK.js → index-cIgCeEqo.js} +1 -1
- package/src/assets/web-panel/assets/{index-a0qENb5U.js → index-vBi4x_6g.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5Zv4fBx.js → index-xL8gcpmy.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DOj2K4bh.js → initDefaultProps-DMfJaUzk.js} +1 -1
- package/src/assets/web-panel/assets/{motion-joGf7r-l.js → motion-sEbWmOWo.js} +1 -1
- package/src/assets/web-panel/assets/{move-Cwb6tumJ.js → move-DIWXVs--.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CPycjJ8C.js → omit-D7mkMPhu.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CnibXC3T.js → pickAttrs-B25NUX4k.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DWcIO1y4.js → placementArrow-By1Bkq1d.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-C5giLhLf.js → responsiveObserve-B3aCQz5r.js} +1 -1
- package/src/assets/web-panel/assets/{slide-zwgmm7vM.js → slide-eR-f56FQ.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CK8tJSHq.js → statusUtils-zcNWczhN.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BzLSEXyu.js → styleChecker-u9Z0IfRy.js} +1 -1
- package/src/assets/web-panel/assets/{transition-D4AbuDdO.js → transition-gRK4XSlW.js} +1 -1
- package/src/assets/web-panel/assets/{useConfigInject-ImjEZhXr.js → useConfigInject-ZEunuNHN.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-Cd-PoTMl.js → useFlexGapSupport-BpbEJfeh.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DAWimP6X.js → vnode-DVHvXn9F.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-u6SXbmzZ.js → zoom-ByzgJIn6.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/pack.js +463 -0
- package/src/commands/ui.js +6 -0
- package/src/gateways/ws/ws-server.js +29 -3
- package/src/index.js +34 -1
- package/src/lib/governance-v2-helpers.js +109 -0
- package/src/lib/packer/config-template-builder.js +151 -0
- package/src/lib/packer/errors.js +30 -0
- package/src/lib/packer/index.js +383 -0
- package/src/lib/packer/manifest-writer.js +93 -0
- package/src/lib/packer/native-prebuild-collector.js +305 -0
- package/src/lib/packer/pack-update-applier.js +203 -0
- package/src/lib/packer/pack-update-checker.js +185 -0
- package/src/lib/packer/pack-update-downloader.js +162 -0
- package/src/lib/packer/pkg-config-generator.js +325 -0
- package/src/lib/packer/pkg-runner.js +139 -0
- package/src/lib/packer/precheck.js +273 -0
- package/src/lib/packer/project-assets-collector.js +0 -0
- package/src/lib/packer/smoke-runner.js +339 -0
- package/src/lib/packer/web-panel-builder.js +157 -0
- package/src/lib/web-ui-server.js +95 -2
- package/src/lib/ws-server.js +1 -0
- package/src/runtime/agent-runtime.js +1 -0
- package/src/runtime/policies/agent-policy.js +1 -0
- package/src/assets/web-panel/assets/index-DQgS_8Fd.js +0 -1
- package/src/assets/web-panel/assets/index-f4W8Sok0.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{l as Fe,F as v,D as h,c as a,x as o,r as i,q as g,v as r,J as f,u as C,m as _,I as m,G as y,H as be,P as ke,j as Ee}from"./vendor-C5RM7MZO.js";import{u as Ge}from"./ws-D-sl0vsW.js";import{_ as He}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as p}from"./index-
|
|
1
|
+
import{l as Fe,F as v,D as h,c as a,x as o,r as i,q as g,v as r,J as f,u as C,m as _,I as m,G as y,H as be,P as ke,j as Ee}from"./vendor-C5RM7MZO.js";import{u as Ge}from"./ws-D-sl0vsW.js";import{_ as He}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as p}from"./index-Ch5mAXeh.js";import{p as Ze,U as ge,l as Qe,a3 as _e,$ as Xe,a4 as Ye,Z as et}from"./icons-CpgFsfkd.js";import"./index-Dn_OQQaV.js";import"./useConfigInject-ZEunuNHN.js";import"./transition-gRK4XSlW.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CFB5Y97t.js";import"./index-U4Zd5IK6.js";const tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},at={key:0,style:{"text-align":"center",padding:"60px"}},lt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},nt={key:1,style:{color:"#1677ff"}},ot={key:2,style:{color:"var(--text-secondary)"}},st={key:3,style:{color:"var(--text-muted)","font-size":"12px"}},it={key:0,style:{"text-align":"center",padding:"40px"}},rt={key:1},ut={style:{"font-family":"monospace",color:"#ccc"}},dt={key:0,style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"300px","overflow-y":"auto"}},pt={style:{"margin-bottom":"16px",display:"flex","align-items":"center",gap:"12px"}},ct={key:0,style:{"text-align":"center",padding:"60px"}},vt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},mt={key:1,style:{color:"#e0e0e0"}},yt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},ft={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},gt={key:0,style:{"text-align":"center",padding:"40px"}},xt={key:0,style:{color:"#e0e0e0"}},bt={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},kt={key:2,style:{color:"var(--text-secondary)"}},_t={key:0,style:{"text-align":"center",padding:"60px"}},wt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Ct={key:1,style:{color:"#e0e0e0"}},It={key:3,style:{color:"var(--text-secondary)"}},ht={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Ot={__name:"Organization",setup(jt){const k=Ge(),z=i("orgs"),ee=i(!1);async function we(){ee.value=!0;try{z.value==="orgs"?await $():z.value==="members"?(await $(),x.value&&(await pe(),await ce())):z.value==="approvals"&&await M()}finally{ee.value=!1}}function Ce(l){l==="orgs"&&O.value.length===0&&$(),l==="members"&&O.value.length===0&&$(),l==="approvals"&&G.value.length===0&&M()}function T(l){try{const e=l.trim(),t=e.indexOf("["),s=e.indexOf("{"),u=t>=0&&(s<0||t<s)?t:s;return u>=0?JSON.parse(e.slice(u)):null}catch{return null}}const te=i(!1),O=i([]),J=i(!1),ae=i(!1),U=i(""),P=i(""),le=i(!1),ne=i(!1),w=i({}),j=i(""),Ie=[{title:"ID",key:"id",dataIndex:"id",width:"100px"},{title:"名称",key:"name",dataIndex:"name",width:"180px"},{title:"所有者",key:"owner",dataIndex:"owner",width:"140px"},{title:"描述",key:"description",dataIndex:"description",ellipsis:!0},{title:"成员数",key:"memberCount",dataIndex:"memberCount",width:"90px"}],xe=Ee(()=>O.value.map(l=>({label:l.name,value:l.id})));async function $(){te.value=!0;try{const{output:l}=await k.execute("org list --json",15e3),e=T(l);Array.isArray(e)?O.value=e.map((t,s)=>({key:t.id||s,id:t.id||"-",name:t.name||"-",owner:t.owner||"-",description:t.description||"",memberCount:t.memberCount??t.members??0})):O.value=he(l)}catch(l){p.error("加载组织列表失败: "+l.message)}finally{te.value=!1}}function he(l){const e=[],t=l.split(`
|
|
2
2
|
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ org/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=3&&e.push({key:e.length,id:c[0]||"-",name:c[1]||"-",owner:c[2]||"-",description:c[3]||"",memberCount:parseInt(c[4],10)||0})}return e}async function Oe(){if(!U.value.trim()){p.warning("请输入组织名称");return}ae.value=!0;try{const l=U.value.trim().replace(/"/g,'\\"'),e=P.value.trim().replace(/"/g,'\\"');let t=`org create "${l}" --json`;e&&(t=`org create "${l}" --description "${e}" --json`);const{output:s}=await k.execute(t,2e4);s.includes("error")||s.includes("失败")?p.error("创建失败: "+s.slice(0,120)):(p.success("组织已创建"),J.value=!1,U.value="",P.value="",await $())}catch(l){p.error("创建失败: "+l.message)}finally{ae.value=!1}}async function je(l){w.value={...l},j.value="",le.value=!0,ne.value=!0;try{const{output:e}=await k.execute(`org show ${l.id} --json`,15e3),t=T(e);t&&typeof t=="object"?(w.value={id:t.id||l.id,name:t.name||l.name,owner:t.owner||l.owner,description:t.description||l.description,memberCount:t.memberCount??t.members??l.memberCount,createdAt:t.createdAt||t.created||""},j.value=JSON.stringify(t,null,2)):j.value=e}catch(e){j.value="加载详情失败: "+e.message}finally{ne.value=!1}}const x=i(null),oe=i(!1),se=i([]),ie=i(!1),re=i([]),V=i(!1),ue=i(!1),L=i(""),W=i(""),K=i("member"),R=i(!1),de=i(!1),D=i(""),F=i(""),E=i(""),$e=[{label:"管理员 (admin)",value:"admin"},{label:"成员 (member)",value:"member"},{label:"查看者 (viewer)",value:"viewer"}],Ae=[{title:"用户 ID",key:"userId",dataIndex:"userId",width:"160px"},{title:"名称",key:"name",dataIndex:"name",width:"140px"},{title:"角色",key:"role",dataIndex:"role",width:"100px"},{title:"加入时间",key:"joinedAt",dataIndex:"joinedAt",width:"180px"}],ze=[{title:"团队名称",key:"name",dataIndex:"name",width:"180px"},{title:"描述",key:"description",dataIndex:"description",ellipsis:!0},{title:"负责人",key:"lead",dataIndex:"lead",width:"140px"}];function Te(l){return{admin:"gold",member:"blue",viewer:"default",owner:"purple"}[(l||"").toLowerCase()]||"default"}async function Ue(){x.value&&await Promise.all([pe(),ce()])}async function pe(){if(x.value){oe.value=!0;try{const{output:l}=await k.execute(`org members ${x.value} --json`,15e3),e=T(l);Array.isArray(e)?se.value=e.map((t,s)=>({key:t.userId||t.id||s,userId:t.userId||t.id||"-",name:t.name||t.displayName||"-",role:t.role||"member",joinedAt:t.joinedAt||t.joined||"-"})):se.value=Le(l)}catch(l){p.error("加载成员失败: "+l.message)}finally{oe.value=!1}}}function Le(l){const e=[],t=l.split(`
|
|
3
3
|
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ member/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=3&&e.push({key:e.length,userId:c[0]||"-",name:c[1]||"-",role:c[2]||"member",joinedAt:c[3]||"-"})}return e}async function ce(){if(x.value){ie.value=!0;try{const{output:l}=await k.execute(`org teams ${x.value} --json`,15e3),e=T(l);Array.isArray(e)?re.value=e.map((t,s)=>({key:t.id||t.name||s,name:t.name||"-",description:t.description||"",lead:t.lead||t.leader||"-"})):re.value=[]}catch(l){p.error("加载团队失败: "+l.message)}finally{ie.value=!1}}}async function De(){if(!L.value.trim()){p.warning("请输入用户 ID");return}ue.value=!0;try{const l=L.value.trim().replace(/"/g,'\\"'),e=W.value.trim().replace(/"/g,'\\"');let t=`org invite ${x.value} ${l} --role ${K.value}`;e&&(t+=` --name "${e}"`);const{output:s}=await k.execute(t,2e4);s.includes("error")||s.includes("失败")?p.error("邀请失败: "+s.slice(0,120)):(p.success("邀请已发送"),V.value=!1,L.value="",W.value="",K.value="member",await pe())}catch(l){p.error("邀请失败: "+l.message)}finally{ue.value=!1}}async function qe(){if(!D.value.trim()){p.warning("请输入团队名称");return}de.value=!0;try{const l=D.value.trim().replace(/"/g,'\\"'),e=F.value.trim().replace(/"/g,'\\"'),t=E.value.trim().replace(/"/g,'\\"');let s=`org teams ${x.value} create "${l}"`;e&&(s+=` --description "${e}"`),t&&(s+=` --lead "${t}"`);const{output:u}=await k.execute(s,2e4);u.includes("error")||u.includes("失败")?p.error("创建失败: "+u.slice(0,120)):(p.success("团队已创建"),R.value=!1,D.value="",F.value="",E.value="",await ce())}catch(l){p.error("创建失败: "+l.message)}finally{de.value=!1}}const ve=i(!1),G=i([]),H=i(!1),me=i(!1),q=i(null),S=i(""),Z=i(""),Q=i(""),Se=[{title:"ID",key:"id",dataIndex:"id",width:"100px"},{title:"标题",key:"title",dataIndex:"title",width:"200px"},{title:"类型",key:"type",dataIndex:"type",width:"120px"},{title:"申请人",key:"requester",dataIndex:"requester",width:"140px"},{title:"状态",key:"status",dataIndex:"status",width:"100px"},{title:"操作",key:"actions",width:"180px"}];function Me(l){return{pending:"orange",approved:"green",rejected:"red"}[(l||"").toLowerCase()]||"default"}async function M(){ve.value=!0;try{const{output:l}=await k.execute("org approvals --json",15e3),e=T(l);Array.isArray(e)?G.value=e.map((t,s)=>({key:t.id||s,id:t.id||"-",title:t.title||"-",type:t.type||"-",requester:t.requester||t.requestedBy||"-",status:t.status||"pending",_approving:!1,_rejecting:!1})):G.value=Ne(l)}catch(l){p.error("加载审批列表失败: "+l.message)}finally{ve.value=!1}}function Ne(l){const e=[],t=l.split(`
|
|
4
4
|
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ approval/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=4&&e.push({key:e.length,id:c[0]||"-",title:c[1]||"-",type:c[2]||"-",requester:c[3]||"-",status:c[4]||"pending",_approving:!1,_rejecting:!1})}return e}async function Be(l){l._approving=!0;try{const{output:e}=await k.execute(`org approve ${l.id}`,15e3);e.includes("error")||e.includes("失败")?p.error("审批失败: "+e.slice(0,120)):(p.success("已通过"),await M())}catch(e){p.error("审批失败: "+e.message)}finally{l._approving=!1}}async function Je(l){l._rejecting=!0;try{const{output:e}=await k.execute(`org reject ${l.id}`,15e3);e.includes("error")||e.includes("失败")?p.error("拒绝失败: "+e.slice(0,120)):(p.success("已拒绝"),await M())}catch(e){p.error("拒绝失败: "+e.message)}finally{l._rejecting=!1}}async function Pe(){if(!q.value){p.warning("请选择组织");return}if(!S.value.trim()){p.warning("请输入审批标题");return}me.value=!0;try{const l=S.value.trim().replace(/"/g,'\\"'),e=Z.value.trim().replace(/"/g,'\\"'),t=Q.value.trim().replace(/"/g,'\\"');let s=`org approve --submit --org ${q.value} --title "${l}"`;e&&(s+=` --type "${e}"`),t&&(s+=` --description "${t}"`);const{output:u}=await k.execute(s,2e4);u.includes("error")||u.includes("失败")?p.error("提交失败: "+u.slice(0,120)):(p.success("审批已提交"),H.value=!1,q.value=null,S.value="",Z.value="",Q.value="",await M())}catch(l){p.error("提交失败: "+l.message)}finally{me.value=!1}}return Fe(()=>{$()}),(l,e)=>{const t=g("a-button"),s=g("a-space"),u=g("a-spin"),c=g("a-tag"),N=g("a-empty"),X=g("a-table"),A=g("a-descriptions-item"),Ve=g("a-descriptions"),B=g("a-modal"),I=g("a-input"),b=g("a-form-item"),Y=g("a-form"),ye=g("a-tab-pane"),fe=g("a-select"),We=g("a-textarea"),Ke=g("a-tabs");return r(),v("div",null,[h("div",tt,[e[24]||(e[24]=h("div",null,[h("h2",{class:"page-title"},"组织管理"),h("p",{class:"page-sub"},"组织 / 成员 / 审批")],-1)),a(t,{type:"primary",ghost:"",loading:ee.value,onClick:we},{icon:o(()=>[a(C(Ze))]),default:o(()=>[e[23]||(e[23]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Ke,{activeKey:z.value,"onUpdate:activeKey":e[22]||(e[22]=n=>z.value=n),type:"card",onChange:Ce},{default:o(()=>[a(ye,{key:"orgs"},{tab:o(()=>[a(C(Qe)),e[25]||(e[25]=f(" 组织列表 ",-1))]),default:o(()=>[a(s,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(t,{type:"primary",onClick:e[0]||(e[0]=n=>J.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[26]||(e[26]=f(" 创建组织 ",-1))]),_:1})]),_:1}),te.value?(r(),v("div",at,[a(u,{size:"large"})])):(r(),_(X,{key:1,columns:Ie,"data-source":O.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":n=>({onClick:()=>je(n)})},{bodyCell:o(({column:n,record:d})=>[n.key==="id"?(r(),v("span",lt,m(d.id),1)):y("",!0),n.key==="name"?(r(),v("a",nt,m(d.name),1)):y("",!0),n.key==="owner"?(r(),v("span",ot,m(d.owner),1)):y("",!0),n.key==="description"?(r(),v("span",st,m(d.description),1)):y("",!0),n.key==="memberCount"?(r(),_(c,{key:4,color:"blue"},{default:o(()=>[f(m(d.memberCount),1)]),_:2},1024)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无组织,点击「创建组织」添加"})]),_:1},8,["data-source","pagination","custom-row"])),a(B,{open:le.value,"onUpdate:open":e[1]||(e[1]=n=>le.value=n),title:"组织详情: "+w.value.name,footer:null,width:"640px"},{default:o(()=>[ne.value?(r(),v("div",it,[a(u)])):(r(),v("div",rt,[a(Ve,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:o(()=>[a(A,{label:"ID"},{default:o(()=>[h("span",ut,m(w.value.id),1)]),_:1}),a(A,{label:"名称"},{default:o(()=>[f(m(w.value.name),1)]),_:1}),a(A,{label:"所有者"},{default:o(()=>[f(m(w.value.owner),1)]),_:1}),a(A,{label:"描述"},{default:o(()=>[f(m(w.value.description||"-"),1)]),_:1}),a(A,{label:"成员数"},{default:o(()=>[f(m(w.value.memberCount),1)]),_:1}),w.value.createdAt?(r(),_(A,{key:0,label:"创建时间"},{default:o(()=>[f(m(w.value.createdAt),1)]),_:1})):y("",!0)]),_:1}),j.value?(r(),v("pre",dt,m(j.value),1)):y("",!0)]))]),_:1},8,["open","title"]),a(B,{open:J.value,"onUpdate:open":e[4]||(e[4]=n=>J.value=n),title:"创建组织","confirm-loading":ae.value,onOk:Oe,"ok-text":"创建","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"名称",required:""},{default:o(()=>[a(I,{value:U.value,"onUpdate:value":e[2]||(e[2]=n=>U.value=n),placeholder:"请输入组织名称"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(I,{value:P.value,"onUpdate:value":e[3]||(e[3]=n=>P.value=n),placeholder:"请输入组织描述(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(ye,{key:"members"},{tab:o(()=>[a(C(_e)),e[27]||(e[27]=f(" 成员管理 ",-1))]),default:o(()=>[h("div",pt,[a(fe,{value:x.value,"onUpdate:value":e[5]||(e[5]=n=>x.value=n),placeholder:"选择组织",style:{width:"280px"},options:xe.value,onChange:Ue},null,8,["value","options"]),a(t,{type:"primary",disabled:!x.value,onClick:e[6]||(e[6]=n=>V.value=!0)},{icon:o(()=>[a(C(_e))]),default:o(()=>[e[28]||(e[28]=f(" 邀请成员 ",-1))]),_:1},8,["disabled"])]),oe.value?(r(),v("div",ct,[a(u,{size:"large"})])):x.value?(r(),_(X,{key:1,columns:Ae,"data-source":se.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="userId"?(r(),v("span",vt,m(d.userId),1)):y("",!0),n.key==="name"?(r(),v("span",mt,m(d.name),1)):y("",!0),n.key==="role"?(r(),_(c,{key:2,color:Te(d.role)},{default:o(()=>[f(m(d.role),1)]),_:2},1032,["color"])):y("",!0),n.key==="joinedAt"?(r(),v("span",yt,m(d.joinedAt),1)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无成员"})]),_:1},8,["data-source","pagination"])):(r(),_(N,{key:2,description:"请先选择一个组织",style:{padding:"60px 0"}})),x.value?(r(),v(be,{key:3},[h("div",ft,[e[30]||(e[30]=h("h3",{style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},"团队",-1)),a(t,{size:"small",onClick:e[7]||(e[7]=n=>R.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[29]||(e[29]=f(" 创建团队 ",-1))]),_:1})]),ie.value?(r(),v("div",gt,[a(u)])):(r(),_(X,{key:1,columns:ze,"data-source":re.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="name"?(r(),v("span",xt,m(d.name),1)):y("",!0),n.key==="description"?(r(),v("span",bt,m(d.description),1)):y("",!0),n.key==="lead"?(r(),v("span",kt,m(d.lead),1)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无团队"})]),_:1},8,["data-source"]))],64)):y("",!0),a(B,{open:V.value,"onUpdate:open":e[11]||(e[11]=n=>V.value=n),title:"邀请成员","confirm-loading":ue.value,onOk:De,"ok-text":"邀请","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"用户 ID",required:""},{default:o(()=>[a(I,{value:L.value,"onUpdate:value":e[8]||(e[8]=n=>L.value=n),placeholder:"请输入用户 ID"},null,8,["value"])]),_:1}),a(b,{label:"名称"},{default:o(()=>[a(I,{value:W.value,"onUpdate:value":e[9]||(e[9]=n=>W.value=n),placeholder:"请输入用户名称"},null,8,["value"])]),_:1}),a(b,{label:"角色"},{default:o(()=>[a(fe,{value:K.value,"onUpdate:value":e[10]||(e[10]=n=>K.value=n),options:$e},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(B,{open:R.value,"onUpdate:open":e[15]||(e[15]=n=>R.value=n),title:"创建团队","confirm-loading":de.value,onOk:qe,"ok-text":"创建","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"团队名称",required:""},{default:o(()=>[a(I,{value:D.value,"onUpdate:value":e[12]||(e[12]=n=>D.value=n),placeholder:"请输入团队名称"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(I,{value:F.value,"onUpdate:value":e[13]||(e[13]=n=>F.value=n),placeholder:"请输入团队描述(可选)"},null,8,["value"])]),_:1}),a(b,{label:"负责人"},{default:o(()=>[a(I,{value:E.value,"onUpdate:value":e[14]||(e[14]=n=>E.value=n),placeholder:"请输入负责人 ID(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(ye,{key:"approvals"},{tab:o(()=>[a(C(et)),e[31]||(e[31]=f(" 审批管理 ",-1))]),default:o(()=>[a(s,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(t,{type:"primary",onClick:e[16]||(e[16]=n=>H.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[32]||(e[32]=f(" 提交审批 ",-1))]),_:1})]),_:1}),ve.value?(r(),v("div",_t,[a(u,{size:"large"})])):(r(),_(X,{key:1,columns:Se,"data-source":G.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="id"?(r(),v("span",wt,m(d.id),1)):y("",!0),n.key==="title"?(r(),v("span",Ct,m(d.title),1)):y("",!0),n.key==="type"?(r(),_(c,{key:2,color:"blue"},{default:o(()=>[f(m(d.type),1)]),_:2},1024)):y("",!0),n.key==="requester"?(r(),v("span",It,m(d.requester),1)):y("",!0),n.key==="status"?(r(),_(c,{key:4,color:Me(d.status)},{default:o(()=>[f(m(d.status),1)]),_:2},1032,["color"])):y("",!0),n.key==="actions"?(r(),v(be,{key:5},[(d.status||"").toLowerCase()==="pending"?(r(),_(s,{key:0},{default:o(()=>[a(t,{type:"primary",size:"small",loading:d._approving,onClick:ke(Re=>Be(d),["stop"])},{icon:o(()=>[a(C(Xe))]),default:o(()=>[e[33]||(e[33]=f(" 通过 ",-1))]),_:1},8,["loading","onClick"]),a(t,{danger:"",size:"small",loading:d._rejecting,onClick:ke(Re=>Je(d),["stop"])},{icon:o(()=>[a(C(Ye))]),default:o(()=>[e[34]||(e[34]=f(" 拒绝 ",-1))]),_:1},8,["loading","onClick"])]),_:2},1024)):(r(),v("span",ht,"-"))],64)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无审批记录"})]),_:1},8,["data-source","pagination"])),a(B,{open:H.value,"onUpdate:open":e[21]||(e[21]=n=>H.value=n),title:"提交审批","confirm-loading":me.value,onOk:Pe,"ok-text":"提交","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"组织",required:""},{default:o(()=>[a(fe,{value:q.value,"onUpdate:value":e[17]||(e[17]=n=>q.value=n),placeholder:"选择组织",options:xe.value},null,8,["value","options"])]),_:1}),a(b,{label:"标题",required:""},{default:o(()=>[a(I,{value:S.value,"onUpdate:value":e[18]||(e[18]=n=>S.value=n),placeholder:"请输入审批标题"},null,8,["value"])]),_:1}),a(b,{label:"类型"},{default:o(()=>[a(I,{value:Z.value,"onUpdate:value":e[19]||(e[19]=n=>Z.value=n),placeholder:"请输入审批类型"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(We,{value:Q.value,"onUpdate:value":e[20]||(e[20]=n=>Q.value=n),placeholder:"请输入审批描述(可选)",rows:3},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},Bt=He(Ot,[["__scopeId","data-v-02062899"]]);export{Bt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as u,c as H}from"./useConfigInject-
|
|
1
|
+
import{_ as u,c as H}from"./useConfigInject-ZEunuNHN.js";import{_ as D}from"./index-Dn_OQQaV.js";import{R as ee}from"./index-BJx6C3J8.js";import{P}from"./index-U4Zd5IK6.js";import{d as k,p as ge,i as pe,j as c,M as be,c as v,r as he,w as Oe,s as C}from"./vendor-C5RM7MZO.js";const te=Symbol("OverflowContextProviderKey"),X=k({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup(e,a){let{slots:r}=a;return ge(te,c(()=>e.value)),()=>{var t;return(t=r.default)===null||t===void 0?void 0:t.call(r)}}}),Se=()=>pe(te,c(()=>null));var xe=function(e,a){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&a.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)a.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(r[t[n]]=e[t[n]]);return r};const _=void 0,$=k({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:P.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:P.any,invalidate:Boolean},setup(e,a){let{slots:r,expose:t}=a;const n=c(()=>e.responsive&&!e.display),p=he();t({itemNodeRef:p});function b(i){e.registerSize(e.itemKey,i)}return be(()=>{b(null)}),()=>{var i;const{prefixCls:O,invalidate:w,item:m,renderItem:y,responsive:f,registerSize:z,itemKey:R,display:V,order:I,component:M="div"}=e,S=xe(e,["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"]),W=(i=r.default)===null||i===void 0?void 0:i.call(r),T=y&&m!==_?y(m):W;let h;w||(h={opacity:n.value?0:1,height:n.value?0:_,overflowY:n.value?"hidden":_,order:f?I:_,pointerEvents:n.value?"none":_,position:n.value?"absolute":_});const N={};return n.value&&(N["aria-hidden"]=!0),v(ee,{disabled:!f,onResize:E=>{let{offsetWidth:B}=E;b(B)}},{default:()=>v(M,u(u(u({class:H(!w&&O),style:h},N),S),{},{ref:p}),{default:()=>[T]})})}}});var U=function(e,a){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&a.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)a.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(r[t[n]]=e[t[n]]);return r};const Ce=k({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:P.any,title:P.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},role:String,tabindex:Number},setup(e,a){let{slots:r,attrs:t}=a;const n=Se();return()=>{var p;if(!n.value){const{component:y="div"}=e,f=U(e,["component"]);return v(y,u(u({},f),t),{default:()=>[(p=r.default)===null||p===void 0?void 0:p.call(r)]})}const b=n.value,{className:i}=b,O=U(b,["className"]),{class:w}=t,m=U(t,["class"]);return v(X,{value:null},{default:()=>[v($,u(u(u({class:H(i,w)},O),m),e),r)]})}}});var we=function(e,a){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&a.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)a.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(r[t[n]]=e[t[n]]);return r};const ne="responsive",le="invalidate";function Re(e){return`+ ${e.length} ...`}const Ie=()=>({id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:P.any,component:String,itemComponent:P.any,onVisibleChange:Function,ssr:String,onMousedown:Function,role:String}),Y=k({name:"Overflow",inheritAttrs:!1,props:Ie(),emits:["visibleChange"],setup(e,a){let{attrs:r,emit:t,slots:n}=a;const p=c(()=>e.ssr==="full"),b=C(null),i=c(()=>b.value||0),O=C(new Map),w=C(0),m=C(0),y=C(0),f=C(null),z=C(null),R=c(()=>z.value===null&&p.value?Number.MAX_SAFE_INTEGER:z.value||0),V=C(!1),I=c(()=>`${e.prefixCls}-item`),M=c(()=>Math.max(w.value,m.value)),S=c(()=>!!(e.data.length&&e.maxCount===ne)),W=c(()=>e.maxCount===le),T=c(()=>S.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount),h=c(()=>{let l=e.data;return S.value?b.value===null&&p.value?l=e.data:l=e.data.slice(0,Math.min(e.data.length,i.value/e.itemWidth)):typeof e.maxCount=="number"&&(l=e.data.slice(0,e.maxCount)),l}),N=c(()=>S.value?e.data.slice(R.value+1):e.data.slice(h.value.length)),E=(l,o)=>{var s;return typeof e.itemKey=="function"?e.itemKey(l):(s=e.itemKey&&l?.[e.itemKey])!==null&&s!==void 0?s:o},B=c(()=>e.renderItem||(l=>l)),A=(l,o)=>{z.value=l,o||(V.value=l<e.data.length-1,t("visibleChange",l))},re=(l,o)=>{b.value=o.clientWidth},q=(l,o)=>{const s=new Map(O.value);o===null?s.delete(l):s.set(l,o),O.value=s},oe=(l,o)=>{w.value=m.value,m.value=o},ae=(l,o)=>{y.value=o},G=l=>O.value.get(E(h.value[l],l));return Oe([i,O,m,y,()=>e.itemKey,h],()=>{if(i.value&&M.value&&h.value){let l=y.value;const o=h.value.length,s=o-1;if(!o){A(0),f.value=null;return}for(let g=0;g<o;g+=1){const F=G(g);if(F===void 0){A(g-1,!0);break}if(l+=F,s===0&&l<=i.value||g===s-1&&l+G(s)<=i.value){A(s),f.value=null;break}else if(l+M.value>i.value){A(g-1),f.value=l-F-y.value+m.value;break}}e.suffix&&G(0)+y.value>i.value&&(f.value=null)}}),()=>{const l=V.value&&!!N.value.length,{itemComponent:o,renderRawItem:s,renderRawRest:g,renderRest:F,prefixCls:ie="rc-overflow",suffix:J,component:se="div",id:ue,onMousedown:de}=e,{class:ce,style:ve}=r,fe=we(r,["class","style"]);let Q={};f.value!==null&&S.value&&(Q={position:"absolute",left:`${f.value}px`,top:0});const j={prefixCls:I.value,responsive:S.value,component:o,invalidate:W.value},me=s?(d,x)=>{const K=E(d,x);return v(X,{key:K,value:D(D({},j),{order:x,item:d,itemKey:K,registerSize:q,display:x<=R.value})},{default:()=>[s(d,x)]})}:(d,x)=>{const K=E(d,x);return v($,u(u({},j),{},{order:x,key:K,item:d,renderItem:B.value,itemKey:K,registerSize:q,display:x<=R.value}),null)};let L=()=>null;const Z={order:l?R.value:Number.MAX_SAFE_INTEGER,className:`${I.value} ${I.value}-rest`,registerSize:oe,display:l};if(g)g&&(L=()=>v(X,{value:D(D({},j),Z)},{default:()=>[g(N.value)]}));else{const d=F||Re;L=()=>v($,u(u({},j),Z),{default:()=>typeof d=="function"?d(N.value):d})}const ye=()=>{var d;return v(se,u({id:ue,class:H(!W.value&&ie,ce),style:ve,onMousedown:de,role:e.role},fe),{default:()=>[h.value.map(me),T.value?L():null,J&&v($,u(u({},j),{},{order:R.value,class:`${I.value}-suffix`,registerSize:ae,display:!0,style:Q}),{default:()=>J}),(d=n.default)===null||d===void 0?void 0:d.call(n)]})};return v(ee,{disabled:!S.value,onResize:re},{default:ye})}}});Y.Item=Ce;Y.RESPONSIVE=ne;Y.INVALIDATE=le;export{Y as O};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as ue}from"./ws-D-sl0vsW.js";import{_ as ce}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as G}from"./index-
|
|
1
|
+
import{u as ue}from"./ws-D-sl0vsW.js";import{_ as ce}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as G}from"./index-Ch5mAXeh.js";import{p as de,L as pe,O as K,Z as me}from"./icons-CpgFsfkd.js";import{l as fe,F as d,D as T,c as o,x as s,r as v,q as u,v as i,J as h,u as I,m as b,I as _,G as g,H as j,L as E}from"./vendor-C5RM7MZO.js";import"./index-Dn_OQQaV.js";import"./useConfigInject-ZEunuNHN.js";import"./transition-gRK4XSlW.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CFB5Y97t.js";import"./index-U4Zd5IK6.js";const ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ve={key:0,style:{"text-align":"center",padding:"60px"}},_e={key:0,style:{color:"#e0e0e0","font-weight":"500"}},ge={key:1,style:{color:"var(--text-secondary)"}},he={key:0,style:{"margin-top":"16px"}},ke={key:0,style:{"text-align":"center",padding:"60px"}},xe={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},be={key:1,style:{color:"#e0e0e0"}},we={key:2,style:{color:"var(--text-secondary)"}},Ce={key:4,style:{color:"var(--text-muted)","font-size":"12px"}},Ie={__name:"Permissions",setup(Re){const R=ue(),O=v("roles"),z=v(!1);async function q(){z.value=!0;try{O.value==="roles"?await P():O.value==="audit"&&await V()}finally{z.value=!1}}function H(t){t==="roles"&&S.value.length===0&&P(),t==="audit"&&A.value.length===0&&V()}const W=v(!1),S=v([]),Z=[{title:"角色名",key:"name",dataIndex:"name",width:"160px"},{title:"描述",key:"description",dataIndex:"description",width:"240px"},{title:"权限",key:"permissions",dataIndex:"permissions"},{title:"用户数",key:"userCount",dataIndex:"userCount",width:"100px"}];async function P(){W.value=!0;try{const{output:t}=await R.execute("auth roles --json",15e3);S.value=F(t,Q)}catch(t){G.error("加载角色列表失败: "+t.message)}finally{W.value=!1}}function Q(t){const e=[],l=t.split(`
|
|
2
2
|
`);for(const p of l){const n=p.trim();if(!n||n.startsWith("─")||n.match(/^Role/i))continue;const r=n.split(/\s*[|│]\s*/);r.length>=2?e.push({key:e.length,name:r[0]||"-",description:r[1]||"",permissions:r[2]?r[2].split(/[,;\s]+/).filter(Boolean):[],userCount:r[3]&&parseInt(r[3],10)||0}):n.length>2&&e.push({key:e.length,name:n.slice(0,60),description:"",permissions:[],userCount:0})}return e}const C=v(""),w=v(""),$=v(!1),k=v(null),X=["note:read","note:write","admin:*","skill:execute"];async function Y(){if(!(!C.value.trim()||!w.value.trim())){$.value=!0,k.value=null;try{const t=`auth check ${C.value.trim()} "${w.value.trim()}"`,{output:e}=await R.execute(t,15e3),l=e.toLowerCase(),p=l.includes("allow")||l.includes("granted")||l.includes("true")||l.includes("yes"),n=l.includes("denied")||l.includes("reject")||l.includes("false")||l.includes("no permission");k.value={allowed:p&&!n,detail:e.trim()||(p?"用户拥有该权限":"用户没有该权限")}}catch(t){k.value={allowed:!1,detail:"检查失败: "+t.message}}finally{$.value=!1}}}const B=v(!1),A=v([]),M=v([]),ee=[{title:"时间",key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"事件",key:"event",dataIndex:"event",width:"200px"},{title:"用户",key:"user",dataIndex:"user",width:"120px"},{title:"级别",key:"level",dataIndex:"level",width:"80px"},{title:"详情",key:"detail",dataIndex:"detail",ellipsis:!0}];function te(t){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(t||"").toLowerCase()]||"default"}async function V(){B.value=!0;try{const[t,e]=await Promise.all([R.execute("audit log --json",15e3),R.execute("audit stats --json",15e3)]);A.value=F(t.output,ae),M.value=se(e.output)}catch(t){G.error("加载审计日志失败: "+t.message)}finally{B.value=!1}}function ae(t){const e=[],l=t.split(`
|
|
3
3
|
`);for(const p of l){const n=p.trim();if(!n||n.startsWith("─")||n.startsWith("Audit")||n.startsWith("Recent"))continue;const r=n.split(/\s*[|│]\s*/);if(r.length>=3){e.push({key:e.length,timestamp:r[0]||"-",event:r[1]||"-",user:r[2]||"-",level:r[3]||"info",detail:r.slice(4).join(" ")||""});continue}const y=n.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(y){const m=y[2],f=m.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);e.push({key:e.length,timestamp:y[1],event:m.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:f?f[1].toLowerCase():"info",detail:""})}else n.length>3&&!n.match(/^\d+ event/i)&&e.push({key:e.length,timestamp:"-",event:n.slice(0,80),user:"-",level:"info",detail:""})}return e}function se(t){const e=D(t);if(e&&typeof e=="object"&&!Array.isArray(e)){const y=["#1677ff","#52c41a","#faad14","#ff4d4f"];return Object.entries(e).slice(0,4).map(([m,f],x)=>({label:m,value:typeof f=="number"?f:String(f),color:y[x%y.length]}))}const l=[],p=t.split(`
|
|
4
4
|
`),n=["#1677ff","#52c41a","#faad14","#ff4d4f"];let r=0;for(const y of p){const m=y.trim();if(!m||m.startsWith("─")||m.startsWith("Audit"))continue;const f=m.match(/^(.+?)\s*[:=]\s*(.+)$/);if(f){const x=f[1].trim(),L=f[2].trim(),N=L.match(/^(\d+)/);l.push({label:x,value:N?parseInt(N[1],10):L,color:n[r%n.length]}),r++}}return l.length===0&&l.push({label:"总事件数",value:A.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),l}function D(t){try{const e=t.indexOf("[")!==-1?t.indexOf("["):t.indexOf("{");if(e===-1)return null;const l=t.lastIndexOf("]")!==-1?t.lastIndexOf("]")+1:t.lastIndexOf("}")+1;return JSON.parse(t.slice(e,l))}catch{return null}}function F(t,e){const l=D(t);return Array.isArray(l)?l.map((p,n)=>({key:n,...p})):e(t)}return fe(()=>{P()}),(t,e)=>{const l=u("a-button"),p=u("a-spin"),n=u("a-tag"),r=u("a-empty"),y=u("a-table"),m=u("a-tab-pane"),f=u("a-input"),x=u("a-form-item"),L=u("a-space"),N=u("a-form"),ne=u("a-alert"),J=u("a-card"),oe=u("a-statistic"),le=u("a-col"),ie=u("a-row"),re=u("a-tabs");return i(),d("div",null,[T("div",ye,[e[4]||(e[4]=T("div",null,[T("h2",{class:"page-title"},"权限管理"),T("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),o(l,{type:"primary",ghost:"",loading:z.value,onClick:q},{icon:s(()=>[o(I(de))]),default:s(()=>[e[3]||(e[3]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),o(re,{activeKey:O.value,"onUpdate:activeKey":e[2]||(e[2]=a=>O.value=a),type:"card",onChange:H},{default:s(()=>[o(m,{key:"roles"},{tab:s(()=>[o(I(pe)),e[5]||(e[5]=h(" 角色列表 ",-1))]),default:s(()=>[W.value?(i(),d("div",ve,[o(p,{size:"large"})])):(i(),b(y,{key:1,columns:Z,"data-source":S.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="name"?(i(),d("span",_e,_(c.name),1)):g("",!0),a.key==="description"?(i(),d("span",ge,_(c.description),1)):g("",!0),a.key==="permissions"?(i(),d(j,{key:2},[(i(!0),d(j,null,E((c.permissions||[]).slice(0,5),U=>(i(),b(n,{key:U,color:"blue",style:{"margin-bottom":"2px"}},{default:s(()=>[h(_(U),1)]),_:2},1024))),128)),(c.permissions||[]).length>5?(i(),b(n,{key:0,color:"default"},{default:s(()=>[h(" +"+_(c.permissions.length-5),1)]),_:2},1024)):g("",!0)],64)):g("",!0),a.key==="userCount"?(i(),b(n,{key:3,color:c.userCount>0?"green":"default"},{default:s(()=>[h(_(c.userCount??0),1)]),_:2},1032,["color"])):g("",!0)]),emptyText:s(()=>[o(r,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),o(m,{key:"check"},{tab:s(()=>[o(I(K)),e[6]||(e[6]=h(" 权限检查 ",-1))]),default:s(()=>[o(J,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:s(()=>[o(N,{"label-col":{span:5},"wrapper-col":{span:19}},{default:s(()=>[o(x,{label:"用户 ID",required:""},{default:s(()=>[o(f,{value:C.value,"onUpdate:value":e[0]||(e[0]=a=>C.value=a),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),o(x,{label:"权限",required:""},{default:s(()=>[o(f,{value:w.value,"onUpdate:value":e[1]||(e[1]=a=>w.value=a),placeholder:"note:read"},null,8,["value"])]),_:1}),o(x,{"wrapper-col":{offset:5,span:19}},{default:s(()=>[o(L,{wrap:""},{default:s(()=>[o(l,{type:"primary",loading:$.value,disabled:!C.value.trim()||!w.value.trim(),onClick:Y},{icon:s(()=>[o(I(K))]),default:s(()=>[e[7]||(e[7]=h(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(i(),d(j,null,E(X,a=>o(l,{key:a,size:"small",onClick:c=>w.value=a},{default:s(()=>[h(_(a),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1})]),_:1}),k.value!==null?(i(),d("div",he,[o(ne,{message:k.value.allowed?"权限允许":"权限拒绝",description:k.value.detail,type:k.value.allowed?"success":"error","show-icon":""},null,8,["message","description","type"])])):g("",!0)]),_:1})]),_:1}),o(m,{key:"audit"},{tab:s(()=>[o(I(me)),e[8]||(e[8]=h(" 审计日志 ",-1))]),default:s(()=>[o(ie,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(i(!0),d(j,null,E(M.value,a=>(i(),b(le,{xs:12,sm:6,key:a.label},{default:s(()=>[o(J,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[o(oe,{title:a.label,value:a.value,"value-style":{color:a.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),B.value?(i(),d("div",ke,[o(p,{size:"large"})])):(i(),b(y,{key:1,columns:ee,"data-source":A.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="timestamp"?(i(),d("span",xe,_(c.timestamp),1)):g("",!0),a.key==="event"?(i(),d("span",be,_(c.event),1)):g("",!0),a.key==="user"?(i(),d("span",we,_(c.user),1)):g("",!0),a.key==="level"?(i(),b(n,{key:3,color:te(c.level)},{default:s(()=>[h(_(c.level),1)]),_:2},1032,["color"])):g("",!0),a.key==="detail"?(i(),d("span",Ce,_(c.detail),1)):g("",!0)]),emptyText:s(()=>[o(r,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}}},Be=ce(Ie,[["__scopeId","data-v-71782e36"]]);export{Be as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{k as X,r as T,l as Y,F as N,D as i,c as s,x as l,u as g,m as K,G as B,H as Z,L as ee,q as u,a as te,v as y,J as x,I as M,E as oe}from"./vendor-C5RM7MZO.js";import{u as A}from"./ws-D-sl0vsW.js";import{a as ae,b as se}from"./parsers-DftYMnlk.js";import{_ as le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as _}from"./index-
|
|
1
|
+
import{k as X,r as T,l as Y,F as N,D as i,c as s,x as l,u as g,m as K,G as B,H as Z,L as ee,q as u,a as te,v as y,J as x,I as M,E as oe}from"./vendor-C5RM7MZO.js";import{u as A}from"./ws-D-sl0vsW.js";import{a as ae,b as se}from"./parsers-DftYMnlk.js";import{_ as le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as _}from"./index-Ch5mAXeh.js";import{p as V}from"./icons-CpgFsfkd.js";import"./index-Dn_OQQaV.js";import"./useConfigInject-ZEunuNHN.js";import"./transition-gRK4XSlW.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CFB5Y97t.js";import"./index-U4Zd5IK6.js";const re=X("providers",()=>{const I=T(!1),n=T(null),m=T([]),P=T([]),c=T(null);async function t(){const v=A();I.value=!0;try{const{output:k}=await v.execute("llm providers",15e3);m.value=ae(k);const b=m.value.find(C=>C.active);b&&(c.value=b.name);const{output:w}=await v.execute("llm models",15e3);P.value=se(w)}catch(k){console.error("Failed to load providers:",k)}finally{I.value=!1}}async function d(v){await A().execute(`llm switch ${v}`,1e4),m.value.forEach(b=>b.active=b.name===v),c.value=v}async function F(v){const k=A();n.value=v;try{const{output:b,exitCode:w}=await k.execute("llm test",3e4),C=m.value.find(O=>O.name===v);return C&&(C.status=w===0?"ok":"error"),w===0}catch{const b=m.value.find(w=>w.name===v);return b&&(b.status="error"),!1}finally{n.value=null}}return{loading:I,testing:n,providers:m,localModels:P,activeProvider:c,loadProviders:t,switchProvider:d,testProvider:F}}),ie={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ne={key:1,style:{"text-align":"center",padding:"60px"}},de={key:2},ue={class:"providers-grid"},ce={style:{display:"flex","align-items":"center",gap:"12px","margin-bottom":"12px"}},pe={style:{"font-size":"24px"}},me={style:{flex:"1"}},ve={style:{color:"#e0e0e0","font-weight":"500"}},fe={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},ge={style:{display:"flex",gap:"8px","justify-content":"flex-end"}},ye={key:0,style:{"margin-top":"24px"}},be={style:{color:"#ccc","font-family":"monospace","font-size":"13px"}},xe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"16px"}},_e={class:"config-grid"},ke={style:{display:"flex","align-items":"center",gap:"12px"}},we={style:{display:"flex",gap:"12px","justify-content":"flex-end","margin-top":"16px"}},he={__name:"Providers",setup(I){const n=re(),m=A(),P=T(!1),c=T(!1),t=te({provider:void 0,model:"",apiKey:"",baseUrl:"",temperature:.7,maxTokens:4096});let d={};const F=["ollama","openai","anthropic","volcengine","deepseek","gemini","groq","mistral","custom","zhipu"],v={ollama:"Ollama(本地)",openai:"OpenAI",anthropic:"Anthropic",volcengine:"火山引擎(豆包)",deepseek:"DeepSeek",gemini:"Google Gemini",groq:"Groq",mistral:"Mistral",custom:"Custom(自定义)",zhipu:"智谱 AI"},k=F.map(a=>({value:a,label:v[a]||a}));async function b(a){try{await n.switchProvider(a),_.success(`已切换到 ${a}`)}catch(e){_.error(`切换失败: ${e.message}`)}}async function w(a){await n.testProvider(a)?_.success(`${a} 连接正常`):_.warning(`${a} 连接失败,请检查配置`)}function C(a){const e={};if(!a)return e;try{const U=JSON.parse(a.trim()),p=U.llm||U;return p.provider&&(e.provider=p.provider),p.model&&(e.model=p.model),p.apiKey&&(e.apiKey=p.apiKey),p.baseUrl&&(e.baseUrl=p.baseUrl),p.temperature!==void 0&&(e.temperature=Number(p.temperature)),p.maxTokens!==void 0&&(e.maxTokens=Number(p.maxTokens)),e}catch{}const r=a.split(`
|
|
2
2
|
`);for(const U of r){const z=U.trim().match(/^(?:llm\.)?(\w+)\s*[=:]\s*(.+)$/i);if(!z)continue;const[,S,j]=z,f=j.trim(),h=S.toLowerCase();if(h==="provider"&&f)e.provider=f;else if(h==="model"&&f)e.model=f;else if(h==="apikey"&&f)f.includes("***")||(e.apiKey=f);else if(h==="baseurl")e.baseUrl=f;else if(h==="temperature"){const $=parseFloat(f);isNaN($)||(e.temperature=$)}else if(h==="maxtokens"){const $=parseInt(f,10);isNaN($)||(e.maxTokens=$)}}return e}async function O(){P.value=!0;try{const{output:a}=await m.execute("config list",15e3),e=C(a);e.provider&&(t.provider=e.provider),e.model&&(t.model=e.model),e.apiKey&&(t.apiKey=e.apiKey),e.baseUrl&&(t.baseUrl=e.baseUrl),e.temperature!==void 0&&(t.temperature=e.temperature),e.maxTokens!==void 0&&(t.maxTokens=e.maxTokens),d={...t},_.success("配置已加载")}catch(a){_.error(`加载配置失败: ${a.message}`)}finally{P.value=!1}}async function D(){c.value=!0;const a=[],e=[];try{if(t.provider&&t.provider!==d.provider)try{await m.execute(`config set llm.provider ${t.provider}`,1e4),e.push("provider")}catch(r){a.push(`provider: ${r.message}`)}if(t.model&&t.model!==d.model)try{await m.execute(`config set llm.model ${t.model}`,1e4),e.push("model")}catch(r){a.push(`model: ${r.message}`)}if(t.apiKey&&t.apiKey!==d.apiKey)try{await m.execute(`config set llm.apiKey ${t.apiKey}`,1e4),e.push("apiKey")}catch(r){a.push(`apiKey: ${r.message}`)}if(t.baseUrl!==void 0&&t.baseUrl!==d.baseUrl)try{await m.execute(`config set llm.baseUrl ${t.baseUrl}`,1e4),e.push("baseUrl")}catch(r){a.push(`baseUrl: ${r.message}`)}if(t.temperature!==d.temperature)try{await m.execute(`config set llm.temperature ${t.temperature}`,1e4),e.push("temperature")}catch(r){a.push(`temperature: ${r.message}`)}if(t.maxTokens!==d.maxTokens)try{await m.execute(`config set llm.maxTokens ${t.maxTokens}`,1e4),e.push("maxTokens")}catch(r){a.push(`maxTokens: ${r.message}`)}a.length>0?_.warning(`部分配置保存失败: ${a.join("; ")}`):e.length>0?(_.success(`已保存 ${e.length} 项配置`),d={...t},e.includes("provider")&&n.loadProviders()):_.info("没有检测到配置变更")}catch(r){_.error(`保存配置失败: ${r.message}`)}finally{c.value=!1}}function E(){t.provider=d.provider||void 0,t.model=d.model||"",t.apiKey=d.apiKey||"",t.baseUrl=d.baseUrl||"",t.temperature=d.temperature??.7,t.maxTokens=d.maxTokens??4096}return Y(()=>{n.loadProviders(),O()}),(a,e)=>{const r=u("a-button"),U=u("a-alert"),p=u("a-spin"),z=u("a-tag"),S=u("a-badge"),j=u("a-card"),f=u("a-list-item"),h=u("a-list"),$=u("a-divider"),J=u("a-select"),L=u("a-form-item"),q=u("a-input"),R=u("a-input-password"),H=u("a-slider"),G=u("a-input-number"),W=u("a-form");return y(),N("div",null,[i("div",ie,[e[9]||(e[9]=i("div",null,[i("h2",{class:"page-title"},"LLM 配置"),i("p",{class:"page-sub"},"管理 AI 服务提供商")],-1)),s(r,{type:"primary",ghost:"",loading:g(n).loading,onClick:e[0]||(e[0]=o=>g(n).loadProviders())},{icon:l(()=>[s(g(V))]),default:l(()=>[e[8]||(e[8]=x(" 刷新 ",-1))]),_:1},8,["loading"])]),g(n).activeProvider?(y(),K(U,{key:0,type:"success",style:{"margin-bottom":"20px",background:"rgba(41,162,112,.08)","border-color":"rgba(41,162,112,.3)"},"show-icon":""},{message:l(()=>[i("span",null,[e[10]||(e[10]=x("当前激活:",-1)),i("strong",null,M(g(n).activeProvider),1)])]),_:1})):B("",!0),g(n).loading?(y(),N("div",ne,[s(p,{size:"large"}),e[11]||(e[11]=i("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载 LLM 信息中...",-1))])):(y(),N("div",de,[i("div",ue,[(y(!0),N(Z,null,ee(g(n).providers,o=>(y(),K(j,{key:o.name,class:oe(["provider-card",{active:o.active}]),style:{background:"var(--bg-card)"},size:"small"},{default:l(()=>[i("div",ce,[i("span",pe,M(o.icon),1),i("div",me,[i("div",ve,M(o.label),1),i("div",fe,M(o.name),1)]),i("div",null,[o.active?(y(),K(z,{key:0,color:"green"},{default:l(()=>[...e[12]||(e[12]=[x("活跃",-1)])]),_:1})):o.status==="ok"?(y(),K(S,{key:1,status:"success",text:""})):o.status==="error"?(y(),K(S,{key:2,status:"error",text:""})):B("",!0)])]),i("div",ge,[s(r,{size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"},loading:g(n).testing===o.name,onClick:Q=>w(o.name)},{default:l(()=>[...e[13]||(e[13]=[x(" 测试 ",-1)])]),_:1},8,["loading","onClick"]),o.active?(y(),K(z,{key:1,color:"green",style:{margin:"0","line-height":"24px"}},{default:l(()=>[...e[15]||(e[15]=[x("当前",-1)])]),_:1})):(y(),K(r,{key:0,size:"small",type:"primary",ghost:"",onClick:Q=>b(o.name)},{default:l(()=>[...e[14]||(e[14]=[x(" 切换 ",-1)])]),_:1},8,["onClick"]))])]),_:2},1032,["class"]))),128))]),g(n).localModels.length?(y(),N("div",ye,[e[16]||(e[16]=i("h3",{style:{color:"#ccc","font-size":"15px","margin-bottom":"12px"}}," 本地模型(Ollama) ",-1)),s(h,{"data-source":g(n).localModels,size:"small",style:{background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)"}},{renderItem:l(({item:o})=>[s(f,{style:{padding:"10px 16px","border-color":"#252525"}},{actions:l(()=>[s(z,{color:"cyan",style:{"font-size":"10px"}},{default:l(()=>[x(M(o.size||"local"),1)]),_:2},1024)]),default:l(()=>[i("span",be,M(o.name),1)]),_:2},1024)]),_:1},8,["data-source"])])):B("",!0),s($,{style:{"border-color":"var(--border-color)",margin:"32px 0 24px"}}),i("div",xe,[e[18]||(e[18]=i("h3",{class:"section-title"},"LLM 参数设置",-1)),s(r,{size:"small",loading:P.value,onClick:O,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:l(()=>[s(g(V))]),default:l(()=>[e[17]||(e[17]=x(" 加载配置 ",-1))]),_:1},8,["loading"])]),s(j,{class:"config-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[s(W,{model:t,layout:"vertical",class:"config-form"},{default:l(()=>[i("div",_e,[s(L,{label:"Provider(提供商)"},{default:l(()=>[s(J,{value:t.provider,"onUpdate:value":e[1]||(e[1]=o=>t.provider=o),placeholder:"选择 LLM 提供商",options:g(k),style:{width:"100%"},disabled:c.value},null,8,["value","options","disabled"])]),_:1}),s(L,{label:"Model(模型名称)"},{default:l(()=>[s(q,{value:t.model,"onUpdate:value":e[2]||(e[2]=o=>t.model=o),placeholder:"例如 doubao-seed-1-6-251015","allow-clear":"",disabled:c.value},null,8,["value","disabled"])]),_:1}),s(L,{label:"API Key"},{default:l(()=>[s(R,{value:t.apiKey,"onUpdate:value":e[3]||(e[3]=o=>t.apiKey=o),placeholder:"输入 API Key",disabled:c.value},null,8,["value","disabled"])]),_:1}),s(L,{label:"Base URL"},{default:l(()=>[s(q,{value:t.baseUrl,"onUpdate:value":e[4]||(e[4]=o=>t.baseUrl=o),placeholder:"例如 https://ark.cn-beijing.volces.com/api/v3","allow-clear":"",disabled:c.value},null,8,["value","disabled"])]),_:1}),s(L,{label:"Temperature(温度)"},{default:l(()=>[i("div",ke,[s(H,{value:t.temperature,"onUpdate:value":e[5]||(e[5]=o=>t.temperature=o),min:0,max:2,step:.1,style:{flex:"1"},disabled:c.value},null,8,["value","disabled"]),s(G,{value:t.temperature,"onUpdate:value":e[6]||(e[6]=o=>t.temperature=o),min:0,max:2,step:.1,precision:1,style:{width:"80px"},disabled:c.value},null,8,["value","disabled"])])]),_:1}),s(L,{label:"Max Tokens(最大输出长度)"},{default:l(()=>[s(G,{value:t.maxTokens,"onUpdate:value":e[7]||(e[7]=o=>t.maxTokens=o),min:256,max:128e3,step:256,style:{width:"100%"},placeholder:"4096",disabled:c.value},null,8,["value","disabled"])]),_:1})]),i("div",we,[s(r,{onClick:E,disabled:c.value,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:l(()=>[...e[19]||(e[19]=[x(" 重置 ",-1)])]),_:1},8,["disabled"]),s(r,{type:"primary",loading:c.value,onClick:D},{default:l(()=>[...e[20]||(e[20]=[x(" 保存配置 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1})]))])}}},Se=le(he,[["__scopeId","data-v-38d68389"]]);export{Se as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as B,_ as S,c as z}from"./useConfigInject-
|
|
1
|
+
import{u as B,_ as S,c as z}from"./useConfigInject-ZEunuNHN.js";import{_ as $,y as f}from"./index-Dn_OQQaV.js";import{u as N,r as u}from"./responsiveObserve-B3aCQz5r.js";import{u as E}from"./useFlexGapSupport-BpbEJfeh.js";import{b as F,c as I}from"./index-C92K4iDE.js";import{d as M,l as T,o as V,c as D,r as h,j as o}from"./vendor-C5RM7MZO.js";const J=()=>({align:f([String,Object]),justify:f([String,Object]),prefixCls:String,gutter:f([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),Q=M({compatConfig:{MODE:3},name:"ARow",inheritAttrs:!1,props:J(),setup(s,G){let{slots:d,attrs:l}=G;const{prefixCls:a,direction:R}=B("row",s),[O,C]=F(a);let m;const v=N(),p=h({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),y=h({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),g=e=>o(()=>{if(typeof s[e]=="string")return s[e];if(typeof s[e]!="object")return"";for(let t=0;t<u.length;t++){const n=u[t];if(!y.value[n])continue;const r=s[e][n];if(r!==void 0)return r}return""}),b=g("align"),x=g("justify"),w=E();T(()=>{m=v.value.subscribe(e=>{y.value=e;const t=s.gutter||0;(!Array.isArray(t)&&typeof t=="object"||Array.isArray(t)&&(typeof t[0]=="object"||typeof t[1]=="object"))&&(p.value=e)})}),V(()=>{v.value.unsubscribe(m)});const j=o(()=>{const e=[void 0,void 0],{gutter:t=0}=s;return(Array.isArray(t)?t:[t,void 0]).forEach((r,A)=>{if(typeof r=="object")for(let i=0;i<u.length;i++){const c=u[i];if(p.value[c]&&r[c]!==void 0){e[A]=r[c];break}}else e[A]=r}),e});I({gutter:j,supportFlexGap:w,wrap:o(()=>s.wrap)});const _=o(()=>z(a.value,{[`${a.value}-no-wrap`]:s.wrap===!1,[`${a.value}-${x.value}`]:x.value,[`${a.value}-${b.value}`]:b.value,[`${a.value}-rtl`]:R.value==="rtl"},l.class,C.value)),k=o(()=>{const e=j.value,t={},n=e[0]!=null&&e[0]>0?`${e[0]/-2}px`:void 0,r=e[1]!=null&&e[1]>0?`${e[1]/-2}px`:void 0;return n&&(t.marginLeft=n,t.marginRight=n),w.value?t.rowGap=`${e[1]}px`:r&&(t.marginTop=r,t.marginBottom=r),t});return()=>{var e;return O(D("div",S(S({},l),{},{class:_.value,style:$($({},k.value),l.style)}),[(e=d.default)===null||e===void 0?void 0:e.call(d)]))}}});export{Q as A};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{l as ce,F as p,D as m,c as s,x as l,m as x,u as _,J as y,q as d,r as g,v as r,H as F,L as O,I as v,G as k,P as pe,j as me}from"./vendor-C5RM7MZO.js";import{u as ye}from"./ws-D-sl0vsW.js";import{_ as fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as I,U as ve,p as M,aa as P,a7 as _e}from"./icons-CpgFsfkd.js";import{a as c}from"./index-
|
|
1
|
+
import{l as ce,F as p,D as m,c as s,x as l,m as x,u as _,J as y,q as d,r as g,v as r,H as F,L as O,I as v,G as k,P as pe,j as me}from"./vendor-C5RM7MZO.js";import{u as ye}from"./ws-D-sl0vsW.js";import{_ as fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as I,U as ve,p as M,aa as P,a7 as _e}from"./icons-CpgFsfkd.js";import{a as c}from"./index-Ch5mAXeh.js";import"./index-Dn_OQQaV.js";import"./useConfigInject-ZEunuNHN.js";import"./transition-gRK4XSlW.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CFB5Y97t.js";import"./index-U4Zd5IK6.js";const ge={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},xe={key:0,style:{"text-align":"center",padding:"60px"}},ke={style:{display:"flex","align-items":"center",gap:"6px",overflow:"hidden"}},he={style:{color:"#e0e0e0","font-size":"13px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},we={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"6px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},be={style:{display:"flex","justify-content":"space-between",color:"var(--text-secondary)","font-size":"12px"}},Ce={key:2,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)","margin-bottom":"24px"}},Ae={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},Fe={key:3,style:{"text-align":"center",padding:"60px"}},ze=["href"],Se={key:1,style:{color:"#e0e0e0","font-weight":"500"}},Ue={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Re={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},$e={style:{padding:"8px 16px",color:"var(--text-secondary)","font-size":"13px","line-height":"1.8","max-height":"300px","overflow-y":"auto"}},Ne={key:0,style:{"margin-bottom":"8px"}},Le=["innerHTML"],Te={key:2,style:{color:"var(--text-muted)"}},je={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},De={__name:"RssFeed",setup(Oe){const h=ye(),N=g(!1),z=g(!1),L=g(!1),T=g(!1),w=g([]),C=g([]),S=g(""),U=g(!1),R=g(""),j=g([]),q=me(()=>{const t=w.value.length,e=C.value.length,o=C.value.filter(u=>!u.read).length,n=w.value.filter(u=>u.lastUpdated).sort((u,$)=>new Date($.lastUpdated)-new Date(u.lastUpdated))[0],i=n?D(n.lastUpdated):"-";return[{label:"订阅源数",value:t,color:"#1677ff"},{label:"文章总数",value:e,color:"#52c41a"},{label:"未读文章",value:o,color:"#faad14"},{label:"最近刷新",value:i,color:"#13c2c2"}]}),K=[{title:"标题",key:"title",dataIndex:"title",ellipsis:!0},{title:"来源",key:"source",dataIndex:"source",width:"140px"},{title:"发布时间",key:"publishedAt",dataIndex:"publishedAt",width:"160px"},{title:"状态",key:"status",width:"80px"},{title:"操作",key:"actions",width:"100px"}];function D(t){if(!t)return"-";try{const e=new Date(t);return isNaN(e.getTime())?t:e.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return t}}function W(t){try{const e=t.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(e)return JSON.parse(e[1])}catch{}return null}async function A(){N.value=!0;try{const{output:t}=await h.execute("rss list --json",2e4),e=W(t);Array.isArray(e)?w.value=e.map((o,n)=>({key:o.id||o.url||n,id:o.id||String(n),title:o.title||o.name||"",url:o.url||o.feedUrl||"",itemCount:o.itemCount??o.articleCount??o.count??0,lastUpdated:o.lastUpdated||o.updatedAt||o.lastRefresh||""})):w.value=G(t)}catch(t){c.error("加载订阅源失败: "+t.message)}finally{N.value=!1}}function G(t){const e=[],o=t.split(`
|
|
2
2
|
`);for(const n of o){const i=n.trim();if(!i||i.startsWith("─")||i.match(/^\d+ feed/i)||i.startsWith("RSS")||i.startsWith("No "))continue;const u=i.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);u?e.push({key:u[1],id:u[1],title:u[2].trim(),url:(u[3]||"").trim(),itemCount:0,lastUpdated:""}):i.length>5&&e.push({key:String(e.length),id:String(e.length),title:i.slice(0,80),url:"",itemCount:0,lastUpdated:""})}return e}async function b(){z.value=!0,j.value=[];try{let t="rss articles --limit 30 --json";S.value&&(t=`rss articles --feed ${S.value} --limit 30 --json`);const{output:e}=await h.execute(t,2e4),o=W(e);Array.isArray(o)?C.value=o.map((n,i)=>({key:n.id||String(i),id:n.id||String(i),title:n.title||"无标题",link:n.link||n.url||"",source:n.source||n.feedTitle||n.feedName||"",publishedAt:n.publishedAt||n.pubDate||n.date||"",read:!!n.read,summary:n.summary||n.description||"",content:n.content||""})):C.value=Q(e)}catch(t){c.error("加载文章失败: "+t.message)}finally{z.value=!1}}function Q(t){const e=[],o=t.split(`
|
|
3
3
|
`);for(const n of o){const i=n.trim();if(!i||i.startsWith("─")||i.match(/^\d+ article/i)||i.startsWith("No "))continue;const u=i.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);u&&e.push({key:u[1],id:u[1],title:u[2].trim(),link:"",source:(u[3]||"").trim(),publishedAt:"",read:!1,summary:"",content:""})}return e}async function X(){const t=R.value.trim();if(!t){c.warning("请输入订阅源地址");return}T.value=!0;try{const{output:e}=await h.execute(`rss add "${t}"`,3e4);e.includes("error")||e.includes("失败")||e.includes("Error")?c.error("添加失败: "+e.slice(0,120)):(c.success("订阅源已添加"),U.value=!1,R.value="",await A(),await b())}catch(e){c.error("添加失败: "+e.message)}finally{T.value=!1}}async function Y(t){try{c.loading({content:`正在刷新 ${t.title||t.id}...`,key:"refreshFeed"}),await h.execute(`rss refresh ${t.id}`,3e4),c.success({content:"刷新完成",key:"refreshFeed"}),await A(),await b()}catch(e){c.error({content:"刷新失败: "+e.message,key:"refreshFeed"})}}async function Z(t){try{c.loading({content:`正在删除 ${t.title||t.id}...`,key:"removeFeed"});const{output:e}=await h.execute(`rss remove ${t.id}`,2e4);e.includes("error")||e.includes("失败")?c.error({content:"删除失败: "+e.slice(0,120),key:"removeFeed"}):(c.success({content:"已删除订阅源",key:"removeFeed"}),await A(),await b())}catch(e){c.error({content:"删除失败: "+e.message,key:"removeFeed"})}}async function ee(){L.value=!0;try{c.loading({content:"正在刷新所有订阅源...",key:"refreshAll"}),await h.execute("rss refresh-all",6e4),c.success({content:"全部刷新完成",key:"refreshAll"}),await A(),await b()}catch(t){c.error({content:"刷新失败: "+t.message,key:"refreshAll"})}finally{L.value=!1}}async function te(t){try{await h.execute(`rss mark-read ${t.id}`,1e4),t.read=!0,c.success("已标记已读")}catch(e){c.error("操作失败: "+e.message)}}function ae(t,e){j.value=t?[e.key]:[]}return ce(async()=>{await A(),await b()}),(t,e)=>{const o=d("a-button"),n=d("a-space"),i=d("a-statistic"),u=d("a-card"),$=d("a-col"),B=d("a-row"),E=d("a-spin"),V=d("a-menu-item"),le=d("a-menu"),se=d("a-dropdown"),H=d("a-select-option"),oe=d("a-select"),J=d("a-tag"),ne=d("a-table"),re=d("a-input"),ie=d("a-form-item"),ue=d("a-form"),de=d("a-modal");return r(),p("div",null,[m("div",ge,[e[6]||(e[6]=m("div",null,[m("h2",{class:"page-title"},"RSS 订阅"),m("p",{class:"page-sub"},"订阅源 / 文章阅读")],-1)),s(n,null,{default:l(()=>[s(o,{type:"primary",onClick:e[0]||(e[0]=a=>U.value=!0)},{icon:l(()=>[s(_(ve))]),default:l(()=>[e[4]||(e[4]=y(" 添加订阅 ",-1))]),_:1}),s(o,{ghost:"",loading:L.value,onClick:ee},{icon:l(()=>[s(_(M))]),default:l(()=>[e[5]||(e[5]=y(" 全部刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),s(B,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[(r(!0),p(F,null,O(q.value,a=>(r(),x($,{xs:12,sm:6,key:a.label},{default:l(()=>[s(u,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:l(()=>[s(i,{title:a.label,value:a.value,"value-style":{color:a.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e[16]||(e[16]=m("h3",{style:{color:"var(--text-primary)","margin-bottom":"12px"}},"订阅源管理",-1)),N.value?(r(),p("div",xe,[s(E,{size:"large"})])):w.value.length>0?(r(),x(B,{key:1,gutter:[16,16],style:{"margin-bottom":"24px"}},{default:l(()=>[(r(!0),p(F,null,O(w.value,a=>(r(),x($,{xs:24,sm:12,md:8,lg:6,key:a.id||a.url},{default:l(()=>[s(u,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small",hoverable:!0},{title:l(()=>[m("div",ke,[s(_(I),{style:{color:"#1677ff","flex-shrink":"0"}}),m("span",he,v(a.title||"未命名订阅"),1)])]),extra:l(()=>[s(se,null,{overlay:l(()=>[s(le,null,{default:l(()=>[s(V,{onClick:f=>Y(a)},{default:l(()=>[s(_(M)),e[8]||(e[8]=y(" 刷新 ",-1))]),_:1},8,["onClick"]),s(V,{onClick:f=>Z(a),danger:""},{default:l(()=>[s(_(_e)),e[9]||(e[9]=y(" 删除 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]),default:l(()=>[s(o,{size:"small",type:"text",style:{color:"var(--text-muted)"}},{default:l(()=>[...e[7]||(e[7]=[y("...",-1)])]),_:1})]),_:2},1024)]),default:l(()=>[m("p",we,[s(_(P)),y(" "+v(a.url||"-"),1)]),m("div",be,[m("span",null,v(a.itemCount??"-")+" 篇文章",1),m("span",null,v(D(a.lastUpdated)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(r(),p("div",Ce,[s(_(I),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),e[10]||(e[10]=y(' 暂无订阅源,点击"添加订阅"开始 ',-1))])),m("div",Ae,[e[12]||(e[12]=m("h3",{style:{color:"var(--text-primary)",margin:"0"}},"文章列表",-1)),s(n,null,{default:l(()=>[s(oe,{value:S.value,"onUpdate:value":e[1]||(e[1]=a=>S.value=a),style:{"min-width":"180px"},placeholder:"筛选订阅源","allow-clear":"",onChange:b},{default:l(()=>[s(H,{value:""},{default:l(()=>[...e[11]||(e[11]=[y("全部订阅",-1)])]),_:1}),(r(!0),p(F,null,O(w.value,a=>(r(),x(H,{key:a.id,value:a.id},{default:l(()=>[y(v(a.title||a.url),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),s(o,{loading:z.value,onClick:b},{icon:l(()=>[s(_(M))]),_:1},8,["loading"])]),_:1})]),z.value?(r(),p("div",Fe,[s(E,{size:"large"})])):(r(),x(ne,{key:4,columns:K,"data-source":C.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"rss-row",expandable:{expandedRowKeys:j.value,onExpand:ae}},{bodyCell:l(({column:a,record:f})=>[a.key==="title"?(r(),p(F,{key:0},[f.link?(r(),p("a",{key:0,href:f.link,target:"_blank",rel:"noopener noreferrer",style:{color:"#1677ff","font-weight":"500"}},[s(_(P),{style:{"margin-right":"4px"}}),y(v(f.title),1)],8,ze)):(r(),p("span",Se,v(f.title),1))],64)):k("",!0),a.key==="source"?(r(),x(J,{key:1,color:"blue",style:{"font-size":"10px"}},{default:l(()=>[y(v(f.source||"-"),1)]),_:2},1024)):k("",!0),a.key==="publishedAt"?(r(),p("span",Ue,v(D(f.publishedAt)),1)):k("",!0),a.key==="status"?(r(),x(J,{key:3,color:f.read?"default":"green"},{default:l(()=>[y(v(f.read?"已读":"未读"),1)]),_:2},1032,["color"])):k("",!0),a.key==="actions"?(r(),p(F,{key:4},[f.read?(r(),p("span",Re,"--")):(r(),x(o,{key:0,size:"small",type:"link",onClick:pe(Ie=>te(f),["stop"])},{default:l(()=>[...e[13]||(e[13]=[y(" 标记已读 ",-1)])]),_:1},8,["onClick"]))],64)):k("",!0)]),expandedRowRender:l(({record:a})=>[m("div",$e,[a.summary?(r(),p("div",Ne,[e[14]||(e[14]=m("strong",{style:{color:"var(--text-primary)"}},"摘要: ",-1)),y(v(a.summary),1)])):k("",!0),a.content?(r(),p("div",{key:1,innerHTML:a.content,style:{color:"var(--text-secondary)"}},null,8,Le)):k("",!0),!a.summary&&!a.content?(r(),p("div",Te,"暂无内容预览")):k("",!0)])]),emptyText:l(()=>[m("div",je,[s(_(I),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),e[15]||(e[15]=y(" 暂无文章 ",-1))])]),_:1},8,["data-source","pagination","expandable"])),s(de,{open:U.value,"onUpdate:open":e[3]||(e[3]=a=>U.value=a),title:"添加订阅源","confirm-loading":T.value,onOk:X,"ok-text":"添加","cancel-text":"取消"},{default:l(()=>[s(ue,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:l(()=>[s(ie,{label:"URL",required:""},{default:l(()=>[s(re,{value:R.value,"onUpdate:value":e[2]||(e[2]=a=>R.value=a),placeholder:"输入 RSS 订阅源地址,如 https://example.com/feed.xml"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}},Qe=fe(De,[["__scopeId","data-v-66093b20"]]);export{Qe as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as fe}from"./ws-D-sl0vsW.js";import{_ as ve}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as x}from"./index-
|
|
1
|
+
import{u as fe}from"./ws-D-sl0vsW.js";import{_ as ve}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as x}from"./index-Ch5mAXeh.js";import{p as me,U as ye,K as ge,S as _e,L as H,Z as be}from"./icons-CpgFsfkd.js";import{l as xe,F as p,D as I,c as t,x as a,r,q as u,v as n,J as f,u as D,m as z,I as c,G as m,H as ke,L as he}from"./vendor-C5RM7MZO.js";import"./index-Dn_OQQaV.js";import"./useConfigInject-ZEunuNHN.js";import"./transition-gRK4XSlW.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CFB5Y97t.js";import"./index-U4Zd5IK6.js";const we={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={key:0,style:{"text-align":"center",padding:"60px"}},De={key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ce={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Re={key:0,style:{"margin-top":"12px"}},ze={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)"}},Le={key:0,style:{"margin-top":"8px"}},Te={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Ae={key:0,style:{"margin-top":"8px"}},Ne={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Se={key:0,style:{"text-align":"center",padding:"60px"}},We={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Oe={key:1,style:{color:"#e0e0e0"}},Me={key:2,style:{color:"var(--text-secondary)"}},$e={key:4,style:{color:"var(--text-muted)","font-size":"12px"}},Ue={__name:"Security",setup(Ee){const C=fe(),N=r("did"),M=r(!1);async function X(){M.value=!0;try{N.value==="did"?await W():N.value==="audit"&&await Z()}finally{M.value=!1}}function Y(l){l==="did"&&K.value.length===0&&W(),l==="audit"&&O.value.length===0&&Z()}const $=r(!1),U=r(!1),E=r(!1),K=r([]),V=r(!1),S=r(""),L=r(""),ee=[{title:"DID",key:"did",dataIndex:"did",ellipsis:!0},{title:"方法",key:"method",dataIndex:"method",width:"100px"},{title:"创建时间",key:"created",dataIndex:"created",width:"180px"},{title:"状态",key:"status",width:"80px"}];async function W(){$.value=!0;try{const{output:l}=await C.execute("did list",15e3);K.value=te(l)}catch(l){x.error("加载 DID 列表失败: "+l.message)}finally{$.value=!1}}function te(l){const e=[],y=l.split(`
|
|
2
2
|
`);for(const w of y){const s=w.trim();if(!s||s.startsWith("─")||s.startsWith("DID")||s.match(/^\d+ identit/i))continue;const i=s.match(/(did:\w+:\w+)/);if(i){const d=i[1],g=d.split(":")[1]||"key",b=/default|默认|\*/.test(s),_=s.match(/(\d{4}-\d{2}-\d{2}[\sT]?\d{2}:\d{2}(?::\d{2})?)/);e.push({key:d,did:d,method:g,created:_?_[1]:"-",isDefault:b})}}return e}async function ae(){U.value=!0;try{const{output:l}=await C.execute("did create",2e4);l.includes("error")||l.includes("失败")?x.error("创建失败: "+l.slice(0,120)):(x.success("DID 身份已创建"),await W())}catch(l){x.error("创建失败: "+l.message)}finally{U.value=!1}}async function le(){if(!S.value.trim()){x.warning("请输入消息");return}E.value=!0,L.value="";try{const{output:l}=await C.execute(`did sign "${S.value.replace(/"/g,'\\"')}"`,15e3);L.value=l,!l.includes("error")&&!l.includes("失败")&&x.success("签名成功")}catch(l){L.value="签名失败: "+l.message}finally{E.value=!1}}const T=r(""),A=r(""),B=r(!1),F=r(!1),k=r(null),h=r(null);async function oe(){if(T.value.trim()){B.value=!0,k.value=null;try{const{output:l,exitCode:e}=await C.execute(`encrypt file "${T.value.trim()}"`,3e4);k.value={success:e===0&&!l.includes("error")&&!l.includes("失败"),output:l||"加密完成"},k.value.success&&x.success("文件加密成功")}catch(l){k.value={success:!1,output:"加密失败: "+l.message}}finally{B.value=!1}}}async function se(){if(A.value.trim()){F.value=!0,h.value=null;try{const{output:l,exitCode:e}=await C.execute(`decrypt file "${A.value.trim()}"`,3e4);h.value={success:e===0&&!l.includes("error")&&!l.includes("失败"),output:l||"解密完成"},h.value.success&&x.success("文件解密成功")}catch(l){h.value={success:!1,output:"解密失败: "+l.message}}finally{F.value=!1}}}const P=r(!1),O=r([]),J=r([]),ne=[{title:"时间",key:"time",dataIndex:"time",width:"180px"},{title:"事件",key:"event",dataIndex:"event",width:"200px"},{title:"用户",key:"user",dataIndex:"user",width:"120px"},{title:"级别",key:"level",dataIndex:"level",width:"80px"},{title:"详情",key:"detail",dataIndex:"detail",ellipsis:!0}];function re(l){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(l||"").toLowerCase()]||"default"}async function Z(){P.value=!0;try{const[l,e]=await Promise.all([C.execute("audit log",15e3),C.execute("audit stats",15e3)]);O.value=ie(l.output),J.value=ue(e.output)}catch(l){x.error("加载审计日志失败: "+l.message)}finally{P.value=!1}}function ie(l){const e=[],y=l.split(`
|
|
3
3
|
`);for(const w of y){const s=w.trim();if(!s||s.startsWith("─")||s.startsWith("Audit")||s.startsWith("Recent"))continue;const i=s.split(/\s*[|│]\s*/);if(i.length>=3){e.push({key:e.length,time:i[0]||"-",event:i[1]||"-",user:i[2]||"-",level:i[3]||"info",detail:i.slice(4).join(" ")||""});continue}const d=s.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(d){const g=d[2],b=g.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);e.push({key:e.length,time:d[1],event:g.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:b?b[1].toLowerCase():"info",detail:""})}else s.length>3&&!s.match(/^\d+ event/i)&&e.push({key:e.length,time:"-",event:s.slice(0,80),user:"-",level:"info",detail:""})}return e}function ue(l){const e=[],y=l.split(`
|
|
4
4
|
`),w=["#1677ff","#52c41a","#faad14","#ff4d4f"];let s=0;for(const i of y){const d=i.trim();if(!d||d.startsWith("─")||d.startsWith("Audit"))continue;const g=d.match(/^(.+?)\s*[:=:]\s*(.+)$/);if(g){const b=g[1].trim(),_=g[2].trim(),R=_.match(/^(\d+)/);e.push({label:b,value:R?parseInt(R[1],10):_,color:w[s%w.length]}),s++}}return e.length===0&&e.push({label:"总事件数",value:O.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),e}return xe(()=>{W()}),(l,e)=>{const y=u("a-button"),w=u("a-space"),s=u("a-spin"),i=u("a-tag"),d=u("a-empty"),g=u("a-table"),b=u("a-input"),_=u("a-form-item"),R=u("a-form"),de=u("a-modal"),G=u("a-tab-pane"),j=u("a-card"),q=u("a-col"),Q=u("a-row"),ce=u("a-statistic"),pe=u("a-tabs");return n(),p("div",null,[I("div",we,[e[7]||(e[7]=I("div",null,[I("h2",{class:"page-title"},"安全中心"),I("p",{class:"page-sub"},"DID 身份 / 加密 / 审计")],-1)),t(y,{type:"primary",ghost:"",loading:M.value,onClick:X},{icon:a(()=>[t(D(me))]),default:a(()=>[e[6]||(e[6]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),t(pe,{activeKey:N.value,"onUpdate:activeKey":e[5]||(e[5]=o=>N.value=o),onChange:Y},{default:a(()=>[t(G,{key:"did"},{tab:a(()=>[t(D(_e)),e[8]||(e[8]=f(" DID 身份 ",-1))]),default:a(()=>[t(w,{style:{"margin-bottom":"16px"}},{default:a(()=>[t(y,{type:"primary",loading:U.value,onClick:ae},{icon:a(()=>[t(D(ye))]),default:a(()=>[e[9]||(e[9]=f(" 创建身份 ",-1))]),_:1},8,["loading"]),t(y,{onClick:e[0]||(e[0]=o=>V.value=!0)},{icon:a(()=>[t(D(ge))]),default:a(()=>[e[10]||(e[10]=f(" 签名消息 ",-1))]),_:1})]),_:1}),$.value?(n(),p("div",Ie,[t(s,{size:"large"})])):(n(),z(g,{key:1,columns:ee,"data-source":K.value,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"sec-row"},{bodyCell:a(({column:o,record:v})=>[o.key==="did"?(n(),p("span",De,c(v.did),1)):m("",!0),o.key==="method"?(n(),z(i,{key:1,color:"blue"},{default:a(()=>[f(c(v.method),1)]),_:2},1024)):m("",!0),o.key==="created"?(n(),p("span",Ce,c(v.created),1)):m("",!0),o.key==="status"?(n(),z(i,{key:3,color:v.isDefault?"green":"default"},{default:a(()=>[f(c(v.isDefault?"默认":"可用"),1)]),_:2},1032,["color"])):m("",!0)]),emptyText:a(()=>[t(d,{description:"暂无 DID 身份,点击「创建身份」添加"})]),_:1},8,["data-source","pagination"])),t(de,{open:V.value,"onUpdate:open":e[2]||(e[2]=o=>V.value=o),title:"DID 签名","confirm-loading":E.value,onOk:le,"ok-text":"签名","cancel-text":"取消"},{default:a(()=>[t(R,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[t(_,{label:"消息",required:""},{default:a(()=>[t(b,{value:S.value,"onUpdate:value":e[1]||(e[1]=o=>S.value=o),placeholder:"请输入要签名的消息"},null,8,["value"])]),_:1})]),_:1}),L.value?(n(),p("div",Re,[e[11]||(e[11]=I("p",{style:{color:"var(--text-secondary)","margin-bottom":"6px"}},"签名结果:",-1)),I("pre",ze,c(L.value),1)])):m("",!0)]),_:1},8,["open","confirm-loading"])]),_:1}),t(G,{key:"encrypt"},{tab:a(()=>[t(D(H)),e[12]||(e[12]=f(" 文件加密 ",-1))]),default:a(()=>[t(Q,{gutter:[24,24]},{default:a(()=>[t(q,{xs:24,md:12},{default:a(()=>[t(j,{title:"加密文件",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(R,{"label-col":{span:6},"wrapper-col":{span:18}},{default:a(()=>[t(_,{label:"文件路径"},{default:a(()=>[t(b,{value:T.value,"onUpdate:value":e[3]||(e[3]=o=>T.value=o),placeholder:"输入文件路径,如 /path/to/file.txt"},null,8,["value"])]),_:1}),t(_,{"wrapper-col":{offset:6,span:18}},{default:a(()=>[t(y,{type:"primary",loading:B.value,disabled:!T.value.trim(),onClick:oe},{icon:a(()=>[t(D(H))]),default:a(()=>[e[13]||(e[13]=f(" 加密 ",-1))]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),k.value?(n(),p("div",Le,[t(i,{color:k.value.success?"green":"red"},{default:a(()=>[f(c(k.value.success?"成功":"失败"),1)]),_:1},8,["color"]),I("pre",Te,c(k.value.output),1)])):m("",!0)]),_:1})]),_:1}),t(q,{xs:24,md:12},{default:a(()=>[t(j,{title:"解密文件",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(R,{"label-col":{span:6},"wrapper-col":{span:18}},{default:a(()=>[t(_,{label:"文件路径"},{default:a(()=>[t(b,{value:A.value,"onUpdate:value":e[4]||(e[4]=o=>A.value=o),placeholder:"输入加密文件路径,如 /path/to/file.txt.enc"},null,8,["value"])]),_:1}),t(_,{"wrapper-col":{offset:6,span:18}},{default:a(()=>[t(y,{type:"primary",loading:F.value,disabled:!A.value.trim(),onClick:se},{icon:a(()=>[t(D(H))]),default:a(()=>[e[14]||(e[14]=f(" 解密 ",-1))]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),h.value?(n(),p("div",Ae,[t(i,{color:h.value.success?"green":"red"},{default:a(()=>[f(c(h.value.success?"成功":"失败"),1)]),_:1},8,["color"]),I("pre",Ne,c(h.value.output),1)])):m("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),t(G,{key:"audit"},{tab:a(()=>[t(D(be)),e[15]||(e[15]=f(" 审计日志 ",-1))]),default:a(()=>[t(Q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[(n(!0),p(ke,null,he(J.value,o=>(n(),z(q,{xs:12,sm:6,key:o.label},{default:a(()=>[t(j,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[t(ce,{title:o.label,value:o.value,"value-style":{color:o.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),P.value?(n(),p("div",Se,[t(s,{size:"large"})])):(n(),z(g,{key:1,columns:ne,"data-source":O.value,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"sec-row"},{bodyCell:a(({column:o,record:v})=>[o.key==="time"?(n(),p("span",We,c(v.time),1)):m("",!0),o.key==="event"?(n(),p("span",Oe,c(v.event),1)):m("",!0),o.key==="user"?(n(),p("span",Me,c(v.user),1)):m("",!0),o.key==="level"?(n(),z(i,{key:3,color:re(v.level)},{default:a(()=>[f(c(v.level),1)]),_:2},1032,["color"])):m("",!0),o.key==="detail"?(n(),p("span",$e,c(v.detail),1)):m("",!0)]),emptyText:a(()=>[t(d,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}}},Qe=ve(Ue,[["__scopeId","data-v-d730836a"]]);export{Qe as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as o}from"./index-
|
|
1
|
+
import{_ as o}from"./index-Dn_OQQaV.js";import{c as C,g as N,m as D,u as G}from"./useConfigInject-ZEunuNHN.js";import{i as W}from"./initDefaultProps-DMfJaUzk.js";import{d as I,c}from"./vendor-C5RM7MZO.js";import{K as j}from"./Keyframes-C7fCrnlS.js";const z=()=>({prefixCls:String,width:{type:[Number,String]}}),O=I({compatConfig:{MODE:3},name:"SkeletonTitle",props:z(),setup(e){return()=>{const{prefixCls:t,width:n}=e,r=typeof n=="number"?`${n}px`:n;return c("h3",{class:t,style:{width:r}},null)}}}),X=()=>({prefixCls:String,width:{type:[Number,String,Array]},rows:Number}),_=I({compatConfig:{MODE:3},name:"SkeletonParagraph",props:X(),setup(e){const t=n=>{const{width:r,rows:l=2}=e;if(Array.isArray(r))return r[n];if(l-1===n)return r};return()=>{const{prefixCls:n,rows:r}=e,l=[...Array(r)].map((i,a)=>{const d=t(a);return c("li",{key:a,style:{width:typeof d=="number"?`${d}px`:d}},null)});return c("ul",{class:n},[l])}}}),se=()=>({prefixCls:String,size:[String,Number],shape:String,active:{type:Boolean,default:void 0}}),L=e=>{const{prefixCls:t,size:n,shape:r}=e,l=C({[`${t}-lg`]:n==="large",[`${t}-sm`]:n==="small"}),i=C({[`${t}-circle`]:r==="circle",[`${t}-square`]:r==="square",[`${t}-round`]:r==="round"}),a=typeof n=="number"?{width:`${n}px`,height:`${n}px`,lineHeight:`${n}px`}:{};return c("span",{class:C(t,l,i),style:a},null)};L.displayName="SkeletonElement";const q=new j("ant-skeleton-loading",{"0%":{transform:"translateX(-37.5%)"},"100%":{transform:"translateX(37.5%)"}}),v=e=>({height:e,lineHeight:`${e}px`}),$=e=>o({width:e},v(e)),F=e=>({position:"relative",zIndex:0,overflow:"hidden",background:"transparent","&::after":{position:"absolute",top:0,insetInlineEnd:"-150%",bottom:0,insetInlineStart:"-150%",background:e.skeletonLoadingBackground,animationName:q,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:"ease",animationIterationCount:"infinite",content:'""'}}),P=e=>o({width:e*5,minWidth:e*5},v(e)),K=e=>{const{skeletonAvatarCls:t,color:n,controlHeight:r,controlHeightLG:l,controlHeightSM:i}=e;return{[`${t}`]:o({display:"inline-block",verticalAlign:"top",background:n},$(r)),[`${t}${t}-circle`]:{borderRadius:"50%"},[`${t}${t}-lg`]:o({},$(l)),[`${t}${t}-sm`]:o({},$(i))}},V=e=>{const{controlHeight:t,borderRadiusSM:n,skeletonInputCls:r,controlHeightLG:l,controlHeightSM:i,color:a}=e;return{[`${r}`]:o({display:"inline-block",verticalAlign:"top",background:a,borderRadius:n},P(t)),[`${r}-lg`]:o({},P(l)),[`${r}-sm`]:o({},P(i))}},M=e=>o({width:e},v(e)),J=e=>{const{skeletonImageCls:t,imageSizeBase:n,color:r,borderRadiusSM:l}=e;return{[`${t}`]:o(o({display:"flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",background:r,borderRadius:l},M(n*2)),{[`${t}-path`]:{fill:"#bfbfbf"},[`${t}-svg`]:o(o({},M(n)),{maxWidth:n*4,maxHeight:n*4}),[`${t}-svg${t}-svg-circle`]:{borderRadius:"50%"}}),[`${t}${t}-circle`]:{borderRadius:"50%"}}},x=(e,t,n)=>{const{skeletonButtonCls:r}=e;return{[`${n}${r}-circle`]:{width:t,minWidth:t,borderRadius:"50%"},[`${n}${r}-round`]:{borderRadius:t}}},E=e=>o({width:e*2,minWidth:e*2},v(e)),Q=e=>{const{borderRadiusSM:t,skeletonButtonCls:n,controlHeight:r,controlHeightLG:l,controlHeightSM:i,color:a}=e;return o(o(o(o(o({[`${n}`]:o({display:"inline-block",verticalAlign:"top",background:a,borderRadius:t,width:r*2,minWidth:r*2},E(r))},x(e,r,n)),{[`${n}-lg`]:o({},E(l))}),x(e,l,`${n}-lg`)),{[`${n}-sm`]:o({},E(i))}),x(e,i,`${n}-sm`))},U=e=>{const{componentCls:t,skeletonAvatarCls:n,skeletonTitleCls:r,skeletonParagraphCls:l,skeletonButtonCls:i,skeletonInputCls:a,skeletonImageCls:d,controlHeight:y,controlHeightLG:f,controlHeightSM:p,color:g,padding:w,marginSM:B,borderRadius:s,skeletonTitleHeight:h,skeletonBlockRadius:u,skeletonParagraphLineHeight:m,controlHeightXS:k,skeletonParagraphMarginTop:S}=e;return{[`${t}`]:{display:"table",width:"100%",[`${t}-header`]:{display:"table-cell",paddingInlineEnd:w,verticalAlign:"top",[`${n}`]:o({display:"inline-block",verticalAlign:"top",background:g},$(y)),[`${n}-circle`]:{borderRadius:"50%"},[`${n}-lg`]:o({},$(f)),[`${n}-sm`]:o({},$(p))},[`${t}-content`]:{display:"table-cell",width:"100%",verticalAlign:"top",[`${r}`]:{width:"100%",height:h,background:g,borderRadius:u,[`+ ${l}`]:{marginBlockStart:p}},[`${l}`]:{padding:0,"> li":{width:"100%",height:m,listStyle:"none",background:g,borderRadius:u,"+ li":{marginBlockStart:k}}},[`${l}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:"61%"}},[`&-round ${t}-content`]:{[`${r}, ${l} > li`]:{borderRadius:s}}},[`${t}-with-avatar ${t}-content`]:{[`${r}`]:{marginBlockStart:B,[`+ ${l}`]:{marginBlockStart:S}}},[`${t}${t}-element`]:o(o(o(o({display:"inline-block",width:"auto"},Q(e)),K(e)),V(e)),J(e)),[`${t}${t}-block`]:{width:"100%",[`${i}`]:{width:"100%"},[`${a}`]:{width:"100%"}},[`${t}${t}-active`]:{[`
|
|
2
2
|
${r},
|
|
3
3
|
${l} > li,
|
|
4
4
|
${n},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as fe,F as x,D as n,c as t,x as o,r as c,q as l,a as ye,B as ge,v as p,H as A,L as U,u,I as d,J as i,m as y,G as R}from"./vendor-C5RM7MZO.js";import{u as _e}from"./ws-D-sl0vsW.js";import{_ as xe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{R as M,N as G,A as be,m as H,U as ke,a as W,a8 as we,a7 as Ce}from"./icons-CpgFsfkd.js";import{a as h}from"./index-DwMlStra.js";import"./index-DaMG8ksh.js";import"./useConfigInject-ImjEZhXr.js";import"./transition-D4AbuDdO.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CFB5Y97t.js";import"./index-U4Zd5IK6.js";const ze={style:{display:"flex","align-items":"flex-start",gap:"10px"}},he={style:{flex:"1","min-width":"0"}},Pe={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},Oe={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ie={style:{"margin-top":"12px","text-align":"right"}},Te={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},$e={key:0,style:{"text-align":"center",padding:"40px"}},Be={style:{display:"flex","align-items":"flex-start",gap:"10px"}},je={style:{flex:"1","min-width":"0"}},Ne={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px"}},Se={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ae={key:0,style:{"margin-top":"4px"}},Ue={style:{"margin-top":"12px","text-align":"right"}},Re={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},De={style:{"margin-bottom":"16px"}},Le={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},qe={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px",flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Fe={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5","max-height":"60px",overflow:"hidden","text-overflow":"ellipsis","white-space":"pre-wrap"}},Je={style:{"margin-top":"12px",display:"flex",gap:"8px","justify-content":"flex-end"}},Y="cc_prompt_templates",Ke={__name:"Templates",setup(Ve){const P=_e(),Q=ge(),D=c("project"),O=c(""),v=c(null),b=c(!1),I=c(""),X=[{name:"code-project",description:"代码项目 — 代码审查、重构、单元测试"},{name:"data-science",description:"数据科学 — ML/数据分析、可视化"},{name:"devops",description:"DevOps — 基础设施、部署、监控"},{name:"medical-triage",description:"医疗分诊 — 症状分析、分诊建议"},{name:"agriculture-expert",description:"农业专家 — 作物管理、病虫害"},{name:"general-assistant",description:"通用助手 — 日常问答、任务管理"},{name:"ai-media-creator",description:"AI 媒体创作 — 图文生成、视频脚本"},{name:"ai-doc-creator",description:"AI 文档创作 — 文档生成、格式转换"},{name:"empty",description:"空白模板 — 最小项目结构"}];function Z(s){I.value=s,b.value=!0}async function ee(){b.value=!1;const s=I.value;if(s){O.value=s,v.value=null;try{const e=`init --template ${s} --yes`,{output:m,exitCode:_}=await P.execute(e,3e4);v.value={success:_===0,output:m}}catch(e){v.value={success:!1,output:`初始化失败: ${e.message}`}}finally{O.value=""}}}const T=c(!1),k=c([]),$=c(""),f=c(null);async function te(){T.value=!0;try{const{output:s}=await P.execute("bi templates --json",15e3),e=JSON.parse(s);k.value=Array.isArray(e)?e:e.templates||[]}catch{k.value=[]}finally{T.value=!1}}async function oe(s){$.value=s,f.value=null;try{const e=`bi dashboard create --template ${s} --json`,{output:m,exitCode:_}=await P.execute(e,3e4);f.value={success:_===0,output:m}}catch(e){f.value={success:!1,output:`创建失败: ${e.message}`}}finally{$.value=""}}const g=c([]),w=c(!1),r=ye({name:"",category:"general",content:""});function ae(){try{const s=localStorage.getItem(Y);g.value=s?JSON.parse(s):[]}catch{g.value=[]}}function L(){localStorage.setItem(Y,JSON.stringify(g.value))}function ne(){!r.name||!r.content||(g.value.push({name:r.name,category:r.category,content:r.content}),L(),q(),h.success("模板已保存"))}function q(){w.value=!1,r.name="",r.category="general",r.content=""}function se(s){g.value.splice(s,1),L(),h.success("模板已删除")}function le(s){navigator.clipboard.writeText(s.content).then(()=>{h.success("已复制到剪贴板")}).catch(()=>{h.error("复制失败")})}function ie(s){Q.push({path:"/chat",query:{prompt:s.content}})}function re(s){return{general:"blue",code:"green",writing:"orange",analysis:"purple"}[s]||"default"}return fe(()=>{ae(),te()}),(s,e)=>{const m=l("a-button"),_=l("a-card"),B=l("a-col"),j=l("a-row"),F=l("a-alert"),N=l("a-tab-pane"),pe=l("a-spin"),J=l("a-empty"),K=l("a-tag"),ue=l("a-tabs"),V=l("a-modal"),ce=l("a-input"),S=l("a-form-item"),C=l("a-select-option"),de=l("a-select"),me=l("a-textarea"),ve=l("a-form");return p(),x("div",null,[e[27]||(e[27]=n("div",{style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},[n("div",null,[n("h2",{class:"page-title"},"模板中心"),n("p",{class:"page-sub"},"项目模板 / BI 模板 / Prompt 模板")])],-1)),t(ue,{activeKey:D.value,"onUpdate:activeKey":e[3]||(e[3]=a=>D.value=a),type:"card"},{default:o(()=>[t(N,{key:"project"},{tab:o(()=>[t(u(be)),e[10]||(e[10]=i(" 项目模板 ",-1))]),default:o(()=>[t(j,{gutter:[16,16]},{default:o(()=>[(p(),x(A,null,U(X,a=>t(B,{key:a.name,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",ze,[t(u(M),{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}}),n("div",he,[n("div",Pe,d(a.name),1),n("div",Oe,d(a.description),1)])]),n("div",Ie,[t(m,{type:"primary",size:"small",loading:O.value===a.name,onClick:z=>Z(a.name)},{icon:o(()=>[t(u(G))]),default:o(()=>[e[11]||(e[11]=i(" 初始化 ",-1))]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024)),64))]),_:1}),v.value?(p(),y(F,{key:0,message:v.value.success?"初始化成功":"初始化失败",type:v.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[0]||(e[0]=a=>v.value=null)},{description:o(()=>[n("pre",Te,d(v.value.output),1)]),_:1},8,["message","type"])):R("",!0)]),_:1}),t(N,{key:"bi"},{tab:o(()=>[t(u(H)),e[12]||(e[12]=i(" BI 模板 ",-1))]),default:o(()=>[T.value?(p(),x("div",$e,[t(pe),e[13]||(e[13]=n("div",{style:{color:"var(--text-muted)","margin-top":"8px"}},"加载 BI 模板...",-1))])):k.value.length?(p(),y(j,{key:2,gutter:[16,16]},{default:o(()=>[(p(!0),x(A,null,U(k.value,a=>(p(),y(B,{key:a.id,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",Be,[t(u(H),{style:{"font-size":"24px",color:"#722ed1","flex-shrink":"0","margin-top":"2px"}}),n("div",je,[n("div",Ne,d(a.name),1),n("div",Se,d(a.description||"暂无描述"),1),a.id?(p(),x("div",Ae,[t(K,{size:"small",color:"purple"},{default:o(()=>[i(d(a.id),1)]),_:2},1024)])):R("",!0)])]),n("div",Ue,[t(m,{type:"primary",size:"small",loading:$.value===a.id,onClick:z=>oe(a.id)},{icon:o(()=>[t(u(G))]),default:o(()=>[e[14]||(e[14]=i(" 创建仪表板 ",-1))]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),y(J,{key:1,description:"暂无 BI 模板"})),f.value?(p(),y(F,{key:3,message:f.value.success?"仪表板创建成功":"创建失败",type:f.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[1]||(e[1]=a=>f.value=null)},{description:o(()=>[n("pre",Re,d(f.value.output),1)]),_:1},8,["message","type"])):R("",!0)]),_:1}),t(N,{key:"prompts"},{tab:o(()=>[t(u(W)),e[15]||(e[15]=i(" Prompt 模板 ",-1))]),default:o(()=>[n("div",De,[t(m,{type:"primary",onClick:e[2]||(e[2]=a=>w.value=!0)},{icon:o(()=>[t(u(ke))]),default:o(()=>[e[16]||(e[16]=i(" 新建模板 ",-1))]),_:1})]),g.value.length?(p(),y(j,{key:1,gutter:[16,16]},{default:o(()=>[(p(!0),x(A,null,U(g.value,(a,z)=>(p(),y(B,{key:z,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",Le,[t(u(W),{style:{"font-size":"18px",color:"#52c41a"}}),n("span",qe,d(a.name),1),t(K,{color:re(a.category),size:"small"},{default:o(()=>[i(d(a.category),1)]),_:2},1032,["color"])]),n("div",Fe,d(a.content.length>120?a.content.slice(0,120)+"...":a.content),1),n("div",Je,[t(m,{size:"small",onClick:E=>ie(a)},{icon:o(()=>[t(u(M))]),default:o(()=>[e[17]||(e[17]=i(" 使用 ",-1))]),_:1},8,["onClick"]),t(m,{size:"small",onClick:E=>le(a)},{icon:o(()=>[t(u(we))]),default:o(()=>[e[18]||(e[18]=i(" 复制 ",-1))]),_:1},8,["onClick"]),t(m,{size:"small",danger:"",onClick:E=>se(z)},{icon:o(()=>[t(u(Ce))]),default:o(()=>[e[19]||(e[19]=i(" 删除 ",-1))]),_:1},8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),y(J,{key:0,description:"暂无 Prompt 模板,点击上方按钮创建"}))]),_:1})]),_:1},8,["activeKey"]),t(V,{open:b.value,"onUpdate:open":e[4]||(e[4]=a=>b.value=a),title:"确认初始化",onOk:ee,onCancel:e[5]||(e[5]=a=>b.value=!1),"ok-text":"确认","cancel-text":"取消"},{default:o(()=>[n("p",null,[e[20]||(e[20]=i("确定要使用模板 ",-1)),n("strong",null,d(I.value),1),e[21]||(e[21]=i(" 初始化项目吗?",-1))]),e[22]||(e[22]=n("p",{style:{color:"var(--text-muted)","font-size":"12px"}},"这将在当前工作目录创建项目结构。",-1))]),_:1},8,["open"]),t(V,{open:w.value,"onUpdate:open":e[9]||(e[9]=a=>w.value=a),title:"新建 Prompt 模板",onOk:ne,onCancel:q,"ok-text":"保存","cancel-text":"取消","ok-button-props":{disabled:!r.name||!r.content}},{default:o(()=>[t(ve,{layout:"vertical"},{default:o(()=>[t(S,{label:"模板名称",required:""},{default:o(()=>[t(ce,{value:r.name,"onUpdate:value":e[6]||(e[6]=a=>r.name=a),placeholder:"输入模板名称"},null,8,["value"])]),_:1}),t(S,{label:"分类"},{default:o(()=>[t(de,{value:r.category,"onUpdate:value":e[7]||(e[7]=a=>r.category=a),style:{width:"100%"}},{default:o(()=>[t(C,{value:"general"},{default:o(()=>[...e[23]||(e[23]=[i("general",-1)])]),_:1}),t(C,{value:"code"},{default:o(()=>[...e[24]||(e[24]=[i("code",-1)])]),_:1}),t(C,{value:"writing"},{default:o(()=>[...e[25]||(e[25]=[i("writing",-1)])]),_:1}),t(C,{value:"analysis"},{default:o(()=>[...e[26]||(e[26]=[i("analysis",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(S,{label:"模板内容",required:""},{default:o(()=>[t(me,{value:r.content,"onUpdate:value":e[8]||(e[8]=a=>r.content=a),rows:6,placeholder:"输入 Prompt 模板内容"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","ok-button-props"])])}}},ot=xe(Ke,[["__scopeId","data-v-22e50acf"]]);export{ot as default};
|
|
1
|
+
import{l as fe,F as x,D as n,c as t,x as o,r as c,q as l,a as ye,B as ge,v as p,H as A,L as U,u,I as d,J as i,m as y,G as R}from"./vendor-C5RM7MZO.js";import{u as _e}from"./ws-D-sl0vsW.js";import{_ as xe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{R as M,N as G,A as be,m as H,U as ke,a as W,a8 as we,a7 as Ce}from"./icons-CpgFsfkd.js";import{a as h}from"./index-Ch5mAXeh.js";import"./index-Dn_OQQaV.js";import"./useConfigInject-ZEunuNHN.js";import"./transition-gRK4XSlW.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CFB5Y97t.js";import"./index-U4Zd5IK6.js";const ze={style:{display:"flex","align-items":"flex-start",gap:"10px"}},he={style:{flex:"1","min-width":"0"}},Pe={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},Oe={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ie={style:{"margin-top":"12px","text-align":"right"}},Te={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},$e={key:0,style:{"text-align":"center",padding:"40px"}},Be={style:{display:"flex","align-items":"flex-start",gap:"10px"}},je={style:{flex:"1","min-width":"0"}},Ne={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px"}},Se={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ae={key:0,style:{"margin-top":"4px"}},Ue={style:{"margin-top":"12px","text-align":"right"}},Re={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},De={style:{"margin-bottom":"16px"}},Le={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},qe={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px",flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Fe={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5","max-height":"60px",overflow:"hidden","text-overflow":"ellipsis","white-space":"pre-wrap"}},Je={style:{"margin-top":"12px",display:"flex",gap:"8px","justify-content":"flex-end"}},Y="cc_prompt_templates",Ke={__name:"Templates",setup(Ve){const P=_e(),Q=ge(),D=c("project"),O=c(""),v=c(null),b=c(!1),I=c(""),X=[{name:"code-project",description:"代码项目 — 代码审查、重构、单元测试"},{name:"data-science",description:"数据科学 — ML/数据分析、可视化"},{name:"devops",description:"DevOps — 基础设施、部署、监控"},{name:"medical-triage",description:"医疗分诊 — 症状分析、分诊建议"},{name:"agriculture-expert",description:"农业专家 — 作物管理、病虫害"},{name:"general-assistant",description:"通用助手 — 日常问答、任务管理"},{name:"ai-media-creator",description:"AI 媒体创作 — 图文生成、视频脚本"},{name:"ai-doc-creator",description:"AI 文档创作 — 文档生成、格式转换"},{name:"empty",description:"空白模板 — 最小项目结构"}];function Z(s){I.value=s,b.value=!0}async function ee(){b.value=!1;const s=I.value;if(s){O.value=s,v.value=null;try{const e=`init --template ${s} --yes`,{output:m,exitCode:_}=await P.execute(e,3e4);v.value={success:_===0,output:m}}catch(e){v.value={success:!1,output:`初始化失败: ${e.message}`}}finally{O.value=""}}}const T=c(!1),k=c([]),$=c(""),f=c(null);async function te(){T.value=!0;try{const{output:s}=await P.execute("bi templates --json",15e3),e=JSON.parse(s);k.value=Array.isArray(e)?e:e.templates||[]}catch{k.value=[]}finally{T.value=!1}}async function oe(s){$.value=s,f.value=null;try{const e=`bi dashboard create --template ${s} --json`,{output:m,exitCode:_}=await P.execute(e,3e4);f.value={success:_===0,output:m}}catch(e){f.value={success:!1,output:`创建失败: ${e.message}`}}finally{$.value=""}}const g=c([]),w=c(!1),r=ye({name:"",category:"general",content:""});function ae(){try{const s=localStorage.getItem(Y);g.value=s?JSON.parse(s):[]}catch{g.value=[]}}function L(){localStorage.setItem(Y,JSON.stringify(g.value))}function ne(){!r.name||!r.content||(g.value.push({name:r.name,category:r.category,content:r.content}),L(),q(),h.success("模板已保存"))}function q(){w.value=!1,r.name="",r.category="general",r.content=""}function se(s){g.value.splice(s,1),L(),h.success("模板已删除")}function le(s){navigator.clipboard.writeText(s.content).then(()=>{h.success("已复制到剪贴板")}).catch(()=>{h.error("复制失败")})}function ie(s){Q.push({path:"/chat",query:{prompt:s.content}})}function re(s){return{general:"blue",code:"green",writing:"orange",analysis:"purple"}[s]||"default"}return fe(()=>{ae(),te()}),(s,e)=>{const m=l("a-button"),_=l("a-card"),B=l("a-col"),j=l("a-row"),F=l("a-alert"),N=l("a-tab-pane"),pe=l("a-spin"),J=l("a-empty"),K=l("a-tag"),ue=l("a-tabs"),V=l("a-modal"),ce=l("a-input"),S=l("a-form-item"),C=l("a-select-option"),de=l("a-select"),me=l("a-textarea"),ve=l("a-form");return p(),x("div",null,[e[27]||(e[27]=n("div",{style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},[n("div",null,[n("h2",{class:"page-title"},"模板中心"),n("p",{class:"page-sub"},"项目模板 / BI 模板 / Prompt 模板")])],-1)),t(ue,{activeKey:D.value,"onUpdate:activeKey":e[3]||(e[3]=a=>D.value=a),type:"card"},{default:o(()=>[t(N,{key:"project"},{tab:o(()=>[t(u(be)),e[10]||(e[10]=i(" 项目模板 ",-1))]),default:o(()=>[t(j,{gutter:[16,16]},{default:o(()=>[(p(),x(A,null,U(X,a=>t(B,{key:a.name,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",ze,[t(u(M),{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}}),n("div",he,[n("div",Pe,d(a.name),1),n("div",Oe,d(a.description),1)])]),n("div",Ie,[t(m,{type:"primary",size:"small",loading:O.value===a.name,onClick:z=>Z(a.name)},{icon:o(()=>[t(u(G))]),default:o(()=>[e[11]||(e[11]=i(" 初始化 ",-1))]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024)),64))]),_:1}),v.value?(p(),y(F,{key:0,message:v.value.success?"初始化成功":"初始化失败",type:v.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[0]||(e[0]=a=>v.value=null)},{description:o(()=>[n("pre",Te,d(v.value.output),1)]),_:1},8,["message","type"])):R("",!0)]),_:1}),t(N,{key:"bi"},{tab:o(()=>[t(u(H)),e[12]||(e[12]=i(" BI 模板 ",-1))]),default:o(()=>[T.value?(p(),x("div",$e,[t(pe),e[13]||(e[13]=n("div",{style:{color:"var(--text-muted)","margin-top":"8px"}},"加载 BI 模板...",-1))])):k.value.length?(p(),y(j,{key:2,gutter:[16,16]},{default:o(()=>[(p(!0),x(A,null,U(k.value,a=>(p(),y(B,{key:a.id,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",Be,[t(u(H),{style:{"font-size":"24px",color:"#722ed1","flex-shrink":"0","margin-top":"2px"}}),n("div",je,[n("div",Ne,d(a.name),1),n("div",Se,d(a.description||"暂无描述"),1),a.id?(p(),x("div",Ae,[t(K,{size:"small",color:"purple"},{default:o(()=>[i(d(a.id),1)]),_:2},1024)])):R("",!0)])]),n("div",Ue,[t(m,{type:"primary",size:"small",loading:$.value===a.id,onClick:z=>oe(a.id)},{icon:o(()=>[t(u(G))]),default:o(()=>[e[14]||(e[14]=i(" 创建仪表板 ",-1))]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),y(J,{key:1,description:"暂无 BI 模板"})),f.value?(p(),y(F,{key:3,message:f.value.success?"仪表板创建成功":"创建失败",type:f.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[1]||(e[1]=a=>f.value=null)},{description:o(()=>[n("pre",Re,d(f.value.output),1)]),_:1},8,["message","type"])):R("",!0)]),_:1}),t(N,{key:"prompts"},{tab:o(()=>[t(u(W)),e[15]||(e[15]=i(" Prompt 模板 ",-1))]),default:o(()=>[n("div",De,[t(m,{type:"primary",onClick:e[2]||(e[2]=a=>w.value=!0)},{icon:o(()=>[t(u(ke))]),default:o(()=>[e[16]||(e[16]=i(" 新建模板 ",-1))]),_:1})]),g.value.length?(p(),y(j,{key:1,gutter:[16,16]},{default:o(()=>[(p(!0),x(A,null,U(g.value,(a,z)=>(p(),y(B,{key:z,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",Le,[t(u(W),{style:{"font-size":"18px",color:"#52c41a"}}),n("span",qe,d(a.name),1),t(K,{color:re(a.category),size:"small"},{default:o(()=>[i(d(a.category),1)]),_:2},1032,["color"])]),n("div",Fe,d(a.content.length>120?a.content.slice(0,120)+"...":a.content),1),n("div",Je,[t(m,{size:"small",onClick:E=>ie(a)},{icon:o(()=>[t(u(M))]),default:o(()=>[e[17]||(e[17]=i(" 使用 ",-1))]),_:1},8,["onClick"]),t(m,{size:"small",onClick:E=>le(a)},{icon:o(()=>[t(u(we))]),default:o(()=>[e[18]||(e[18]=i(" 复制 ",-1))]),_:1},8,["onClick"]),t(m,{size:"small",danger:"",onClick:E=>se(z)},{icon:o(()=>[t(u(Ce))]),default:o(()=>[e[19]||(e[19]=i(" 删除 ",-1))]),_:1},8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),y(J,{key:0,description:"暂无 Prompt 模板,点击上方按钮创建"}))]),_:1})]),_:1},8,["activeKey"]),t(V,{open:b.value,"onUpdate:open":e[4]||(e[4]=a=>b.value=a),title:"确认初始化",onOk:ee,onCancel:e[5]||(e[5]=a=>b.value=!1),"ok-text":"确认","cancel-text":"取消"},{default:o(()=>[n("p",null,[e[20]||(e[20]=i("确定要使用模板 ",-1)),n("strong",null,d(I.value),1),e[21]||(e[21]=i(" 初始化项目吗?",-1))]),e[22]||(e[22]=n("p",{style:{color:"var(--text-muted)","font-size":"12px"}},"这将在当前工作目录创建项目结构。",-1))]),_:1},8,["open"]),t(V,{open:w.value,"onUpdate:open":e[9]||(e[9]=a=>w.value=a),title:"新建 Prompt 模板",onOk:ne,onCancel:q,"ok-text":"保存","cancel-text":"取消","ok-button-props":{disabled:!r.name||!r.content}},{default:o(()=>[t(ve,{layout:"vertical"},{default:o(()=>[t(S,{label:"模板名称",required:""},{default:o(()=>[t(ce,{value:r.name,"onUpdate:value":e[6]||(e[6]=a=>r.name=a),placeholder:"输入模板名称"},null,8,["value"])]),_:1}),t(S,{label:"分类"},{default:o(()=>[t(de,{value:r.category,"onUpdate:value":e[7]||(e[7]=a=>r.category=a),style:{width:"100%"}},{default:o(()=>[t(C,{value:"general"},{default:o(()=>[...e[23]||(e[23]=[i("general",-1)])]),_:1}),t(C,{value:"code"},{default:o(()=>[...e[24]||(e[24]=[i("code",-1)])]),_:1}),t(C,{value:"writing"},{default:o(()=>[...e[25]||(e[25]=[i("writing",-1)])]),_:1}),t(C,{value:"analysis"},{default:o(()=>[...e[26]||(e[26]=[i("analysis",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(S,{label:"模板内容",required:""},{default:o(()=>[t(me,{value:r.content,"onUpdate:value":e[8]||(e[8]=a=>r.content=a),rows:6,placeholder:"输入 Prompt 模板内容"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","ok-button-props"])])}}},ot=xe(Ke,[["__scopeId","data-v-22e50acf"]]);export{ot as default};
|