Files
chat/backend/public/admin/assets/GuestsView-DmVc4vO4.js
2026-08-05 15:56:08 +08:00

2 lines
4.6 KiB
JavaScript
Raw Permalink 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{_ as L,u as P,i as T,j as f,c as o,b as t,t as l,F as S,l as x,w as U,e as j,v as q,f as b,r as d,n as h,o as u,q as G,k as M}from"./index-9aV50nsX.js";const A={class:"guest-summary"},E={class:"summary-card"},O={class:"summary-card"},H={class:"summary-card"},J={class:"toolbar guest-toolbar"},K={class:"filter-group"},Q=["onClick"],R={class:"panel"},W={class:"table-scroll"},X={class:"data-table"},Y={class:"guest-identity"},Z={class:"actions-cell"},tt=["onClick"],st=["onClick"],et={key:0,class:"empty"},at={key:1,class:"empty"},lt={key:2,class:"pagination"},nt=["disabled"],ot=["disabled"],y=20,ut={__name:"GuestsView",setup(it){const k=P(),i=d([]),m=d(!1),n=d(1),c=d(0),p=d(""),g=d(""),B=[{label:"全部",value:""},{label:"正常",value:"active"},{label:"已禁用",value:"disabled"}],C=h(()=>Math.max(1,Math.ceil(c.value/y))),D=h(()=>i.value.reduce((a,s)=>a+Number(s.conversation_count||0),0)),N=h(()=>i.value.reduce((a,s)=>a+Number(s.message_count||0),0));T(r);async function r(){m.value=!0;try{const s=(await f.get("/admin/guests",{params:{page:n.value,limit:y,status:p.value||void 0,keyword:g.value||void 0}})).data.data||{};i.value=s.list||[],c.value=s.total??i.value.length}finally{m.value=!1}}function V(a){p.value=a,n.value=1,r()}function I(){n.value=1,r()}async function w(a){n.value=a,await r()}async function z(a){const s=a.status==="active"?"disabled":"active",e=s==="active"?"启用":"禁用";if(confirm(`确定${e}访客 #${_(a.username)}`))try{await f.put(`/admin/guests/${a.id}/status`,{status:s}),await r()}catch(v){alert(v.message||`${e}失败`)}}async function F(a){if(confirm(`确定删除访客 #${_(a.username)}?其会话和消息记录也会一并删除,此操作不可恢复。`))try{await f.delete(`/admin/guests/${a.id}`),i.value.length===1&&n.value>1&&(n.value-=1),await r()}catch(s){alert(s.message||"删除失败")}}function _(a){return String(a||"").replace(/^guest_/,"").slice(-8).toUpperCase()}function $(a){return a?new Date(String(a).replace(" ","T")).toLocaleString("zh-CN",{hour12:!1}):"-"}return(a,s)=>(u(),o("div",null,[s[11]||(s[11]=t("div",{class:"page-header"},[t("h2",null,"访客管理"),t("p",null,"单独记录匿名访问者的使用情况,不计入注册用户管理列表")],-1)),t("div",A,[t("div",E,[s[3]||(s[3]=t("span",null,"当前记录",-1)),t("strong",null,l(c.value),1),s[4]||(s[4]=t("small",null,"匿名访客",-1))]),t("div",O,[s[5]||(s[5]=t("span",null,"本页会话",-1)),t("strong",null,l(D.value),1),s[6]||(s[6]=t("small",null,"未删除会话",-1))]),t("div",H,[s[7]||(s[7]=t("span",null,"本页消息",-1)),t("strong",null,l(N.value),1),s[8]||(s[8]=t("small",null,"累计消息",-1))])]),t("div",J,[t("div",K,[(u(),o(S,null,x(B,e=>t("button",{key:e.value,class:G(["btn btn-ghost filter-btn",{active:p.value===e.value}]),type:"button",onClick:v=>V(e.value)},l(e.label),11,Q)),64))]),t("form",{class:"search-form",onSubmit:U(I,["prevent"])},[j(t("input",{"onUpdate:modelValue":s[0]||(s[0]=e=>g.value=e),class:"form-input",placeholder:"搜索访客编号"},null,512),[[q,g.value,void 0,{trim:!0}]]),s[9]||(s[9]=t("button",{class:"btn btn-ghost",type:"submit"},"搜索",-1))],32)]),t("div",R,[t("div",W,[t("table",X,[s[10]||(s[10]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"访客编号"),t("th",null,"状态"),t("th",null,"会话数"),t("th",null,"消息数"),t("th",null,"首次访问"),t("th",null,"最近访问"),t("th",null,"操作")])],-1)),t("tbody",null,[(u(!0),o(S,null,x(i.value,e=>(u(),o("tr",{key:e.id},[t("td",null,l(e.id),1),t("td",null,[t("div",Y,[t("strong",null,"访客 #"+l(_(e.username)),1),t("code",null,l(e.username),1)])]),t("td",null,[t("span",{class:G(["badge",e.status==="active"?"badge-success":"badge-danger"])},l(e.status==="active"?"正常":"已禁用"),3)]),t("td",null,l(e.conversation_count||0),1),t("td",null,l(e.message_count||0),1),t("td",null,l($(e.created_at)),1),t("td",null,l($(e.last_login_at)),1),t("td",Z,[M(k).hasButton("btn:guest:status")?(u(),o("button",{key:0,class:"btn btn-ghost",type:"button",onClick:v=>z(e)},l(e.status==="active"?"禁用":"启用"),9,tt)):b("",!0),M(k).hasButton("btn:guest:delete")?(u(),o("button",{key:1,class:"btn btn-ghost danger",type:"button",onClick:v=>F(e)},"删除",8,st)):b("",!0)])]))),128))])])]),m.value?(u(),o("p",et,"正在加载...")):i.value.length?b("",!0):(u(),o("p",at,"暂无访客记录")),c.value>y?(u(),o("div",lt,[t("button",{class:"btn btn-ghost",disabled:n.value<=1,onClick:s[1]||(s[1]=e=>w(n.value-1))},"上一页",8,nt),t("span",null,l(n.value)+" / "+l(C.value),1),t("button",{class:"btn btn-ghost",disabled:n.value>=C.value,onClick:s[2]||(s[2]=e=>w(n.value+1))},"下一页",8,ot)])):b("",!0)])]))}},dt=L(ut,[["__scopeId","data-v-257286bc"]]);export{dt as default};