PageSourceSearch

https://nazohiroba.com/_nuxt/inquiries.2dcbe764.js

js nazohiroba.com collected 2026-10-02 00:02:47 UTC 10,328 bytes, 1 lines download raw bytes

1import{d as X,h as Z,r,i as q,u as tt,o as i,c as d,a as e,j as a,t as n,l as $,s as z,x as C,H as I,v as U,F as H,y as L,k as b,z as et,n as h,_ as st}from"./entry.feaf62dc.js";import"./firebase.efe57387.js";const at={class:"inquiries-manager"},lt={key:0,class:"auth-error"},nt={key:1,class:"loading"},ot={key:2,class:"manager-content"},it={class:"stats-cards"},dt={class:"stat-value"},rt={class:"stat-value"},ut={class:"stat-value"},vt={class:"stat-value"},ct={class:"stat-value"},pt={class:"filters"},_t={class:"filter-group"},ft={class:"filter-group"},mt={class:"filter-group"},gt={key:0,class:"loading"},bt={key:1,class:"empty"},ht={key:2,class:"data-table"},wt={class:"name-cell"},kt={class:"name"},yt={key:0,class:"company"},$t=["href"],Ct={class:"message-cell"},St={class:"date-cell"},Tt={class:"action-btns"},At=["onClick"],Mt={key:3,class:"pagination"},Nt=["disabled"],Et=["disabled"],Dt={class:"modal-content modal-lg"},Pt={class:"modal-body"},xt={class:"status-section"},Bt={class:"status-buttons"},Vt=["onClick"],zt={class:"detail-grid"},It={class:"detail-row"},Ut={class:"detail-value"},Ht={class:"detail-row"},Lt={class:"detail-value"},Ft={key:0,class:"detail-row"},Rt={class:"detail-value"},Yt={class:"detail-row"},jt={class:"detail-value"},Ot=["href"],Qt={key:1,class:"detail-row"},Gt={class:"detail-value"},Jt={class:"detail-row"},Kt={class:"detail-value"},Wt={class:"message-section"},Xt={class:"message-content"},Zt={class:"note-section"},qt=["disabled"],te=X({__name:"inquiries",setup(ee){const{getIdToken:w}=Z(),S=r(!0),T=r(null),A=r([]),c=r({total:0,new:0,in_progress:0,resolved:0,closed:0}),k=r({page:1,limit:30,total:0,total_pages:1}),u=r(1),M=r(!1),p=r(""),f=r(""),m=r(""),N=r(!1),o=r(null),_=r(""),y=r(!1),F=[{value:"new",label:"未対応"},{value:"in_progress",label:"対応中"},{value:"resolved",label:"解決済み"},{value:"closed",label:"クローズ"}],R={general:"一般",listing:"掲載",advertising:"広告",bug:"不具合",review_report:"投稿報告",other:"その他"},P={new:"未対応",in_progress:"対応中",resolved:"解決済み",closed:"クローズ"};let E=null;q(async()=>{try{await v(),S.value=!1}catch(l){T.value=l.message||"認証エラー",S.value=!1}});async function v(){M.value=!0;try{const l=await w();if(!l)throw new Error("認証が必要です");const t=new URLSearchParams;t.set("page",u.value.toString()),t.set("limit","30"),p.value&&t.set("status",p.value),f.value&&t.set("plan_type",f.value),m.value&&t.set("search",m.value);const s=await $fetch(`/api/v2/admin/inquiries?${t.toString()}`,{headers:{Authorization:`Bearer ${l}`}});A.value=s.inquiries||[],k.value=s.pagination,c.value=s.statistics}catch(l){console.error("Error fetching inquiries:",l)}finally{M.value=!1}}function g(l,t){l==="status"&&(p.value=t),u.value=1,v()}function Y(){E&&clearTimeout(E),E=setTimeout(()=>{u.value=1,v()},500)}function x(l){u.value=l,v()}function B(l){return R[l]||l||"-"}function j(l){return P[l]||P.new}function O(l){return l?l.length>50?l.substring(0,50)+"...":l:"-"}function V(l){if(!l)return"-";const t=new Date(l);return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${String(t.getMinutes()).padStart(2,"0")}`}function Q(l){o.value=l,_.value=l.admin_note||"",N.value=!0}function D(){N.value=!1,o.value=null}async function G(l){var t;if(o.value)try{const s=await w();if(!s)return;await $fetch(`/api/v2/admin/inquiries/${o.value.id}`,{method:"PATCH",headers:{Authorization:`Bearer ${s}`},body:{status:l}}),o.value.status=l,await v()}catch(s){alert(((t=s.data)==null?void 0:t.message)||"ステータスの更新に失敗しました")}}async function J(){var l;if(o.value){y.value=!0;try{const t=await w();if(!t)return;await $fetch(`/api/v2/admin/inquiries/${o.value.id}`,{method:"PATCH",headers:{Authorization:`Bearer ${t}`},body:{admin_note:_.value}}),o.value.admin_note=_.value}catch(t){alert(((l=t.data)==null?void 0:l.message)||"メモの保存に失敗しました")}finally{y.value=!1}}}async function K(){var l;if(o.value&&confirm("このお問い合わせを削除しますか?この操作は取り消せません。"))try{const t=await w();if(!t)return;await $fetch(`/api/v2/admin/inquiries/${o.value.id}`,{method:"DELETE",headers:{Authorization:`Bearer ${t}`}}),D(),await v()}catch(t){alert(((l=t.data)==null?void 0:l.message)||"削除に失敗しました")}}return tt({title:"お問い合わせ管理 | 管理画面"}),(l,t)=>(i(),d("div",at,[t[33]||(t[33]=e("div",{class:"manager-header"},[e("h1",{class:"manager-title"},"お問い合わせ管理"),e("p",{class:"manager-description"},"お問い合わせの確認・対応状況を管理します")],-1)),a(T)?(i(),d("div",lt,[e("p",null,n(a(T)),1)])):a(S)?(i(),d("div",nt,t[11]||(t[11]=[e("p",null,"認証確認中...",-1)]))):(i(),d("div",ot,[e("div",it,[e("div",{class:"stat-card",onClick:t[0]||(t[0]=s=>g("status",""))},[e("div",dt,n(a(c).total),1),t[12]||(t[12]=e("div",{class:"stat-label"},"総件数",-1))]),e("div",{class:"stat-card stat-new",onClick:t[1]||(t[1]=s=>g("status","new"))},[e("div",rt,n(a(c).new),1),t[13]||(t[13]=e("div",{class:"stat-label"},"未対応",-1))]),e("div",{class:"stat-card stat-progress",onClick:t[2]||(t[2]=s=>g("status","in_progress"))},[e("div",ut,n(a(c).in_progress),1),t[14]||(t[14]=e("div",{class:"stat-label"}
1,"対応中",-1))]),e("div",{class:"stat-card stat-resolved",onClick:t[3]||(t[3]=s=>g("status","resolved"))},[e("div",vt,n(a(c).resolved),1),t[15]||(t[15]=e("div",{class:"stat-label"},"解決済み",-1))]),e("div",{class:"stat-card stat-closed",onClick:t[4]||(t[4]=s=>g("status","closed"))},[e("div",ct,n(a(c).closed),1),t[16]||(t[16]=e("div",{class:"stat-label"},"クローズ",-1))])]),e("div",pt,[e("div",_t,[t[18]||(t[18]=e("label",null,"ステータス",-1)),$(e("select",{"onUpdate:modelValue":t[5]||(t[5]=s=>C(p)?p.value=s:null),onChange:v},t[17]||(t[17]=[I('<option value="" data-v-1426b0ef>すべて</option><option value="new" data-v-1426b0ef>未対応</option><option value="in_progress" data-v-1426b0ef>対応中</option><option value="resolved" data-v-1426b0ef>解決済み</option><option value="closed" data-v-1426b0ef>クローズ</option>',5)]),544),[[z,a(p)]])]),e("div",ft,[t[20]||(t[20]=e("label",null,"種別",-1)),$(e("select",{"onUpdate:modelValue":t[6]||(t[6]=s=>C(f)?f.value=s:null),onChange:v},t[19]||(t[19]=[I('<option value="" data-v-1426b0ef>すべて</option><option value="general" data-v-1426b0ef>一般</option><option value="listing" data-v-1426b0ef>掲載</option><option value="advertising" data-v-1426b0ef>広告</option><option value="bug" data-v-1426b0ef>不具合</option><option value="review_report" data-v-1426b0ef>投稿報告</option><option value="other" data-v-1426b0ef>その他</option>',7)]),544),[[z,a(f)]])]),e("div",mt,[t[21]||(t[21]=e("label",null,"検索",-1)),$(e("input",{"onUpdate:modelValue":t[7]||(t[7]=s=>C(m)?m.value=s:null),type:"text",placeholder:"名前・メール・内容で検索",onInput:Y},null,544),[[U,a(m)]])])]),a(M)?(i(),d("div",gt,"読み込み中...")):a(A).length===0?(i(),d("div",bt," お問い合わせがありません ")):(i(),d("div",ht,[e("table",null,[t[22]||(t[22]=e("thead",null,[e("tr",null,[e("th",null,"ステータス"),e("th",null,"種別"),e("th",null,"名前"),e("th",null,"メール"),e("th",null,"内容(抜粋)"),e("th",null,"受信日時"),e("th",null,"操作")])],-1)),e("tbody",null,[(i(!0),d(H,null,L(a(A),s=>(i(),d("tr",{key:s.id,class:h({"row-new":!s.status||s.status==="new"})},[e("td",null,[e("span",{class:h(["status-badge",s.status||"new"])},n(j(s.status)),3)]),e("td",null,[e("span",{class:h(["type-badge",s.category])},n(B(s.category)),3)]),e("td",null,[e("div",wt,[e("span",kt,n(s.last_name)+" "+n(s.first_name),1),s.company_name?(i(),d("span",yt,n(s.company_name),1)):b("",!0)])]),e("td",null,[e("a",{href:`mailto:${s.email}`,class:"email-link"},n(s.email),9,$t)]),e("td",Ct,n(O(s.message)),1),e("td",St,n(V(s.created_at)),1),e("td",null,[e("div",Tt,[e("button",{class:"btn-detail",onClick:W=>Q(s)}," 詳細 ",8,At)])])],2))),128))])])])),a(k).total_pages>1?(i(),d("div",Mt,[e("button",{disabled:a(u)===1,onClick:t[8]||(t[8]=s=>x(a(u)-1))},"前へ",8,Nt),e("span",null,n(a(u))+" / "+n(a(k).total_pages),1),e("button",{disabled:a(u)===a(k).total_pages,onClick:t[9]||(t[9]=s=>x(a(u)+1))},"次へ",8,Et)])):b("",!0)])),a(N)&&a(o)?(i(),d("div",{key:3,class:"modal-overlay",onClick:et(D,["self"])},[e("div",Dt,[e("div",{class:"modal-header"},[t[23]||(t[23]=e("h3",null,"お問い合わせ詳細",-1)),e("button",{class:"modal-close",onClick:D},"×")]),e("div",Pt,[e("div",xt,[t[24]||(t[24]=e("label",null,"ステータス",-1)),e("div",Bt,[(i(),d(H,null,L(F,s=>e("button",{key:s.value,class:h(["status-btn",s.value,{active:(a(o).status||"new")===s.value}]),onClick:W=>G(s.value)},n(s.label),11,Vt)),64))])]),e("div",zt,[e("div",It,[t[25]||(t[25]=e("span",{class:"detail-label"},"種別",-1)),e("span",Ut,[e("span",{class:h(["type-badge",a(o).category])},n(B(a(o).category)),3)])]),e("div",Ht,[t[26]||(t[26]=e("span",{class:"detail-label"},"名前",-1)),e("span",Lt,n(a(o).last_name)+" "+n(a(o).first_name),1)]),a(o).company_name?(i(),d("div",Ft,[t[27]||(t[27]=e("span",{class:"detail-label"},"会社名",-1)),e("span",Rt,n(a(o).company_name),1)])):b("",!0),e("div",Yt,[t[28]||(t[28]=e("span",{class:"detail-label"},"メール",-1)),e("span",jt,[e("a",{href:`mailto:${a(o).email}`,class:"email-link"},n(a(o).email),9,Ot)])]),a(o).phone?(i(),d("div",Qt,[t[29]||(t[29]=e("span",{class:"detail-label"},"電話番号",-1)),e("span",Gt,n(a(o).phone),1)])):b("",!0),e("div",Jt,[t[30]||(t[30]=e("span",{class:"detail-label"},"受信日時",-1)),e("span",Kt,n(V(a(o).created_at)),1)])]),e("div",Wt,[t[31]||(t[31]=e("label",null,"お問い合わせ内容",-1)),e("div",Xt,n(a(o).message),1)]),e("div",Zt,[t[32]||(t[32]=e("label",null,"管理者メモ",-1)),$(e("textarea",{"onUpdate:modelValue":t[10]||(t[10]=s=>C(_)?_.value=s:null),placeholder:"対応メモを入力(内部用)",rows:"3"},null,512),[[U,a(_)]]),e("button",{class:"btn-save-note",onClick:J,disabled:a(y)},n(a(y)?"保存中...":"メモを保存"),9,qt)]),e("div",{class:"danger-section"},[e("button",{class:"btn-delete",onClick:K},"このお問い合わせを削除")])])])])):b("",!0)]))}});const le=st(te,[["__scopeId","data-v-1426b0ef"]]);export{le 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.