2 lines
5.0 KiB
JavaScript
2 lines
5.0 KiB
JavaScript
import{_ as $,i as j,r as v,c as G,o as L,f as i,G as O,g as w,h as b,j as s,m as a,w as l,F,K as q,q as r,p as u,H as A,A as H,n as J,L as K,I as k,M as R,J as x,N as U,O as Q}from"./index-B752OQ3K.js";import{M as W}from"./MetricGrid-exqHWUaA.js";const X={class:"page-stack"},Y={class:"app-page-title"},Z={class:"toolbar"},ee={class:"section-head"},te={class:"app-muted"},ae={class:"table-wrap"},le={class:"ellipsis"},ne={class:"ellipsis"},se={class:"ellipsis"},oe={class:"actions"},ie={__name:"FeedbacksPage",setup(ce){const M=j("refreshNavBadges",null),p=v(!1),g=v(""),c=v({total:0,pending:0,replied:0,closed:0}),_=v([]),T=[{label:"全部状态",value:""},{label:"待处理",value:"pending"},{label:"已回复",value:"replied"},{label:"已关闭",value:"closed"}],V=G(()=>[{key:"total",label:"总反馈",value:c.value.total||0,tone:"blue"},{key:"pending",label:"待处理",value:c.value.pending||0,tone:"orange"},{key:"replied",label:"已回复",value:c.value.replied||0,tone:"green"},{key:"closed",label:"已关闭",value:c.value.closed||0,tone:"purple"}]);function B(n){return n==="pending"?{label:"待处理",type:"warning"}:n==="replied"?{label:"已回复",type:"success"}:n==="closed"?{label:"已关闭",type:"info"}:{label:n||"-",type:"info"}}async function d(){p.value=!0;try{const n=await K(g.value);_.value=n?.feedbacks||[],c.value=n?.stats||{total:0,pending:0,replied:0,closed:0}}catch{_.value=[],c.value={total:0,pending:0,replied:0,closed:0}}finally{p.value=!1}await M?.({pendingFeedbacks:c.value.pending||0})}async function N(n){let t;try{t=(await k.prompt("请输入回复内容","回复反馈",{inputType:"textarea",inputPlaceholder:"回复内容",confirmButtonText:"提交",cancelButtonText:"取消",inputValidator:y=>!!String(y||"").trim(),inputErrorMessage:"回复内容不能为空"})).value}catch{return}try{const m=await R(n.id,String(t||"").trim());x.success(m?.message||"回复成功"),await d()}catch{}}async function D(n){try{await k.confirm("确定要关闭这个反馈吗?","关闭反馈",{confirmButtonText:"关闭",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await U(n.id);x.success(t?.message||"反馈已关闭"),await d()}catch{}}async function E(n){try{await k.confirm("确定要删除这个反馈吗?此操作不可恢复!","删除反馈",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const t=await Q(n.id);x.success(t?.message||"反馈已删除"),await d()}catch{}}return L(d),(n,t)=>{const m=i("el-option"),y=i("el-select"),f=i("el-button"),o=i("el-table-column"),h=i("el-tooltip"),I=i("el-tag"),z=i("el-table"),P=i("el-card"),S=O("loading");return b(),w("div",X,[s("div",Y,[t[2]||(t[2]=s("h2",null,"反馈管理",-1)),s("div",Z,[a(y,{modelValue:g.value,"onUpdate:modelValue":t[0]||(t[0]=e=>g.value=e),style:{width:"160px"},onChange:d},{default:l(()=>[(b(),w(F,null,q(T,e=>a(m,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),a(f,{onClick:d},{default:l(()=>[...t[1]||(t[1]=[r("刷新",-1)])]),_:1})])]),a(W,{items:V.value,loading:p.value,"min-width":165},null,8,["items","loading"]),a(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[s("div",ee,[t[3]||(t[3]=s("h3",{class:"section-title"},"反馈列表",-1)),s("div",te,"共 "+u(_.value.length)+" 条(当前筛选)",1)]),s("div",ae,[A((b(),H(z,{data:_.value,style:{width:"100%"}},{default:l(()=>[a(o,{prop:"id",label:"ID",width:"80"}),a(o,{prop:"username",label:"用户",width:"140"}),a(o,{label:"标题","min-width":"180"},{default:l(({row:e})=>[a(h,{content:e.title,placement:"top","show-after":300},{default:l(()=>[s("span",le,u(e.title),1)]),_:2},1032,["content"])]),_:1}),a(o,{label:"描述","min-width":"220"},{default:l(({row:e})=>[a(h,{content:e.description,placement:"top","show-after":300},{default:l(()=>[s("span",ne,u(e.description),1)]),_:2},1032,["content"])]),_:1}),a(o,{prop:"contact",label:"联系方式","min-width":"160"},{default:l(({row:e})=>[r(u(e.contact||"-"),1)]),_:1}),a(o,{label:"状态",width:"110"},{default:l(({row:e})=>[a(I,{type:B(e.status).type,effect:"light"},{default:l(()=>[r(u(B(e.status).label),1)]),_:2},1032,["type"])]),_:1}),a(o,{prop:"created_at",label:"提交时间",width:"180"}),a(o,{label:"回复","min-width":"180"},{default:l(({row:e})=>[a(h,{content:e.admin_reply||"",placement:"top","show-after":300},{default:l(()=>[s("span",se,u(e.admin_reply||"-"),1)]),_:2},1032,["content"])]),_:1}),a(o,{label:"操作",width:"220",fixed:"right"},{default:l(({row:e})=>[s("div",oe,[e.status!=="closed"?(b(),w(F,{key:0},[a(f,{type:"primary",size:"small",onClick:C=>N(e)},{default:l(()=>[...t[4]||(t[4]=[r("回复",-1)])]),_:1},8,["onClick"]),a(f,{size:"small",onClick:C=>D(e)},{default:l(()=>[...t[5]||(t[5]=[r("关闭",-1)])]),_:1},8,["onClick"])],64)):J("",!0),a(f,{type:"danger",size:"small",onClick:C=>E(e)},{default:l(()=>[...t[6]||(t[6]=[r("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[S,p.value]])])]),_:1})])}}},ue=$(ie,[["__scopeId","data-v-a383a5a0"]]);export{ue as default};
|