PageSourceSearch

https://smartkintai.ai/assets/EmployeeAuditLog-COOZH4FG.js

js smartkintai.ai collected 2026-10-05 15:06:27 UTC 8,361 bytes, 1 lines download raw bytes

1import{d as Q,r as w,c as J,o as X,R as ee,n as d,w as l,W as O,s as i,f as u,g as s,e as b,k as te,i as c,F as E,u as D,aK as ae,aL as le,T as se,j as p,t as o,A as r}from"./index-C6DB0I7I.js";import{A as oe}from"./AdminLayout-CKFEpq6x.js";import{g as ne}from"./auditLogs-CfJmUNSr.js";import{g as ie}from"./employees-C2PHAaxY.js";import{_ as re}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./AdminHeader-CxaYCU54.js";import"./client-CRttDGue.js";import"./index-D5lHaTRS.js";import"./authApi-gU8Bzwv7.js";import"./employeeClient-DfmVny7z.js";const ue={class:"employee-audit-page"},ce={class:"filter-bar"},de={class:"month-nav"},pe={key:1,class:"loading-area"},me={class:"summary-bar"},_e={class:"summary-label"},fe={class:"timestamp"},ge={class:"actor-text"},ve={key:0,class:"changes-area"},ye={key:0,class:"change-block"},he={class:"change-json"},be={key:1,class:"change-block"},ke={class:"change-json"},we={key:1,class:"changes-area"},Se={class:"change-json"},$e=Q({__name:"EmployeeAuditLog",setup(ze){const A=e=>{const t=e.getFullYear(),_=String(e.getMonth()+1).padStart(2,"0");return`${t}-${_}`},L=A(new Date),v=w(L),S=w(""),Y=w([]),$=w([]),V=w(!1),T=w(!1),n=w(null),U=J(()=>{const[e,t]=v.value.split("-");return`${e}年${parseInt(t)}月`}),y=J(()=>{const e={timecard:0,application:0,auth:0,other:0};for(const t of $.value)t.resource==="timecard"?e.timecard++:t.resource==="application"?e.application++:t.resource==="auth"?e.auth++:e.other++;return e}),j=e=>{const[t,_]=v.value.split("-").map(Number),h=new Date(t,_-1+e,1);v.value=A(h)},P=e=>{const t=new Date(e),_=String(t.getMonth()+1).padStart(2,"0"),h=String(t.getDate()).padStart(2,"0"),k=String(t.getHours()).padStart(2,"0"),z=String(t.getMinutes()).padStart(2,"0");return`${_}/${h} ${k}:${z}`},H=e=>new Date(e).toLocaleString("ja-JP",{timeZone:"Asia/Tokyo"}),I=e=>({timecard:"勤怠",application:"申請",auth:"認証",employee:"社員",paid_leave:"有給",compensatory_leave:"振替",settings:"設定",department:"部署",report:"レポート"})[e]||e,K=e=>e==="timecard"?"success":e==="application"?"primary":e==="auth"?"warning":["paid_leave","compensatory_leave"].includes(e)?"info":"",R=e=>e.includes("承認")?"success":e.includes("却下")||e.includes("失敗")?"danger":e.includes("削除")||e.includes("キャンセル")?"warning":"info",W=e=>{n.value=e,T.value=!0},x=async()=>{if(S.value){V.value=!0,$.value=[];try{const[e,t]=v.value.split("-").map(Number),_=new Date(e,t,0).getDate(),h=String(t).padStart(2,"0"),k=String(_).padStart(2,"0"),z=`${e}-${h}-01T00:00:00+09:00`,M=`${e}-${h}-${k}T23:59:59+09:00`,N=await ne({employeeId:S.value,startDate:z,endDate:M,limit:500,page:1});$.value=[...N.logs].sort((m,f)=>new Date(m.timestamp).getTime()-new Date(f.timestamp).getTime())}catch{O.error("監査ログの取得に失敗しました")}finally{V.value=!1}}};return X(async()=>{try{const e=await ie({pageSize:1e3,status:"active"});Y.value=e.employees}catch{O.error("社員一覧の取得に失敗しました")}}),ee([S,v],x),(e,t)=>{const _=c("el-option"),h=c("el-select"),k=c("el-button"),z=c("el-date-picker"),M=c("el-empty"),N=c("el-icon"),m=c("el-tag"),f=c("el-table-column"),Z=c("el-table"),g=c("el-descriptions-item"),q=c("el-descriptions"),G=c("el-dialog");return i(),d(oe,{title:"社員操作監査"},{default:l(()=>[u("div",ue,[u("div",ce,[s(h,{modelValue:S.value,"onUpdate:modelValue":t[0]||(t[0]=a=>S.value=a),placeholder:"社員を選択してください",filterable:"",clearable:"",style:{width:"220px"},onChange:x},{default:l(()=>[(i(!0),b(E,null,te(Y.value,a=>(i(),d(_,{key:a.id,label:`${a.employeeCode} - ${a.fullName}`,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),u("div",de,[s(k,{icon:D(ae),circle:"",size:"small",onClick:t[1]||(t[1]=a=>j(-1))},null,8,["icon"]),s(z,{modelValue:v.value,"onUpdate:modelValue":t[2]||(t[2]=a=>v.value=a),type:"month",placeholder:"年月を選択",format:"YYYY年MM月","value-format":"YYYY-MM",style:{width:"150px"},onChange:x},null,8,["modelValue"]),s(k,{icon:D(le),circle:"",size:"small",onClick:t[3]||(t[3]=a=>j(1)),disabled:v.value>=D(L)},null,8,["icon","disabled"])])]),S.value?V.value?(i(),b("div",pe,[
1s(N,{class:"is-loading",size:"32"},{default:l(()=>[s(D(se))]),_:1}),t[5]||(t[5]=u("p",null,"読み込み中...",-1))])):(i(),b(E,{key:2},[u("div",me,[u("span",_e,o(U.value)+" の操作ログ:",1),s(m,{type:"info",size:"small"},{default:l(()=>[r("全 "+o($.value.length)+" 件",1)]),_:1}),y.value.timecard>0?(i(),d(m,{key:0,type:"success",size:"small"},{default:l(()=>[r("勤怠 "+o(y.value.timecard),1)]),_:1})):p("",!0),y.value.application>0?(i(),d(m,{key:1,type:"primary",size:"small"},{default:l(()=>[r("申請 "+o(y.value.application),1)]),_:1})):p("",!0),y.value.auth>0?(i(),d(m,{key:2,type:"warning",size:"small"},{default:l(()=>[r("認証 "+o(y.value.auth),1)]),_:1})):p("",!0),y.value.other>0?(i(),d(m,{key:3,size:"small"},{default:l(()=>[r("その他 "+o(y.value.other),1)]),_:1})):p("",!0)]),$.value.length===0?(i(),d(M,{key:0,description:"この月の操作ログはありません","image-size":80,style:{"margin-top":"40px"}})):(i(),d(Z,{key:1,data:$.value,stripe:"",size:"small",style:{"margin-top":"12px"},"default-sort":{prop:"timestamp",order:"ascending"}},{default:l(()=>[s(f,{label:"日時",width:"130",prop:"timestamp",sortable:""},{default:l(({row:a})=>[u("span",fe,o(P(a.timestamp)),1)]),_:1}),s(f,{label:"アクション",width:"150"},{default:l(({row:a})=>[s(m,{type:R(a.action),size:"small"},{default:l(()=>[r(o(a.action),1)]),_:2},1032,["type"])]),_:1}),s(f,{label:"種別",width:"90"},{default:l(({row:a})=>[s(m,{type:K(a.resource),size:"small",effect:"plain"},{default:l(()=>[r(o(I(a.resource)),1)]),_:2},1032,["type"])]),_:1}),s(f,{label:"操作者",width:"140"},{default:l(({row:a})=>[u("span",ge,o(a.userEmail||a.employeeName||"-"),1)]),_:1}),s(f,{label:"説明","min-width":"200","show-overflow-tooltip":""},{default:l(({row:a})=>[u("span",null,o(a.description),1)]),_:1}),s(f,{label:"結果",width:"70",align:"center"},{default:l(({row:a})=>[s(m,{type:a.status==="success"?"success":"danger",size:"small",effect:"plain"},{default:l(()=>[r(o(a.status==="success"?"成功":"失敗"),1)]),_:2},1032,["type"])]),_:1}),s(f,{label:"",width:"60",align:"center"},{default:l(({row:a})=>[s(k,{link:"",size:"small",onClick:C=>W(a)},{default:l(()=>[...t[6]||(t[6]=[r("詳細",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))],64)):(i(),d(M,{key:0,description:"社員を選択してください","image-size":80,style:{"margin-top":"60px"}}))]),s(G,{modelValue:T.value,"onUpdate:modelValue":t[4]||(t[4]=a=>T.value=a),title:"操作ログ詳細",width:"620px","append-to-body":""},{default:l(()=>{var a,C,B,F;return[n.value?(i(),b(E,{key:0},[s(q,{column:1,border:"",size:"small"},{default:l(()=>[s(g,{label:"日時"},{default:l(()=>[r(o(H(n.value.timestamp)),1)]),_:1}),s(g,{label:"アクション"},{default:l(()=>[r(o(n.value.action),1)]),_:1}),s(g,{label:"種別"},{default:l(()=>[r(o(I(n.value.resource)),1)]),_:1}),s(g,{label:"対象社員"},{default:l(()=>[r(o(n.value.employeeName||"-"),1)]),_:1}),s(g,{label:"操作者"},{default:l(()=>[r(o(n.value.userEmail||"-"),1)]),_:1}),s(g,{label:"説明"},{default:l(()=>[r(o(n.value.description),1)]),_:1}),s(g,{label:"結果"},{default:l(()=>[r(o(n.value.status),1)]),_:1}),n.value.ipAddress?(i(),d(g,{key:0,label:"IPアドレス"},{default:l(()=>[r(o(n.value.ipAddress),1)]),_:1})):p("",!0),n.value.errorMessage?(i(),d(g,{key:1,label:"エラー"},{default:l(()=>[r(o(n.value.errorMessage),1)]),_:1})):p("",!0)]),_:1}),(a=n.value.changes)!=null&&a.before||(C=n.value.changes)!=null&&C.after?(i(),b("div",ve,[(B=n.value.changes)!=null&&B.before?(i(),b("div",ye,[t[7]||(t[7]=u("div",{class:"change-label"},"変更前",-1)),u("pre",he,o(JSON.stringify(n.value.changes.before,null,2)),1)])):p("",!0),(F=n.value.changes)!=null&&F.after?(i(),b("div",be,[t[8]||(t[8]=u("div",{class:"change-label"},"変更後",-1)),u("pre",ke,o(JSON.stringify(n.value.changes.after,null,2)),1)])):p("",!0)])):p("",!0),n.value.metadata&&Object.keys(n.value.metadata).length>0?(i(),b("div",we,[t[9]||(t[9]=u("div",{class:"change-label"},"メタデータ",-1)),u("pre",Se,o(JSON.stringify(n.value.metadata,null,2)),1)])):p("",!0)],64)):p("",!0)]}),_:1},8,["modelValue"])]),_:1})}}}),je=re($e,[["__scopeId","data-v-0f981fa7"]]);export{je as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.