3 lines
6.2 KiB
JavaScript
3 lines
6.2 KiB
JavaScript
import{l as Y,j as s,p as Z,a as U,f as u,e as o,w as k,y as P,v,s as ee,k as ae,r as i,m as te,o as S,g as M,F as j,b as D,c as ne,t as le,U as H}from"./index-CdacCJcP.js";import{a as L,l as se}from"./leave-o9zTf0m1.js";import{t as A}from"./leaveTime-ZdUoa0wT.js";import{M as oe}from"./index-KILmrBM-.js";const ie={class:"page-wrapper"},re={class:"main-container"},ce={class:"fix mb-12"},ue={class:"search-wrap fix"},de={class:"search-wrap_date fl"},pe={class:"page-panel"},we=Y({__name:"AllLeave",setup(me){const F=te(),x=[{name:"all",label:"全部",status:void 0},{name:"approving",label:"审批中",status:0},{name:"passed",label:"已通过",status:1},{name:"rejected",label:"已拒绝",status:2},{name:"canceled",label:"已销假",status:3},{name:"withdrawn",label:"已撤回",status:4}],g=s("all"),f=s(""),h=s(""),w=s(""),y=s(""),B=s([]),c=s(1),C=s(parseInt(localStorage.getItem("customPageCount")||"10")),V=s([]),I=s(0),O=s(!1);async function p(){O.value=!0;try{const a=x.find(t=>t.name===g.value),e=await P.list({scope:"all",status:a==null?void 0:a.status,keyword:f.value||void 0,leaveType:h.value||void 0,startTime:w.value||void 0,endTime:y.value||void 0,pageIndex:c.value,pageSize:C.value}).send();V.value=(e==null?void 0:e.content)||[],I.value=(e==null?void 0:e.total)||0}catch(a){v.Message.error(a.message||"获取请假列表失败")}finally{O.value=!1}}async function R(){try{B.value=await ee.leaveTypes().send()||[]}catch{}}function d(){c.value=1,p()}function $(a){g.value=a,d()}function E(a){c.value=a,p()}function q(a){c.value=1,C.value=a,localStorage.setItem("customPageCount",String(a)),p()}async function W(){const a=x.find(e=>e.name===g.value);try{const e=await P.list({scope:"all",status:a==null?void 0:a.status,keyword:f.value||void 0,leaveType:h.value||void 0,startTime:w.value||void 0,endTime:y.value||void 0,pageIndex:1,pageSize:5e3}).send(),t=(e==null?void 0:e.content)||[];if(!t.length){v.Message.warning("当前条件下没有可导出的数据");return}const r=["申请人","请假类型","开始时间","结束时间","请假时长(小时)","请假事由","审批状态","申请时间"],b=l=>`"${String(l??"").replace(/"/g,'""')}"`,T=[r.map(b).join(",")].concat(t.map(l=>[l.userName,l.leaveTypeName||l.leaveType,l.startTime,l.endTime,A(l.totalHours),l.reason,l.statusName||L(l.status),l.applyTime].map(b).join(","))),N=new Blob(["\uFEFF"+T.join(`\r
|
|
`)],{type:"text/csv;charset=utf-8"}),_=URL.createObjectURL(N),m=document.createElement("a");m.href=_,m.download=`请假记录_${new Date().toISOString().slice(0,10)}.csv`,m.click(),URL.revokeObjectURL(_)}catch(e){v.Message.error(e.message||"导出失败")}}function G(a){F.push({path:"/detail",query:{leaveId:a.id}})}function J(a){oe({title:"删除",msg:`确定删除「${a.userName}」的这条请假申请吗?`,info:"管理端删除不可恢复",async onOk(){try{await P.remove([a.id]).send(),v.Message.success("删除成功"),V.value.length<=1&&c.value>1&&(c.value-=1),p()}catch(e){v.Message.error(e.message||"删除失败")}}})}function z(a,e,t,r){return H.operatingHandle(a,e,t,r)}const K=[{title:"序号",type:"index",width:70,align:"center"},{title:"申请人",key:"userName",width:110,align:"center"},{title:"请假类型",key:"leaveTypeName",width:110,align:"center",render:(a,e)=>a("span",{},e.row.leaveTypeName||e.row.leaveType||"-")},{title:"开始时间",width:160,align:"center",render:(a,e)=>a("span",{},String(e.row.startTime||"").slice(0,16))},{title:"结束时间",width:160,align:"center",render:(a,e)=>a("span",{},String(e.row.endTime||"").slice(0,16))},{title:"时长",width:100,align:"center",render:(a,e)=>a("span",{},`${A(e.row.totalHours)} 小时`)},{title:"请假事由",key:"reason",minWidth:150,align:"left",ellipsis:!0,tooltip:!0,render:(a,e)=>a("span",{},e.row.reason||"-")},{title:"申请时间",key:"applyTime",width:160,align:"center"},{title:"审批状态",width:110,align:"center",render:(a,e)=>{const t=e.row;return a("span",{style:"display:inline-flex;align-items:center;gap:6px;color:#515a6e;"},[a("i",{style:`width:8px;height:8px;border-radius:50%;display:inline-block;background:${se(t.status)};`}),t.statusName||L(t.status)])}},{title:"操作",width:150,align:"center",fixed:"right",render:(a,e)=>{const t=e.row,r=[z(a,"查看","icon-chakan",()=>G(t))];return t.canDelete&&r.push(z(a,"删除","icon-ashbin",()=>J(t))),r}}],Q=ae(()=>H.useTableHeight({isSearch:!0,isOperat:!0,isPage:!0}));return Z(()=>{R(),p()}),(a,e)=>{const t=i("Button"),r=i("TabPane"),b=i("Tabs"),T=i("DatePicker"),N=i("Option"),_=i("Select"),m=i("Input"),l=i("Table"),X=i("Page");return S(),U("div",ie,[u("div",re,[u("div",ce,[o(t,{class:"fl",icon:"md-download",onClick:W},{default:k(()=>[...e[4]||(e[4]=[M("导出 CSV",-1)])]),_:1})]),o(b,{value:g.value,onOnClick:$,class:"mb-12"},{default:k(()=>[(S(),U(j,null,D(x,n=>o(r,{key:n.name,name:n.name,label:n.label},null,8,["name","label"])),64))]),_:1},8,["value"]),u("div",ue,[u("div",de,[o(T,{type:"date",placeholder:"开始日期起",modelValue:w.value,"onUpdate:modelValue":e[0]||(e[0]=n=>w.value=n),onOnChange:d},null,8,["modelValue"]),e[5]||(e[5]=u("span",{class:"ml-8 mr-8"},"至",-1)),o(T,{type:"date",placeholder:"开始日期止",modelValue:y.value,"onUpdate:modelValue":e[1]||(e[1]=n=>y.value=n),onOnChange:d},null,8,["modelValue"])]),o(_,{modelValue:h.value,"onUpdate:modelValue":e[2]||(e[2]=n=>h.value=n),class:"search-wrap_sel ml-12",clearable:"",placeholder:"请假类型",onOnChange:d},{default:k(()=>[(S(!0),U(j,null,D(B.value,n=>(S(),ne(N,{key:n.k,value:n.k},{default:k(()=>[M(le(n.v),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),o(m,{class:"fr",style:{width:"220px"},search:"",suffix:"ios-search",placeholder:"搜索申请人 / 事由",modelValue:f.value,"onUpdate:modelValue":e[3]||(e[3]=n=>f.value=n),onOnSearch:d,onOnClear:d},null,8,["modelValue"])]),o(l,{columns:K,data:V.value,class:"link-table table-bottom-box",height:Q.value,loading:O.value,"no-data-text":"暂无数据"},null,8,["data","height","loading"]),u("div",pe,[e[6]||(e[6]=u("div",{class:"fl ml-15 align-middle"},null,-1)),o(X,{class:"page-box fr",total:I.value,current:c.value,"page-size":C.value,"page-size-opts":[10,20,30,40],onOnPageSizeChange:q,onOnChange:E,placement:"top","show-total":"","show-sizer":""},null,8,["total","current","page-size"])])])])}}});export{we as default};
|