zioinfo-mail/_archive/backend/src/main/resources/static/assets/AdminInquiry-BBFBdE8S.js
DESKTOP-TKLFCPR\ython 28d3ba4836 refactor(cleanup): commit folder reorganization - scripts/, _archive/, docs/ restructure
- Move backend/frontend/messenger/ old paths to _archive/
- Reorganize scripts into scripts/deploy, check, push, setup, misc
- Move docs (pptx, docx) to docs/
- Add .claude agents and skills for fullstack/folder-cleanup harness
- workspace/ projects remain intact

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 19:43:09 +09:00

2 lines
5.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{r as c,j as e}from"./index-ChpGil2q.js";const E=()=>localStorage.getItem("admin_token"),j=(a,l={})=>fetch(a,{...l,headers:{"Content-Type":"application/json",Authorization:`Bearer ${E()}`,...l.headers}}),b={PENDING:"미답변",ANSWERED:"답변완료",CLOSED:"종결"},g={PENDING:"badge-red",ANSWERED:"badge-green",CLOSED:"badge-gray"};function D(){var p;const[a,l]=c.useState(0),[o,N]=c.useState(""),[i,f]=c.useState({content:[],totalPages:0,totalElements:0}),[n,d]=c.useState(null),[h,u]=c.useState(null),S=(s,t="success")=>{u({msg:s,type:t}),setTimeout(()=>u(null),2500)},m=c.useCallback(()=>{const s=o?`&status=${o}`:"";j(`/api/admin/inquiries?page=${a}&size=10${s}`).then(t=>t.json()).then(f)},[a,o]);c.useEffect(()=>{m()},[m]);const r=async(s,t)=>{(await j(`/api/admin/inquiries/${s}/status`,{method:"PATCH",body:JSON.stringify({status:t})})).ok&&(m(),(n==null?void 0:n.id)===s&&d(v=>({...v,status:t})),S("상태가 변경되었습니다."))},y=async s=>{const t=await j(`/api/admin/inquiries/${s}`);t.ok&&d(await t.json())};return e.jsxs(e.Fragment,{children:[h&&e.jsx("div",{className:"admin-toast",children:e.jsx("div",{className:`toast-item ${h.type}`,children:h.msg})}),e.jsxs("div",{className:"admin-card",children:[e.jsxs("div",{className:"admin-toolbar",children:[e.jsxs("span",{style:{fontSize:13,color:"#64748b"},children:["전체 ",i.totalElements,"건"]}),e.jsxs("select",{className:"admin-select",value:o,onChange:s=>{N(s.target.value),l(0)},children:[e.jsx("option",{value:"",children:"전체 상태"}),e.jsx("option",{value:"PENDING",children:"미답변"}),e.jsx("option",{value:"ANSWERED",children:"답변완료"}),e.jsx("option",{value:"CLOSED",children:"종결"})]})]}),e.jsx("div",{className:"admin-table-wrap",children:e.jsxs("table",{className:"admin-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"No"}),e.jsx("th",{children:"이름"}),e.jsx("th",{children:"제목"}),e.jsx("th",{children:"카테고리"}),e.jsx("th",{children:"상태"}),e.jsx("th",{children:"접수일"}),e.jsx("th",{children:"관리"})]})}),e.jsxs("tbody",{children:[i.content.map((s,t)=>{var x;return e.jsxs("tr",{style:{cursor:"pointer"},children:[e.jsx("td",{style:{color:"#94a3b8",fontSize:12},children:i.totalElements-a*10-t}),e.jsx("td",{children:s.name}),e.jsx("td",{onClick:()=>y(s.id),children:e.jsx("span",{className:"truncate",style:{display:"block",color:"#4f6ef7",cursor:"pointer"},children:s.subject})}),e.jsx("td",{children:e.jsx("span",{className:"badge badge-blue",children:s.category||"기타"})}),e.jsx("td",{children:e.jsx("span",{className:`badge ${g[s.status]||"badge-gray"}`,children:b[s.status]||s.status})}),e.jsx("td",{style:{fontSize:12,color:"#94a3b8"},children:(x=s.createdAt)==null?void 0:x.slice(0,10)}),e.jsx("td",{children:e.jsxs("div",{className:"action-btns",children:[s.status==="PENDING"&&e.jsx("button",{className:"btn btn-outline btn-sm",onClick:()=>r(s.id,"ANSWERED"),children:"답변완료"}),s.status!=="CLOSED"&&e.jsx("button",{className:"btn btn-outline btn-sm",onClick:()=>r(s.id,"CLOSED"),children:"종결"})]})})]},s.id)}),!i.content.length&&e.jsx("tr",{children:e.jsx("td",{colSpan:7,children:e.jsxs("div",{className:"empty-state",children:[e.jsx("div",{className:"empty-icon",children:"📩"}),e.jsx("p",{children:"접수된 문의가 없습니다."})]})})})]})]})}),i.totalPages>1&&e.jsxs("div",{className:"admin-pagination",children:[e.jsxs("span",{className:"admin-pagination-info",children:["페이지 ",a+1," / ",i.totalPages]}),e.jsxs("div",{className:"pagination-btns",children:[e.jsx("button",{disabled:a===0,onClick:()=>l(s=>s-1),children:""}),Array.from({length:Math.min(i.totalPages,7)},(s,t)=>e.jsx("button",{className:a===t?"active":"",onClick:()=>l(t),children:t+1},t)),e.jsx("button",{disabled:a>=i.totalPages-1,onClick:()=>l(s=>s+1),children:""})]})]})]}),n&&e.jsx("div",{className:"modal-backdrop",onClick:s=>s.target===s.currentTarget&&d(null),children:e.jsxs("div",{className:"modal",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("h3",{children:"문의 상세"}),e.jsx("button",{onClick:()=>d(null),children:"✕"})]}),e.jsxs("div",{className:"modal-body",children:[e.jsx("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginBottom:16},children:[["이름",n.name],["이메일",n.email],["연락처",n.phone||"-"],["유형",n.category||"기타"]].map(([s,t])=>e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:11,fontWeight:600,color:"#64748b",marginBottom:3,textTransform:"uppercase"},children:s}),e.jsx("div",{style:{fontSize:13.5},children:t})]},s))}),e.jsxs("div",{style:{marginBottom:12},children:[e.jsx("div",{style:{fontSize:11,fontWeight:600,color:"#64748b",marginBottom:4,textTransform:"uppercase"},children:"제목"}),e.jsx("div",{style:{fontWeight:600,fontSize:15},children:n.subject})]}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:11,fontWeight:600,color:"#64748b",marginBottom:6,textTransform:"uppercase"},children:"내용"}),e.jsx("div",{style:{background:"#f8fafc",borderRadius:8,padding:"14px 16px",fontSize:13.5,lineHeight:1.7,whiteSpace:"pre-wrap",border:"1px solid #e2e8f0"},children:n.content})]}),e.jsxs("div",{style:{marginTop:16,display:"flex",alignItems:"center",gap:8},children:[e.jsxs("span",{style:{fontSize:12,color:"#64748b"},children:["접수일: ",(p=n.createdAt)==null?void 0:p.slice(0,16)]}),e.jsx("span",{className:`badge ${g[n.status]||"badge-gray"}`,children:b[n.status]})]})]}),e.jsxs("div",{className:"modal-footer",children:[n.status==="PENDING"&&e.jsx("button",{className:"btn btn-primary",onClick:()=>r(n.id,"ANSWERED"),children:"답변완료 처리"}),n.status!=="CLOSED"&&e.jsx("button",{className:"btn btn-outline",onClick:()=>r(n.id,"CLOSED"),children:"종결"}),e.jsx("button",{className:"btn btn-outline",onClick:()=>d(null),children:"닫기"})]})]})})]})}export{D as default};