2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{_ as F}from"./DRkNpQ1P.js";import{e as N,f as U,g as I,c as d,a as t,t as s,i as o,F as C,y as x,z as L,C as v,k as f,d as b,r as D,j as k,J as H,h as A,l as u,o as n,b as j,w as M,n as P}from"./CQHa_U7G.js";import{u as E}from"./DzZn2YD-.js";import{_ as J}from"./DlAUqK2U.js";import"./BJMSi7ez.js";const R={class:"mb-8"},q={class:"text-2xl font-bold text-white"},G={class:"text-slate-400 mt-1"},K={class:"grid grid-cols-2 md:grid-cols-5 gap-4 mb-8"},O={class:"bg-slate-800 rounded-xl border border-slate-700 p-4"},Q={class:"text-xs text-slate-400 uppercase tracking-wider"},W={class:"text-2xl font-bold text-white mt-1"},X={class:"bg-slate-800 rounded-xl border border-amber-500/30 p-4"},Y={class:"text-xs text-slate-400 uppercase tracking-wider"},Z={class:"text-2xl font-bold text-amber-400 mt-1"},tt={class:"bg-slate-800 rounded-xl border border-emerald-500/30 p-4"},et={class:"text-xs text-slate-400 uppercase tracking-wider"},st={class:"text-2xl font-bold text-emerald-400 mt-1"},ot={class:"bg-slate-800 rounded-xl border border-rose-500/30 p-4"},rt={class:"text-xs text-slate-400 uppercase tracking-wider"},at={class:"text-2xl font-bold text-rose-400 mt-1"},it={class:"bg-slate-800 rounded-xl border border-purple-500/30 p-4"},dt={class:"text-xs text-slate-400 uppercase tracking-wider"},nt={class:"text-2xl font-bold text-purple-400 mt-1"},lt={key:0,class:"flex items-center justify-center py-20"},ct={class:"text-slate-400 flex items-center gap-3"},pt={key:1,class:"bg-rose-500/10 border border-rose-500/30 rounded-xl p-6 mb-8"},ut={class:"text-rose-400"},_t={class:"bg-slate-800 rounded-xl border border-slate-700 p-4 mb-6"},xt={class:"flex flex-wrap items-center gap-4"},ht={class:"flex-1 min-w-[200px]"},mt=["placeholder"],gt={value:""},vt={value:"pending"},ft={value:"approved"},bt={value:"rejected"},kt={value:"flagged"},yt={value:""},wt={value:"manual"},$t={value:"ocr"},Ct={value:"import"},jt={value:"bot"},Mt={value:"verified_org"},zt={value:"created_at"},Bt={value:"name"},St={value:"validation_score"},Vt={class:"bg-slate-800 rounded-xl border border-slate-700 overflow-hidden"},Tt={class:"w-full"},Ft={class:"border-b border-slate-700"},Nt={class:"text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},Ut={class:"text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},It={class:"text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},Lt={class:"text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},Dt={class:"text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},Ht={class:"text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},At={class:"text-left px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},Pt={class:"text-right px-6 py-4 text-xs font-medium text-slate-400 uppercase tracking-wider"},Et={class:"divide-y divide-slate-700/50"},Jt={class:"px-6 py-4 text-sm text-slate-400"},Rt={class:"px-6 py-4"},qt={class:"px-6 py-4 text-sm text-slate-300 max-w-[200px] truncate"},Gt={class:"px-6 py-4"},Kt={class:"px-6 py-4"},Ot={class:"flex items-center gap-1.5"},Qt={class:"text-xs font-mono text-slate-400 bg-slate-700/50 px-2 py-0.5 rounded"},Wt={key:0,class:"text-[10px] font-mono text-slate-500 bg-slate-700/30 px-1.5 py-0.5 rounded"},Xt={class:"px-6 py-4"},Yt={class:"flex items-center gap-2"},Zt={class:"w-16 h-1.5 bg-slate-700 rounded-full overflow-hidden"},te={class:"text-xs text-slate-400"},ee={class:"px-6 py-4 text-sm text-slate-400"},se={class:"px-6 py-4 text-right"},oe={class:"flex items-center justify-end gap-2"},re={key:0},ae={colspan:"8",class:"px-6 py-12 text-center text-sm text-slate-500"},ie={class:"flex items-center justify-between mt-6"},de={class:"text-sm text-slate-400"},ne={class:"flex items-center gap-2"},le=["disabled"],ce={class:"text-sm text-slate-400"},pe=["disabled"],ue={key:3,class:"fixed bottom-6 right-6 z-50 bg-emerald-600 text-white px-4 py-3 rounded-lg shadow-lg text-sm flex items-center gap-2 animate-slide-up"},_e=N({__name:"index",setup(xe){const{t:_}=U(),{formatDate:z}=E(),h=u(!0),m=u(!1),p=u([]),c=u({total:0,pending:0,approved:0,rejected:0,flagged:0,total_validations:0,staging_pending:0}),y=u("");let g=null;const r=H({search:"",status:"",source:"",sort_by:"created_at",sort_order:"desc",skip:0,limit:50});function w(){const i=A("access_token").value;return i?{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}:{"Content-Type":"application/json"}}function B(e){return{pending:"bg-amber-500/10 text-amber-400",approved:"bg-emerald-500/10 text-emerald-400",rejected:"bg-rose-500/10 text-rose-400",flagged:"bg-purple-500/10 text-purple-400"}[e]||"bg-slate-500/10 text-slate-400"}function S(e){return{pending:_("providers.status_pending"),approved:_("providers.status_approved"),rejected:_("providers.status_rejected"),flagged:_("providers.status_flagged")}[e]||e}function V(){g&&clearTimeout(g),g=setTimeout(()=>{r.skip=0,l()},400)}async function T(){try{const e=await $fetch("/api/v1/admin/providers/stats",{headers:w()});c.value=e}catch(e){console.error("Failed to fetch provider stats:",e)}}async function l(){h.value=!0,m.value=!1;try{const e=new URLSearchParams;e.append("skip",String(r.skip)),e.append("limit",String(r.limit)),e.append("sort_by",r.sort_by),e.append("sort_order",r.sort_order),r.status&&e.append("status",r.status),r.source&&e.append("source",r.source),r.search&&e.append("search",r.search);const i=await $fetch(`/api/v1/admin/providers?${e.toString()}`,{headers:w()});p.value=i}catch(e){console.error("Failed to fetch providers:",e),m.value=!0}finally{h.value=!1}}return I(()=>{T(),l()}),(e,i)=>{const $=F;return n(),d("div",null,[t("div",R,[t("h1",q,s(e.$t("providers.title")),1),t("p",G,s(e.$t("providers.subtitle")),1)]),t("div",K,[t("div",O,[t("p",Q,s(e.$t("providers.stats_total")),1),t("p",W,s(o(c).total),1)]),t("div",X,[t("p",Y,s(e.$t("providers.stats_pending")),1),t("p",Z,s(o(c).pending),1)]),t("div",tt,[t("p",et,s(e.$t("providers.stats_approved")),1),t("p",st,s(o(c).approved),1)]),t("div",ot,[t("p",rt,s(e.$t("providers.stats_rejected")),1),t("p",at,s(o(c).rejected),1)]),t("div",it,[t("p",dt,s(e.$t("providers.stats_flagged")),1),t("p",nt,s(o(c).flagged),1)])]),o(h)?(n(),d("div",lt,[t("div",ct,[i[7]||(i[7]=t("svg",{class:"w-5 h-5 animate-spin",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1)),t("span",null,s(e.$t("providers.loading")),1)])])):o(m)?(n(),d("div",pt,[t("p",ut,s(e.$t("providers.error")),1),t("button",{onClick:l,class:"mt-3 text-sm text-rose-300 hover:text-rose-200 underline"},s(e.$t("providers.retry")),1)])):(n(),d(C,{key:2},[t("div",_t,[t("div",xt,[t("div",ht,[x(t("input",{"onUpdate:modelValue":i[0]||(i[0]=a=>o(r).search=a),type:"text",placeholder:e.$t("providers.search_placeholder"),class:"w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm",onInput:V},null,40,mt),[[L,o(r).search]])]),x(t("select",{"onUpdate:modelValue":i[1]||(i[1]=a=>o(r).status=a),class:"px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm",onChange:l},[t("option",gt,s(e.$t("providers.filter_all_status")),1),t("option",vt,s(e.$t("providers.filter_pending")),1),t("option",ft,s(e.$t("providers.filter_approved")),1),t("option",bt,s(e.$t("providers.filter_rejected")),1),t("option",kt,s(e.$t("providers.filter_flagged")),1)],544),[[v,o(r).status]]),x(t("select",{"onUpdate:modelValue":i[2]||(i[2]=a=>o(r).source=a),class:"px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm",onChange:l},[t("option",yt,s(e.$t("providers.filter_all_sources")),1),t("option",wt,s(e.$t("providers.source_manual")),1),t("option",$t,s(e.$t("providers.source_ocr")),1),t("option",Ct,s(e.$t("providers.source_import")),1),t("option",jt,s(e.$t("providers.source_bot")),1),t("option",Mt,s(e.$t("providers.source_verified_org")),1)],544),[[v,o(r).source]]),x(t("select",{"onUpdate:modelValue":i[3]||(i[3]=a=>o(r).sort_by=a),class:"px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm",onChange:l},[t("option",zt,s(e.$t("providers.sort_created_at")),1),t("option",Bt,s(e.$t("providers.sort_name")),1),t("option",St,s(e.$t("providers.sort_validation_score")),1)],544),[[v,o(r).sort_by]]),t("button",{onClick:i[4]||(i[4]=a=>{o(r).sort_order=o(r).sort_order==="asc"?"desc":"asc",l()}),class:"px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white hover:bg-slate-600 transition text-sm flex items-center gap-1"},[(n(),d("svg",{class:f(["w-4 h-4",o(r).sort_order==="asc"?"rotate-180":""]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...i[8]||(i[8]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2)),b(" "+s(o(r).sort_order==="asc"?e.$t("common.ascending"):e.$t("common.descending")),1)])])]),t("div",Vt,[t("table",Tt,[t("thead",null,[t("tr",Ft,[t("th",Nt,s(e.$t("providers.col_id")),1),t("th",Ut,s(e.$t("providers.col_name")),1),t("th",It,s(e.$t("providers.col_address")),1),t("th",Lt,s(e.$t("providers.col_status")),1),t("th",Dt,s(e.$t("providers.col_source")),1),t("th",Ht,s(e.$t("providers.col_validation")),1),t("th",At,s(e.$t("providers.col_created")),1),t("th",Pt,s(e.$t("providers.col_actions")),1)])]),t("tbody",Et,[(n(!0),d(C,null,D(o(p),a=>(n(),d("tr",{key:a.id,class:"hover:bg-slate-700/30 transition"},[t("td",Jt,s(a.id),1),t("td",Rt,[j($,{to:`/providers/${a.id}`,class:"text-sm font-medium text-indigo-400 hover:text-indigo-300 transition"},{default:M(()=>[b(s(a.name),1)]),_:2},1032,["to"])]),t("td",qt,s(a.address_detail?.full_address_text||[a.address_detail?.zip,a.address_detail?.city,a.address_detail?.street_name].filter(Boolean).join(" ")||"—"),1),t("td",Gt,[t("span",{class:f(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",B(a.status)])},s(S(a.status)),3)]),t("td",Kt,[t("div",Ot,[t("code",Qt,s(a.source),1),a.source_table?(n(),d("span",Wt,s(a.source_table),1)):k("",!0)])]),t("td",Xt,[t("div",Yt,[t("div",Zt,[t("div",{class:f(["h-full rounded-full transition-all",a.validation_score>=50?"bg-emerald-500":a.validation_score>=20?"bg-amber-500":"bg-slate-500"]),style:P({width:Math.min(a.validation_score,100)+"%"})},null,6)]),t("span",te,s(a.validation_score),1)])]),t("td",ee,s(o(z)(a.created_at)),1),t("td",se,[t("div",oe,[j($,{to:`/providers/${a.id}`,class:"p-1.5 rounded-lg text-slate-400 hover:text-white hover:bg-slate-700 transition",title:e.$t("providers.view_details")},{default:M(()=>[...i[9]||(i[9]=[t("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])]),_:1},8,["to","title"])])])]))),128)),o(p).length===0?(n(),d("tr",re,[t("td",ae,s(e.$t("providers.no_providers")),1)])):k("",!0)])])]),t("div",ie,[t("p",de,s(e.$t("providers.results_count",{count:o(p).length,total:o(c).total})),1),t("div",ne,[t("button",{disabled:o(r).skip<=0,onClick:i[5]||(i[5]=a=>{o(r).skip=Math.max(0,o(r).skip-o(r).limit),l()}),class:"px-3 py-1.5 bg-slate-700 border border-slate-600 rounded-lg text-white disabled:opacity-50 disabled:cursor-not-allowed hover:bg-slate-600 transition text-sm"},s(e.$t("common.prev")),9,le),t("span",ce,s(e.$t("providers.page",{page:Math.floor(o(r).skip/o(r).limit)+1})),1),t("button",{disabled:o(p).length<o(r).limit,onClick:i[6]||(i[6]=a=>{o(r).skip+=o(r).limit,l()}),class:"px-3 py-1.5 bg-slate-700 border border-slate-600 rounded-lg text-white disabled:opacity-50 disabled:cursor-not-allowed hover:bg-slate-600 transition text-sm"},s(e.$t("common.next")),9,pe)])])],64)),o(y)?(n(),d("div",ue,[i[10]||(i[10]=t("svg",{class:"w-4 h-4 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),b(" "+s(o(y)),1)])):k("",!0)])}}}),be=J(_e,[["__scopeId","data-v-aee9c48f"]]);export{be as default};
|