Files
Nexus/web/app/assets/AuditPage-C6hK9vot.js
T
Nexus Agent e3efbd4552 feat(timezone): operator schedules and filters use Beijing wall clock.
Cron matching, audit/alert date filters, and schedule UI align on Asia/Shanghai
while JWT/TOTP/heartbeat stay UTC; follow-ups add WS alert timestamps, fixed
install timezone copy, and 422 on invalid date filters.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 05:50:32 +08:00

1 line
4.5 KiB
JavaScript

import{n as e,t}from"./useSnackbar-BN7WL7jT.js";import{Cr as n,Fr as r,P as i,Sr as a,Tt as o,Ut as s,Wr as c,Zr as l,Zt as u,_ as d,_r as f,dr as p,gr as m,ri as h,si as g,vr as _,xr as v,y}from"./index-mgwiCK5j.js";import{t as b}from"./usePageActivateRefresh-B3aZWt5v.js";import{n as x}from"./dataTable-esDY4cOk.js";import{r as S,t as C}from"./VCard-B9mXbrEC.js";import{t as w}from"./VSelect-7ey6zQ_i.js";import{t as T}from"./VTextField-C7hGBY30.js";import{t as E}from"./VDataTableServer-CKraLARR.js";import{a as D,n as O,r as k,t as A}from"./auditNormalize-DWYIxo0q.js";var j=new Set([`batch_install_agent`,`batch_upgrade_agent`,`batch_uninstall_agent`,`batch_detect_path`,`batch_health_check`,`batch_update_category`,`batch_server_op`]);function M(e){return j.has(e)}function N(e){let t=(e||``).trim();if(!t.startsWith(`{`))return null;try{let e=JSON.parse(t);return typeof e.job_id!=`number`||!e.summary?null:e}catch{return null}}function P(e){let t=[e.summary],n=e.failures||[];if(n.length){let e=n.slice(0,3).map(e=>e.server_name).join(`、`);t.push(`失败: ${e}${n.length>3?`…`:``}`)}return t.join(` · `)}var F={class:`font-weight-medium`},I={class:`text-body-2`},L={class:`d-flex align-center ga-2 flex-wrap`},R={class:`text-body-2 text-medium-emphasis`,style:{"max-width":`360px`}},z={class:`text-caption text-medium-emphasis`},B={class:`text-caption text-medium-emphasis`},V=n({name:`AuditPage`,__name:`AuditPage`,setup(n){let j=t(),V=l(!1),H=l([]),U=l(0),W=l(1),G=l(null),K=l(``),q=l(``),J=O,Y=x([{title:`操作`,key:`action`,width:100},{title:`用户`,key:`admin_username`,width:100},{title:`目标`,key:`target`,width:140},{title:`详情`,key:`detail`},{title:`IP`,key:`ip_address`,width:120},{title:`时间`,key:`created_at`,width:160}]);async function X(e=!1){e||(V.value=!0);try{let e=(W.value-1)*50,t=await u.get(`/audit/`,{limit:50,offset:e,action:G.value||void 0,admin_username:K.value||void 0,date_from:q.value||void 0});H.value=A(t.items||[]),U.value=t.total||0}catch{H.value=[],e||j(`加载审计日志失败`,`error`)}finally{e||(V.value=!1)}}function Z(e){return e.startsWith(`create`)||e===`login`?`success`:e.startsWith(`update`)?`info`:e.startsWith(`delete`)||e===`logout`?`error`:e.includes(`execute`)||e.includes(`push`)||e.includes(`retry`)?`warning`:`primary`}function Q(e){return M(e.action)?N(e.detail):null}function $(e){let t=Q(e);return t?P(t):(e.detail||``).trim()||`—`}function ee(e){o(e.job_id,e.summary)}return b(e=>X(e)),(t,n)=>(r(),f(e,{fluid:``,class:`pa-6`},{default:c(()=>[a(C,{elevation:`0`,border:``,rounded:`lg`},{default:c(()=>[a(S,{class:`d-flex align-center`},{default:c(()=>[n[7]||=v(` 审计日志 `,-1),a(d),a(w,{modelValue:G.value,"onUpdate:modelValue":[n[0]||=e=>G.value=e,n[1]||=e=>{W.value=1,X()}],items:h(J),"item-title":`label`,"item-value":`value`,label:`操作类型`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`200px`},clearable:``},null,8,[`modelValue`,`items`]),a(T,{modelValue:K.value,"onUpdate:modelValue":[n[2]||=e=>K.value=e,n[3]||=e=>{W.value=1,X()}],"prepend-inner-icon":`mdi-account`,label:`用户`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`140px`},class:`ml-3`,clearable:``},null,8,[`modelValue`]),a(T,{modelValue:q.value,"onUpdate:modelValue":[n[4]||=e=>q.value=e,n[5]||=e=>{W.value=1,X()}],"prepend-inner-icon":`mdi-calendar`,label:`日期`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`160px`},class:`ml-3`,type:`date`,clearable:``},null,8,[`modelValue`])]),_:1}),a(E,{items:H.value,headers:h(Y),"items-length":U.value,loading:V.value,page:W.value,"items-per-page":50,hover:``,density:`compact`,"onUpdate:page":n[6]||=e=>{W.value=e,X()}},{"item.action":c(({item:e})=>[a(y,{color:Z(e.action),size:`small`,variant:`tonal`,label:``},{default:c(()=>[v(g(h(k)(e.action)),1)]),_:2},1032,[`color`])]),"item.admin_username":c(({item:e})=>[m(`span`,F,g(e.admin_username),1)]),"item.target":c(({item:e})=>[m(`span`,I,g(h(D)(e.resource_type))+g(e.resource_id?` #${e.resource_id}`:``),1)]),"item.detail":c(({item:e})=>[m(`div`,L,[m(`span`,R,g($(e)),1),Q(e)?(r(),f(i,{key:0,size:`x-small`,variant:`tonal`,color:`primary`,onClick:p(t=>ee(Q(e)),[`stop`])},{default:c(()=>[...n[8]||=[v(` 查看结果 `,-1)]]),_:1},8,[`onClick`])):_(``,!0)])]),"item.ip_address":c(({item:e})=>[m(`span`,z,g(e.ip_address||`—`),1)]),"item.created_at":c(({item:e})=>[m(`span`,B,g(h(s)(e.created_at)),1)]),"no-data":c(()=>[...n[9]||=[m(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1})]),_:1}))}});export{V as default};