PageSourceSearch

https://doglish.tw/_nuxt/Dd6TT5VT.js

js doglish.tw collected 2026-10-07 06:56:52 UTC 21,574 bytes, 1 lines download raw bytes

1import{_ as ve}from"./DhHkCUG-.js";import{_ as le}from"./BV-ViRdZ.js";import ae from"./Bx5o2CJm.js";import{r as d,j as re,a5 as ne,c as l,o as s,a as t,ae as z,b as m,w as $,a8 as e,t as v,a9 as h,n as F,F as q,k as Z,d as M,aD as Y,_ as pe,ba as oe,a6 as g,aq as ie,aL as ye,a3 as se,ar as we,ao as _e,bL as ke,af as be}from"./yaqlGhj_.js";import{u as Q}from"./NrXdiPd1.js";import{u as ce}from"./DLlTtYjN.js";import{_ as ue}from"./DlAUqK2U.js";import{u as xe}from"./TQtYIyvt.js";import"./BAz7lLB1.js";import"./B0rbYps2.js";const $e={class:"relative w-full overflow-hidden bg-white shadow lg:rounded-lg"},Ce={class:"border-b p-4"},Ne={class:"flex items-center justify-between"},je={class:"flex items-center space-x-3"},Ee=["src"],Se={class:"font-normal"},Ae={class:"text-sm text-gray-500"},Fe={class:"flex items-center space-x-2"},ze={class:"flex-1 overflow-y-auto p-4"},Pe={key:0,class:"mb-4 whitespace-pre-wrap text-gray-700"},Te={class:"border-y border-gray-100"},Le={key:0,class:"aspect-square"},qe={key:0,class:"loading loading-spinner loading-md"},De={key:1,class:"flex aspect-square w-full animate-pulse flex-col items-center justify-center"},Ie={key:0,class:"mt-5 text-lg text-gray-500"},Ue={key:1,class:"grid grid-cols-2"},Re=["onClick"],Me={key:0,class:"loading loading-spinner loading-md"},Oe={key:1,class:"flex aspect-square w-full animate-pulse flex-col items-center justify-center"},Be={key:0,class:"mt-5 text-lg text-gray-500"},Ve={key:2,class:"grid grid-cols-2"},We=["onClick"],Ge={key:0,class:"loading loading-spinner loading-md"},He={key:1,class:"flex aspect-square w-full animate-pulse flex-col items-center justify-center"},Qe={key:0,class:"mt-5 text-lg text-gray-500"},Ze={class:"border-t p-4"},Je={class:"flex items-center justify-between text-sm text-gray-500"},Ke={class:"flex items-center space-x-4"},Xe={class:"flex items-center"},Ye={class:"flex items-center"},et={class:"flex items-center space-x-2"},tt={key:0},st={key:1},ot={class:"flex flex-col border-t lg:absolute lg:top-0 lg:right-0 lg:bottom-0 lg:left-1/2 lg:border-t-0 lg:border-l"},lt={class:"flex-1 overflow-y-auto p-4"},at=["src"],rt={class:"relative ml-2 flex flex-1 flex-col rounded-2xl bg-gray-100 px-3 py-2"},nt={class:"font-bold"},it={class:"mt-1 text-xs text-gray-500"},ct={key:0,class:"text-center text-gray-500"},ut={key:0,class:"flex items-center justify-center"},dt=["src"],mt={__name:"AdminHomeworkPost",props:{homework:{type:Object,required:!0}},emits:["delete"],setup(u,{emit:G}){const O=u,D=G,{strapiFetch:J}=ce(),P=d(null),b=d({}),w=d({}),H=d(!1),N=d(null),_=d(null),S=d(!1),I=n=>new Date(n).toLocaleString("zh-TW",{timeZone:"Asia/Taipei",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).replace(/\//g,"-").replace(",",""),B=()=>{S.value=!0},V=()=>{D("delete",O.homework.id),S.value=!1},A=()=>{S.value=!1},p=n=>{const r=n.split(".").pop().toLowerCase();return["jpg","jpeg","png","gif","webp"].includes(r)?"image":"video"},C=async n=>{try{const r=n.thumbnail||n.fileName,{url:y}=await J("homeworks/getFileSignedUrl","GET",{params:{fileName:r}});return y}catch(r){return g.warn("取得檔案 URL 失敗",{fileId:n.id,error:r}),null}},x=async n=>{try{const r=n.watermarked_fileName||n.fileName,{url:y}=await J("homeworks/getFileSignedUrl","GET",{params:{fileName:r}});return y}catch(r){return g.warn("取得原始檔案 URL 失敗",{fileId:n.id,error:r}),null}},j=async n=>{N.value=n,_.value=null,H.value=!0;const r=await x(n);r&&(_.value=r)},T=()=>{H.value=!1,N.value=null,_.value=null},U=async()=>{if(!O.homework?.homework_files?.length)return;const n=O.homework.homework_files.filter(r=>!b.value[r.id]&&!w.value[r.id]);n.length!==0&&await Promise.all(n.map(async r=>{w.value[r.id]=!0;try{const y=await C(r);y?b.value[r.id]={thumbnail:y}:(g.warn("檔案 URL 獲取失敗",{fileName:r.fileName}),b.value[r.id]=null)}catch(y){g.error("獲取檔案 URL 失敗",{fileName:r.fileName,error:y}),b.value[r.id]=null}finally{w.value[r.id]=!1}}))};re(()=>{const n=new IntersectionObserver(r=>{r.forEach(y=>{y.isIntersecting&&(U(),n.unobserve(y.target))})},{rootMargin:"200px"});P.value&&n.observe(P.value),ne(()=>{n.disconnect()})});const K=n=>{ie.debug("圖片載入失敗,使用預設頭像"),n.target.src.endsWith("/default_user.webp")||(n.target.src="/default_user.webp")};return(n,r)=>{const y=le,L=ae,W=pe;return s(),l(q,null,[t("div",$e,[t("div",{ref_key:"postRef",ref:P,class:"flex flex-col lg:w-1/2"},[t("div",Ce,[t("div",Ne,[t("div",je,[m(y,null,{default:$(()=>[t("img",{src:("useCustomerPhotoAndName"in n?n.useCustomerPhotoAndName:e(Q))(u.homework.author).photo,class:"h-10 w-10 rounded-full object-cover",alt:"作者頭像",onError:K},null,40,Ee)]),_:1}),t("div",null,[t("div",Se,v(("useCustomerPhotoAndName"in n?n.useCustomerPhotoAndName:e(Q))(u.homework.author).name),1),t("div",Ae,v(I(u.homework.createdAt)),1)])]),t("div",Fe,[t("button",{class:"text-gray-400 hover:text-red-500",onClick:B},[m(L,{size:"1.25rem",name:"solar:close-circle-outline",class:""})])])])]),t("div",ze,[u.homework.description?(s(),l("p",Pe,v(u.homework.description),1)):h("",!0),t("div",Te,[(u.homework.homework_files||[]).length===1?(s(),l("div",Le,[t("div",{class:"relative h-full w-full cursor-pointer",onClick:r[0]||(r[0]=i=>j(u.homework.homework_files[0]))},[e(b)[u.homework.homework_files[0].id]?.thumbnail&&(u.homework.homework_files[0].thumbnail||p(u.homework.homework_files[0].fileName)==="image")?(s(),z(W,{key:0,src:e(b)[u.homework.homework_files[0].id].thumbnail,class:"h-full w-full object-cover",alt:"media thumbnail"},null,8,["src"])):(s(),l("div",{key:1,class:F(["flex h-full w-full flex-col items-center justify-center bg-gray-100",{"animate-pulse":e(w)[u.homework.homework_files[0].id]}])},[e(w)[u.homework.homework_files[0].id]?(s(),l("div",qe)):(s(),l("div",De,[m(L,{name:p(u.homework.homework_files[0].fileName)==="video"?"lucide:video":"lucide:image",size:"3rem",class:"text-gray-400"},null,8,["name"]),p(u.homework.homework_files[0].fileName)==="video"?(s(),l("span",Ie,"影片縮圖轉檔中")):h("",!0)]))],2))])])):(u.homework.homework_files||[]).length===2?(s(),l("div",Ue,[(s(!0),l(q,null,Z(u.homework.homework_files,i=>(s(),l("div",{key:i.id,class:"relative aspect-square cursor-pointer",onClick:X=>j(i)},[e(b)[i.id]?.thumbnail&&(i.thumbnail||p(i.fileName)==="image")?(s(),z(W,{key:0,src:e(b)[i.id].thumbnail,class:"h-full w-full object-cover",alt:"media thumbnail"},null,8,["src"])):(s(),l("div",{key:1,class:F(["flex h-full w-full flex-col items-center justify-center bg-gray-100",{"animate-pulse":e(w)[i.id]}])},[e(w)[i.id]?(s(),l("div",Me)):(s(),l("div",Oe,[m(L,{name:p(i.fileName)==="video"?"lucide:video":"lucide:image",size:"3rem",class:"text-gray-400"},null,8,["name"]),p(i.fileName)==="video"?(s(),l("span",Be,"影片縮圖轉檔中")):h("",!0)]))],2))],8,Re))),128))])):(u.homework.homework_files||[]).length>=3?(s(),l("div",Ve,[(s(!0),l(q,null,Z(u.homework.homework_files,i=>(s(),l("div",{key:i.id,class:"relative aspect-square cursor-pointer",onClick:X=>j(i)},[e(b)[i.id]?.thumbnail&&(i.thumbnail||p(i.fileName)==="image")?(s(),z(W,{key:0,src:e(b)[i.id].thumbnail,class:"h-full w-full object-cover",alt:"media thumbnail"},null,8,["src"])):(s(),l("div",{key:1,class:F(["flex h-full w-full flex-col items-center justify-center bg-gray-100",{"animate-pulse":e(w)[i.id]}])},[e(w)[i.id]?(s(),l("div",Ge)):(s(),l("div",He,[m(L,{name:p(i.fileName)==="video"?"lucide:video":"lucide:image",size:"3rem",class:"text-gray-400"},null,8,["name"]),p(i.fileName)==="video"?(s(),l("span",Qe,"影片縮圖轉檔中")):h("",!0)]))],2))],8,We))),128))])):h("",!0)])]),t("div",Ze,[t("div",Je,[t("div",Ke,[t("div",Xe,[m(L,{size:"1rem",name:"solar:heart-outline",class:"mr-1"}
1),M(" "+v(u.homework.likes.length),1)]),t("div",Ye,[m(L,{size:"1rem",name:"solar:chat-round-outline",class:"mr-1"}),M(" "+v(u.homework.comments.length),1)])]),t("div",et,[u.homework.author.id===u.homework.student.id?(s(),l("span",tt,"訓練師:"+v(("useCustomerPhotoAndName"in n?n.useCustomerPhotoAndName:e(Q))(u.homework.teacher).name),1)):(s(),l("span",st,"學生:"+v(("useCustomerPhotoAndName"in n?n.useCustomerPhotoAndName:e(Q))(u.homework.student).name),1))])])])],512),t("div",ot,[t("div",lt,[(s(!0),l(q,null,Z(O.homework.comments,i=>(s(),l("div",{key:i.id,class:"mb-3 flex items-start"},[m(y,null,{default:$(()=>[t("img",{src:("useCustomerPhotoAndName"in n?n.useCustomerPhotoAndName:e(Q))(i.user).photo,class:"h-10 w-10 rounded-full object-cover",alt:"comment user avatar",onError:K},null,40,at)]),_:2},1024),t("div",rt,[t("span",nt,v(("useCustomerPhotoAndName"in n?n.useCustomerPhotoAndName:e(Q))(i.user).name),1),t("span",null,v(i.content),1),t("span",it,v(I(i.postedAt)),1)])]))),128)),u.homework.comments.length===0?(s(),l("div",ct,"尚無留言")):h("",!0)])])]),(s(),z(oe,{to:"body"},[e(H)?(s(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/90",onClick:T},[t("button",{class:"absolute top-4 right-4 z-[60] h-10 w-10 rounded-full bg-white/10 p-2 text-white hover:bg-white/20",onClick:Y(T,["stop"])},[m(L,{size:"1.5rem",name:"solar:close-circle-outline",class:""})]),t("div",{class:"relative flex h-screen w-full items-center justify-center",onClick:r[1]||(r[1]=Y(()=>{},["stop"]))},[e(_)?h("",!0):(s(),l("div",ut,[...r[3]||(r[3]=[t("div",{class:"loading loading-spinner loading-lg"},null,-1)])])),e(_)&&p(e(N)?.fileName)==="video"?(s(),l("video",{key:1,src:e(_),class:"h-auto max-h-screen w-full object-contain",controls:"",autoplay:""},null,8,dt)):h("",!0),e(_)&&p(e(N)?.fileName)==="image"?(s(),z(W,{key:2,src:e(_),class:"h-auto max-h-screen w-full object-contain",alt:"fullscreen preview"},null,8,["src"])):h("",!0)])])):h("",!0)])),(s(),z(oe,{to:"body"},[e(S)?(s(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:A},[t("div",{class:"w-full max-w-md rounded-lg bg-white p-6 shadow-xl",onClick:r[2]||(r[2]=Y(()=>{},["stop"]))},[r[4]||(r[4]=t("h3",{class:"mb-4 text-lg font-normal"},"確認刪除",-1)),r[5]||(r[5]=t("p",{class:"mb-6 text-gray-600"},"確定要刪除這則作業嗎?此操作無法復原。",-1)),t("div",{class:"flex justify-end space-x-4"},[t("button",{class:"rounded-lg px-4 py-2 text-gray-600 hover:bg-gray-100",onClick:A}," 取消 "),t("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white hover:bg-red-600",onClick:V}," 確認刪除 ")])])])):h("",!0)]))],64)}}},ht=ue(mt,[["__scopeId","data-v-ad02d4d2"]]),ft={class:"flex h-[calc(100vh-73px)] bg-gray-300 lg:h-screen"},gt={class:"m-4 hidden h-fit flex-col gap-8 rounded-lg border bg-white p-4 shadow lg:flex"},vt={class:"w-64"},pt={class:"teacher-dropdown relative"},yt={class:"flex w-full items-center gap-2"},wt=["src"],_t={class:"truncate"},kt={key:1},bt={key:0,class:"absolute left-0 z-10 mt-1 w-full rounded-lg border bg-white py-1 shadow-lg"},xt=["onClick"],$t=["src"],Ct={class:"truncate"},Nt={class:"w-64"},jt={class:"student-dropdown relative"},Et={class:"flex w-full items-center gap-2"},St=["src"],At={class:"truncate"},Ft={key:1},zt={key:0,class:"absolute left-0 z-10 mt-1 w-full rounded-lg border bg-white py-1 shadow-lg"},Pt=["onClick"],Tt=["src"],Lt={class:"truncate"},qt={class:"w-64"},Dt={class:"flex flex-col gap-4"},It={key:0,class:"mt-2 rounded-md border p-2 text-sm"},Ut={class:"flex items-center gap-2"},Rt={key:0},Mt={key:1},Ot={class:"font-bold"},Bt={key:0,class:"py-8 text-center"},Vt={key:1,class:"flex flex-col space-y-2"},Wt={key:0,class:"text-center text-gray-500"},Gt={key:2,class:"flex w-full items-center justify-center p-4"},Ht={key:0,class:"loading"},Qt={__name:"index",setup(u){const{strapiFetch:G,getEntries:O}=ce(),{toast:D}=xe(),J=d(null),P=d([]),b=d(!1),w=d(!1),H=d(10),N=d(1),_=d(!0),S=d([]),I=d([]),B=d(!1),V=d(!1),A=d(null),p=d(!1),C=d(null),x=d(null),j=d("all"),T=d(!1),U=d(!1),K=o=>{const a=document.querySelector(".teacher-dropdown"),f=document.querySelector(".student-dropdown");a&&!a.contains(o.target)&&(T.value=!1),f&&!f.contains(o.target)&&(U.value=!1)},n=o=>{C.value=o?o.id:null,T.value=!1},r=o=>{x.value=o?o.id:null,U.value=!1};re(()=>{document.addEventListener("click",K),y(),ee()}),ne(()=>{document.removeEventListener("click",K)});const y=async()=>{try{const{data:o}=await O("purchase-orders",{filters:{service_type:"course",status:{$in:["已付款","進行中","完成"]}},sort:"createdAt:desc",populate:{customer:{fields:["id","line_displayName","line_picture_url","homework_display_name"],populate:{homework_display_picture:!0}},expert:{populate:{user:{fields:["id","line_displayName","line_picture_url","homework_display_name"],populate:{homework_display_picture:!0}}}}}}),a=new Map;o.forEach(E=>{const k=E.customer;k&&(a.has(k.id)||a.set(k.id,k))}),I.value=Array.from(a.values());const f=new Map;o.forEach(E=>{const k=E.expert.user;k&&(f.has(k.id)||f.set(k.id,k))}),S.value=Array.from(f.values()),g.debug("students:",I.value),g.debug("teachers:",S.value)}catch(o){g.error("Failed to fetch students:",o)}},L=async()=>{try{B.value=!0;const o=await G("homework-files/reprocess-failed","POST");if(o.success)D({title:"處理成功",description:`${o.message},共 ${o.count} 個檔案`}),await W();else throw new Error(o.message||"重新處理檔案失敗")}catch(o){g.error("Failed to reprocess files:",o),D({title:"處理失敗",description:o.message||"重新處理檔案時發生錯誤",variant:"destructive"})}finally{B.value=!1}},W=async()=>{try{V.value=!0;const o=await G("homework-files/check-queue-status","GET");if(g.debug("response:",o),!o.success)throw new Error(`狀態檢查失敗
1: ${o.status} ${o.statusText}`);A.value=o.data,D({title:"處理隊列狀態",description:A.value.isIdle?"所有檔案已處理完成":`目前有 ${A.value.queueLength} 個檔案正在處理中`})}catch(o){throw g.error("檢查佇列狀態失敗:",o),o}finally{V.value=!1}},i=async()=>{try{p.value=!0;const o=await G("homework-files/reset-stuck","POST");if(o.success)D({title:"重置成功",description:`${o.message},共 ${o.count} 個檔案`}),o.count>0&&setTimeout(()=>{D({title:"提示",description:"可以點擊「重新處理錯誤檔案」按鈕來處理這些檔案"})},1e3);else throw new Error(o.message||"重置超時檔案失敗")}catch(o){g.error("Failed to reset stuck files:",o),D({title:"重置失敗",description:o.message||"重置超時檔案時發生錯誤",variant:"destructive"})}finally{p.value=!1}},X=()=>{P.value=[],N.value=1,_.value=!0,de(),ee(!1)},{reset:de}=ye(J,async()=>{!w.value&&_.value&&(N.value++,await ee(!0))},{distance:10,canLoadMore:()=>_.value&&!w.value}),ee=async(o=!1)=>{o?w.value=!0:b.value=!0;try{g.debug("開始載入頁碼:",N.value,"loadMore:",o);const a={sort:"createdAt:desc",pagination:{page:N.value,pageSize:H.value},populate:{author:{populate:{homework_display_picture:!0},fields:["id","line_displayName","line_picture_url","homework_display_name"]},student:{populate:{homework_display_picture:!0},fields:["id","line_displayName","line_picture_url","homework_display_name"]},teacher:{populate:{homework_display_picture:!0},fields:["id","line_displayName","line_picture_url","homework_display_name"]},homework_files:!0,comments:{populate:{user:{populate:{homework_display_picture:!0},fields:["id","line_displayName","line_picture_url","homework_display_name"]}}},likes:{populate:{user:{fields:["id"]}}}}};a.filters={},C.value&&(a.filters.teacher={id:{$eq:C.value}}),x.value&&(a.filters.student={id:{$eq:x.value}}),j.value==="pending"?a.filters.comments={$null:!0}:j.value==="new-message"&&(a.filters.$and=[{comments:{$notNull:!0}},{comments:{user:{id:{$eq:x.value}}}}]);const{data:f,meta:E}=await O("homeworks",a);g.debug("載入頁碼:",N.value),g.debug("載入數量:",f.length),g.debug("總數據:",E.pagination.total),o?P.value.push(...f):P.value=f,_.value=N.value*H.value<E.pagination.total,g.debug("是否還有更多:",_.value)}catch(a){g.error("Failed to fetch homeworks:",a)}finally{b.value=!1,w.value=!1}},me=async o=>{try{await G(`homeworks/${o}`,"DELETE"),await ee()}catch(a){g.error("Failed to delete homework:",a)}};se(C,()=>{X()}),se(x,()=>{X()}),se(j,()=>{X()});const he=()=>{C.value=null,x.value=null,j.value="all"},R=o=>({name:o.homework_display_name||o.line_displayName,picture:o.homework_display_picture?.formats?.thumbnail?.url||o.line_picture_url}),te=o=>{ie.debug("handleImageError"),o.target.src.endsWith("/default_user.webp")||(o.target.src="/default_user.webp")};return(o,a)=>{const f=ve,E=le,k=ae,fe=ht;return s(),l("div",ft,[t("div",gt,[m(f,{variant:"outline",class:"hover:bg-gray-200 hover:text-gray-800",onClick:a[0]||(a[0]=c=>("navigateTo"in o?o.navigateTo:e(we))("/dashboard/admin/homework/create"))},{default:$(()=>[...a[6]||(a[6]=[M(" 新增作業 ",-1)])]),_:1}),t("div",vt,[a[8]||(a[8]=t("label",{class:"mb-1 block text-sm font-normal"},"老師",-1)),t("div",pt,[m(f,{class:"w-full justify-start rounded border bg-white px-4 py-2 text-gray-600 hover:bg-gray-200 hover:text-gray-600",onClick:a[1]||(a[1]=Y(c=>T.value=!e(T),["stop"]))},{default:$(()=>[t("div",yt,[e(C)?(s(),l(q,{key:0},[m(E,null,{default:$(()=>[t("img",{src:R(e(S).find(c=>c.id===e(C))).picture,alt:"teacher avatar",class:"h-5 w-5 rounded-full object-cover",onError:te},null,40,wt)]),_:1}),t("span",_t,v(R(e(S).find(c=>c.id===e(C))).name),1)],64)):(s(),l("span",kt,"全部")),m(k,{name:"solar:alt-arrow-down-outline",size:"1rem",class:F(["ml-auto text-gray-400 transition-transform duration-200",{"rotate-180":e(T)}])},null,8,["class"])])]),_:1}),e(T)?(s(),l("div",bt,[t("div",{class:F(["flex cursor-pointer items-center gap-2 px-3 py-2 hover:bg-gray-100",{"bg-gray-50":!e(C)}]),onClick:a[2]||(a[2]=c=>n(null))},[...a[7]||(a[7]=[t("span",null,"全部",-1)])],2),(s(!0),l(q,null,Z(e(S),c=>(s(),l("div",{key:c.id,class:F(["flex cursor-pointer items-center gap-2 px-3 py-2 hover:bg-gray-100",{"bg-gray-50":e(C)===c.id}]),onClick:ge=>n(c)},[m(E,null,{default:$(()=>[t("img",{src:R(c).picture,alt:"teacher avatar",class:"h-5 w-5 rounded-full object-cover",onError:te},null,40,$t)]),_:2},1024),t("span",Ct,v(R(c).name),1)],10,xt))),128))])):h("",!0)])]),t("div",Nt,[a[10]||(a[10]=t("label",{class:"mb-1 block text-sm font-normal"},"學生",-1)),t("div",jt,[m(f,{class:"w-full justify-start rounded border bg-white px-4 py-2 text-gray-600 hover:bg-gray-200 hover:text-gray-600",onClick:a[3]||(a[3]=Y(c=>U.value=!e(U),["stop"]))},{default:$(()=>[t("div",Et,[e(x)?(s(),l(q,{key:0},[m(E,null,{default:$(()=>[t("img",{src:R(e(I).find(c=>c.id===e(x))).picture,alt:"student avatar",class:"h-5 w-5 rounded-full object-cover",onError:te},null,40,St)]),_:1}),t("span",At,v(R(e(I).find(c=>c.id===e(x))).name),1)],64)):(s(),l("span",Ft,"全部")),m(k,{name:"solar:alt-arrow-down-outline",size:"1rem",class:F(["ml-auto text-gray-400 transition-transform duration-200",{"rotate-180":e(U)}])},null,8,["class"])])]),_:1}),e(U)?(s(),l("div",zt,[t("div",{class:F(["flex cursor-pointer items-center gap-2 px-3 py-2 hover:bg-gray-100",{"bg-gray-50":!e(x)}]),onClick:a[4]||(a[4]=c=>r(null))},[...a[9]||(a[9]=[t("span",null,"全部",-1)])],2),(s(!0),l(q,null,Z(e(I),c=>(s(),l("div",{key:c.id,class:F(["flex cursor-pointer items-center gap-2 px-3 py-2 hover:bg-gray-100",{"bg-gray-50":e(x)===c.id}]),onClick:ge=>r(c)},[m(E,null,{default:$(()=>[t("img",{src:R(c).picture,alt:"student avatar",class:"h-5 w-5 rounded-full object-cover",onError:te},null,40,Tt)]),_:2},1024),t("span",Lt,v(R(c).name),1)],10,Pt))),128))])):h("",!0)])]),t("div",qt,[a[12]||(a[12]=t("label",{class:"mb-1 block text-sm font-normal"},"狀態",-1)),_e(t("select",{"onUpdate:modelValue":a[5]||(a[5]=c=>be(j)?j.value=c:null),class:"w-full rounded border bg-white px-3 py-2"},[...a[11]||(a[11]=[t("option",{value:"all"},"全部",-1),t("option",{value:"pending"},"老師未回覆",-1),t("option",{value:"new-message"},"學生新留言",-1)])],512),[[ke,e(j)]])]),m(f,{variant:"outline",class:"hover:bg-gray-200 hover:text-gray-800",onClick:he},{default:$(()=>[...a[13]||(a[13]=[M(" 清除篩選 ",-1)])]),_:1}),t("div",Dt,[m(f,{variant:"outline",disabled:e(p),class:"hover:bg-gray-200 hover:text-gray-800",onClick:i},{default:$(()=>[e(p)?(s(),z(k,{key:0,size:"1rem",name:"lucide:loader",class:"mr-2 animate-spin"})):h("",!0),M(" "+v(e(p)?"重置中...":"重置超時檔案(>24h)"),1)]),_:1},8,["disabled"]),m(f,{variant:"outline",disabled:e(B),class:"hover:bg-gray-200 hover:text-gray-800",onClick:L},{default:$(()=>[e(B)?(s(),z(k,{key:0,size:"1rem",name:"lucide:loader",class:"mr-2 animate-spin"})):h("",!0),M(" "+v(e(B)?"處理中...":"重新處理錯誤檔案"),1)]),_:1},8,["disabled"]),m(f,{variant:"outline",disabled:e(V),class:"hover:bg-gray-200 hover:text-gray-800",onClick:W},{default:$(()=>[e(V)?(s(),z(k,{key:0,size:"1rem",name:"lucide:loader",class:"mr-2 animate-spin"})):h("",!0),M(" "+v(e(V)?"檢查中...":"檢查處理隊列狀態"),1)]),_:1},8,["disabled"]),e(A)?(s(),l("div",It,[t("div",Ut,[t("div",{class:F(["h-3 w-3 rounded-full",e(A).isIdle?"bg-green-500":"bg-yellow-500"])},null,2),e(A).isIdle?(s(),l("div",Rt,"所有檔案已處理完成")):(s(),l("div",Mt,[t("span",Ot,v(e(A).queueLength),1),a[14]||(a[14]=M(" 個檔案正在處理中 ",-1))]))])])):h("",!0)])]),t("div",{ref_key:"containerRef",ref:J,class:"flex-1 overflow-y-scroll lg:py-4 lg:pr-4"},[e(b)?(s(),l("div",Bt)):(s(),l("div",Vt,[(s(!0),l(q,null,Z(e(P),c=>(s(),z(fe,{key:c.id,homework:c,onDelete:me}
1,null,8,["homework"]))),128)),e(P).length===0?(s(),l("div",Wt,"目前沒有作業")):h("",!0)])),e(_)||e(w)?(s(),l("div",Gt,[e(w)?(s(),l("span",Ht)):h("",!0)])):h("",!0)],512)])}}},as=ue(Qt,[["__scopeId","data-v-34ef9bc0"]]);export{as 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.