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