2 lines
5.4 KiB
JavaScript
2 lines
5.4 KiB
JavaScript
import{_ as R,h as y,p as Y,c,a as t,y as j,D as I,b as i,w as h,t as n,e as v,k as L,z as S,x as U,r as _,j as $,u as W,o as r,E as Z}from"./index-B7ewtAvV.js";import{r as q}from"./index-DWPi8Wj9.js";const O={class:"details-layout"},P={class:"calendar-section"},G={class:"content-card"},J=["onClick"],K={class:"day-header"},Q={class:"day-num"},X={key:0,class:"weekend-tag"},ee={class:"day-body"},te={key:0,class:"status-badge filled"},se={key:1,class:"status-badge partial"},ae={key:2,class:"status-badge unfilled"},le={class:"info-section"},oe={class:"content-card stats-mini-card"},ne={class:"card-title"},ie={class:"mini-stats-grid"},de={class:"mini-stat-item green-glow"},re={class:"value green-text"},ce={class:"mini-stat-item yellow-glow"},ue={class:"value yellow-text"},pe={class:"mini-stat-item red-glow"},ve={class:"value red-text"},_e={class:"mini-stat-item purple-glow"},fe={class:"value purple-text"},me={class:"content-card records-card"},ye={class:"card-title"},he={key:0,class:"empty-placeholder"},ge={__name:"TimesheetDetails",setup(be){const T=W(),u=y(new Date),f=y(new Date().toLocaleDateString("sv-SE",{timeZone:"Asia/Shanghai"})),C=y(new Date().toLocaleDateString("sv-SE",{timeZone:"Asia/Shanghai"})),x=y({}),M=y(!1),z=$(()=>{const s=u.value.getFullYear(),e=String(u.value.getMonth()+1).padStart(2,"0");return`${s}-${e}`}),E=$(()=>{var s;return((s=x.value[f.value])==null?void 0:s.list)||[]}),N=s=>new Date(s+"T00:00:00").getDay(),V=s=>{const e=N(s);return e===0||e===6},p=s=>{var e;return((e=x.value[s])==null?void 0:e.hours)||0},B=s=>s>=C.value||V(s)?!1:p(s)===0;async function F(s){M.value=!0;try{const d=(await q.getTimesheets({month:s})).data.records||[],o={};d.forEach(l=>{o[l.work_date]||(o[l.work_date]={hours:0,list:[]}),o[l.work_date].hours+=l.hours,o[l.work_date].list.push(l)}),x.value=o}catch{Z.error("获取月度工时失败")}finally{M.value=!1}}Y(u,s=>{if(s){const e=s.getFullYear(),d=String(s.getMonth()+1).padStart(2,"0"),o=`${e}-${d}`;F(o)}},{immediate:!0});function H(s){f.value=s}function A(){T.push({path:"/timesheet",query:{date:f.value}})}const g=$(()=>{const s=u.value,e=s.getFullYear(),d=s.getMonth()+1,o=new Date(e,d,0).getDate();let l=0,b=0,w=0,D=0;for(let m=1;m<=o;m++){const a=`${e}-${String(d).padStart(2,"0")}-${String(m).padStart(2,"0")}`,k=p(a);D+=k,k>=8?l++:k>0?b++:a<C.value&&!V(a)&&w++}return{fullDays:l,partialDays:b,unfilledDays:w,totalHours:Math.round(D*10)/10}});return(s,e)=>{const d=_("el-calendar"),o=_("el-button"),l=_("el-table-column"),b=_("el-tag"),w=_("el-table"),D=_("el-empty"),m=U("loading");return r(),c("div",null,[e[11]||(e[11]=t("div",{class:"page-header"},[t("h1",null,"填报详情"),t("p",null,"查看您的每日工时填报日历和明细记录")],-1)),j((r(),c("div",O,[t("div",P,[t("div",G,[e[1]||(e[1]=I('<div class="card-title" data-v-6fbaf2ee><span data-v-6fbaf2ee>📅 工时填报日历</span><div class="calendar-legends" data-v-6fbaf2ee><span class="legend-item" data-v-6fbaf2ee><span class="dot green" data-v-6fbaf2ee></span>已满8h</span><span class="legend-item" data-v-6fbaf2ee><span class="dot yellow" data-v-6fbaf2ee></span>未满8h</span><span class="legend-item" data-v-6fbaf2ee><span class="dot red" data-v-6fbaf2ee></span>漏填报</span><span class="legend-item" data-v-6fbaf2ee><span class="dot gray" data-v-6fbaf2ee></span>未到期/周末</span></div></div>',1)),i(d,{modelValue:u.value,"onUpdate:modelValue":e[0]||(e[0]=a=>u.value=a)},{"date-cell":h(({data:a})=>[t("div",{class:"day-cell-content",onClick:k=>H(a.day)},[t("div",K,[t("span",Q,n(a.day.split("-")[2]),1),V(a.day)?(r(),c("span",X,"休")):S("",!0)]),t("div",ee,[p(a.day)>=8?(r(),c("div",te,n(p(a.day))+"h ",1)):p(a.day)>0?(r(),c("div",se,n(p(a.day))+"h ",1)):B(a.day)?(r(),c("div",ae," 未填报 ")):S("",!0)])],8,J)]),_:1},8,["modelValue"])])]),t("div",le,[t("div",oe,[t("div",ne,"📊 本月度汇总 ("+n(z.value)+")",1),t("div",ie,[t("div",de,[e[3]||(e[3]=t("div",{class:"label"},"满额填报",-1)),t("div",re,[v(n(g.value.fullDays),1),e[2]||(e[2]=t("span",{class:"unit"},"天",-1))])]),t("div",ce,[e[5]||(e[5]=t("div",{class:"label"},"部分填报",-1)),t("div",ue,[v(n(g.value.partialDays),1),e[4]||(e[4]=t("span",{class:"unit"},"天",-1))])]),t("div",pe,[e[7]||(e[7]=t("div",{class:"label"},"漏填工作日",-1)),t("div",ve,[v(n(g.value.unfilledDays),1),e[6]||(e[6]=t("span",{class:"unit"},"天",-1))])]),t("div",_e,[e[9]||(e[9]=t("div",{class:"label"},"累计总工时",-1)),t("div",fe,[v(n(g.value.totalHours),1),e[8]||(e[8]=t("span",{class:"unit"},"小时",-1))])])])]),t("div",me,[t("div",ye,[t("span",null,"📋 "+n(f.value)+" 工时明细",1),f.value?(r(),L(o,{key:0,type:"primary",size:"default",onClick:A},{default:h(()=>[...e[10]||(e[10]=[v(" ✍️ 去填报/修改 ",-1)])]),_:1})):S("",!0)]),i(w,{data:E.value,stripe:"",style:{width:"100%"},size:"default"},{default:h(()=>[i(l,{prop:"client_name",label:"客户/项目","min-width":"120"}),i(l,{prop:"service_type",label:"售前/售后",width:"90"},{default:h(({row:a})=>[i(b,{type:a.service_type==="售后"?"warning":"success",size:"small"},{default:h(()=>[v(n(a.service_type||"售前"),1)]),_:2},1032,["type"])]),_:1}),i(l,{prop:"project_type",label:"子项目",width:"100"}),i(l,{prop:"hours",label:"工时(h)",width:"80"}),i(l,{prop:"remark",label:"备注","min-width":"120","show-overflow-tooltip":""})]),_:1},8,["data"]),E.value.length?S("",!0):(r(),c("div",he,[i(D,{description:"该日期暂无工时记录","image-size":60})]))])])])),[[m,M.value]])])}}},ke=R(ge,[["__scopeId","data-v-6fbaf2ee"]]);export{ke as default};
|