1import{A as oe,f as ce,g as me,B as fe,u as ve,j as pe,m as y,w as i,r as f,s as B,o as d,a as l,b as a,k as s,q as V,d as c,t as o,p as v,l as _e,c as m,F as J,C as Q,D as ye}from"./ALYhAVuH.js";import{A as ge}from"./DzpvfOjV.js";import{_ as j}from"./CLVto6Pa.js";import{b as x,_ as k,a as F}from"./DgDkSvBj.js";import{_ as h}from"./krmDdQ96.js";import{_ as q}from"./BNZ0a080.js";import{_ as be}from"./_Ae7EPbz.js";import{_ as p}from"./CZtE_ht5.js";import{_ as xe,S as ke}from"./DPc3ggKr.js";import{A as he}from"./BqXg9zsQ.js";import{M as we}from"./CduuUidW.js";import{R as W}from"./CuMo4g97.js";import{L as X}from"./DD3zOpnP.js";const $e=oe("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]),Ce={class:"space-y-6"},Se={class:"flex flex-col gap-4 md:flex-row md:items-start md:justify-between"},Me={class:"space-y-3"},Re={class:"space-y-2"},Ae={class:"flex items-center gap-2 text-sm font-medium text-muted-foreground"},ze={class:"flex flex-wrap items-center gap-3"},Ie={key:0,class:"rounded-md border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive"},Le={key:1,class:"grid gap-4 lg:grid-cols-[1fr_22rem]"},Be={key:2,class:"grid gap-4 lg:grid-cols-[minmax(0,1fr)_24rem]"},Ne={class:"space-y-4"},Ve={class:"grid gap-4 sm:grid-cols-2"},Fe={class:"space-y-1"},qe={class:"break-all text-sm font-medium"},Ue={class:"space-y-1"},De={class:"space-y-1"},Ee={class:"text-sm"},Pe={class:"space-y-1"},je={class:"text-sm"},Te={key:0,class:"space-y-3 border-t pt-5"},Ge={class:"grid gap-3"},Ke={class:"text-xs font-medium text-muted-foreground"},Oe={class:"break-all text-sm"},He={class:"whitespace-pre-wrap break-words rounded-md border bg-muted/30 p-4 text-sm leading-6"},Je={key:0,class:"rounded-md border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive"},Qe={key:1,class:"rounded-md border border-emerald-500/30 bg-emerald-500/10 px-4 py-3 text-sm text-emerald-700 dark:text-emerald-300"},We={key:2,class:"rounded-md border border-dashed p-6 text-center text-sm text-muted-foreground"},Xe={key:3,class:"divide-y rounded-md border"},Ye={class:"flex flex-wrap items-center justify-between gap-3"},Ze={class:"flex flex-wrap items-center gap-2"},et={class:"text-xs text-muted-foreground"},tt={class:"whitespace-pre-wrap break-words text-sm leading-6"},st={key:0,class:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-xs text-destructive"},at={class:"flex size-10 items-center justify-center rounded-md bg-primary text-primary-foreground"},lt={class:"space-y-1"},nt={class:"space-y-2"},it={key:0,class:"rounded-md border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive"},rt={key:1,class:"space-y-1 rounded-md border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive"},dt={key:2,class:"rounded-md border border-emerald-500/30 bg-emerald-500/10 px-4 py-3 text-sm text-emerald-700 dark:text-emerald-300"},wt=ce({__name:"[feedbackId]",setup(ut){const w=me(),$=fe(),T=f(!0),C=f(!1),g=f(!1),S=f(""),_=f(""),M=f(""),R=f(""),A=f(""),z=f(""),I=f(""),r=f(null),N=f(null),G=B(()=>{const t=w.params.feedbackId;return Array.isArray(t)?String(t[0]||""):String(t||"")}),Y=B(()=>T.value||C.value&&!r.value),L=B(()=>{if(!N.value||N.value.configured)return"";const t=N.value.missingKeys.filter(Boolean).join(", ");return t?`é®ä»¶é
置缺失ï¼åå¤é®ä»¶æ æ³åéã缺å°ï¼${t}`:"é®ä»¶é
置缺失ï¼åå¤é®ä»¶æ æ³åéã"}),K=B(()=>!!(r.value&&I.value.trim()&&!g.value&&!S.value&&!L.value)),O=B(()=>{const t=r.value;return t?[{label:"é¡µé¢ URL",value:t.pageUrl},{label:"æä»¶è·¯ç±",value:t.extensionRoute},{label:"è¯è¨",value:t.locale},{label:"æä»¶çæ¬",value:t.extensionVersion}].filter(e=>!!e.value):[]});ve({title:"åé¦è¯¦æ
- AltG",meta:[{name:"description",content:"AltG 管çååé¦è¯¦æ
ä¸é®ä»¶åå¤ã"}]}),pe(async()=>{const t=await Z();T.value=!1,t&&await b()});async function Z(){try{const t=await $fetch("/api/admin/session");if(t.configured&&t.authenticated)return!0}catch{_.value="管çåä¼è¯æ£æ¥å¤±è´¥ã"}return await $.replace({path:"/admin/login",query:{redirect:w.fullPath}}),!1}async function b(t={}){if(!G.value){_.value="åé¦ ID æ æã";return}t.silent||(C.value=!0),_.value="";try{const e=await $fetch(`/api/admin/feedback/${encodeURIComponent(G.value)}`),n=e.feedback||e.submission;if(!n){_.value="åé¦è¯¦æ
å 载失败ã";return}r.value={...n,replies:(n.replies||e.replies||[]).map(u=>({...u,updatedAt:u.updatedAt||null}))}
1,N.value=e.rekaMail||null}catch(e){if(U(e)){await $.replace({path:"/admin/login",query:{redirect:w.fullPath}});return}const n=Number(e?.response?.status||e?.statusCode||0);_.value=n===404?"åé¦ä¸åå¨æå·²è¢«å é¤ã":D(e,"åé¦è¯¦æ å 载失败ã")}finally{t.silent||(C.value=!1)}}async function ee(){if(!(!K.value||!r.value)){g.value=!0,M.value="",R.value="",A.value="",z.value="";try{await $fetch(`/api/admin/feedback/${encodeURIComponent(r.value.id)}/replies`,{method:"POST",body:{body:I.value.trim()}}),I.value="",R.value=`åå¤é®ä»¶å·²åéè³ ${r.value.email}ã`,await b({silent:!0})}catch(t){if(U(t)){await $.replace({path:"/admin/login",query:{redirect:w.fullPath}});return}M.value=se(t),await b({silent:!0})}finally{g.value=!1}}}async function te(t){if(!(!r.value||!H(t))){S.value=t.id,M.value="",R.value="",A.value="",z.value="";try{await $fetch(`/api/admin/feedback/${encodeURIComponent(r.value.id)}/replies/${encodeURIComponent(t.id)}/retry`,{method:"POST"}),z.value=`åå¤é®ä»¶å·²éæ°åéè³ ${r.value.email}ã`,await b({silent:!0})}catch(e){if(U(e)){await $.replace({path:"/admin/login",query:{redirect:w.fullPath}});return}A.value=ae(e),await b({silent:!0})}finally{S.value=""}}}function U(t){const e=Number(t?.response?.status||t?.statusCode||0);return e===401||e===403}function D(t,e){const n=typeof t?.data?.message=="string"?t.data.message.trim():"";return!n||n.includes(` 2`)||/(^|\s)at\s+\S+\s*\(/.test(n)||/stack|trace/i.test(n)?e:n}function se(t){const e=D(t,""),u=`${String(t?.data?.code||t?.data?.statusMessage||"")} ${e}`.toLowerCase();return u.includes("config")||u.includes("reka_mail")||u.includes("missing")||u.includes("æªé ç½®")||u.includes("é 置缺失")?e?`é®ä»¶é 置缺失ï¼åå¤é®ä»¶æ æ³åéï¼${e}`:"é®ä»¶é 置缺失ï¼åå¤é®ä»¶æ æ³åéã":u.includes("send")||u.includes("mail")||u.includes("failed")||u.includes("åé")||u.includes("失败")?e?`åé失败ï¼åå¤é®ä»¶æ²¡æååºï¼${e}`:"åé失败ï¼åå¤é®ä»¶æ²¡æååºã":e?`åé失败ï¼åå¤é®ä»¶æ²¡æååºï¼${e}`:"åé失败ï¼åå¤é®ä»¶æ²¡æååºï¼è¯·ç¨åéè¯ã"}function ae(t){const e=D(t,""),u=`${String(t?.data?.code||t?.data?.statusMessage||"")} ${e}`.toLowerCase();return u.includes("config")||u.includes("reka_mail")||u.includes("missing")||u.includes("æªé ç½®")||u.includes("é 置缺失")?e?`é®ä»¶é 置缺失ï¼éè¯åéæ æ³æ§è¡ï¼${e}`:"é®ä»¶é 置缺失ï¼éè¯åéæ æ³æ§è¡ã":e?`éè¯åé失败ï¼åå¤é®ä»¶æ²¡æååºï¼${e}`:"éè¯åé失败ï¼åå¤é®ä»¶æ²¡æååºï¼è¯·ç¨ååè¯ã"}function E(t){return t.status==="failed"||t.status==="error"}function H(t){return!!(r.value&&E(t)&&!g.value&&!S.value&&!L.value)}function le(t){const e=t?.trim()||"";return e?e.includes(` 3`)||/(^|\s)at\s+\S+\s*\(/.test(e)||/stack|trace/i.test(e)?"å端è¿åäºåéé误ï¼è¯¦æ å·²éèã":e.length>240?`${e.slice(0,240)}...`:e:"æªæä¾é误详æ ã"}function ne(t){return t==="web"||t==="website"?"ç½ç«":t==="extension"||t==="chrome_extension"?"æµè§å¨æä»¶":t||"æªç¥æ¥æº"}function ie(t){return t==="open"?"å¾ åå¤":t==="replied"?"å·²åå¤":t||"æªç¥"}function re(t){return t==="replied"?"default":"secondary"}function de(t){return t==="sent"?"å·²åé":t==="failed"||t==="error"?"åé失败":t||"æªç¥"}function ue(t){return t==="sent"?"default":"destructive"}function P(t){if(!t)return"仿ª";const e=new Date(t);return Number.isNaN(e.getTime())?"æªç¥":new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(e)}return(t,e)=>(d(),y(ge,null,{default:i(()=>[l("div",Ce,[l("div",Se,[l("div",Me,[a(s(V),{type:"button",variant:"ghost",size:"sm",class:"-ml-2",onClick:e[0]||(e[0]=n=>s($).push("/admin/feedback"))},{default:i(()=>[a(s(he),{class:"size-4"}),e[3]||(e[3]=c(" è¿ååé¦å表 ",-1))]),_:1}),l("div",Re,[l("div",Ae,[a(s(we),{class:"size-4"}),e[4]||(e[4]=c(" åé¦ç®¡ç ",-1))]),l("div",ze,[e[5]||(e[5]=l("h1",{class:"text-2xl font-semibold tracking-normal"}," åé¦è¯¦æ ",-1)),r.value?(d(),y(s(j),{key:0,variant:re(r.value.status)},{default:i(()=>[c(o(ie(r.value.status)),1)]),_:1}
3,8,["variant"])):v("",!0)])])]),a(s(V),{type:"button",variant:"outline",size:"sm",disabled:C.value,onClick:e[1]||(e[1]=()=>b())},{default:i(()=>[a(s(W),{class:_e(["size-4",C.value&&"animate-spin"])},null,8,["class"]),e[6]||(e[6]=c(" å·æ° ",-1))]),_:1},8,["disabled"])]),_.value?(d(),m("div",Ie,o(_.value),1)):v("",!0),Y.value?(d(),m("div",Le,[a(s(x),null,{default:i(()=>[a(s(k),null,{default:i(()=>[a(s(p),{class:"h-6 w-40"}),a(s(p),{class:"h-4 w-72"})]),_:1}),a(s(h),{class:"space-y-3"},{default:i(()=>[a(s(p),{class:"h-5 w-full"}),a(s(p),{class:"h-5 w-2/3"}),a(s(p),{class:"h-32 w-full"})]),_:1})]),_:1}),a(s(x),null,{default:i(()=>[a(s(k),null,{default:i(()=>[a(s(p),{class:"h-6 w-32"})]),_:1}),a(s(h),{class:"space-y-3"},{default:i(()=>[a(s(p),{class:"h-24 w-full"}),a(s(p),{class:"h-9 w-28"})]),_:1})]),_:1})])):r.value?(d(),m("div",Be,[l("div",Ne,[a(s(x),null,{default:i(()=>[a(s(k),null,{default:i(()=>[a(s(F),null,{default:i(()=>[...e[7]||(e[7]=[c("æäº¤ä¿¡æ¯",-1)])]),_:1}),a(s(q),null,{default:i(()=>[...e[8]||(e[8]=[c("ç¨æ·çä¸çé®ç®±åæäº¤æ¥æºã",-1)])]),_:1})]),_:1}),a(s(h),{class:"space-y-5"},{default:i(()=>[l("dl",Ve,[l("div",Fe,[e[9]||(e[9]=l("dt",{class:"text-xs font-medium text-muted-foreground"}," é®ç®± ",-1)),l("dd",qe,o(r.value.email),1)]),l("div",Ue,[e[10]||(e[10]=l("dt",{class:"text-xs font-medium text-muted-foreground"}," æ¥æº ",-1)),l("dd",null,[a(s(j),{variant:"outline"},{default:i(()=>[c(o(ne(r.value.source)),1)]),_:1})])]),l("div",De,[e[11]||(e[11]=l("dt",{class:"text-xs font-medium text-muted-foreground"}," å建æ¶é´ ",-1)),l("dd",Ee,o(P(r.value.createdAt)),1)]),l("div",Pe,[e[12]||(e[12]=l("dt",{class:"text-xs font-medium text-muted-foreground"}," å夿¶é´ ",-1)),l("dd",je,o(P(r.value.repliedAt)),1)])]),O.value.length?(d(),m("div",Te,[e[13]||(e[13]=l("h2",{class:"text-sm font-medium"}," ä¸ä¸æ ",-1)),l("dl",Ge,[(d(!0),m(J,null,Q(O.value,n=>(d(),m("div",{key:n.label,class:"grid gap-1 sm:grid-cols-[7rem_minmax(0,1fr)]"},[l("dt",Ke,o(n.label),1),l("dd",Oe,o(n.value),1)]))),128))])])):v("",!0)]),_:1})]),_:1}),a(s(x),null,{default:i(()=>[a(s(k),null,{default:i(()=>[a(s(F),null,{default:i(()=>[...e[14]||(e[14]=[c("å馿£æ",-1)])]),_:1}),a(s(q),null,{default:i(()=>[...e[15]||(e[15]=[c("ç¨æ·æäº¤çåå§åé¦å
容ã",-1)])]),_:1})]),_:1}),a(s(h),null,{default:i(()=>[l("p",He,o(r.value.body),1)]),_:1})]),_:1}),a(s(x),null,{default:i(()=>[a(s(k),null,{default:i(()=>[a(s(F),null,{default:i(()=>[...e[16]||(e[16]=[c("åå²é®ä»¶åå¤",-1)])]),_:1}),a(s(q),null,{default:i(()=>[...e[17]||(e[17]=[c("è¿éåªè®°å½éè¿é®ä»¶åéçåå¤ï¼ä¸ä»£è¡¨ç«å
æ¶æ¯ã",-1)])]),_:1})]),_:1}),a(s(h),{class:"space-y-3"},{default:i(()=>[A.value?(d(),m("div",Je,o(A.value),1)):v("",!0),z.value?(d(),m("div",Qe,o(z.value),1)):v("",!0),r.value.replies.length===0?(d(),m("div",We," ææ åå²åå¤ ")):(d(),m("div",Xe,[(d(!0),m(J,null,Q(r.value.replies,n=>(d(),m("article",{key:n.id,class:"space-y-3 p-4"},[l("div",Ye,[a(s(j),{variant:ue(n.status)},{default:i(()=>[c(o(de(n.status)),1)]),_:2},1032,["variant"]),l("div",Ze,[l("p",et,o(P(n.sentAt||n.updatedAt||n.createdAt)),1),E(n)?(d(),y(s(V),{key:0,type:"button",variant:"outline",size:"sm",disabled:!H(n),onClick:u=>te(n)},{default:i(()=>[S.value===n.id?(d(),y(s(X),{key:0,class:"size-4 animate-spin"})):(d(),y(s(W),{key:1,class:"size-4"})),e[18]||(e[18]=c(" éè¯åé ",-1))]),_:2},1032,["disabled","onClick"])):v("",!0)])]),l("p",tt,o(n.body),1),E(n)?(d(),m("p",st," é误ï¼"+o(le(n.errorMessage||n.error||null)),1)):v("",!0)]))),128))]))]),_:1})]),_:1})]),a(s(x),{class:"h-fit"},{default:i(()=>[a(s(k),null,{default:i(()=>[l("div",at,[a(s($e),{class:"size-5"})]),l("div",lt,[a(s(F),null,{default:i(()=>[...e[19]||(e[19]=[c("é®ä»¶åå¤",-1)])]),_:1}),a(s(q),null,{default:i(()=>[c(" åå¤ä¼éè¿é®ä»¶åéå° "+o(r.value.email)+"ï¼ä¸ä¼å建ç«å
æ¶æ¯ã ",1)]),_:1})])]),_:1}),a(s(h),null,{default:i(()=>[l("form",{class:"space-y-4",onSubmit:ye(ee,["prevent"])},[l("div",nt,[a(s(be),{for:"feedback-reply-body"},{default:i(()=>[...e[20]||(e[20]=[c("å夿£æ",-1)])]),_:1}),a(s(xe),{id:"feedback-reply-body",modelValue:I.value,"onUpdate:modelValue":e[2]||(e[2]=n=>I.value=n),class:"min-h-40 resize-y",disabled:g.value||!!L.value,placeholder:"è¾å
¥è¦åéç»ç¨æ·çé®ä»¶æ£æ"},null,8,["modelValue","disabled"])]),L.value?(d(),m("div",it,o(L.value),1)):v("",!0),M.value?(d(),m("div",rt,[l("p",null,o(M.value),1),e[21]||(e[21]=l("p",null,"åå¤åæå·²ä¿çï¼å¯ä¿®æ¹åéè¯ã",-1))])):v("",!0),R.value?(d(),m("div",dt,o(R.value),1)):v("",!0),a(s(V),{t
3ype:"submit",class:"w-full",disabled:!K.value},{default:i(()=>[g.value?(d(),y(s(X),{key:0,class:"size-4 animate-spin"})):(d(),y(s(ke),{key:1,class:"size-4"})),e[22]||(e[22]=c(" åéé®ä»¶åå¤ ",-1))]),_:1},8,["disabled"])],32)]),_:1})]),_:1})])):v("",!0)])]),_:1}))}});export{wt 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.