chainlesschain 0.162.1 → 0.162.3
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/package.json +2 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-5A54O3wF.js → AIOps-BHcJlF4M.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-epuY2GkZ.js → ActionButton-QNqNYP_E.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CIdxw7T5.js → Analytics-DWrmU2MM.js} +2 -2
- package/src/assets/web-panel/assets/AppLayout-0BXhjvFX.js +3 -0
- package/src/assets/web-panel/assets/{AppLayout-DBgtkmP7.css → AppLayout-BLCe1k8m.css} +1 -1
- package/src/assets/web-panel/assets/{Audit-D95nRcdZ.js → Audit-Cns_OJ3y.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-Cmw7ZTJD.js → Backup-BWXKm8S2.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DgCEAL_E.js → BaseInput-DMtM90I4.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DAQAzZsA.js → Chat-CPSQIJkd.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-GRxUANnE.js → Checkbox-CdoTzEcu.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen--6KIDt1W.js → Codegen-DiMm-2CJ.js} +1 -1
- package/src/assets/web-panel/assets/{Col-3s6dxuMx.js → Col-Dw8uRsh8.js} +1 -1
- package/src/assets/web-panel/assets/{Community-D60pkEBz.js → Community-DF6oPrrt.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CQR4QsWP.js → Compact-DDeBOvFc.js} +1 -1
- package/src/assets/web-panel/assets/Compliance-cpcX8foc.js +1 -0
- package/src/assets/web-panel/assets/{Cowork-Yrrf_Vuu.js → Cowork-BnF4dCvO.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-DSuuSKIQ.js → Cron-CNm5yzGt.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-Dub0G9i4.js → Crosschain-1fdaoWnO.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CbpCGV51.js → DID-CgWgrQjr.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-D29e0y01.js → Dashboard-dGcTq_hg.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DZY7X5v2.js → Dropdown-CMcWp2f1.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-dmrLzzMB.js → Federation-BVmtVOzD.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-EopsCGez.js → FormItemContext-BTuMR6zf.js} +1 -1
- package/src/assets/web-panel/assets/{Git-D3mb4RhK.js → Git-2itzzOWU.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-8v034-Nr.js → Governance-BD5nFtjx.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Ddl-HQwQ.js → Inference-BqTjotuw.js} +1 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-CkJCUp_X.js +1 -0
- package/src/assets/web-panel/assets/{Logs-Bsu6lYQe.js → Logs-BezIQuu3.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-Iyf2Xc23.js → Marketplace-BQi8NC94.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-ljVE1lIN.js → McpTools-UDm4tI8g.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-Ca48TtDU.js → Memory-b3k3SJXP.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DZ3Ar6da.js → MobileBridge-CHysUGzj.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +1 -0
- package/src/assets/web-panel/assets/MobileProjects-H5DjqNIw.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CRjBnVAT.js → Mtc-B-kn2cbZ.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-CEC2eKez.js → MtcAudit-BSeDGJAO.js} +1 -1
- package/src/assets/web-panel/assets/{Multisig-BHoQvNeL.js → Multisig-BSwWbNCn.js} +2 -2
- package/src/assets/web-panel/assets/{NLProgramming-9e5hIFvL.js → NLProgramming-B7fTKT9-.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BEhZRadw.js → Notes-CE7Dxyik.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-CzPbT9UE.js → NotificationSettings-BrWPb12X.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CvFg4VAr.js → Organization-BvMcmpZ-.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Cm7ISeJl.js → Overflow-9VpUiyX3.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BWN-wdfH.js → P2P-CZiZLuH6.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-C4vKkP_t.js → Permissions-7xPYU8o3.js} +4 -4
- package/src/assets/web-panel/assets/PersonalDataHub-BoAsj3rP.js +1 -0
- package/src/assets/web-panel/assets/PersonalDataHub-C5HcGC5x.css +1 -0
- package/src/assets/web-panel/assets/{Pipeline-DQCShDeT.js → Pipeline-BXmWkBtJ.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Nc7LlSr3.js → Privacy-Bowi-wqF.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-DDkqXAED.js → ProjectInit-BW1Xj7_l.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-ia6GQr6A.js → ProjectSettings-pDbBvJFG.js} +1 -1
- package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +1 -0
- package/src/assets/web-panel/assets/Projects-D32hRs2K.js +1 -0
- package/src/assets/web-panel/assets/{Providers-EwarbUb8.js → Providers-fvnKRdFc.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-BAHQBw0d.js → QuickAsk-DBZrimTb.js} +1 -1
- package/src/assets/web-panel/assets/Recommend-B_leuPdE.js +1 -0
- package/src/assets/web-panel/assets/{Reputation-ai0gRNpj.js → Reputation-9YJu2Q0s.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BWLfAhHC.js → Row-BwDaJw-R.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CnuRtiQH.js → RssFeed-CCwGtGbs.js} +3 -3
- package/src/assets/web-panel/assets/{Search-Da0CvI_2.js → Search-CLdXqpfz.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DEFeOeUv.js → Security-_It0GsWS.js} +3 -3
- package/src/assets/web-panel/assets/Services-jBxBWGGT.js +2 -0
- package/src/assets/web-panel/assets/{Skeleton-DlRaGj_n.js → Skeleton-DR_EuFFW.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-fjlZrsYq.js → Skills-DsHcMNEk.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DNSDuEt2.js → Sla-Be0UaX-h.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Bj0t-JCf.js → SpeechSettings-uUhDyyHj.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-uO7Gy-BB.js → SyncSettings-CUAwaSnj.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-BSjsO-m8.js → Tasks-CUVZww9Q.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-B03SSuXn.js → Templates-WLZcNzJ_.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CTCPIBzq.js → Tenant-FgN0uYm6.js} +1 -1
- package/src/assets/web-panel/assets/Terminal-BzLHjHyj.js +3 -0
- package/src/assets/web-panel/assets/Tokens-z7lyRr40.js +1 -0
- package/src/assets/web-panel/assets/{Trigger-kYPQmm6P.js → Trigger-HxLdC9ne.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-mt-MiBeI.js → Trust-DggmMxpI.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DBi8jgXw.js → UkeySign-BO-pKTZ_.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CINSMEf5.js → VideoEditing-DdLdJ9Ps.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DCVMgW0U.js → Wallet-F8EfdQDN.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-C9OjbTBs.js → WebAuthn-Bi2Kf8Ev.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-LM1HJs-S.js → WorkflowEditor-DUHk4Y0A.js} +1 -1
- package/src/assets/web-panel/assets/{chat-Dz68Ixdp.js → chat-BMz8ik6R.js} +1 -1
- package/src/assets/web-panel/assets/{colors-qf63Eax9.js → colors-DTTx1bVY.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-r4YWRFGQ.js → compact-item-BjZyyKpa.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C8Lwrn-C.js → createContext-D0Ztn7R_.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-DsPi2kPP.js → hasIn-BeXm1bJ2.js} +1 -1
- package/src/assets/web-panel/assets/{icons-NT6gy8Ee.js → icons-BFHq5fEF.js} +4 -4
- package/src/assets/web-panel/assets/{index-C8SY0_S8.js → index-BDRzvi5v.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfdIkZnT.js → index-BDmMBKM_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxNXO95B.js → index-BHuIMHcS.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2OFaKmx.js → index-BODKOjRZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bz1O2KhE.js → index-BUFpZk0I.js} +1 -1
- package/src/assets/web-panel/assets/{index-qcVx0s-M.js → index-BWRsbH6v.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEbbycgJ.js → index-B_juAGfN.js} +4 -4
- package/src/assets/web-panel/assets/{index-B8gs4g1v.js → index-BiAjZ9Iq.js} +1 -1
- package/src/assets/web-panel/assets/{index-DGXVjiyF.js → index-BxIq_rps.js} +1 -1
- package/src/assets/web-panel/assets/{index-CSCb-EY9.js → index-By4zsU8r.js} +1 -1
- package/src/assets/web-panel/assets/{index-BFV6aAoX.js → index-C6Isxhje.js} +1 -1
- package/src/assets/web-panel/assets/{index-1xqIvVM5.js → index-CGudWWwE.js} +1 -1
- package/src/assets/web-panel/assets/{index-C3VVwJcn.js → index-CobyvwP0.js} +1 -1
- package/src/assets/web-panel/assets/{index-cTFVNgoS.js → index-CqkwXe3s.js} +1 -1
- package/src/assets/web-panel/assets/{index-BtCSUUKm.js → index-CuDNPqlD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cw48kkkH.js → index-D-niPBwZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BzzFMBIM.js → index-D1CV-6q1.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0KxtBNy.js → index-D1coHqyT.js} +1 -1
- package/src/assets/web-panel/assets/{index-CY5X4uXO.js → index-DB1i3Cfr.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2BR3WQ-.js → index-DIoinlAY.js} +1 -1
- package/src/assets/web-panel/assets/index-DJOgV0SI.js +1 -0
- package/src/assets/web-panel/assets/{index-BKEl9Ahm.js → index-DLDHcuz4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqmyLTa_.js → index-DLJnAsec.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4XgKgOF.js → index-DMvkBq2d.js} +1 -1
- package/src/assets/web-panel/assets/{index-LQYz2tRO.js → index-DRNxWV3i.js} +1 -1
- package/src/assets/web-panel/assets/{index-BjPHuhxG.js → index-DTzwBmBS.js} +1 -1
- package/src/assets/web-panel/assets/{index-CINVudo7.js → index-DXSXIknb.js} +1 -1
- package/src/assets/web-panel/assets/{index-DycrmZ_r.js → index-Da_XUjv2.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKRXnUTD.js → index-DfxUN2LB.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBpVVgRI.js → index-DnATlZR7.js} +1 -1
- package/src/assets/web-panel/assets/{index-D0mFFS7Y.js → index-Dx7XPVkb.js} +1 -1
- package/src/assets/web-panel/assets/index-FpewH8xy.js +1 -0
- package/src/assets/web-panel/assets/{index-qLyVEtRM.js → index-JTN4jzka.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCCX2ZSH.js → index-NppMuZBM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQSweK5-.js → index-OjH2wDtW.js} +1 -1
- package/src/assets/web-panel/assets/{index-5nOMJaLt.js → index-aBdRRXWO.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXBc_lyR.js → index-nwkYgoRS.js} +1 -1
- package/src/assets/web-panel/assets/{index-wVpfPJXE.js → index-tUIluCPu.js} +1 -1
- package/src/assets/web-panel/assets/{index-I55BAmVG.js → index-xN0WCVmC.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CAgx2aHm.js → initDefaultProps-DE_gVS_i.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DFuREFOd.js → motion-BiRUGscQ.js} +1 -1
- package/src/assets/web-panel/assets/{move-DfcQIXuy.js → move-DMEzVMJZ.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BFZV2hmZ.js → omit-DBh74Ui4.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-D98WQSur.js → pickAttrs-D6PQbWuo.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BlP2AN9q.js → placementArrow-BYkdt9jF.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DuI2xGQd.js → responsiveObserve-C2ES6P0V.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DSvqah_S.js → slide-zGdjevxe.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-B-96ZLWF.js → statusUtils-Cf6eRpR7.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Br0YrCOO.js → styleChecker-DZZx_bHs.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BD4Xr9XU.js → useFlexGapSupport-B6q6zt9X.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Ch5L3BnA.js → useFs-DjaBUk_P.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BQi3uWRC.js → vnode-CDF4X084.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DaW-jbu7.js → zoom-C9FCvBpV.js} +1 -1
- package/src/assets/web-panel/index.html +2 -2
- package/src/commands/ui.js +21 -3
- package/src/gateways/ws/message-dispatcher.js +34 -0
- package/src/gateways/ws/personal-data-hub-protocol.js +133 -0
- package/src/lib/personal-data-hub-wiring.js +310 -0
- package/src/runtime/agent-runtime.js +85 -11
- package/src/assets/web-panel/assets/AppLayout-xR6YUHsS.js +0 -3
- package/src/assets/web-panel/assets/Compliance-KySNEhMK.js +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-DrRruyud.js +0 -1
- package/src/assets/web-panel/assets/Projects-0OrfK90x.css +0 -1
- package/src/assets/web-panel/assets/Projects-CNqXa5XY.js +0 -1
- package/src/assets/web-panel/assets/Recommend-Ccgu6elV.js +0 -1
- package/src/assets/web-panel/assets/Services-CsfvCqCH.js +0 -2
- package/src/assets/web-panel/assets/Terminal-CQZcdArx.js +0 -3
- package/src/assets/web-panel/assets/Tokens-CsNJIdNl.js +0 -1
- package/src/assets/web-panel/assets/index-B3blziag.js +0 -1
- package/src/assets/web-panel/assets/index-D1XYuPHf.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{w as Z,K as s,L as v,Q as I,N as n,M as U,c as a,S as N,r as c,a as pe,f as ee,u as A,R as L,O as k,P as B,o as we,H as ye,F as ce,Y as de}from"./vendor-M5lGV-wr.js";import{u as ie,d as $,_ as ve}from"./index-CEbbycgJ.js";import{u as _e}from"./useFs-Ch5L3BnA.js";import{u as fe}from"./useShellMode-CgR0wCYM.js";import{au as me,av as he,aq as ke,aw as xe,R as be,l as Se,ax as $e}from"./icons-NT6gy8Ee.js";function Ce(d){if(d&&d.ok===!1)throw new Error(d.error||"knowledge handler failed");return d?.result??d}function re(d){return String(d).replace(/(["\\])/g,"\\$1")}function ge(){const d=ie();async function q({title:C,content:x,tags:b=[],type:f="note"}={}){if(typeof C!="string"||!C.trim())throw new Error("title is required");if(typeof x!="string")throw new Error("content is required");const i=Array.isArray(b)?b.filter(Boolean):[];if(fe().isEmbedded){const y=await d.sendRaw({type:"knowledge.add-item",item:{title:C.trim(),content:x,tags:i,type:f}},2e4),S=Ce(y);if(S?.success===!1)throw new Error(S.error||"knowledge.add-item failed");return S?.item??null}let r=`note add "${re(C.trim())}" -c "${re(x)}"`;i.length&&(r+=` -t "${re(i.join(","))}"`);const{output:l}=await d.execute(r,15e3);if(l&&/^[\s\S]*✖|error/i.test(l))throw new Error(l.slice(0,200));return{title:C.trim(),content:x,tags:i,type:f}}return{addItem:q}}const Re={key:0,style:{"margin-bottom":"16px"}},Ve={__name:"ClipboardImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(d,{emit:q}){const C=d,x=q,b=ge(),f=ee({get:()=>C.modelValue,set:p=>x("update:modelValue",p)}),i=c(!1),r=c(""),l=pe({title:"",content:"",tagsRaw:""}),y=()=>`剪贴板导入 - ${new Date().toLocaleString()}`;function S(){l.title=y(),l.content="",l.tagsRaw="",r.value=""}async function z(){if(r.value="",!navigator.clipboard?.readText){r.value="当前环境不支持剪贴板读取 API";return}try{const p=await navigator.clipboard.readText();l.content=p||"",p||(r.value="剪贴板为空")}catch(p){r.value="读取剪贴板失败:"+(p?.message||String(p))}}Z(()=>C.modelValue,async p=>{p&&(S(),await z())},{immediate:!0});async function E(){if(!l.content.trim()){$.warning("内容为空,无法保存");return}i.value=!0;try{const p=l.tagsRaw.split(/[,,]/).map(g=>g.trim()).filter(Boolean),m=await b.addItem({title:l.title.trim()||y(),content:l.content,tags:p,type:"note"});$.success("已保存到知识库"),x("saved",m),f.value=!1}catch(p){$.error("保存失败:"+(p?.message||String(p)))}finally{i.value=!1}}function T(){f.value=!1}return(p,m)=>{const g=s("a-alert"),u=s("a-input"),_=s("a-form-item"),P=s("a-textarea"),W=s("a-form"),F=s("a-modal");return v(),I(F,{open:f.value,"onUpdate:open":m[3]||(m[3]=O=>f.value=O),title:"剪贴板导入",width:640,"ok-text":i.value?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:i.value,disabled:!l.content.trim()},onOk:E,onCancel:T},{default:n(()=>[r.value?(v(),U("div",Re,[a(g,{type:"warning","show-icon":"",message:r.value,description:"请确认浏览器/系统已授予剪贴板读取权限,或手动粘贴到下方输入框。"},null,8,["message"])])):N("",!0),a(W,{layout:"vertical",model:l},{default:n(()=>[a(_,{label:"标题"},{default:n(()=>[a(u,{value:l.title,"onUpdate:value":m[0]||(m[0]=O=>l.title=O),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),a(_,{label:"内容"},{default:n(()=>[a(P,{value:l.content,"onUpdate:value":m[1]||(m[1]=O=>l.content=O),placeholder:"粘贴或编辑要保存的内容…","auto-size":{minRows:10,maxRows:20},"show-count":""},null,8,["value"])]),_:1}),a(_,{label:"标签(逗号分隔,可选)"},{default:n(()=>[a(u,{value:l.tagsRaw,"onUpdate:value":m[2]||(m[2]=O=>l.tagsRaw=O),placeholder:"例如:素材, 链接","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["open","ok-text","ok-button-props"])}}};function ue(d){if(d&&d.ok===!1)throw new Error(d.error||"screenshot handler failed");return d?.result??d}function Ee(){const d=ie();if(!fe().isEmbedded)return{unsupported:!0,capture:async()=>{throw new Error("截图需要桌面壳;浏览器模式不支持")},ocr:async()=>{throw new Error("OCR 仅在桌面壳可用")},cleanup:async()=>{}};async function C({screenIndex:f}={}){const i=await d.sendRaw({type:"screenshot.capture",screenIndex:f},3e4),r=ue(i);if(r?.success===!1)throw new Error(r.error||"screenshot.capture failed");return r}async function x(f,i,r){if(!f)throw new Error("path is required");const l=await d.sendRaw({type:"screenshot.ocr",path:f,lang:i,engine:r},9e4),y=ue(l);if(y?.success===!1)throw new Error(y.error||"screenshot.ocr failed");return y}async function b(f){if(f)try{const i=await d.sendRaw({type:"screenshot.cleanup",path:f},1e4),r=ue(i);r?.success===!1&&console.warn("[useScreenshot] cleanup failed:",r.error)}catch(i){console.warn("[useScreenshot] cleanup error:",i?.message||i)}}return{unsupported:!1,capture:C,ocr:x,cleanup:b}}const Oe={key:0,style:{"margin-bottom":"16px"}},Ue={key:1,class:"ss-error"},Ne={key:2},Ie={class:"ss-actions"},ze={key:0,class:"ss-preview"},Te=["src"],Le={__name:"ScreenshotImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(d,{emit:q}){const C=d,x=q,b=Ee(),f=ge(),i=ee({get:()=>C.modelValue,set:w=>x("update:modelValue",w)}),r=c(!1),l=c(!1),y=c(!1),S=c(""),z=c(null),E=c("auto"),T=c(null),p=c(""),m=c(""),g=c(null),u=pe({title:"",content:"",tagsRaw:""}),_=ee(()=>!!g.value&&(u.content.trim()||"").length>0),P=()=>`截图识别 - ${new Date().toLocaleString()}`;function W(){u.title=P(),u.content="",u.tagsRaw="",S.value="",z.value=null,T.value=null,p.value="",m.value="",g.value=null}async function F(){g.value?.path&&await b.cleanup(g.value.path)}async function O(){if(b.unsupported)return S.value="浏览器模式不支持截图,请用桌面壳",null;l.value=!0;try{return await b.capture({})}catch(w){return S.value=w?.message||String(w),null}finally{l.value=!1}}async function M(w){if(w){y.value=!0;try{const e=await b.ocr(w,void 0,E.value);u.content=e.text||"",z.value=typeof e.confidence=="number"?e.confidence:null,T.value=e.engine||null,p.value=e.model||"",m.value=e.fallbackReason||"",e.text||$.info("OCR 未识别到文本,可手动输入")}catch(e){$.warning("OCR 失败: "+(e?.message||String(e)))}finally{y.value=!1}}}async function Y(){m.value=""}async function te(){await F(),W();const w=await O();w&&(g.value=w,await M(w.path))}async function Q(){g.value?.path&&await M(g.value.path)}Z(()=>C.modelValue,async w=>{if(w){W();const e=await O();e&&(g.value=e,await M(e.path))}else await F(),g.value=null},{immediate:!0});async function ae(){if(!_.value){$.warning("识别文本为空,无法保存");return}r.value=!0;try{const w=u.tagsRaw.split(/[,,]/).map(t=>t.trim()).filter(Boolean),e=await f.addItem({title:u.title.trim()||P(),content:u.content,tags:w,type:"note"});$.success("已保存到知识库"),x("saved",e),await F(),i.value=!1}catch(w){$.error("保存失败: "+(w?.message||String(w)))}finally{r.value=!1}}async function ne(){await F(),i.value=!1}return(w,e)=>{const t=s("a-alert"),V=s("a-button"),D=s("a-select-option"),h=s("a-select"),R=s("a-tag"),K=s("a-tooltip"),G=s("a-input"),j=s("a-form-item"),H=s("a-spin"),oe=s("a-textarea"),le=s("a-form"),J=s("a-modal");return v(),I(J,{open:i.value,"onUpdate:open":e[4]||(e[4]=o=>i.value=o),title:"截图识别",width:780,"ok-text":r.value?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:r.value,disabled:!_.value},onOk:ae,onCancel:ne},{default:n(()=>[A(b).unsupported?(v(),U("div",Oe,[a(t,{type:"warning","show-icon":"",message:"浏览器模式不支持截图",description:"screenshot-desktop 需要 OS 原生 API,请用桌面壳 (cc desktop) 打开本面板。"})])):S.value?(v(),U("div",Ue,[a(t,{type:"error","show-icon":"",message:S.value},null,8,["message"])])):(v(),U("div",Ne,[L("div",Ie,[a(V,{size:"small",loading:l.value,onClick:te},{icon:n(()=>[a(A(me))]),default:n(()=>[e[5]||(e[5]=k(" 重新截图 ",-1))]),_:1},8,["loading"]),a(V,{size:"small",loading:y.value,disabled:!g.value||y.value,onClick:Q},{icon:n(()=>[a(A(he))]),default:n(()=>[e[6]||(e[6]=k(" 重跑 OCR ",-1))]),_:1},8,["loading","disabled"]),a(h,{value:E.value,"onUpdate:value":e[0]||(e[0]=o=>E.value=o),size:"small",style:{width:"140px"},disabled:y.value,onChange:Y},{default:n(()=>[a(D,{value:"auto"},{default:n(()=>[...e[7]||(e[7]=[k("自动 (推荐)",-1)])]),_:1}),a(D,{value:"llm"},{default:n(()=>[...e[8]||(e[8]=[k("视觉 LLM",-1)])]),_:1}),a(D,{value:"tesseract"},{default:n(()=>[...e[9]||(e[9]=[k("本地 Tesseract",-1)])]),_:1})]),_:1},8,["value","disabled"]),T.value==="llm"?(v(),I(R,{key:0,color:"blue"},{default:n(()=>[k(B(p.value||"豆包视觉"),1)]),_:1})):T.value==="tesseract"&&z.value!==null?(v(),I(R,{key:1},{default:n(()=>[k(" Tesseract · "+B(z.value)+"% ",1)]),_:1})):N("",!0),m.value?(v(),I(K,{key:2,title:`LLM 识别失败已回落 Tesseract: ${m.value}`},{default:n(()=>[a(R,{color:"orange"},{default:n(()=>[...e[10]||(e[10]=[k("回落 Tesseract",-1)])]),_:1})]),_:1},8,["title"])):N("",!0)]),g.value?.dataUrl?(v(),U("div",ze,[L("img",{src:g.value.dataUrl,alt:"screenshot"},null,8,Te)])):N("",!0),a(le,{layout:"vertical",model:u},{default:n(()=>[a(j,{label:"标题"},{default:n(()=>[a(G,{value:u.title,"onUpdate:value":e[1]||(e[1]=o=>u.title=o),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),a(j,null,{label:n(()=>[e[11]||(e[11]=L("span",null,"识别文本",-1)),y.value?(v(),I(H,{key:0,size:"small",style:{"margin-left":"8px"}})):N("",!0)]),default:n(()=>[a(oe,{value:u.content,"onUpdate:value":e[2]||(e[2]=o=>u.content=o),placeholder:y.value?"正在识别…":"识别结果,可手动编辑","auto-size":{minRows:8,maxRows:16},"show-count":""},null,8,["value","placeholder"])]),_:1}),a(j,{label:"标签 (逗号分隔, 可选)"},{default:n(()=>[a(G,{value:u.tagsRaw,"onUpdate:value":e[3]||(e[3]=o=>u.tagsRaw=o),placeholder:"例如: 截图, 参考","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]))]),_:1},8,["open","ok-text","ok-button-props"])}}},qe=ve(Le,[["__scopeId","data-v-d65e43c0"]]),Be={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Me={class:"page-sub"},De={style:{"margin-bottom":"16px",display:"flex",gap:"10px"}},Ae={key:0,style:{"text-align":"center",padding:"60px"}},Fe={key:0,style:{color:"#e0e0e0","font-weight":"500"}},Pe={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},We={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},je={key:0,style:{"max-height":"60vh","overflow-y":"auto"}},Qe={style:{"margin-bottom":"10px"}},Ke={style:{"white-space":"pre-wrap",color:"#ccc","font-family":"inherit","line-height":"1.7",background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}},He={__name:"Notes",setup(d){const q=ie(),C=_e(),x=ye(),b=c(!1),f=c(!1),i=c(!1),r=c(!1),l=c(""),y=c([]),S=c([]),z=c(!1),E=c(""),T=c(!1),p=c(!1),m=c(!1),g=c(!1),u=c(null),_=c({title:"",content:"",tags:""});async function P(){$.success("剪贴板内容已保存到知识库"),await M()}async function W(){$.success("截图内容已保存到知识库"),await M()}const F=ee(()=>z.value?S.value:y.value),O=[{title:"标题",dataIndex:"title",key:"title",width:"30%"},{title:"预览",key:"content",ellipsis:!0},{title:"标签",key:"tags",width:"20%"},{title:"操作",key:"actions",width:"80px"}];async function M(){f.value=!0,l.value="";try{const{output:e}=await q.execute("note list",2e4);y.value=Y(e)}catch(e){l.value=`加载失败: ${e.message}`}finally{f.value=!1}}function Y(e){const t=[],V=e.split(`
|
|
2
|
-
`);for(const D of V){const h=D.trim();if(!h||h.startsWith("─")||h.startsWith("Note")||h.match(/^\d+ note/i))continue;const R=h.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);R?t.push({key:R[1],id:R[1],title:R[2].trim(),tags:R[3]?R[3].split(",").map(K=>K.trim()):[],preview:(R[4]||"").trim().slice(0,100),content:""}):h.length>2&&!h.startsWith("✖")&&!h.startsWith("[")&&t.push({key:t.length,id:String(t.length),title:h,tags:[],preview:"",content:""})}return t}async function te(){if(!E.value.trim()){Q();return}i.value=!0,z.value=!0;try{const{output:e}=await
|
|
1
|
+
import{w as Z,K as s,L as v,Q as I,N as n,M as U,c as a,S as N,r as c,a as pe,f as ee,u as A,R as L,O as k,P as q,o as we,H as ye,F as ce,Y as de}from"./vendor-M5lGV-wr.js";import{u as ie,d as $,_ as ve}from"./index-B_juAGfN.js";import{u as _e}from"./useFs-DjaBUk_P.js";import{u as fe}from"./useShellMode-CgR0wCYM.js";import{av as me,aw as he,ar as ke,ax as xe,R as be,l as Se,ay as $e}from"./icons-BFHq5fEF.js";function Ce(d){if(d&&d.ok===!1)throw new Error(d.error||"knowledge handler failed");return d?.result??d}function re(d){return String(d).replace(/(["\\])/g,"\\$1")}function ge(){const d=ie();async function B({title:C,content:x,tags:b=[],type:f="note"}={}){if(typeof C!="string"||!C.trim())throw new Error("title is required");if(typeof x!="string")throw new Error("content is required");const i=Array.isArray(b)?b.filter(Boolean):[];if(fe().isEmbedded){const y=await d.sendRaw({type:"knowledge.add-item",item:{title:C.trim(),content:x,tags:i,type:f}},2e4),S=Ce(y);if(S?.success===!1)throw new Error(S.error||"knowledge.add-item failed");return S?.item??null}let r=`note add "${re(C.trim())}" -c "${re(x)}"`;i.length&&(r+=` -t "${re(i.join(","))}"`);const{output:l}=await d.execute(r,15e3);if(l&&/^[\s\S]*✖|error/i.test(l))throw new Error(l.slice(0,200));return{title:C.trim(),content:x,tags:i,type:f}}return{addItem:B}}const Re={key:0,style:{"margin-bottom":"16px"}},Ve={__name:"ClipboardImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(d,{emit:B}){const C=d,x=B,b=ge(),f=ee({get:()=>C.modelValue,set:p=>x("update:modelValue",p)}),i=c(!1),r=c(""),l=pe({title:"",content:"",tagsRaw:""}),y=()=>`剪贴板导入 - ${new Date().toLocaleString()}`;function S(){l.title=y(),l.content="",l.tagsRaw="",r.value=""}async function z(){if(r.value="",!navigator.clipboard?.readText){r.value="当前环境不支持剪贴板读取 API";return}try{const p=await navigator.clipboard.readText();l.content=p||"",p||(r.value="剪贴板为空")}catch(p){r.value="读取剪贴板失败:"+(p?.message||String(p))}}Z(()=>C.modelValue,async p=>{p&&(S(),await z())},{immediate:!0});async function E(){if(!l.content.trim()){$.warning("内容为空,无法保存");return}i.value=!0;try{const p=l.tagsRaw.split(/[,,]/).map(g=>g.trim()).filter(Boolean),m=await b.addItem({title:l.title.trim()||y(),content:l.content,tags:p,type:"note"});$.success("已保存到知识库"),x("saved",m),f.value=!1}catch(p){$.error("保存失败:"+(p?.message||String(p)))}finally{i.value=!1}}function T(){f.value=!1}return(p,m)=>{const g=s("a-alert"),u=s("a-input"),_=s("a-form-item"),P=s("a-textarea"),W=s("a-form"),F=s("a-modal");return v(),I(F,{open:f.value,"onUpdate:open":m[3]||(m[3]=O=>f.value=O),title:"剪贴板导入",width:640,"ok-text":i.value?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:i.value,disabled:!l.content.trim()},onOk:E,onCancel:T},{default:n(()=>[r.value?(v(),U("div",Re,[a(g,{type:"warning","show-icon":"",message:r.value,description:"请确认浏览器/系统已授予剪贴板读取权限,或手动粘贴到下方输入框。"},null,8,["message"])])):N("",!0),a(W,{layout:"vertical",model:l},{default:n(()=>[a(_,{label:"标题"},{default:n(()=>[a(u,{value:l.title,"onUpdate:value":m[0]||(m[0]=O=>l.title=O),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),a(_,{label:"内容"},{default:n(()=>[a(P,{value:l.content,"onUpdate:value":m[1]||(m[1]=O=>l.content=O),placeholder:"粘贴或编辑要保存的内容…","auto-size":{minRows:10,maxRows:20},"show-count":""},null,8,["value"])]),_:1}),a(_,{label:"标签(逗号分隔,可选)"},{default:n(()=>[a(u,{value:l.tagsRaw,"onUpdate:value":m[2]||(m[2]=O=>l.tagsRaw=O),placeholder:"例如:素材, 链接","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["open","ok-text","ok-button-props"])}}};function ue(d){if(d&&d.ok===!1)throw new Error(d.error||"screenshot handler failed");return d?.result??d}function Ee(){const d=ie();if(!fe().isEmbedded)return{unsupported:!0,capture:async()=>{throw new Error("截图需要桌面壳;浏览器模式不支持")},ocr:async()=>{throw new Error("OCR 仅在桌面壳可用")},cleanup:async()=>{}};async function C({screenIndex:f}={}){const i=await d.sendRaw({type:"screenshot.capture",screenIndex:f},3e4),r=ue(i);if(r?.success===!1)throw new Error(r.error||"screenshot.capture failed");return r}async function x(f,i,r){if(!f)throw new Error("path is required");const l=await d.sendRaw({type:"screenshot.ocr",path:f,lang:i,engine:r},9e4),y=ue(l);if(y?.success===!1)throw new Error(y.error||"screenshot.ocr failed");return y}async function b(f){if(f)try{const i=await d.sendRaw({type:"screenshot.cleanup",path:f},1e4),r=ue(i);r?.success===!1&&console.warn("[useScreenshot] cleanup failed:",r.error)}catch(i){console.warn("[useScreenshot] cleanup error:",i?.message||i)}}return{unsupported:!1,capture:C,ocr:x,cleanup:b}}const Oe={key:0,style:{"margin-bottom":"16px"}},Ue={key:1,class:"ss-error"},Ne={key:2},Ie={class:"ss-actions"},ze={key:0,class:"ss-preview"},Te=["src"],Le={__name:"ScreenshotImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(d,{emit:B}){const C=d,x=B,b=Ee(),f=ge(),i=ee({get:()=>C.modelValue,set:w=>x("update:modelValue",w)}),r=c(!1),l=c(!1),y=c(!1),S=c(""),z=c(null),E=c("auto"),T=c(null),p=c(""),m=c(""),g=c(null),u=pe({title:"",content:"",tagsRaw:""}),_=ee(()=>!!g.value&&(u.content.trim()||"").length>0),P=()=>`截图识别 - ${new Date().toLocaleString()}`;function W(){u.title=P(),u.content="",u.tagsRaw="",S.value="",z.value=null,T.value=null,p.value="",m.value="",g.value=null}async function F(){g.value?.path&&await b.cleanup(g.value.path)}async function O(){if(b.unsupported)return S.value="浏览器模式不支持截图,请用桌面壳",null;l.value=!0;try{return await b.capture({})}catch(w){return S.value=w?.message||String(w),null}finally{l.value=!1}}async function M(w){if(w){y.value=!0;try{const e=await b.ocr(w,void 0,E.value);u.content=e.text||"",z.value=typeof e.confidence=="number"?e.confidence:null,T.value=e.engine||null,p.value=e.model||"",m.value=e.fallbackReason||"",e.text||$.info("OCR 未识别到文本,可手动输入")}catch(e){$.warning("OCR 失败: "+(e?.message||String(e)))}finally{y.value=!1}}}async function Y(){m.value=""}async function te(){await F(),W();const w=await O();w&&(g.value=w,await M(w.path))}async function Q(){g.value?.path&&await M(g.value.path)}Z(()=>C.modelValue,async w=>{if(w){W();const e=await O();e&&(g.value=e,await M(e.path))}else await F(),g.value=null},{immediate:!0});async function ae(){if(!_.value){$.warning("识别文本为空,无法保存");return}r.value=!0;try{const w=u.tagsRaw.split(/[,,]/).map(t=>t.trim()).filter(Boolean),e=await f.addItem({title:u.title.trim()||P(),content:u.content,tags:w,type:"note"});$.success("已保存到知识库"),x("saved",e),await F(),i.value=!1}catch(w){$.error("保存失败: "+(w?.message||String(w)))}finally{r.value=!1}}async function ne(){await F(),i.value=!1}return(w,e)=>{const t=s("a-alert"),V=s("a-button"),D=s("a-select-option"),h=s("a-select"),R=s("a-tag"),K=s("a-tooltip"),G=s("a-input"),j=s("a-form-item"),H=s("a-spin"),oe=s("a-textarea"),le=s("a-form"),J=s("a-modal");return v(),I(J,{open:i.value,"onUpdate:open":e[4]||(e[4]=o=>i.value=o),title:"截图识别",width:780,"ok-text":r.value?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:r.value,disabled:!_.value},onOk:ae,onCancel:ne},{default:n(()=>[A(b).unsupported?(v(),U("div",Oe,[a(t,{type:"warning","show-icon":"",message:"浏览器模式不支持截图",description:"screenshot-desktop 需要 OS 原生 API,请用桌面壳 (cc desktop) 打开本面板。"})])):S.value?(v(),U("div",Ue,[a(t,{type:"error","show-icon":"",message:S.value},null,8,["message"])])):(v(),U("div",Ne,[L("div",Ie,[a(V,{size:"small",loading:l.value,onClick:te},{icon:n(()=>[a(A(me))]),default:n(()=>[e[5]||(e[5]=k(" 重新截图 ",-1))]),_:1},8,["loading"]),a(V,{size:"small",loading:y.value,disabled:!g.value||y.value,onClick:Q},{icon:n(()=>[a(A(he))]),default:n(()=>[e[6]||(e[6]=k(" 重跑 OCR ",-1))]),_:1},8,["loading","disabled"]),a(h,{value:E.value,"onUpdate:value":e[0]||(e[0]=o=>E.value=o),size:"small",style:{width:"140px"},disabled:y.value,onChange:Y},{default:n(()=>[a(D,{value:"auto"},{default:n(()=>[...e[7]||(e[7]=[k("自动 (推荐)",-1)])]),_:1}),a(D,{value:"llm"},{default:n(()=>[...e[8]||(e[8]=[k("视觉 LLM",-1)])]),_:1}),a(D,{value:"tesseract"},{default:n(()=>[...e[9]||(e[9]=[k("本地 Tesseract",-1)])]),_:1})]),_:1},8,["value","disabled"]),T.value==="llm"?(v(),I(R,{key:0,color:"blue"},{default:n(()=>[k(q(p.value||"豆包视觉"),1)]),_:1})):T.value==="tesseract"&&z.value!==null?(v(),I(R,{key:1},{default:n(()=>[k(" Tesseract · "+q(z.value)+"% ",1)]),_:1})):N("",!0),m.value?(v(),I(K,{key:2,title:`LLM 识别失败已回落 Tesseract: ${m.value}`},{default:n(()=>[a(R,{color:"orange"},{default:n(()=>[...e[10]||(e[10]=[k("回落 Tesseract",-1)])]),_:1})]),_:1},8,["title"])):N("",!0)]),g.value?.dataUrl?(v(),U("div",ze,[L("img",{src:g.value.dataUrl,alt:"screenshot"},null,8,Te)])):N("",!0),a(le,{layout:"vertical",model:u},{default:n(()=>[a(j,{label:"标题"},{default:n(()=>[a(G,{value:u.title,"onUpdate:value":e[1]||(e[1]=o=>u.title=o),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),a(j,null,{label:n(()=>[e[11]||(e[11]=L("span",null,"识别文本",-1)),y.value?(v(),I(H,{key:0,size:"small",style:{"margin-left":"8px"}})):N("",!0)]),default:n(()=>[a(oe,{value:u.content,"onUpdate:value":e[2]||(e[2]=o=>u.content=o),placeholder:y.value?"正在识别…":"识别结果,可手动编辑","auto-size":{minRows:8,maxRows:16},"show-count":""},null,8,["value","placeholder"])]),_:1}),a(j,{label:"标签 (逗号分隔, 可选)"},{default:n(()=>[a(G,{value:u.tagsRaw,"onUpdate:value":e[3]||(e[3]=o=>u.tagsRaw=o),placeholder:"例如: 截图, 参考","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]))]),_:1},8,["open","ok-text","ok-button-props"])}}},Be=ve(Le,[["__scopeId","data-v-d65e43c0"]]),qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Me={class:"page-sub"},De={style:{"margin-bottom":"16px",display:"flex",gap:"10px"}},Ae={key:0,style:{"text-align":"center",padding:"60px"}},Fe={key:0,style:{color:"#e0e0e0","font-weight":"500"}},Pe={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},We={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},je={key:0,style:{"max-height":"60vh","overflow-y":"auto"}},Qe={style:{"margin-bottom":"10px"}},Ke={style:{"white-space":"pre-wrap",color:"#ccc","font-family":"inherit","line-height":"1.7",background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}},He={__name:"Notes",setup(d){const B=ie(),C=_e(),x=ye(),b=c(!1),f=c(!1),i=c(!1),r=c(!1),l=c(""),y=c([]),S=c([]),z=c(!1),E=c(""),T=c(!1),p=c(!1),m=c(!1),g=c(!1),u=c(null),_=c({title:"",content:"",tags:""});async function P(){$.success("剪贴板内容已保存到知识库"),await M()}async function W(){$.success("截图内容已保存到知识库"),await M()}const F=ee(()=>z.value?S.value:y.value),O=[{title:"标题",dataIndex:"title",key:"title",width:"30%"},{title:"预览",key:"content",ellipsis:!0},{title:"标签",key:"tags",width:"20%"},{title:"操作",key:"actions",width:"80px"}];async function M(){f.value=!0,l.value="";try{const{output:e}=await B.execute("note list",2e4);y.value=Y(e)}catch(e){l.value=`加载失败: ${e.message}`}finally{f.value=!1}}function Y(e){const t=[],V=e.split(`
|
|
2
|
+
`);for(const D of V){const h=D.trim();if(!h||h.startsWith("─")||h.startsWith("Note")||h.match(/^\d+ note/i))continue;const R=h.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);R?t.push({key:R[1],id:R[1],title:R[2].trim(),tags:R[3]?R[3].split(",").map(K=>K.trim()):[],preview:(R[4]||"").trim().slice(0,100),content:""}):h.length>2&&!h.startsWith("✖")&&!h.startsWith("[")&&t.push({key:t.length,id:String(t.length),title:h,tags:[],preview:"",content:""})}return t}async function te(){if(!E.value.trim()){Q();return}i.value=!0,z.value=!0;try{const{output:e}=await B.execute(`note search "${E.value}"`,15e3);S.value=Y(e)}catch{S.value=[]}finally{i.value=!1}}function Q(){E.value="",z.value=!1,S.value=[]}async function ae(){if(!_.value.title.trim()){$.warning("请输入标题");return}r.value=!0;try{let e=`note add "${_.value.title}"`;_.value.content&&(e+=` -c "${_.value.content.replace(/"/g,'\\"')}"`),_.value.tags&&(e+=` -t "${_.value.tags}"`);const{output:t}=await B.execute(e,15e3);t.includes("✖")||t.toLowerCase().includes("error")?$.error("添加失败: "+t.slice(0,100)):($.success("笔记已添加"),T.value=!1,_.value={title:"",content:"",tags:""},await M())}catch(e){$.error("添加失败: "+e.message)}finally{r.value=!1}}function ne(e){u.value=e,p.value=!0}async function w(){if(!u.value)return;const e=u.value,t=e.tags?.length?`tags: [${e.tags.join(", ")}]
|
|
3
3
|
|
|
4
4
|
`:"",V=`# ${e.title}
|
|
5
5
|
|
|
6
6
|
${t}${e.content||e.preview||""}
|
|
7
|
-
`,D=(e.title||"note").replace(/[\\/:*?"<>|\x00-\x1f]+/g,"_").slice(0,80)||"note";b.value=!0;try{const h=await C.saveText(V,{defaultPath:`${D}.md`,filters:[{name:"Markdown",extensions:["md"]}]});if(h.canceled)return;$.success(h.path?`已导出到 ${h.path}`:"已导出")}catch(h){$.error(`导出失败: ${h.message||h}`)}finally{b.value=!1}}return we(()=>{M(),x.query.clipboardImport&&(m.value=!0),x.query.screenshotOcr&&(g.value=!0)}),Z(()=>x.query.clipboardImport,e=>{e&&(m.value=!0)}),Z(()=>x.query.screenshotOcr,e=>{e&&(g.value=!0)}),(e,t)=>{const V=s("a-button"),D=s("a-space"),h=s("a-input-search"),R=s("a-tag"),K=s("a-spin"),G=s("a-table"),j=s("a-input"),H=s("a-form-item"),oe=s("a-textarea"),le=s("a-form"),J=s("a-modal");return v(),U("div",null,[L("div",
|
|
7
|
+
`,D=(e.title||"note").replace(/[\\/:*?"<>|\x00-\x1f]+/g,"_").slice(0,80)||"note";b.value=!0;try{const h=await C.saveText(V,{defaultPath:`${D}.md`,filters:[{name:"Markdown",extensions:["md"]}]});if(h.canceled)return;$.success(h.path?`已导出到 ${h.path}`:"已导出")}catch(h){$.error(`导出失败: ${h.message||h}`)}finally{b.value=!1}}return we(()=>{M(),x.query.clipboardImport&&(m.value=!0),x.query.screenshotOcr&&(g.value=!0)}),Z(()=>x.query.clipboardImport,e=>{e&&(m.value=!0)}),Z(()=>x.query.screenshotOcr,e=>{e&&(g.value=!0)}),(e,t)=>{const V=s("a-button"),D=s("a-space"),h=s("a-input-search"),R=s("a-tag"),K=s("a-spin"),G=s("a-table"),j=s("a-input"),H=s("a-form-item"),oe=s("a-textarea"),le=s("a-form"),J=s("a-modal");return v(),U("div",null,[L("div",qe,[L("div",null,[t[12]||(t[12]=L("h2",{class:"page-title"},"笔记管理",-1)),L("p",Me,"个人知识库 · "+q(y.value.length)+" 条笔记",1)]),a(D,null,{default:n(()=>[a(V,{onClick:t[0]||(t[0]=o=>T.value=!0),type:"primary"},{icon:n(()=>[a(A(ke))]),default:n(()=>[t[13]||(t[13]=k(" 新建笔记 ",-1))]),_:1}),a(V,{onClick:t[1]||(t[1]=o=>m.value=!0)},{icon:n(()=>[a(A(xe))]),default:n(()=>[t[14]||(t[14]=k(" 剪贴板导入 ",-1))]),_:1}),a(V,{onClick:t[2]||(t[2]=o=>g.value=!0)},{icon:n(()=>[a(A(me))]),default:n(()=>[t[15]||(t[15]=k(" 截图识别 ",-1))]),_:1}),a(V,{ghost:"",loading:f.value,onClick:M},{icon:n(()=>[a(A(be))]),default:n(()=>[t[16]||(t[16]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),L("div",De,[a(h,{value:E.value,"onUpdate:value":t[3]||(t[3]=o=>E.value=o),placeholder:"搜索笔记...","allow-clear":"",style:{"max-width":"400px"},loading:i.value,onSearch:te,onClear:Q},null,8,["value","loading"]),z.value?(v(),I(R,{key:0,color:"blue",closable:"",onClose:Q},{default:n(()=>[k(" 搜索: "+q(E.value),1)]),_:1})):N("",!0)]),f.value?(v(),U("div",Ae,[a(K,{size:"large"})])):(v(),I(G,{key:1,columns:O,"data-source":F.value,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"note-row"},{bodyCell:n(({column:o,record:X})=>[o.key==="title"?(v(),U("span",Fe,q(X.title),1)):N("",!0),o.key==="tags"?(v(!0),U(ce,{key:1},de(X.tags,se=>(v(),I(R,{key:se,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:n(()=>[k(q(se),1)]),_:2},1024))),128)):N("",!0),o.key==="content"?(v(),U("span",Pe,q(X.preview),1)):N("",!0),o.key==="actions"?(v(),I(V,{key:3,size:"small",type:"link",onClick:se=>ne(X)},{default:n(()=>[...t[17]||(t[17]=[k("查看",-1)])]),_:1},8,["onClick"])):N("",!0)]),emptyText:n(()=>[L("div",We,[a(A(Se),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),k(" "+q(l.value||'暂无笔记,点击"新建笔记"添加'),1)])]),_:1},8,["data-source","pagination"])),a(J,{open:T.value,"onUpdate:open":t[7]||(t[7]=o=>T.value=o),title:"新建笔记","confirm-loading":r.value,onOk:ae},{default:n(()=>[a(le,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:n(()=>[a(H,{label:"标题",required:""},{default:n(()=>[a(j,{value:_.value.title,"onUpdate:value":t[4]||(t[4]=o=>_.value.title=o),placeholder:"笔记标题"},null,8,["value"])]),_:1}),a(H,{label:"内容"},{default:n(()=>[a(oe,{value:_.value.content,"onUpdate:value":t[5]||(t[5]=o=>_.value.content=o),rows:5,placeholder:"笔记内容..."},null,8,["value"])]),_:1}),a(H,{label:"标签"},{default:n(()=>[a(j,{value:_.value.tags,"onUpdate:value":t[6]||(t[6]=o=>_.value.tags=o),placeholder:"用逗号分隔,如: work,ideas"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(Ve,{modelValue:m.value,"onUpdate:modelValue":t[8]||(t[8]=o=>m.value=o),onSaved:P},null,8,["modelValue"]),a(Be,{modelValue:g.value,"onUpdate:modelValue":t[9]||(t[9]=o=>g.value=o),onSaved:W},null,8,["modelValue"]),a(J,{open:p.value,"onUpdate:open":t[11]||(t[11]=o=>p.value=o),title:u.value?.title,width:"700px"},{footer:n(()=>[a(V,{onClick:t[10]||(t[10]=o=>p.value=!1)},{default:n(()=>[...t[18]||(t[18]=[k("关闭",-1)])]),_:1}),u.value?(v(),I(V,{key:0,type:"primary",loading:b.value,onClick:w},{icon:n(()=>[a(A($e))]),default:n(()=>[t[19]||(t[19]=k(" 导出 .md ",-1))]),_:1},8,["loading"])):N("",!0)]),default:n(()=>[u.value?(v(),U("div",je,[L("div",Qe,[(v(!0),U(ce,null,de(u.value.tags,o=>(v(),I(R,{key:o,color:"blue"},{default:n(()=>[k(q(o),1)]),_:2},1024))),128))]),L("pre",Ke,q(u.value.content||u.value.preview),1)])):N("",!0)]),_:1},8,["open","title"])])}}},et=ve(He,[["__scopeId","data-v-fe526205"]]);export{et as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as D,_ as F,d as E}from"./index-
|
|
1
|
+
import{u as D,_ as F,d as E}from"./index-B_juAGfN.js";import{u as M}from"./useShellMode-CgR0wCYM.js";import{r as h,o as O,M as C,R as r,u as s,Q as A,S as N,c as t,N as d,K as f,L as y,F as W,O as j,P as q}from"./vendor-M5lGV-wr.js";import{R as z}from"./icons-BFHq5fEF.js";const m={enabled:!0,sound:!0,badge:!0,desktop:!0};function V(n){if(n&&n.ok===!1)throw new Error(n.error||"notification-settings handler failed");return n?.result??n}const g={settings:h({...m})};function I(){const n=D(),o=M().isEmbedded;async function l(){if(!o)return g.settings.value={...m},g.settings.value;const u=await n.sendRaw({type:"notification-settings.get"},1e4),i=V(u);if(i?.success===!1)throw new Error(i.error||"notification-settings.get failed");return g.settings.value={...m,...i?.settings||{}},g.settings.value}async function b(u){if(!u||typeof u!="object")throw new Error("patch is required");if(!o)throw new Error("通知设置仅在嵌入式 web-shell 中可写");const i=await n.sendRaw({type:"notification-settings.update",settings:u},1e4),a=V(i);if(a?.success===!1)throw new Error(a.error||"notification-settings.update failed");return g.settings.value={...m,...a?.settings||{}},g.settings.value}return{settings:g.settings,isEmbedded:o,load:l,update:b,DEFAULTS:m}}const K={class:"footer-row"},P={key:0,class:"last-saved"},Q={__name:"NotificationSettings",setup(n){const{settings:o,isEmbedded:l,load:b,update:u}=I(),i=h(!1),a=h(!1),S=h("");async function x(){i.value=!0;try{await b()}catch(p){E.error("加载失败: "+(p?.message||String(p)))}finally{i.value=!1}}async function v(p,e){if(l){a.value=!0;try{await u({[p]:e}),S.value=new Date().toLocaleTimeString(),E.success("已保存")}catch(w){E.error("保存失败: "+(w?.message||String(w))),await b().catch(()=>{})}finally{a.value=!1}}}return O(x),(p,e)=>{const w=f("a-alert"),_=f("a-switch"),k=f("a-form-item"),R=f("a-form"),B=f("a-divider"),L=f("a-button"),T=f("a-card");return y(),C("div",null,[e[9]||(e[9]=r("div",{class:"page-head"},[r("div",null,[r("h2",{class:"page-title"},"通知设置"),r("p",{class:"page-sub"},"控制应用通知行为 · 与桌面 V5/V6 设置同源")])],-1)),s(l)?N("",!0):(y(),A(w,{key:0,type:"info","show-icon":"",style:{"margin-bottom":"16px"},message:"浏览器模式只读",description:"纯浏览器没有 Electron AppConfig 后端,本页只能展示默认值。请使用桌面壳 (cc desktop) 写入。"})),t(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:d(()=>[t(R,{layout:"horizontal","label-col":{span:6},"wrapper-col":{span:18}},{default:d(()=>[t(k,{label:"启用通知"},{default:d(()=>[t(_,{checked:s(o).enabled,disabled:!s(l)||a.value,onChange:e[0]||(e[0]=c=>v("enabled",c))},null,8,["checked","disabled"]),e[4]||(e[4]=r("span",{class:"hint"},"关闭后所有通知静默",-1))]),_:1}),s(o).enabled?(y(),C(W,{key:0},[t(k,{label:"通知声音"},{default:d(()=>[t(_,{checked:s(o).sound,disabled:!s(l)||a.value,onChange:e[1]||(e[1]=c=>v("sound",c))},null,8,["checked","disabled"]),e[5]||(e[5]=r("span",{class:"hint"},"桌面通知伴随系统提示音",-1))]),_:1}),t(k,{label:"角标提示"},{default:d(()=>[t(_,{checked:s(o).badge,disabled:!s(l)||a.value,onChange:e[2]||(e[2]=c=>v("badge",c))},null,8,["checked","disabled"]),e[6]||(e[6]=r("span",{class:"hint"},"在应用图标 / 任务栏角标显示未读数",-1))]),_:1}),t(k,{label:"桌面通知"},{default:d(()=>[t(_,{checked:s(o).desktop,disabled:!s(l)||a.value,onChange:e[3]||(e[3]=c=>v("desktop",c))},null,8,["checked","disabled"]),e[7]||(e[7]=r("span",{class:"hint"},"系统级 toast (Windows / macOS / Linux 原生通知)",-1))]),_:1})],64)):N("",!0)]),_:1}),t(B),r("div",K,[t(L,{loading:i.value,onClick:x},{icon:d(()=>[t(s(z))]),default:d(()=>[e[8]||(e[8]=j(" 重新加载 ",-1))]),_:1},8,["loading"]),S.value?(y(),C("span",P,"最近保存: "+q(S.value),1)):N("",!0)])]),_:1})])}}},X=F(Q,[["__scopeId","data-v-63dfa730"]]);export{X as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as
|
|
2
|
-
`);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ org/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,id:v[0]||"-",name:v[1]||"-",owner:v[2]||"-",description:v[3]||"",memberCount:parseInt(v[4],10)||0})}return a}async function Le(){if(!
|
|
3
|
-
`);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ member/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,userId:v[0]||"-",name:v[1]||"-",role:v[2]||"member",joinedAt:v[3]||"-"})}return a}async function ge(){if(z.value){ue.value=!0;try{const{output:l}=await k.execute(`org teams ${z.value} --json`,15e3),a=
|
|
4
|
-
`);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ approval/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=4&&a.push({key:a.length,id:v[0]||"-",title:v[1]||"-",type:v[2]||"-",requester:v[3]||"-",status:v[4]||"pending",_approving:!1,_rejecting:!1})}return a}async function Be(l){l._approving=!0;try{const{output:a}=await k.execute(`org approve ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.approveFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.approveOk")),await S())}catch(a){g.error(e("organization.messages.approveFailed",{err:a.message}))}finally{l._approving=!1}}async function De(l){l._rejecting=!0;try{const{output:a}=await k.execute(`org reject ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.rejectFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.rejectOk")),await S())}catch(a){g.error(e("organization.messages.rejectFailed",{err:a.message}))}finally{l._rejecting=!1}}async function Ve(){if(!N.value){g.warning(e("organization.messages.orgRequired"));return}if(!M.value.trim()){g.warning(e("organization.messages.approvalTitleRequired"));return}ye.value=!0;try{const l=M.value.trim().replace(/"/g,'\\"'),a=Y.value.trim().replace(/"/g,'\\"'),t=Z.value.trim().replace(/"/g,'\\"');let r=`org approve --submit --org ${N.value} --title "${l}"`;a&&(r+=` --type "${a}"`),t&&(r+=` --description "${t}"`);const{output:c}=await k.execute(r,2e4);c.includes("error")||c.includes("失败")?g.error(e("organization.messages.submitFailed",{err:c.slice(0,120)})):(g.success(e("organization.messages.submitOk")),X.value=!1,N.value=null,M.value="",Y.value="",Z.value="",await S())}catch(l){g.error(e("organization.messages.submitFailed",{err:l.message}))}finally{ye.value=!1}}return Qe(()=>{T()}),(l,a)=>{const t=_("a-button"),r=_("a-space"),c=_("a-spin"),v=_("a-tag"),R=_("a-empty"),ee=_("a-table"),j=_("a-descriptions-item"),Ke=_("a-descriptions"),B=_("a-modal"),C=_("a-input"),x=_("a-form-item"),ae=_("a-form"),fe=_("a-tab-pane"),be=_("a-select"),We=_("a-textarea"),Je=_("a-tabs");return p(),y("div",null,[O("div",oa,[O("div",null,[O("h2",na,u(o(e)("organization.title")),1),O("p",la,u(o(e)("organization.subtitle")),1)]),n(t,{type:"primary",ghost:"",loading:te.value,onClick:he},{icon:s(()=>[n(o(Ye))]),default:s(()=>[b(" "+u(o(e)("organization.refresh")),1)]),_:1},8,["loading"])]),n(Je,{activeKey:$.value,"onUpdate:activeKey":a[22]||(a[22]=i=>$.value=i),type:"card",onChange:Ce},{default:s(()=>[n(fe,{key:"orgs"},{tab:s(()=>[n(o(Ze)),b(" "+u(o(e)("organization.tabs.orgs")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[0]||(a[0]=i=>D.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.orgs.createButton")),1)]),_:1})]),_:1}),oe.value?(p(),y("div",ia,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Oe.value,"data-source":I.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":i=>({onClick:()=>Te(i)})},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",sa,u(m.id),1)):f("",!0),i.key==="name"?(p(),y("a",ra,u(m.name),1)):f("",!0),i.key==="owner"?(p(),y("span",ua,u(m.owner),1)):f("",!0),i.key==="description"?(p(),y("span",da,u(m.description),1)):f("",!0),i.key==="memberCount"?(p(),w(v,{key:4,color:"blue"},{default:s(()=>[b(u(m.memberCount),1)]),_:2},1024)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.orgs.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination","custom-row"])),n(B,{open:le.value,"onUpdate:open":a[1]||(a[1]=i=>le.value=i),title:o(e)("organization.orgs.detailTitle",{name:h.value.name||""}),footer:null,width:"640px"},{default:s(()=>[ie.value?(p(),y("div",pa,[n(c)])):(p(),y("div",ca,[n(Ke,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:s(()=>[n(j,{label:o(e)("organization.orgs.detailLabels.id")},{default:s(()=>[O("span",ma,u(h.value.id),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.name")},{default:s(()=>[b(u(h.value.name),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.owner")},{default:s(()=>[b(u(h.value.owner),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.description")},{default:s(()=>[b(u(h.value.description||"-"),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.memberCount")},{default:s(()=>[b(u(h.value.memberCount),1)]),_:1},8,["label"]),h.value.createdAt?(p(),w(j,{key:0,label:o(e)("organization.orgs.detailLabels.createdAt")},{default:s(()=>[b(u(h.value.createdAt),1)]),_:1},8,["label"])):f("",!0)]),_:1}),L.value?(p(),y("pre",ga,u(L.value),1)):f("",!0)]))]),_:1},8,["open","title"]),n(B,{open:D.value,"onUpdate:open":a[4]||(a[4]=i=>D.value=i),title:o(e)("organization.orgs.createTitle"),"confirm-loading":ne.value,onOk:Le,"ok-text":o(e)("organization.orgs.createOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.orgs.nameLabel"),required:""},{default:s(()=>[n(C,{value:U.value,"onUpdate:value":a[2]||(a[2]=i=>U.value=i),placeholder:o(e)("organization.orgs.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.orgs.descriptionLabel")},{default:s(()=>[n(C,{value:V.value,"onUpdate:value":a[3]||(a[3]=i=>V.value=i),placeholder:o(e)("organization.orgs.descriptionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"members"},{tab:s(()=>[n(o(we)),b(" "+u(o(e)("organization.tabs.members")),1)]),default:s(()=>[O("div",va,[n(be,{value:z.value,"onUpdate:value":a[5]||(a[5]=i=>z.value=i),placeholder:o(e)("organization.members.selectPlaceholder"),style:{width:"280px"},options:ze.value,onChange:Ue},null,8,["value","placeholder","options"]),n(t,{type:"primary",disabled:!z.value,onClick:a[6]||(a[6]=i=>K.value=!0)},{icon:s(()=>[n(o(we))]),default:s(()=>[b(" "+u(o(e)("organization.members.inviteButton")),1)]),_:1},8,["disabled"])]),se.value?(p(),y("div",ya,[n(c,{size:"large"})])):z.value?(p(),w(ee,{key:1,columns:Ae.value,"data-source":re.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="userId"?(p(),y("span",fa,u(m.userId),1)):f("",!0),i.key==="name"?(p(),y("span",ba,u(m.name),1)):f("",!0),i.key==="role"?(p(),w(v,{key:2,color:Fe(m.role)},{default:s(()=>[b(u(m.role),1)]),_:2},1032,["color"])):f("",!0),i.key==="joinedAt"?(p(),y("span",_a,u(m.joinedAt),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyMembers")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])):(p(),w(R,{key:2,description:o(e)("organization.members.selectFirst"),style:{padding:"60px 0"}},null,8,["description"])),z.value?(p(),y(xe,{key:3},[O("div",za,[O("h3",xa,u(o(e)("organization.members.teamsTitle")),1),n(t,{size:"small",onClick:a[7]||(a[7]=i=>E.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.members.createTeamButton")),1)]),_:1})]),ue.value?(p(),y("div",ka,[n(c)])):(p(),w(ee,{key:1,columns:$e.value,"data-source":de.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="name"?(p(),y("span",wa,u(m.name),1)):f("",!0),i.key==="description"?(p(),y("span",ha,u(m.description),1)):f("",!0),i.key==="lead"?(p(),y("span",Ca,u(m.lead),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyTeams")},null,8,["description"])]),_:1},8,["columns","data-source"]))],64)):f("",!0),n(B,{open:K.value,"onUpdate:open":a[11]||(a[11]=i=>K.value=i),title:o(e)("organization.members.inviteTitle"),"confirm-loading":pe.value,onOk:Pe,"ok-text":o(e)("organization.members.inviteOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.userIdLabel"),required:""},{default:s(()=>[n(C,{value:q.value,"onUpdate:value":a[8]||(a[8]=i=>q.value=i),placeholder:o(e)("organization.members.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.nameLabel")},{default:s(()=>[n(C,{value:W.value,"onUpdate:value":a[9]||(a[9]=i=>W.value=i),placeholder:o(e)("organization.members.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.roleLabel")},{default:s(()=>[n(be,{value:J.value,"onUpdate:value":a[10]||(a[10]=i=>J.value=i),options:je.value},null,8,["value","options"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),n(B,{open:E.value,"onUpdate:open":a[15]||(a[15]=i=>E.value=i),title:o(e)("organization.members.createTeamTitle"),"confirm-loading":ce.value,onOk:Ne,"ok-text":o(e)("organization.members.createTeamOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.teamNameLabel"),required:""},{default:s(()=>[n(C,{value:P.value,"onUpdate:value":a[12]||(a[12]=i=>P.value=i),placeholder:o(e)("organization.members.teamNamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamDescLabel")},{default:s(()=>[n(C,{value:Q.value,"onUpdate:value":a[13]||(a[13]=i=>Q.value=i),placeholder:o(e)("organization.members.teamDescPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamLeadLabel")},{default:s(()=>[n(C,{value:G.value,"onUpdate:value":a[14]||(a[14]=i=>G.value=i),placeholder:o(e)("organization.members.teamLeadPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"approvals"},{tab:s(()=>[n(o(ta)),b(" "+u(o(e)("organization.tabs.approvals")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[16]||(a[16]=i=>X.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.submitButton")),1)]),_:1})]),_:1}),ve.value?(p(),y("div",Oa,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Me.value,"data-source":H.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",Ia,u(m.id),1)):f("",!0),i.key==="title"?(p(),y("span",La,u(m.title),1)):f("",!0),i.key==="type"?(p(),w(v,{key:2,color:"blue"},{default:s(()=>[b(u(m.type),1)]),_:2},1024)):f("",!0),i.key==="requester"?(p(),y("span",Ta,u(m.requester),1)):f("",!0),i.key==="status"?(p(),w(v,{key:4,color:Se(m.status)},{default:s(()=>[b(u(m.status),1)]),_:2},1032,["color"])):f("",!0),i.key==="actions"?(p(),y(xe,{key:5},[(m.status||"").toLowerCase()==="pending"?(p(),w(r,{key:0},{default:s(()=>[n(t,{type:"primary",size:"small",loading:m._approving,onClick:ke(Ee=>Be(m),["stop"])},{icon:s(()=>[n(o(ea))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.approve")),1)]),_:1},8,["loading","onClick"]),n(t,{danger:"",size:"small",loading:m._rejecting,onClick:ke(Ee=>De(m),["stop"])},{icon:s(()=>[n(o(aa))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.reject")),1)]),_:1},8,["loading","onClick"])]),_:2},1024)):(p(),y("span",ja,"-"))],64)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.approvals.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),n(B,{open:X.value,"onUpdate:open":a[21]||(a[21]=i=>X.value=i),title:o(e)("organization.approvals.submitTitle"),"confirm-loading":ye.value,onOk:Ve,"ok-text":o(e)("organization.approvals.submitOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.approvals.orgLabel"),required:""},{default:s(()=>[n(be,{value:N.value,"onUpdate:value":a[17]||(a[17]=i=>N.value=i),placeholder:o(e)("organization.approvals.orgPlaceholder"),options:ze.value},null,8,["value","placeholder","options"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.titleLabel"),required:""},{default:s(()=>[n(C,{value:M.value,"onUpdate:value":a[18]||(a[18]=i=>M.value=i),placeholder:o(e)("organization.approvals.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.typeLabel")},{default:s(()=>[n(C,{value:Y.value,"onUpdate:value":a[19]||(a[19]=i=>Y.value=i),placeholder:o(e)("organization.approvals.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.descLabel")},{default:s(()=>[n(We,{value:Z.value,"onUpdate:value":a[20]||(a[20]=i=>Z.value=i),placeholder:o(e)("organization.approvals.descPlaceholder"),rows:3},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}}},Pa=Ge(Aa,[["__scopeId","data-v-5c758732"]]);export{Pa as default};
|
|
1
|
+
import{o as Ee,M as y,R as O,P as u,u as o,c as n,N as s,r as d,K as _,L as p,O as b,Q as w,S as f,F as xe,a1 as ke,f as A}from"./vendor-M5lGV-wr.js";import{_ as Ge,b as He,u as Xe,d as g}from"./index-B_juAGfN.js";import{R as Ye,ar as _e,Q as Ze,aJ as we,ah as ea,b as aa,a7 as ta}from"./icons-BFHq5fEF.js";const oa={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},na={class:"page-title"},la={class:"page-sub"},ia={key:0,style:{"text-align":"center",padding:"60px"}},sa={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ra={key:1,style:{color:"#1677ff"}},ua={key:2,style:{color:"var(--text-secondary)"}},da={key:3,style:{color:"var(--text-muted)","font-size":"12px"}},pa={key:0,style:{"text-align":"center",padding:"40px"}},ca={key:1},ma={style:{"font-family":"monospace",color:"#ccc"}},ga={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"}},va={style:{"margin-bottom":"16px",display:"flex","align-items":"center",gap:"12px"}},ya={key:0,style:{"text-align":"center",padding:"60px"}},fa={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ba={key:1,style:{color:"#e0e0e0"}},_a={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},za={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},xa={style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},ka={key:0,style:{"text-align":"center",padding:"40px"}},wa={key:0,style:{color:"#e0e0e0"}},ha={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Ca={key:2,style:{color:"var(--text-secondary)"}},Oa={key:0,style:{"text-align":"center",padding:"60px"}},Ia={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},La={key:1,style:{color:"#e0e0e0"}},Ta={key:3,style:{color:"var(--text-secondary)"}},ja={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Aa={__name:"Organization",setup($a){const{t:e}=He(),k=Xe(),$=d("orgs"),te=d(!1);async function he(){te.value=!0;try{$.value==="orgs"?await T():$.value==="members"?(await T(),z.value&&(await me(),await ge())):$.value==="approvals"&&await S()}finally{te.value=!1}}function Ce(l){l==="orgs"&&I.value.length===0&&T(),l==="members"&&I.value.length===0&&T(),l==="approvals"&&H.value.length===0&&S()}function U(l){try{const a=l.trim(),t=a.indexOf("["),r=a.indexOf("{"),c=t>=0&&(r<0||t<r)?t:r;return c>=0?JSON.parse(a.slice(c)):null}catch{return null}}const oe=d(!1),I=d([]),D=d(!1),ne=d(!1),F=d(""),V=d(""),le=d(!1),ie=d(!1),h=d({}),L=d(""),Oe=A(()=>[{title:e("organization.orgColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:e("organization.orgColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:e("organization.orgColumns.owner"),key:"owner",dataIndex:"owner",width:"140px"},{title:e("organization.orgColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:e("organization.orgColumns.memberCount"),key:"memberCount",dataIndex:"memberCount",width:"90px"}]),ze=A(()=>I.value.map(l=>({label:l.name,value:l.id})));async function T(){oe.value=!0;try{const{output:l}=await k.execute("org list --json",15e3),a=U(l);Array.isArray(a)?I.value=a.map((t,r)=>({key:t.id||r,id:t.id||"-",name:t.name||"-",owner:t.owner||"-",description:t.description||"",memberCount:t.memberCount??t.members??0})):I.value=Ie(l)}catch(l){g.error(e("organization.messages.loadOrgsFailed",{err:l.message}))}finally{oe.value=!1}}function Ie(l){const a=[],t=l.split(`
|
|
2
|
+
`);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ org/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,id:v[0]||"-",name:v[1]||"-",owner:v[2]||"-",description:v[3]||"",memberCount:parseInt(v[4],10)||0})}return a}async function Le(){if(!F.value.trim()){g.warning(e("organization.messages.orgNameRequired"));return}ne.value=!0;try{const l=F.value.trim().replace(/"/g,'\\"'),a=V.value.trim().replace(/"/g,'\\"');let t=`org create "${l}" --json`;a&&(t=`org create "${l}" --description "${a}" --json`);const{output:r}=await k.execute(t,2e4);r.includes("error")||r.includes("失败")?g.error(e("organization.messages.orgCreateFailed",{err:r.slice(0,120)})):(g.success(e("organization.messages.orgCreateOk")),D.value=!1,F.value="",V.value="",await T())}catch(l){g.error(e("organization.messages.orgCreateFailed",{err:l.message}))}finally{ne.value=!1}}async function Te(l){h.value={...l},L.value="",le.value=!0,ie.value=!0;try{const{output:a}=await k.execute(`org show ${l.id} --json`,15e3),t=U(a);t&&typeof t=="object"?(h.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||""},L.value=JSON.stringify(t,null,2)):L.value=a}catch(a){L.value=e("organization.messages.loadDetailFailed",{err:a.message})}finally{ie.value=!1}}const z=d(null),se=d(!1),re=d([]),ue=d(!1),de=d([]),J=d(!1),pe=d(!1),q=d(""),K=d(""),W=d("member"),Q=d(!1),ce=d(!1),P=d(""),E=d(""),G=d(""),je=A(()=>[{label:e("organization.members.roleAdmin"),value:"admin"},{label:e("organization.members.roleMember"),value:"member"},{label:e("organization.members.roleViewer"),value:"viewer"}]),Ae=A(()=>[{title:e("organization.memberColumns.userId"),key:"userId",dataIndex:"userId",width:"160px"},{title:e("organization.memberColumns.name"),key:"name",dataIndex:"name",width:"140px"},{title:e("organization.memberColumns.role"),key:"role",dataIndex:"role",width:"100px"},{title:e("organization.memberColumns.joinedAt"),key:"joinedAt",dataIndex:"joinedAt",width:"180px"}]),$e=A(()=>[{title:e("organization.teamColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:e("organization.teamColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:e("organization.teamColumns.lead"),key:"lead",dataIndex:"lead",width:"140px"}]);function Ue(l){return{admin:"gold",member:"blue",viewer:"default",owner:"purple"}[(l||"").toLowerCase()]||"default"}async function Fe(){z.value&&await Promise.all([me(),ge()])}async function me(){if(z.value){se.value=!0;try{const{output:l}=await k.execute(`org members ${z.value} --json`,15e3),a=U(l);Array.isArray(a)?re.value=a.map((t,r)=>({key:t.userId||t.id||r,userId:t.userId||t.id||"-",name:t.name||t.displayName||"-",role:t.role||"member",joinedAt:t.joinedAt||t.joined||"-"})):re.value=qe(l)}catch(l){g.error(e("organization.messages.loadMembersFailed",{err:l.message}))}finally{se.value=!1}}}function qe(l){const a=[],t=l.split(`
|
|
3
|
+
`);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ member/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,userId:v[0]||"-",name:v[1]||"-",role:v[2]||"member",joinedAt:v[3]||"-"})}return a}async function ge(){if(z.value){ue.value=!0;try{const{output:l}=await k.execute(`org teams ${z.value} --json`,15e3),a=U(l);Array.isArray(a)?de.value=a.map((t,r)=>({key:t.id||t.name||r,name:t.name||"-",description:t.description||"",lead:t.lead||t.leader||"-"})):de.value=[]}catch(l){g.error(e("organization.messages.loadTeamsFailed",{err:l.message}))}finally{ue.value=!1}}}async function Pe(){if(!q.value.trim()){g.warning(e("organization.messages.userIdRequired"));return}pe.value=!0;try{const l=q.value.trim().replace(/"/g,'\\"'),a=K.value.trim().replace(/"/g,'\\"');let t=`org invite ${z.value} ${l} --role ${W.value}`;a&&(t+=` --name "${a}"`);const{output:r}=await k.execute(t,2e4);r.includes("error")||r.includes("失败")?g.error(e("organization.messages.inviteFailed",{err:r.slice(0,120)})):(g.success(e("organization.messages.inviteOk")),J.value=!1,q.value="",K.value="",W.value="member",await me())}catch(l){g.error(e("organization.messages.inviteFailed",{err:l.message}))}finally{pe.value=!1}}async function Ne(){if(!P.value.trim()){g.warning(e("organization.messages.teamNameRequired"));return}ce.value=!0;try{const l=P.value.trim().replace(/"/g,'\\"'),a=E.value.trim().replace(/"/g,'\\"'),t=G.value.trim().replace(/"/g,'\\"');let r=`org teams ${z.value} create "${l}"`;a&&(r+=` --description "${a}"`),t&&(r+=` --lead "${t}"`);const{output:c}=await k.execute(r,2e4);c.includes("error")||c.includes("失败")?g.error(e("organization.messages.teamCreateFailed",{err:c.slice(0,120)})):(g.success(e("organization.messages.teamCreateOk")),Q.value=!1,P.value="",E.value="",G.value="",await ge())}catch(l){g.error(e("organization.messages.teamCreateFailed",{err:l.message}))}finally{ce.value=!1}}const ve=d(!1),H=d([]),X=d(!1),ye=d(!1),N=d(null),M=d(""),Y=d(""),Z=d(""),Me=A(()=>[{title:e("organization.approvalColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:e("organization.approvalColumns.title"),key:"title",dataIndex:"title",width:"200px"},{title:e("organization.approvalColumns.type"),key:"type",dataIndex:"type",width:"120px"},{title:e("organization.approvalColumns.requester"),key:"requester",dataIndex:"requester",width:"140px"},{title:e("organization.approvalColumns.status"),key:"status",dataIndex:"status",width:"100px"},{title:e("organization.approvalColumns.actions"),key:"actions",width:"180px"}]);function Se(l){return{pending:"orange",approved:"green",rejected:"red"}[(l||"").toLowerCase()]||"default"}async function S(){ve.value=!0;try{const{output:l}=await k.execute("org approvals --json",15e3),a=U(l);Array.isArray(a)?H.value=a.map((t,r)=>({key:t.id||r,id:t.id||"-",title:t.title||"-",type:t.type||"-",requester:t.requester||t.requestedBy||"-",status:t.status||"pending",_approving:!1,_rejecting:!1})):H.value=Re(l)}catch(l){g.error(e("organization.messages.loadApprovalsFailed",{err:l.message}))}finally{ve.value=!1}}function Re(l){const a=[],t=l.split(`
|
|
4
|
+
`);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ approval/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=4&&a.push({key:a.length,id:v[0]||"-",title:v[1]||"-",type:v[2]||"-",requester:v[3]||"-",status:v[4]||"pending",_approving:!1,_rejecting:!1})}return a}async function Be(l){l._approving=!0;try{const{output:a}=await k.execute(`org approve ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.approveFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.approveOk")),await S())}catch(a){g.error(e("organization.messages.approveFailed",{err:a.message}))}finally{l._approving=!1}}async function De(l){l._rejecting=!0;try{const{output:a}=await k.execute(`org reject ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.rejectFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.rejectOk")),await S())}catch(a){g.error(e("organization.messages.rejectFailed",{err:a.message}))}finally{l._rejecting=!1}}async function Ve(){if(!N.value){g.warning(e("organization.messages.orgRequired"));return}if(!M.value.trim()){g.warning(e("organization.messages.approvalTitleRequired"));return}ye.value=!0;try{const l=M.value.trim().replace(/"/g,'\\"'),a=Y.value.trim().replace(/"/g,'\\"'),t=Z.value.trim().replace(/"/g,'\\"');let r=`org approve --submit --org ${N.value} --title "${l}"`;a&&(r+=` --type "${a}"`),t&&(r+=` --description "${t}"`);const{output:c}=await k.execute(r,2e4);c.includes("error")||c.includes("失败")?g.error(e("organization.messages.submitFailed",{err:c.slice(0,120)})):(g.success(e("organization.messages.submitOk")),X.value=!1,N.value=null,M.value="",Y.value="",Z.value="",await S())}catch(l){g.error(e("organization.messages.submitFailed",{err:l.message}))}finally{ye.value=!1}}return Ee(()=>{T()}),(l,a)=>{const t=_("a-button"),r=_("a-space"),c=_("a-spin"),v=_("a-tag"),R=_("a-empty"),ee=_("a-table"),j=_("a-descriptions-item"),Je=_("a-descriptions"),B=_("a-modal"),C=_("a-input"),x=_("a-form-item"),ae=_("a-form"),fe=_("a-tab-pane"),be=_("a-select"),Ke=_("a-textarea"),We=_("a-tabs");return p(),y("div",null,[O("div",oa,[O("div",null,[O("h2",na,u(o(e)("organization.title")),1),O("p",la,u(o(e)("organization.subtitle")),1)]),n(t,{type:"primary",ghost:"",loading:te.value,onClick:he},{icon:s(()=>[n(o(Ye))]),default:s(()=>[b(" "+u(o(e)("organization.refresh")),1)]),_:1},8,["loading"])]),n(We,{activeKey:$.value,"onUpdate:activeKey":a[22]||(a[22]=i=>$.value=i),type:"card",onChange:Ce},{default:s(()=>[n(fe,{key:"orgs"},{tab:s(()=>[n(o(Ze)),b(" "+u(o(e)("organization.tabs.orgs")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[0]||(a[0]=i=>D.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.orgs.createButton")),1)]),_:1})]),_:1}),oe.value?(p(),y("div",ia,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Oe.value,"data-source":I.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":i=>({onClick:()=>Te(i)})},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",sa,u(m.id),1)):f("",!0),i.key==="name"?(p(),y("a",ra,u(m.name),1)):f("",!0),i.key==="owner"?(p(),y("span",ua,u(m.owner),1)):f("",!0),i.key==="description"?(p(),y("span",da,u(m.description),1)):f("",!0),i.key==="memberCount"?(p(),w(v,{key:4,color:"blue"},{default:s(()=>[b(u(m.memberCount),1)]),_:2},1024)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.orgs.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination","custom-row"])),n(B,{open:le.value,"onUpdate:open":a[1]||(a[1]=i=>le.value=i),title:o(e)("organization.orgs.detailTitle",{name:h.value.name||""}),footer:null,width:"640px"},{default:s(()=>[ie.value?(p(),y("div",pa,[n(c)])):(p(),y("div",ca,[n(Je,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:s(()=>[n(j,{label:o(e)("organization.orgs.detailLabels.id")},{default:s(()=>[O("span",ma,u(h.value.id),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.name")},{default:s(()=>[b(u(h.value.name),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.owner")},{default:s(()=>[b(u(h.value.owner),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.description")},{default:s(()=>[b(u(h.value.description||"-"),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.memberCount")},{default:s(()=>[b(u(h.value.memberCount),1)]),_:1},8,["label"]),h.value.createdAt?(p(),w(j,{key:0,label:o(e)("organization.orgs.detailLabels.createdAt")},{default:s(()=>[b(u(h.value.createdAt),1)]),_:1},8,["label"])):f("",!0)]),_:1}),L.value?(p(),y("pre",ga,u(L.value),1)):f("",!0)]))]),_:1},8,["open","title"]),n(B,{open:D.value,"onUpdate:open":a[4]||(a[4]=i=>D.value=i),title:o(e)("organization.orgs.createTitle"),"confirm-loading":ne.value,onOk:Le,"ok-text":o(e)("organization.orgs.createOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.orgs.nameLabel"),required:""},{default:s(()=>[n(C,{value:F.value,"onUpdate:value":a[2]||(a[2]=i=>F.value=i),placeholder:o(e)("organization.orgs.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.orgs.descriptionLabel")},{default:s(()=>[n(C,{value:V.value,"onUpdate:value":a[3]||(a[3]=i=>V.value=i),placeholder:o(e)("organization.orgs.descriptionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"members"},{tab:s(()=>[n(o(we)),b(" "+u(o(e)("organization.tabs.members")),1)]),default:s(()=>[O("div",va,[n(be,{value:z.value,"onUpdate:value":a[5]||(a[5]=i=>z.value=i),placeholder:o(e)("organization.members.selectPlaceholder"),style:{width:"280px"},options:ze.value,onChange:Fe},null,8,["value","placeholder","options"]),n(t,{type:"primary",disabled:!z.value,onClick:a[6]||(a[6]=i=>J.value=!0)},{icon:s(()=>[n(o(we))]),default:s(()=>[b(" "+u(o(e)("organization.members.inviteButton")),1)]),_:1},8,["disabled"])]),se.value?(p(),y("div",ya,[n(c,{size:"large"})])):z.value?(p(),w(ee,{key:1,columns:Ae.value,"data-source":re.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="userId"?(p(),y("span",fa,u(m.userId),1)):f("",!0),i.key==="name"?(p(),y("span",ba,u(m.name),1)):f("",!0),i.key==="role"?(p(),w(v,{key:2,color:Ue(m.role)},{default:s(()=>[b(u(m.role),1)]),_:2},1032,["color"])):f("",!0),i.key==="joinedAt"?(p(),y("span",_a,u(m.joinedAt),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyMembers")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])):(p(),w(R,{key:2,description:o(e)("organization.members.selectFirst"),style:{padding:"60px 0"}},null,8,["description"])),z.value?(p(),y(xe,{key:3},[O("div",za,[O("h3",xa,u(o(e)("organization.members.teamsTitle")),1),n(t,{size:"small",onClick:a[7]||(a[7]=i=>Q.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.members.createTeamButton")),1)]),_:1})]),ue.value?(p(),y("div",ka,[n(c)])):(p(),w(ee,{key:1,columns:$e.value,"data-source":de.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="name"?(p(),y("span",wa,u(m.name),1)):f("",!0),i.key==="description"?(p(),y("span",ha,u(m.description),1)):f("",!0),i.key==="lead"?(p(),y("span",Ca,u(m.lead),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyTeams")},null,8,["description"])]),_:1},8,["columns","data-source"]))],64)):f("",!0),n(B,{open:J.value,"onUpdate:open":a[11]||(a[11]=i=>J.value=i),title:o(e)("organization.members.inviteTitle"),"confirm-loading":pe.value,onOk:Pe,"ok-text":o(e)("organization.members.inviteOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.userIdLabel"),required:""},{default:s(()=>[n(C,{value:q.value,"onUpdate:value":a[8]||(a[8]=i=>q.value=i),placeholder:o(e)("organization.members.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.nameLabel")},{default:s(()=>[n(C,{value:K.value,"onUpdate:value":a[9]||(a[9]=i=>K.value=i),placeholder:o(e)("organization.members.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.roleLabel")},{default:s(()=>[n(be,{value:W.value,"onUpdate:value":a[10]||(a[10]=i=>W.value=i),options:je.value},null,8,["value","options"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),n(B,{open:Q.value,"onUpdate:open":a[15]||(a[15]=i=>Q.value=i),title:o(e)("organization.members.createTeamTitle"),"confirm-loading":ce.value,onOk:Ne,"ok-text":o(e)("organization.members.createTeamOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.teamNameLabel"),required:""},{default:s(()=>[n(C,{value:P.value,"onUpdate:value":a[12]||(a[12]=i=>P.value=i),placeholder:o(e)("organization.members.teamNamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamDescLabel")},{default:s(()=>[n(C,{value:E.value,"onUpdate:value":a[13]||(a[13]=i=>E.value=i),placeholder:o(e)("organization.members.teamDescPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamLeadLabel")},{default:s(()=>[n(C,{value:G.value,"onUpdate:value":a[14]||(a[14]=i=>G.value=i),placeholder:o(e)("organization.members.teamLeadPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"approvals"},{tab:s(()=>[n(o(ta)),b(" "+u(o(e)("organization.tabs.approvals")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[16]||(a[16]=i=>X.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.submitButton")),1)]),_:1})]),_:1}),ve.value?(p(),y("div",Oa,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Me.value,"data-source":H.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",Ia,u(m.id),1)):f("",!0),i.key==="title"?(p(),y("span",La,u(m.title),1)):f("",!0),i.key==="type"?(p(),w(v,{key:2,color:"blue"},{default:s(()=>[b(u(m.type),1)]),_:2},1024)):f("",!0),i.key==="requester"?(p(),y("span",Ta,u(m.requester),1)):f("",!0),i.key==="status"?(p(),w(v,{key:4,color:Se(m.status)},{default:s(()=>[b(u(m.status),1)]),_:2},1032,["color"])):f("",!0),i.key==="actions"?(p(),y(xe,{key:5},[(m.status||"").toLowerCase()==="pending"?(p(),w(r,{key:0},{default:s(()=>[n(t,{type:"primary",size:"small",loading:m._approving,onClick:ke(Qe=>Be(m),["stop"])},{icon:s(()=>[n(o(ea))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.approve")),1)]),_:1},8,["loading","onClick"]),n(t,{danger:"",size:"small",loading:m._rejecting,onClick:ke(Qe=>De(m),["stop"])},{icon:s(()=>[n(o(aa))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.reject")),1)]),_:1},8,["loading","onClick"])]),_:2},1024)):(p(),y("span",ja,"-"))],64)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.approvals.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),n(B,{open:X.value,"onUpdate:open":a[21]||(a[21]=i=>X.value=i),title:o(e)("organization.approvals.submitTitle"),"confirm-loading":ye.value,onOk:Ve,"ok-text":o(e)("organization.approvals.submitOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.approvals.orgLabel"),required:""},{default:s(()=>[n(be,{value:N.value,"onUpdate:value":a[17]||(a[17]=i=>N.value=i),placeholder:o(e)("organization.approvals.orgPlaceholder"),options:ze.value},null,8,["value","placeholder","options"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.titleLabel"),required:""},{default:s(()=>[n(C,{value:M.value,"onUpdate:value":a[18]||(a[18]=i=>M.value=i),placeholder:o(e)("organization.approvals.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.typeLabel")},{default:s(()=>[n(C,{value:Y.value,"onUpdate:value":a[19]||(a[19]=i=>Y.value=i),placeholder:o(e)("organization.approvals.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.descLabel")},{default:s(()=>[n(Ke,{value:Z.value,"onUpdate:value":a[20]||(a[20]=i=>Z.value=i),placeholder:o(e)("organization.approvals.descPlaceholder"),rows:3},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}}},Pa=Ge(Aa,[["__scopeId","data-v-5c758732"]]);export{Pa as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{P,f as u,i as H,h as D}from"./index-
|
|
1
|
+
import{P,f as u,i as H,h as D}from"./index-B_juAGfN.js";import{R as ee}from"./index-DRNxWV3i.js";import{i as ge,f as c,d as k,p as pe,x as be,c as v,r as he,w as Oe,s as C}from"./vendor-M5lGV-wr.js";const te=Symbol("OverflowContextProviderKey"),X=k({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup(e,o){let{slots:a}=o;return pe(te,c(()=>e.value)),()=>{var t;return(t=a.default)===null||t===void 0?void 0:t.call(a)}}}),Se=()=>ge(te,c(()=>null));var xe=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};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,o){let{slots:a,expose:t}=o;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=a.default)===null||i===void 0?void 0:i.call(a),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,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};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,o){let{slots:a,attrs:t}=o;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=a.default)===null||p===void 0?void 0:p.call(a)]})}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),a)]})}}});var we=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};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,o){let{attrs:a,emit:t,slots:n}=o;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,r)=>{var s;return typeof e.itemKey=="function"?e.itemKey(l):(s=e.itemKey&&l?.[e.itemKey])!==null&&s!==void 0?s:r},B=c(()=>e.renderItem||(l=>l)),A=(l,r)=>{z.value=l,r||(V.value=l<e.data.length-1,t("visibleChange",l))},ae=(l,r)=>{b.value=r.clientWidth},q=(l,r)=>{const s=new Map(O.value);r===null?s.delete(l):s.set(l,r),O.value=s},re=(l,r)=>{w.value=m.value,m.value=r},oe=(l,r)=>{y.value=r},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 r=h.value.length,s=r-1;if(!r){A(0),f.value=null;return}for(let g=0;g<r;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:r,renderRawItem:s,renderRawRest:g,renderRest:F,prefixCls:ie="rc-overflow",suffix:J,component:se="div",id:ue,onMousedown:de}=e,{class:ce,style:ve}=a,fe=we(a,["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:r,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:re,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:oe,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:ae},{default:ye})}}});Y.Item=Ce;Y.RESPONSIVE=ne;Y.INVALIDATE=le;export{Y as O};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as ve,b as ye,u as me}from"./index-
|
|
2
|
-
`).filter(_=>_.trim()),u=[];for(const _ of c){const b=_.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(b){u.push({id:b[1],name:b[2].trim(),connected:/connected|online/i.test(b[3])});continue}const k=_.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(k){const O=k[2].trim();u.push({id:k[1],name:O||k[1].slice(0,12),connected:/connected|online/i.test(O)})}}return u}const E=r(!1),R=r(!1),$=r(""),P=r("");async function G(){if($.value.trim()){R.value=!0,P.value="";try{const{output:o}=await x.execute(`p2p pair "${$.value.trim()}"`,3e4);P.value=o,await
|
|
1
|
+
import{_ as ve,b as ye,u as me}from"./index-B_juAGfN.js";import{R as fe,M as _e,ak as te,ar as ge,p as B}from"./icons-BFHq5fEF.js";import{o as be,M as v,R as d,P as l,u as t,c as a,N as n,r,K as p,L as i,O as y,Q as w,S as m,F as ae,Y as xe,f as he}from"./vendor-M5lGV-wr.js";const ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},we={class:"page-title"},Se={class:"page-sub"},Pe={key:0,style:{"text-align":"center",padding:"30px"}},Ce={key:2,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Le={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ze={key:0,style:{"text-align":"center",padding:"30px"}},Oe={key:0,style:{"margin-top":"16px"}},Me={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Be={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},Fe={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Te={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},$e={key:0,style:{"margin-top":"12px"}},Ne={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},De={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Ee={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Re={key:0,style:{"margin-top":"12px"}},Ue={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},Ve={__name:"P2P",setup(Ie){const{t:e}=ye(),x=me(),F=r(!1),T=r(""),S=r([]),oe=he(()=>[{title:e("p2p.peerColumns.name"),key:"name"},{title:e("p2p.peerColumns.id"),key:"id"},{title:e("p2p.peerColumns.status"),key:"status"},{title:e("p2p.peerColumns.action"),key:"action",width:100}]);async function q(){F.value=!0,T.value="";try{const{output:o}=await x.execute("p2p peers",15e3);S.value=ne(o)}catch(o){T.value=e("p2p.messages.loadPeersFailed",{err:o.message})}finally{F.value=!1}}function ne(o){if(!o||o.includes("No peers")||o.includes("no peers"))return[];const c=o.split(`
|
|
2
|
+
`).filter(_=>_.trim()),u=[];for(const _ of c){const b=_.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(b){u.push({id:b[1],name:b[2].trim(),connected:/connected|online/i.test(b[3])});continue}const k=_.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(k){const O=k[2].trim();u.push({id:k[1],name:O||k[1].slice(0,12),connected:/connected|online/i.test(O)})}}return u}const E=r(!1),R=r(!1),$=r(""),P=r("");async function G(){if($.value.trim()){R.value=!0,P.value="";try{const{output:o}=await x.execute(`p2p pair "${$.value.trim()}"`,3e4);P.value=o,await q()}catch(o){P.value=e("p2p.messages.pairFailed",{err:o.message})}finally{R.value=!1}}}const N=r(!1),U=r(!1),C=r(void 0),L=r(""),h=r("");function le(o){C.value=o.id,L.value="",h.value="",N.value=!0}async function H(){if(!(!C.value||!L.value.trim())){U.value=!0,h.value="";try{const{output:o}=await x.execute(`p2p send ${C.value} "${L.value.trim()}"`,15e3);h.value=o||e("p2p.send.messageDefault")}catch(o){h.value=e("p2p.messages.sendFailed",{err:o.message})}finally{U.value=!1}}}const V=r(!1),D=r(""),z=r(!1),I=r(""),Q=r(0),J=r(""),f=r(""),j=r(!1),A=r(!1);async function K(){V.value=!0,D.value="";try{const{output:o}=await x.execute("sync status",15e3);se(o)}catch(o){D.value=e("p2p.messages.loadSyncFailed",{err:o.message})}finally{V.value=!1}}function se(o){if(!o){I.value=e("p2p.sync.unknown");return}z.value=/synced|online|up.to.date/i.test(o),I.value=z.value?e("p2p.sync.synced"):e("p2p.sync.notSynced");const c=o.match(/pending[:\s]+(\d+)/i);Q.value=c?parseInt(c[1]):0;const u=o.match(/last[:\s]+(.+)/i);u&&(J.value=u[1].trim())}async function re(){j.value=!0,f.value="";try{const{output:o}=await x.execute("sync push",3e4);f.value=o||e("p2p.sync.pushDefault"),await K()}catch(o){f.value=e("p2p.messages.pushFailed",{err:o.message})}finally{j.value=!1}}async function ce(){A.value=!0,f.value="";try{const{output:o}=await x.execute("sync pull",3e4);f.value=o||e("p2p.sync.pullDefault"),await K()}catch(o){f.value=e("p2p.messages.pullFailed",{err:o.message})}finally{A.value=!1}}async function X(){await Promise.all([q(),K()])}return be(X),(o,c)=>{const u=p("a-button"),_=p("a-space"),b=p("a-spin"),k=p("a-empty"),O=p("a-tag"),ie=p("a-table"),M=p("a-card"),W=p("a-statistic"),Y=p("a-col"),pe=p("a-row"),Z=p("a-input"),ee=p("a-modal"),ue=p("a-select-option"),de=p("a-select");return i(),v("div",null,[d("div",ke,[d("div",null,[d("h2",we,l(t(e)("p2p.title")),1),d("p",Se,l(t(e)("p2p.subtitle")),1)]),a(u,{type:"primary",ghost:"",loading:F.value,onClick:X},{icon:n(()=>[a(t(fe))]),default:n(()=>[y(" "+l(t(e)("p2p.refresh")),1)]),_:1},8,["loading"])]),a(M,{title:t(e)("p2p.peers.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[a(_,null,{default:n(()=>[a(u,{size:"small",onClick:c[0]||(c[0]=s=>E.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(ge))]),default:n(()=>[y(" "+l(t(e)("p2p.peers.pairButton")),1)]),_:1}),a(u,{size:"small",onClick:c[1]||(c[1]=s=>N.value=!0),disabled:S.value.length===0,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(te))]),default:n(()=>[y(" "+l(t(e)("p2p.peers.sendButton")),1)]),_:1},8,["disabled"])]),_:1})]),default:n(()=>[F.value?(i(),v("div",Pe,[a(b)])):S.value.length===0?(i(),w(k,{key:1,description:t(e)("p2p.peers.emptyText")},null,8,["description"])):(i(),w(ie,{key:2,columns:oe.value,"data-source":S.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:s,record:g})=>[s.key==="status"?(i(),w(O,{key:0,color:g.connected?"green":"default"},{default:n(()=>[y(l(g.connected?t(e)("p2p.peers.online"):t(e)("p2p.peers.offline")),1)]),_:2},1032,["color"])):m("",!0),s.key==="name"?(i(),w(_,{key:1},{default:n(()=>[a(t(_e),{style:{color:"var(--text-muted)"}}),d("span",null,l(g.name||g.id),1)]),_:2},1024)):m("",!0),s.key==="id"?(i(),v("span",Ce,l(g.id.length>16?g.id.slice(0,16)+"...":g.id),1)):m("",!0),s.key==="action"?(i(),w(u,{key:3,size:"small",type:"link",onClick:Qe=>le(g)},{default:n(()=>[a(t(te)),y(" "+l(t(e)("p2p.peers.rowSend")),1)]),_:1},8,["onClick"])):m("",!0)]),_:1},8,["columns","data-source"])),T.value?(i(),v("div",Le,l(T.value),1)):m("",!0)]),_:1},8,["title"]),a(M,{title:t(e)("p2p.sync.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[a(O,{color:z.value?"green":"default"},{default:n(()=>[y(l(z.value?t(e)("p2p.sync.synced"):t(e)("p2p.sync.notSynced")),1)]),_:1},8,["color"])]),default:n(()=>[V.value?(i(),v("div",ze,[a(b)])):(i(),v(ae,{key:1},[a(pe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[a(Y,{xs:24,sm:8},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("p2p.sync.statusLabel"),value:I.value,"value-style":{color:z.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[a(t(B))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(Y,{xs:24,sm:8},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("p2p.sync.pendingLabel"),value:Q.value,"value-style":{color:Q.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[a(t(B))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(Y,{xs:24,sm:8},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("p2p.sync.lastSyncLabel"),value:J.value||t(e)("p2p.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[a(t(B))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),a(_,null,{default:n(()=>[a(u,{loading:j.value,onClick:re,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(B))]),default:n(()=>[y(" "+l(t(e)("p2p.sync.pushButton")),1)]),_:1},8,["loading"]),a(u,{loading:A.value,onClick:ce,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(B))]),default:n(()=>[y(" "+l(t(e)("p2p.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),f.value?(i(),v("div",Oe,[d("div",Me,l(t(e)("p2p.sync.outputLabel")),1),d("pre",Be,l(f.value),1)])):m("",!0)],64)),D.value?(i(),v("div",Fe,l(D.value),1)):m("",!0)]),_:1},8,["title"]),a(ee,{open:E.value,"onUpdate:open":c[3]||(c[3]=s=>E.value=s),title:t(e)("p2p.pair.title"),"confirm-loading":R.value,onOk:G,"ok-text":t(e)("p2p.pair.ok"),"cancel-text":t(e)("common.cancel")},{default:n(()=>[d("div",Te,l(t(e)("p2p.pair.intro")),1),a(Z,{value:$.value,"onUpdate:value":c[2]||(c[2]=s=>$.value=s),placeholder:t(e)("p2p.pair.placeholder"),onPressEnter:G},null,8,["value","placeholder"]),P.value?(i(),v("div",$e,[d("pre",Ne,l(P.value),1)])):m("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ee,{open:N.value,"onUpdate:open":c[6]||(c[6]=s=>N.value=s),title:t(e)("p2p.send.title"),"confirm-loading":U.value,onOk:H,"ok-text":t(e)("p2p.send.ok"),"cancel-text":t(e)("common.cancel")},{default:n(()=>[d("div",De,l(t(e)("p2p.send.targetLabel")),1),a(de,{value:C.value,"onUpdate:value":c[4]||(c[4]=s=>C.value=s),style:{width:"100%","margin-bottom":"16px"},placeholder:t(e)("p2p.send.targetPlaceholder")},{default:n(()=>[(i(!0),v(ae,null,xe(S.value,s=>(i(),w(ue,{key:s.id,value:s.id},{default:n(()=>[y(l(s.name||s.id),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"]),d("div",Ee,l(t(e)("p2p.send.messageLabel")),1),a(Z,{value:L.value,"onUpdate:value":c[5]||(c[5]=s=>L.value=s),placeholder:t(e)("p2p.send.messagePlaceholder"),onPressEnter:H},null,8,["value","placeholder"]),h.value?(i(),v("div",Re,[d("pre",Ue,l(h.value),1)])):m("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},We=ve(Ve,[["__scopeId","data-v-832d025d"]]);export{We as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as ue,u as ce,d as J}from"./index-
|
|
2
|
-
`);for(const p of o){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(""),M=v(!1),k=v(null),X=["note:read","note:write","admin:*","skill:execute"];async function Z(){if(!(!C.value.trim()||!w.value.trim())){M.value=!0,k.value=null;try{const t=`auth check ${C.value.trim()} "${w.value.trim()}"`,{output:e}=await R.execute(t,15e3),o=e.toLowerCase(),p=o.includes("allow")||o.includes("granted")||o.includes("true")||o.includes("yes"),n=o.includes("denied")||o.includes("reject")||o.includes("false")||o.includes("no permission");k.value={allowed:p&&!n,detail:e.trim()||(p?"用户拥有该权限":"用户没有该权限")}}catch(t){k.value={allowed:!1,detail:"检查失败: "+t.message}}finally{M.value=!1}}}const
|
|
3
|
-
`);for(const p of o){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=
|
|
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(),N=f[2].trim(),T=N.match(/^(\d+)/);o.push({label:x,value:T?parseInt(T[1],10):N,color:n[r%n.length]}),r++}}return o.length===0&&o.push({label:"总事件数",value:A.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),o}function
|
|
1
|
+
import{_ as ue,u as ce,d as J}from"./index-B_juAGfN.js";import{R as de,V as pe,f as G,a7 as me}from"./icons-BFHq5fEF.js";import{o as fe,M as d,R as j,c as l,N as s,r as v,K as u,L as i,O as h,u as I,Q as b,P as _,S as g,F as L,Y as $}from"./vendor-M5lGV-wr.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=ce(),O=v("roles"),z=v(!1);async function q(){z.value=!0;try{O.value==="roles"?await P():O.value==="audit"&&await E()}finally{z.value=!1}}function Q(t){t==="roles"&&W.value.length===0&&P(),t==="audit"&&A.value.length===0&&E()}const S=v(!1),W=v([]),Y=[{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(){S.value=!0;try{const{output:t}=await R.execute("auth roles --json",15e3);W.value=K(t,H)}catch(t){J.error("加载角色列表失败: "+t.message)}finally{S.value=!1}}function H(t){const e=[],o=t.split(`
|
|
2
|
+
`);for(const p of o){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(""),M=v(!1),k=v(null),X=["note:read","note:write","admin:*","skill:execute"];async function Z(){if(!(!C.value.trim()||!w.value.trim())){M.value=!0,k.value=null;try{const t=`auth check ${C.value.trim()} "${w.value.trim()}"`,{output:e}=await R.execute(t,15e3),o=e.toLowerCase(),p=o.includes("allow")||o.includes("granted")||o.includes("true")||o.includes("yes"),n=o.includes("denied")||o.includes("reject")||o.includes("false")||o.includes("no permission");k.value={allowed:p&&!n,detail:e.trim()||(p?"用户拥有该权限":"用户没有该权限")}}catch(t){k.value={allowed:!1,detail:"检查失败: "+t.message}}finally{M.value=!1}}}const V=v(!1),A=v([]),B=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 E(){V.value=!0;try{const[t,e]=await Promise.all([R.execute("audit log --json",15e3),R.execute("audit stats --json",15e3)]);A.value=K(t.output,ae),B.value=se(e.output)}catch(t){J.error("加载审计日志失败: "+t.message)}finally{V.value=!1}}function ae(t){const e=[],o=t.split(`
|
|
3
|
+
`);for(const p of o){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=F(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 o=[],p=t.split(`
|
|
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(),N=f[2].trim(),T=N.match(/^(\d+)/);o.push({label:x,value:T?parseInt(T[1],10):N,color:n[r%n.length]}),r++}}return o.length===0&&o.push({label:"总事件数",value:A.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),o}function F(t){try{const e=t.indexOf("[")!==-1?t.indexOf("["):t.indexOf("{");if(e===-1)return null;const o=t.lastIndexOf("]")!==-1?t.lastIndexOf("]")+1:t.lastIndexOf("}")+1;return JSON.parse(t.slice(e,o))}catch{return null}}function K(t,e){const o=F(t);return Array.isArray(o)?o.map((p,n)=>({key:n,...p})):e(t)}return fe(()=>{P()}),(t,e)=>{const o=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"),N=u("a-space"),T=u("a-form"),ne=u("a-alert"),U=u("a-card"),le=u("a-statistic"),oe=u("a-col"),ie=u("a-row"),re=u("a-tabs");return i(),d("div",null,[j("div",ye,[e[4]||(e[4]=j("div",null,[j("h2",{class:"page-title"},"权限管理"),j("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),l(o,{type:"primary",ghost:"",loading:z.value,onClick:q},{icon:s(()=>[l(I(de))]),default:s(()=>[e[3]||(e[3]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),l(re,{activeKey:O.value,"onUpdate:activeKey":e[2]||(e[2]=a=>O.value=a),type:"card",onChange:Q},{default:s(()=>[l(m,{key:"roles"},{tab:s(()=>[l(I(pe)),e[5]||(e[5]=h(" 角色列表 ",-1))]),default:s(()=>[S.value?(i(),d("div",ve,[l(p,{size:"large"})])):(i(),b(y,{key:1,columns:Y,"data-source":W.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(L,{key:2},[(i(!0),d(L,null,$((c.permissions||[]).slice(0,5),D=>(i(),b(n,{key:D,color:"blue",style:{"margin-bottom":"2px"}},{default:s(()=>[h(_(D),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(()=>[l(r,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),l(m,{key:"check"},{tab:s(()=>[l(I(G)),e[6]||(e[6]=h(" 权限检查 ",-1))]),default:s(()=>[l(U,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:s(()=>[l(T,{"label-col":{span:5},"wrapper-col":{span:19}},{default:s(()=>[l(x,{label:"用户 ID",required:""},{default:s(()=>[l(f,{value:C.value,"onUpdate:value":e[0]||(e[0]=a=>C.value=a),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),l(x,{label:"权限",required:""},{default:s(()=>[l(f,{value:w.value,"onUpdate:value":e[1]||(e[1]=a=>w.value=a),placeholder:"note:read"},null,8,["value"])]),_:1}),l(x,{"wrapper-col":{offset:5,span:19}},{default:s(()=>[l(N,{wrap:""},{default:s(()=>[l(o,{type:"primary",loading:M.value,disabled:!C.value.trim()||!w.value.trim(),onClick:Z},{icon:s(()=>[l(I(G))]),default:s(()=>[e[7]||(e[7]=h(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(i(),d(L,null,$(X,a=>l(o,{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,[l(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}),l(m,{key:"audit"},{tab:s(()=>[l(I(me)),e[8]||(e[8]=h(" 审计日志 ",-1))]),default:s(()=>[l(ie,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(i(!0),d(L,null,$(B.value,a=>(i(),b(oe,{xs:12,sm:6,key:a.label},{default:s(()=>[l(U,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[l(le,{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}),V.value?(i(),d("div",ke,[l(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(()=>[l(r,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}}},Te=ue(Ie,[["__scopeId","data-v-71782e36"]]);export{Te as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as Oe,M as f,R as k,c as a,N as t,K as p,r as h,a as ne,L as r,O as s,u as S,P as i,S as c,a0 as ze,a1 as qe,Q as _,F as O,Y as se,Z as He,f as Ie}from"./vendor-M5lGV-wr.js";import{u as Ue,_ as Fe,d as M}from"./index-B_juAGfN.js";import{R as Ne,O as Re,ak as Ve,h as Ge,aB as Qe,m as Te,e as Be}from"./icons-BFHq5fEF.js";function Ke(P){if(!P)return P;if(P.error)throw new Error(P.error);return P.result!==void 0?P.result:P}function je(){const P=Ue(),g=(u,v={},x=3e4)=>P.sendRaw({type:u,...v},x).then(Ke);return{async health(){return await g("personal-data-hub.health",{},8e3)},async stats(){return await g("personal-data-hub.stats",{},8e3)},async listAdapters(){return await g("personal-data-hub.list-adapters",{},5e3)},async syncAdapter(u,v={}){return await g("personal-data-hub.sync-adapter",{name:u,options:v},12e4)},async syncAll(u={}){return await g("personal-data-hub.sync-all",{options:u},6e5)},async registerMock({name:u="mock",count:v=20,seed:x=1}={}){return await g("personal-data-hub.register-mock",{name:u,count:v,seed:x})},async unregister(u){return await g("personal-data-hub.unregister",{name:u})},async ask(u,v={}){return await g("personal-data-hub.ask",{question:u,options:v},18e4)},async queryEvents(u={}){return await g("personal-data-hub.query-events",u,1e4)},async recentAudit(u={}){return await g("personal-data-hub.recent-audit",u,1e4)},async testEmailAuth(u){return await g("personal-data-hub.test-email-auth",{account:u},3e4)},async registerEmail(u,v={}){return await g("personal-data-hub.register-email",{account:u,opts:v},15e3)},async unregisterEmail(u){return await g("personal-data-hub.unregister-email",{email:u},5e3)},async listEmailAccounts(){return await g("personal-data-hub.list-email-accounts",{},5e3)},async eventDetail(u){return await g("personal-data-hub.event-detail",{eventId:u},5e3)}}}const Je={class:"pdh-page"},We={class:"pdh-header"},Ye={class:"kv"},Ze={key:0,class:"kv"},Xe={key:1,class:"kv"},et={class:"kv"},tt={key:0,class:"kv hint"},at={style:{"margin-top":"12px",display:"flex","justify-content":"space-between","align-items":"center"}},lt={key:0,style:{"margin-top":"12px"}},nt={key:1,style:{"margin-top":"12px"}},st={class:"answer"},ot={style:{"margin-top":"8px","font-size":"12px",color:"var(--text-color-secondary, #888)"}},it={key:2,style:{"margin-top":"8px"}},rt={key:2,style:{"margin-top":"12px"}},ut={key:2,style:{"margin-top":"8px"}},dt={key:1},pt={style:{"margin-left":"8px"}},ct={key:3,class:"json-pre"},vt={style:{"margin-left":"6px"}},mt={key:0,style:{"margin-left":"6px"}},ft={key:0,class:"hint",style:{"margin-top":"4px"}},yt={key:1,style:{"font-size":"11px"}},kt={__name:"PersonalDataHub",setup(P,{expose:g}){const u=je(),v=h(null),x=h(null),V=h([]),I=h(""),b=h(null),G=h(""),K=h(!1),j=h(!1),Z=h([]),D=h(null),U=h(!1),o=ne({provider:"qq",email:"",authCode:"",host:"",port:993,pdfPasswordHints:{idCardLast6:"",phoneLast6:"",cardLast6:""}}),C=h(null),J=h(!1),d=h(null),m=ne({refresh:!1,ask:!1,addMock:!1,syncAll:!1,sync:{},audit:!1,testEmail:!1,saveEmail:!1,eventDetail:!1}),oe=[{title:"名称",dataIndex:"name",key:"name",width:140},{title:"版本",dataIndex:"version",key:"version",width:80},{title:"能力",key:"capabilities"},{title:"敏感度",key:"sensitivity",width:140},{title:"操作",key:"actions",width:160,align:"right"}],ie=[{title:"时间",key:"at",dataIndex:"at",width:170},{title:"动作",dataIndex:"action",key:"action",width:200},{title:"详情",key:"details"}],re=[{title:"日期",key:"occurredAt",width:100},{title:"描述",dataIndex:"description",key:"description"},{title:"金额",key:"amount",width:140,align:"right"}];function ue(n){return n==="high"?"red":n==="medium"?"orange":"default"}function de(n){if(!n)return"";const e=n.entityCounts||{};return`events=${e.events??0} persons=${e.persons??0} | raw=${n.rawCount??0} invalid=${n.invalidCount??0} | KG triples=${n.kgTripleCount??0} RAG docs=${n.ragDocCount??0} | ${n.durationMs??0}ms`}async function $(){m.refresh=!0;try{v.value=await u.health(),x.value=await u.stats(),V.value=await u.listAdapters()}catch(n){M.error("刷新失败: "+n.message)}finally{m.refresh=!1}}async function X(){if(I.value.trim()){m.ask=!0,G.value="",b.value=null;try{b.value=await u.ask(I.value.trim(),{acceptNonLocal:K.value})}catch(n){G.value=n.message}finally{m.ask=!1}}}async function pe(){m.addMock=!0;try{await u.registerMock({count:30,seed:Date.now()%1e3}),await $(),M.success("MockAdapter 已注册(30 条 mock 数据 ready 同步)")}catch(n){M.error("注册失败: "+n.message)}finally{m.addMock=!1}}async function ce(n){m.sync[n]=!0;try{D.value=await u.syncAdapter(n),await $()}catch(e){M.error(`同步 ${n} 失败: ${e.message}`)}finally{m.sync[n]=!1}}async function ve(){m.syncAll=!0;try{const n=await u.syncAll();D.value=n?.[n.length-1]||null,await $(),M.success(`已同步 ${n?.length||0} 个 adapter`)}catch(n){M.error("同步失败: "+n.message)}finally{m.syncAll=!1}}async function me(n){try{await u.unregister(n),await $()}catch(e){M.error("移除失败: "+e.message)}}async function fe(n){if(n){m.audit=!0;try{Z.value=await u.recentAudit({limit:200})}catch(e){M.error("审计日志加载失败: "+e.message)}finally{m.audit=!1}}}const Q=Ie(()=>!(!o.email||!o.email.includes("@")||!o.authCode||o.authCode.length<4||o.provider==="custom"&&!o.host));function ye(n){return{qq:"QQ: 邮箱 → 设置 → 账户 → IMAP/SMTP → 开启 → 生成授权码",163:"163: 邮箱 → 设置 → POP3/SMTP/IMAP → 开启 IMAP/SMTP 服务 → 授权密码",189:"189: 设置 → 第三方客户端授权码",outlook:"Outlook: account.microsoft.com/security → App password",gmail:"Gmail: myaccount.google.com/apppasswords (需开启 2FA)",custom:"联系你的邮箱管理员获取 IMAP 端点 + app-password"}[n]||"请输入服务商授权码(不是登录密码)"}function ee(){o.provider="qq",o.email="",o.authCode="",o.host="",o.port=993,o.pdfPasswordHints={idCardLast6:"",phoneLast6:"",cardLast6:""},C.value=null}function te(){const n={provider:o.provider,email:o.email.trim(),authCode:o.authCode};return o.provider==="custom"&&(n.host=o.host.trim(),n.port=o.port||993,n.secure=!0),n}function ke(){const n={};for(const e of Object.keys(o.pdfPasswordHints)){const w=o.pdfPasswordHints[e];typeof w=="string"&&w.trim().length>0&&(n[e]=w.trim())}return Object.keys(n).length>0?n:null}async function ge(){if(Q.value){m.testEmail=!0,C.value=null;try{C.value=await u.testEmailAuth(te())}catch(n){C.value={ok:!1,error:n.message}}finally{m.testEmail=!1}}}async function _e(){if(!(!Q.value||!C.value?.ok)){m.saveEmail=!0;try{const n={},e=ke();e&&(n.pdfPasswordHints=e),await u.registerEmail(te(),n),M.success("邮箱账号已注册"),U.value=!1,ee(),await $()}catch(n){M.error("保存失败: "+n.message)}finally{m.saveEmail=!1}}}async function ae(n){if(n){m.eventDetail=!0,J.value=!0;try{d.value=await u.eventDetail(n)}catch(e){d.value=null,M.error("事件详情加载失败: "+e.message)}finally{m.eventDetail=!1}}}return g({showEventDetail:ae}),Oe($),(n,e)=>{const w=p("a-button"),L=p("a-space"),A=p("a-tag"),z=p("a-card"),T=p("a-col"),we=p("a-row"),he=p("a-textarea"),be=p("a-checkbox"),q=p("a-alert"),xe=p("a-popconfirm"),W=p("a-table"),le=p("a-empty"),H=p("a-select-option"),Ce=p("a-select"),E=p("a-form-item"),F=p("a-input"),Ae=p("a-tooltip"),Me=p("a-input-password"),Pe=p("a-input-number"),N=p("a-divider"),Le=p("a-form"),Y=p("a-drawer"),R=p("a-descriptions-item"),Ee=p("a-descriptions"),De=p("a-list-item-meta"),$e=p("a-list-item"),Se=p("a-list");return r(),f("div",Je,[k("div",We,[e[18]||(e[18]=k("div",null,[k("h2",{class:"page-title"},"个人数据中台"),k("p",{class:"page-sub"}," 让数据回归个人 — 各 app 数据本地加密落盘,本地 LLM 跨源分析,零云端外传。 ")],-1)),a(L,null,{default:t(()=>[a(w,{loading:m.refresh,onClick:$},{icon:t(()=>[a(S(Ne))]),default:t(()=>[e[16]||(e[16]=s(" 刷新 ",-1))]),_:1},8,["loading"]),a(w,{type:"primary",ghost:"",onClick:e[0]||(e[0]=l=>j.value=!0)},{icon:t(()=>[a(S(Re))]),default:t(()=>[e[17]||(e[17]=s(" 审计日志 ",-1))]),_:1})]),_:1})]),a(we,{gutter:16,style:{"margin-bottom":"16px"}},{default:t(()=>[a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"Vault"},{extra:t(()=>[a(A,{color:v.value?.vault?.ok?"green":"red"},{default:t(()=>[s(i(v.value?.vault?.ok?"正常":"未就绪"),1)]),_:1},8,["color"])]),default:t(()=>[k("div",Ye,"schema v"+i(v.value?.vault?.schemaVersion??"?"),1),x.value?.vault?(r(),f("div",Ze," 事件 "+i(x.value.vault.events)+" · 联系人 "+i(x.value.vault.persons),1)):c("",!0),x.value?.vault?(r(),f("div",Xe," 地点 "+i(x.value.vault.places)+" · 商品 "+i(x.value.vault.items)+" · 主题 "+i(x.value.vault.topics),1)):c("",!0)]),_:1})]),_:1}),a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"本地 LLM"},{extra:t(()=>[a(A,{color:v.value?.llm?.ok?v.value.llm.isLocal?"green":"orange":"red"},{default:t(()=>[s(i(v.value?.llm?.ok?v.value.llm.isLocal?"本地":"非本地":"未就绪"),1)]),_:1},8,["color"])]),default:t(()=>[k("div",et,i(v.value?.llm?.name||"—"),1),v.value?.llm?.ok&&!v.value.llm.isLocal?(r(),f("div",tt," ⚠️ 非本地 — ask 会被隐私 gate 拒绝,除非显式 acceptNonLocal ")):c("",!0)]),_:1})]),_:1}),a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"KG 索引"},{extra:t(()=>[a(A,{color:v.value?.kgSink?.ok?"green":"default"},{default:t(()=>[s(i(v.value?.kgSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:t(()=>[e[19]||(e[19]=k("div",{class:"kv"},"events / persons → cc knowledge-graph 实体 + 关系",-1))]),_:1})]),_:1}),a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"RAG 索引"},{extra:t(()=>[a(A,{color:v.value?.ragSink?.ok?"green":"default"},{default:t(()=>[s(i(v.value?.ragSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:t(()=>[e[20]||(e[20]=k("div",{class:"kv"},"文本 → BM25(vector 留待后续 phase)",-1))]),_:1})]),_:1})]),_:1}),a(z,{style:{"margin-bottom":"16px"}},{title:t(()=>[a(L,null,{default:t(()=>[a(S(Ge)),e[21]||(e[21]=k("span",null,"问我数据",-1))]),_:1})]),default:t(()=>[a(he,{value:I.value,"onUpdate:value":e[1]||(e[1]=l=>I.value=l),rows:2,placeholder:"例:上个月在淘宝总共花了多少?/我妈生日那周买了啥送哪儿?",onKeydown:ze(qe(X,["exact","prevent"]),["enter"])},null,8,["value","onKeydown"]),k("div",at,[a(be,{checked:K.value,"onUpdate:checked":e[2]||(e[2]=l=>K.value=l)},{default:t(()=>[...e[22]||(e[22]=[s("允许非本地 LLM (volcengine / anthropic 等)",-1)])]),_:1},8,["checked"]),a(w,{type:"primary",loading:m.ask,disabled:!I.value.trim(),onClick:X},{icon:t(()=>[a(S(Ve))]),default:t(()=>[e[23]||(e[23]=s(" 提问 ",-1))]),_:1},8,["loading","disabled"])]),G.value?(r(),f("div",lt,[a(q,{type:"error","show-icon":"",message:G.value},null,8,["message"])])):c("",!0),b.value?(r(),f("div",nt,[b.value.warning==="no-facts"?(r(),_(q,{key:0,type:"warning","show-icon":"",message:"vault 里没找到匹配的事件('no-facts')—— 先同步几个 adapter 让数据进 vault",style:{"margin-bottom":"12px"}})):b.value.warning==="hallucinated-citations"?(r(),_(q,{key:1,type:"warning","show-icon":"",message:`LLM 引用了 ${b.value.hallucinatedCitations?.length||0} 个不存在的 event id —— 模型在编造`,style:{"margin-bottom":"12px"}},null,8,["message"])):c("",!0),k("div",st,i(b.value.answer),1),k("div",ot," 引用 "+i(b.value.citations?.length||0)+" 条事实 · "+i(b.value.facts?.length||0)+" facts 入 prompt · "+i(b.value.durationMs)+"ms · "+i(b.value.model),1),b.value.citations?.length?(r(),f("div",it,[e[24]||(e[24]=k("span",{style:{"font-size":"12px",color:"var(--text-color-secondary, #888)"}},"事件链接(点击查看明细 / PDF 解密结果):",-1)),a(L,{style:{"margin-top":"4px"},wrap:""},{default:t(()=>[(r(!0),f(O,null,se(b.value.citations,l=>(r(),_(A,{key:l,color:"blue",style:{cursor:"pointer"},onClick:y=>ae(l)},{default:t(()=>[s(i(l),1)]),_:2},1032,["onClick"]))),128))]),_:1})])):c("",!0)])):c("",!0)]),_:1}),a(z,{style:{"margin-bottom":"16px"}},{title:t(()=>[a(L,null,{default:t(()=>[a(S(Te)),e[25]||(e[25]=k("span",null,"Adapters",-1))]),_:1})]),extra:t(()=>[a(L,null,{default:t(()=>[a(w,{onClick:e[3]||(e[3]=l=>U.value=!0)},{icon:t(()=>[a(S(Qe))]),default:t(()=>[e[26]||(e[26]=s(" 添加邮箱账号 ",-1))]),_:1}),a(w,{onClick:pe,loading:m.addMock},{default:t(()=>[...e[27]||(e[27]=[s(" 注册 MockAdapter(开发) ",-1)])]),_:1},8,["loading"]),a(w,{type:"primary",onClick:ve,loading:m.syncAll,disabled:!V.value.length},{default:t(()=>[...e[28]||(e[28]=[s(" 同步全部 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:t(()=>[V.value.length?(r(),_(W,{key:0,columns:oe,"data-source":V.value,pagination:!1,"row-key":l=>l.name,size:"middle"},{bodyCell:t(({column:l,record:y})=>[l.key==="sensitivity"?(r(),f(O,{key:0},[a(A,{color:ue(y.sensitivity)},{default:t(()=>[s(i(y.sensitivity),1)]),_:2},1032,["color"]),y.legalGate?(r(),_(A,{key:0,color:"red",style:{"margin-left":"4px"}},{default:t(()=>[...e[29]||(e[29]=[s("需法律确认",-1)])]),_:1})):c("",!0)],64)):l.key==="capabilities"?(r(!0),f(O,{key:1},se(y.capabilities,B=>(r(),_(A,{key:B,style:{"margin-right":"4px"}},{default:t(()=>[s(i(B),1)]),_:2},1024))),128)):l.key==="actions"?(r(),_(L,{key:2},{default:t(()=>[a(w,{size:"small",loading:m.sync[y.name],onClick:B=>ce(y.name)},{default:t(()=>[...e[30]||(e[30]=[s(" 同步 ",-1)])]),_:1},8,["loading","onClick"]),a(xe,{title:`从注册表移除 ${y.name}?(vault 数据不会删除)`,onConfirm:B=>me(y.name)},{default:t(()=>[a(w,{size:"small",danger:""},{default:t(()=>[...e[31]||(e[31]=[s("移除",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):c("",!0)]),_:1},8,["data-source","row-key"])):(r(),_(le,{key:1,description:"无已注册 adapter — 点上方按钮注册 MockAdapter 看效果"})),D.value?(r(),f("div",rt,[a(q,{type:D.value.status==="ok"?"success":"error","show-icon":"",message:`同步 ${D.value.adapter}: ${D.value.status}`,description:de(D.value)},null,8,["type","message","description"])])):c("",!0)]),_:1}),a(Y,{open:U.value,"onUpdate:open":e[13]||(e[13]=l=>U.value=l),title:"添加邮箱账号",placement:"right",width:"560","destroy-on-close":!0,onClose:ee},{footer:t(()=>[a(L,null,{default:t(()=>[a(w,{onClick:e[12]||(e[12]=l=>U.value=!1)},{default:t(()=>[...e[41]||(e[41]=[s("取消",-1)])]),_:1}),a(w,{loading:m.testEmail,disabled:!Q.value,onClick:ge},{default:t(()=>[...e[42]||(e[42]=[s(" 测试连接 ",-1)])]),_:1},8,["loading","disabled"]),a(w,{type:"primary",loading:m.saveEmail,disabled:!Q.value||!C.value?.ok,onClick:_e},{default:t(()=>[...e[43]||(e[43]=[s(" 保存并注册 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:t(()=>[a(q,{message:"数据回归个人 — 凭证落本地加密文件(与 vault 主密钥同目录),同步动作 100% 本地。",type:"info","show-icon":"",style:{"margin-bottom":"16px"}}),a(Le,{layout:"vertical",model:o},{default:t(()=>[a(E,{label:"邮箱服务商",required:""},{default:t(()=>[a(Ce,{value:o.provider,"onUpdate:value":e[4]||(e[4]=l=>o.provider=l),placeholder:"选择服务商"},{default:t(()=>[a(H,{value:"qq"},{default:t(()=>[...e[32]||(e[32]=[s("QQ 邮箱 (imap.qq.com)",-1)])]),_:1}),a(H,{value:"163"},{default:t(()=>[...e[33]||(e[33]=[s("网易邮箱 163/126",-1)])]),_:1}),a(H,{value:"189"},{default:t(()=>[...e[34]||(e[34]=[s("189 邮箱",-1)])]),_:1}),a(H,{value:"outlook"},{default:t(()=>[...e[35]||(e[35]=[s("Outlook / Hotmail",-1)])]),_:1}),a(H,{value:"gmail"},{default:t(()=>[...e[36]||(e[36]=[s("Gmail",-1)])]),_:1}),a(H,{value:"custom"},{default:t(()=>[...e[37]||(e[37]=[s("自定义 IMAP",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(E,{label:"邮箱地址",required:""},{default:t(()=>[a(F,{value:o.email,"onUpdate:value":e[5]||(e[5]=l=>o.email=l),placeholder:"you@qq.com",autocomplete:"off"},null,8,["value"])]),_:1}),a(E,{required:""},{label:t(()=>[a(L,null,{default:t(()=>[e[38]||(e[38]=k("span",null,"授权码(非登录密码)",-1)),a(Ae,{title:ye(o.provider)},{default:t(()=>[a(S(Be),{style:{color:"#888"}})]),_:1},8,["title"])]),_:1})]),default:t(()=>[a(Me,{value:o.authCode,"onUpdate:value":e[6]||(e[6]=l=>o.authCode=l),placeholder:"例:QQ 邮箱 设置 → 账户 → 开启 IMAP/SMTP → 生成的授权码",autocomplete:"off"},null,8,["value"])]),_:1}),o.provider==="custom"?(r(),_(E,{key:0,label:"IMAP host"},{default:t(()=>[a(F,{value:o.host,"onUpdate:value":e[7]||(e[7]=l=>o.host=l),placeholder:"mail.example.com"},null,8,["value"])]),_:1})):c("",!0),o.provider==="custom"?(r(),_(E,{key:1,label:"端口"},{default:t(()=>[a(Pe,{value:o.port,"onUpdate:value":e[8]||(e[8]=l=>o.port=l),min:1,max:65535,"default-value":993},null,8,["value"])]),_:1})):c("",!0),a(N,{orientation:"left",plain:""},{default:t(()=>[...e[39]||(e[39]=[s("PDF 账单解密提示(可选)",-1)])]),_:1}),e[40]||(e[40]=k("p",{class:"hint"},"银行 PDF 月结大多加密;提供几个常用候选项让 Phase 5.5 自动解锁:",-1)),a(E,{label:"身份证后 6 位"},{default:t(()=>[a(F,{value:o.pdfPasswordHints.idCardLast6,"onUpdate:value":e[9]||(e[9]=l=>o.pdfPasswordHints.idCardLast6=l),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),a(E,{label:"手机后 6 位"},{default:t(()=>[a(F,{value:o.pdfPasswordHints.phoneLast6,"onUpdate:value":e[10]||(e[10]=l=>o.pdfPasswordHints.phoneLast6=l),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),a(E,{label:"信用卡尾 6 位"},{default:t(()=>[a(F,{value:o.pdfPasswordHints.cardLast6,"onUpdate:value":e[11]||(e[11]=l=>o.pdfPasswordHints.cardLast6=l),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),C.value?(r(),f("div",ut,[a(q,{type:C.value.ok?"success":"error","show-icon":"",message:C.value.ok?"凭证有效 — 可以保存":`认证失败: ${C.value.reason||C.value.error}`},null,8,["type","message"])])):c("",!0)]),_:1},8,["model"])]),_:1},8,["open"]),a(Y,{open:J.value,"onUpdate:open":e[14]||(e[14]=l=>J.value=l),title:d.value?`事件 ${d.value.event.id}`:"加载中...",placement:"right",width:"640","destroy-on-close":!0},{default:t(()=>[d.value?(r(),f(O,{key:0},[a(Ee,{column:1,size:"small",bordered:""},{default:t(()=>[a(R,{label:"类型"},{default:t(()=>[s(i(d.value.event.subtype),1)]),_:1}),a(R,{label:"发生于"},{default:t(()=>[s(i(new Date(d.value.event.occurredAt).toLocaleString()),1)]),_:1}),a(R,{label:"actor"},{default:t(()=>[s(i(d.value.event.actor),1)]),_:1}),d.value.event.content?.title?(r(),_(R,{key:0,label:"标题"},{default:t(()=>[s(i(d.value.event.content.title),1)]),_:1})):c("",!0),d.value.event.source?.adapter?(r(),_(R,{key:1,label:"来源 adapter"},{default:t(()=>[s(i(d.value.event.source.adapter)+" @ v"+i(d.value.event.source.adapterVersion),1)]),_:1})):c("",!0)]),_:1}),d.value.classification?(r(),_(N,{key:0,orientation:"left",plain:""},{default:t(()=>[...e[44]||(e[44]=[s("分类",-1)])]),_:1})):c("",!0),d.value.classification?(r(),f("div",dt,[a(A,{color:"blue"},{default:t(()=>[s(i(d.value.classification.category),1)]),_:1}),a(A,null,{default:t(()=>[s(i(d.value.classification.layer),1)]),_:1}),k("span",pt,"置信 "+i(Math.round((d.value.classification.confidence||0)*100))+"%",1)])):c("",!0),d.value.extraction?(r(),_(N,{key:2,orientation:"left",plain:""},{default:t(()=>[s("结构化字段("+i(d.value.extraction.template)+")",1)]),_:1})):c("",!0),d.value.extraction?(r(),f("pre",ct,i(JSON.stringify(d.value.extraction.fields,null,2)),1)):c("",!0),d.value.extraction?.pdfExtraction?(r(),_(N,{key:4,orientation:"left",plain:""},{default:t(()=>[...e[45]||(e[45]=[s("PDF 解密 / 解析",-1)])]),_:1})):c("",!0),d.value.extraction?.pdfExtraction?(r(),_(Se,{key:5,"data-source":d.value.extraction.pdfExtraction,size:"small"},{renderItem:t(({item:l})=>[a($e,null,{default:t(()=>[a(De,{title:l.filename},{description:t(()=>[k("div",null,[a(A,{color:l.decrypted?"green":"red"},{default:t(()=>[s(i(l.decrypted?"已解密":"解密失败"),1)]),_:2},1032,["color"]),k("span",vt,"尝试 "+i(l.attempted)+" 次",1),l.transactionsExtracted!=null?(r(),f("span",mt," · 提取 "+i(l.transactionsExtracted)+" 条交易 ",1)):c("",!0)]),l.error?(r(),f("div",ft,i(l.error),1)):c("",!0)]),_:2},1032,["title"])]),_:2},1024)]),_:1},8,["data-source"])):c("",!0),d.value.extraction?.fields?.transactions?.length?(r(),f(O,{key:6},[a(N,{orientation:"left",plain:""},{default:t(()=>[...e[46]||(e[46]=[s("交易明细",-1)])]),_:1}),a(W,{columns:re,"data-source":d.value.extraction.fields.transactions,pagination:{pageSize:10,size:"small"},"row-key":(l,y)=>y,size:"small"},{bodyCell:t(({column:l,record:y})=>[l.key==="occurredAt"?(r(),f(O,{key:0},[s(i(new Date(y.occurredAtMs).toLocaleDateString()),1)],64)):l.key==="amount"?(r(),f("span",{key:1,class:He(y.amount.direction==="in"?"amount-in":"amount-out")},i(y.amount.direction==="in"?"+":"-")+i(y.amount.value.toFixed(2))+" "+i(y.amount.currency),3)):c("",!0)]),_:1},8,["data-source","row-key"])],64)):c("",!0)],64)):(r(),_(le,{key:1,description:"无事件数据"}))]),_:1},8,["open","title"]),a(Y,{open:j.value,"onUpdate:open":e[15]||(e[15]=l=>j.value=l),title:"审计日志(数据 lineage)",placement:"right",width:"600",onAfterOpenChange:fe},{default:t(()=>[a(W,{columns:ie,"data-source":Z.value,pagination:{pageSize:20,size:"small"},"row-key":l=>l.id,size:"small"},{bodyCell:t(({column:l,record:y})=>[l.key==="at"?(r(),f(O,{key:0},[s(i(new Date(y.at).toLocaleString()),1)],64)):l.key==="details"?(r(),f("code",yt,i(y.details||"—"),1)):c("",!0)]),_:1},8,["data-source","row-key"])]),_:1},8,["open"])])}}},ht=Fe(kt,[["__scopeId","data-v-d9f9adeb"]]);export{ht as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.pdh-page[data-v-d9f9adeb]{padding:16px;max-width:1400px;margin:0 auto}.pdh-header[data-v-d9f9adeb]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title[data-v-d9f9adeb]{margin:0 0 4px;font-size:22px;font-weight:600}.page-sub[data-v-d9f9adeb]{margin:0;color:var(--text-color-secondary, #888);font-size:13px}.kv[data-v-d9f9adeb]{font-size:13px;color:var(--text-color, #333);line-height:1.6}.kv.hint[data-v-d9f9adeb]{color:#faad14;font-size:12px;margin-top:4px}.answer[data-v-d9f9adeb]{white-space:pre-wrap;font-size:14px;line-height:1.7;background:var(--bg-elevated, #fafafa);padding:12px;border-radius:6px;border-left:3px solid #1677ff}.hint[data-v-d9f9adeb]{color:var(--text-color-secondary, #888);font-size:12px}.json-pre[data-v-d9f9adeb]{font-size:12px;background:var(--bg-elevated, #fafafa);padding:10px;border-radius:4px;max-height:280px;overflow:auto}.amount-in[data-v-d9f9adeb]{color:#52c41a;font-weight:600}.amount-out[data-v-d9f9adeb]{color:#ff4d4f;font-weight:600}
|