2 lines
4.6 KiB
JavaScript
2 lines
4.6 KiB
JavaScript
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};
|