PageSourceSearch

https://smartkintai.ai/assets/ApplicationAuditReport-EX5_QdQR.js

js smartkintai.ai collected 2026-10-05 15:06:26 UTC 9,418 bytes, 1 lines download raw bytes

1import{d as ae,r as C,c as x,o as se,R as le,n as w,w as n,W as ne,s as r,f as p,e as m,j as f,g as o,u as A,aK as oe,i as T,aL as F,A as u,T as ie,t as s,F as L,k as O,P as re,H as ce,S as ue,h as de}from"./index-C6DB0I7I.js";import{A as pe}from"./AdminLayout-CKFEpq6x.js";import{g as me,a as ve}from"./auditLogs-CfJmUNSr.js";import{_ as _e}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 ge={class:"audit-report-page"},fe={class:"date-nav"},ye={key:0,class:"loading-area"},he={key:1,class:"summary-bar"},be={class:"summary-label"},ke={key:3,class:"groups-container"},Se=["onClick"],Te={class:"employee-name"},we={class:"event-count"},De={class:"timeline"},Ae={class:"event-time"},$e={class:"event-actor"},ze={class:"event-desc"},Ce={key:0,class:"changes-section"},xe={key:0,class:"change-block"},Le={class:"change-json"},Ne={key:1,class:"change-block"},je={class:"change-json"},Pe={key:1,class:"changes-section"},Ve={class:"change-json"},Ye=ae({__name:"ApplicationAuditReport",setup(Ie){const V=e=>{const t=e.getFullYear(),d=String(e.getMonth()+1).padStart(2,"0"),y=String(e.getDate()).padStart(2,"0");return`${t}-${d}-${y}`},N=V(new Date),_=C(N),$=C(!1),h=C([]),P=C(!1),c=C(null),Z=x(()=>{const[e,t,d]=_.value.split("-").map(Number);return`${e}年${t}月${d}日`}),Y=x(()=>h.value.filter(e=>e.currentStatus==="承認済").length),I=x(()=>h.value.filter(e=>e.currentStatus==="却下").length),M=x(()=>h.value.filter(e=>e.currentStatus==="キャンセル").length),J=x(()=>h.value.filter(e=>e.currentStatus==="審査中").length),E=e=>{const[t,d,y]=_.value.split("-").map(Number),g=new Date(t,d-1,y+e);_.value=V(g)},R=()=>{_.value=N},G=e=>{const t=new Date(e),d=t.toLocaleDateString("ja-JP",{timeZone:"Asia/Tokyo",year:"numeric",month:"2-digit",day:"2-digit"}).replace(/\//g,"-"),y=String(t.toLocaleString("ja-JP",{timeZone:"Asia/Tokyo",hour:"2-digit",hour12:!1})).padStart(2,"0"),g=String(t.getMinutes()).padStart(2,"0");if(d===_.value)return`${y}:${g}`;const v=t.toLocaleString("ja-JP",{timeZone:"Asia/Tokyo",month:"numeric"}),D=t.toLocaleString("ja-JP",{timeZone:"Asia/Tokyo",day:"numeric"});return`${v}/${D} ${y}:${g}`},U=e=>new Date(e).toLocaleString("ja-JP",{timeZone:"Asia/Tokyo"}),z=e=>e.includes("承認")?"approve":e.includes("却下")?"reject":e.includes("キャンセル")||e.includes("取り消")?"cancel":e.includes("作成")||e.includes("申請")?"create":"other",H=e=>{const t=z(e);return t==="approve"?"success":t==="reject"?"danger":t==="cancel"?"warning":"info"},K=e=>{const t=z(e);return t==="approve"?"承認":t==="reject"?"却下":t==="cancel"?"キャンセル":"申請"},W=e=>{const t=e[e.length-1];if(!t)return"審査中";const d=z(t.action);return d==="approve"?"承認済":d==="reject"?"却下":d==="cancel"?"キャンセル":"審査中"},q=e=>e==="承認済"?"success":e==="却下"?"danger":e==="キャンセル"?"warning":"info",Q={leave:"休暇申請",overtime:"残業申請","missed-punch":"打刻漏れ","punch-correction":"打刻修正","break-correction":"休憩修正","punch-deletion":"打刻削除","business-trip":"出張申請","special-leave":"特別休暇","substitute-work":"振替出勤","substitute-pair":"振替申請セット","compensatory-leave":"代休申請","month-reopen":"締め再開申請","transportation-daily":"通勤費申請","transportation-pass":"定期代申請","transportation-business":"交通費申請","misc-expense":"その他経費"},X=e=>e?Q[e]||e:"-",ee=e=>{e.expanded=!e.expanded},te=e=>{c.value=e,P.value=!0},B=async()=>{$.value=!0,h.value=[];try{const e=`${_.value}T00:00:00+09:00`,t=`${_.value}T23:59:59+09:00`,y=(await me({resource:"application",startDate:e,endDate:t,limit:200,page:1})).logs.filter(l=>z(l.action)==="create"&&l.resourceId),g=[...new Set(y.map(l=>l.resourceId).filter(Boolean))].slice(0,50);if(g.length===0)return;const v=[];for(let l=0;l<g.length;l+=10){const k=g.slice(l,l+10),S=await Promise.all(k.map(a=>ve("application",a,50)));v.push(...S)}const D=g.map((l,k)=>{var i;const S=[...v[k]||[]].sort((b,j)=>new Date(b.timestamp).getTime()-new Date(j.timestamp).getTime()),a=y.find(b=>b.resourceId===l);return{applicationId:l,employeeName:(a==null?void 0:a.employeeName)||"-",applicationType:((i=a==null?void 0:a.metadata)==null?void 0:i.applicationType)||"",currentStatus:W(S),events:S,exp
1anded:!0}});D.sort((l,k)=>{var i,b;const S=new Date(((i=l.events[0])==null?void 0:i.timestamp)??0).getTime(),a=new Date(((b=k.events[0])==null?void 0:b.timestamp)??0).getTime();return S-a}),h.value=D}catch{ne.error("監査ログの取得に失敗しました")}finally{$.value=!1}};return se(B),le(_,B),(e,t)=>{const d=T("el-button"),y=T("el-date-picker"),g=T("el-icon"),v=T("el-tag"),D=T("el-empty"),l=T("el-descriptions-item"),k=T("el-descriptions"),S=T("el-dialog");return r(),w(pe,{title:"申請監査レポート"},{default:n(()=>[p("div",ge,[p("div",fe,[o(d,{icon:A(oe),circle:"",size:"small",onClick:t[0]||(t[0]=a=>E(-1))},null,8,["icon"]),o(y,{modelValue:_.value,"onUpdate:modelValue":t[1]||(t[1]=a=>_.value=a),type:"date",format:"YYYY/MM/DD","value-format":"YYYY-MM-DD",clearable:!1,size:"small",style:{width:"145px"}},null,8,["modelValue"]),o(d,{icon:A(F),circle:"",size:"small",onClick:t[2]||(t[2]=a=>E(1)),disabled:_.value>=A(N)},null,8,["icon","disabled"]),o(d,{size:"small",plain:"",onClick:R,disabled:_.value===A(N)},{default:n(()=>[...t[4]||(t[4]=[u("今日",-1)])]),_:1},8,["disabled"])]),$.value?(r(),m("div",ye,[o(g,{class:"is-loading",size:"32"},{default:n(()=>[o(A(ie))]),_:1}),t[5]||(t[5]=p("p",null,"読み込み中...",-1))])):h.value.length>0?(r(),m("div",he,[p("span",be,s(Z.value)+" に申請された件数:",1),o(v,{type:"info",size:"small"},{default:n(()=>[u("全 "+s(h.value.length)+" 件",1)]),_:1}),Y.value>0?(r(),w(v,{key:0,type:"success",size:"small"},{default:n(()=>[u("承認済 "+s(Y.value),1)]),_:1})):f("",!0),I.value>0?(r(),w(v,{key:1,type:"danger",size:"small"},{default:n(()=>[u("却下 "+s(I.value),1)]),_:1})):f("",!0),M.value>0?(r(),w(v,{key:2,type:"warning",size:"small"},{default:n(()=>[u("キャンセル "+s(M.value),1)]),_:1})):f("",!0),J.value>0?(r(),w(v,{key:3,size:"small"},{default:n(()=>[u("審査中 "+s(J.value),1)]),_:1})):f("",!0)])):$.value?f("",!0):(r(),w(D,{key:2,description:"この日の申請はありません","image-size":80,style:{"margin-top":"60px"}})),!$.value&&h.value.length>0?(r(),m("div",ke,[(r(!0),m(L,null,O(h.value,a=>(r(),m("div",{key:a.applicationId,class:"application-group"},[p("div",{class:"group-header",onClick:i=>ee(a)},[o(g,{class:ce(["expand-icon",{expanded:a.expanded}])},{default:n(()=>[o(A(F))]),_:1},8,["class"]),p("span",Te,s(a.employeeName),1),o(v,{size:"small",class:"type-tag"},{default:n(()=>[u(s(X(a.applicationType)),1)]),_:2},1024),o(v,{type:q(a.currentStatus),size:"small"},{default:n(()=>[u(s(a.currentStatus),1)]),_:2},1032,["type"]),p("span",we,s(a.events.length)+" 件のアクション",1)],8,Se),re(p("div",De,[(r(!0),m(L,null,O(a.events,i=>(r(),m("div",{key:i._id,class:"timeline-item"},[p("span",Ae,s(G(i.timestamp)),1),o(v,{type:H(i.action),size:"small",class:"event-action"},{default:n(()=>[u(s(K(i.action)),1)]),_:2},1032,["type"]),p("span",$e,[z(i.action)==="create"?(r(),m(L,{key:0},[u(s(i.employeeName||i.userEmail||"-"),1)],64)):(r(),m(L,{key:1},[u(s(i.userEmail||i.employeeName||"-"),1)],64))]),p("span",ze,s(i.description),1),o(d,{link:"",size:"small",class:"detail-btn",onClick:de(b=>te(i),["stop"])},{default:n(()=>[...t[6]||(t[6]=[u("詳細",-1)])]),_:1},8,["onClick"])]))),128))],512),[[ue,a.expanded]])]))),128))])):f("",!0),o(S,{modelValue:P.value,"onUpdate:modelValue":t[3]||(t[3]=a=>P.value=a),title:"監査ログ詳細",width:"600px","append-to-body":""},{default:n(()=>{var a,i,b,j;return[c.value?(r(),m(L,{key:0},[o(k,{column:1,border:"",size:"small"},{default:n(()=>[o(l,{label:"日時"},{default:n(()=>[u(s(U(c.value.timestamp)),1)]),_:1}),o(l,{label:"アクション"},{default:n(()=>[u(s(c.value.action),1)]),_:1}),o(l,{label:"リソース"},{default:n(()=>[u(s(c.value.resource),1)]),_:1}),o(l,{label:"対象社員"},{default:n(()=>[u(s(c.value.employeeName||"-"),1)]),_:1}),o(l,{label:"操作者"},{default:n(()=>[u(s(c.value.userEmail||"-"),1)]),_:1}),o(l,{label:"説明"},{default:n(()=>[u(s(c.value.description),1)]),_:1}),o(l,{label:"ステータス"},{default:n(()=>[u(s(c.value.status),1)]),_:1}),c.value.ipAddress?(r(),w(l,{key:0,label:"IPアドレス"},{default:n(()=>[u(s(c.value.ipAddress),1)]),_:1})):f("",!0)]),_:1}),(a=c.value.changes)!=null&&a.before||(i=c.value.changes)!=null&&i.after?(r(),m("div",Ce,[(b=c.value.changes)!=null&&b.before?(r(),m("div",xe,[t[7]||(t[7]=p("div",{class:"change-label"},"変更前",-1)),p("pre",Le,s(JSON.stringify(c.value.changes.before,null,2)),1)])):f("",!0),(j=c.value.changes)!=null&&j.after?(r(),m("div",Ne,[t[8]||(t[8]=p("div",{class:"change-label"},"変更後",-1)),p("pre",je,s(JSON.stringify(c.value.changes.after,null,2)),1)])):f("",!0)])):f("",!0),c.value.metadata&&Object.keys(c.value.metadata).length>0?(r(),m("div",Pe,[t[9]||(t[9]=p("div",{class:"change-label"},"メタデータ",-1)),p("pre",Ve,s(JSON.stringify(c.value.metadata,null,2)),1)])):f("",!0)],64)):f("",!0)]}),_:1},8,["modelValue"])])]),_:1})}}}),Ue=_e(Ye,[["__scopeId","data-v-08642b56"]]);export{Ue 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.