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