1import{d as Re,a as Ae,L as Ee,u as Fe,C as Me,A as m,a7 as Ve,o as je,f as x,O as Be,E as f,g as r,h as v,i as n,j as s,y as Ie,k as t,H as c,m as p,t as i,F as z,s as W,v as O,N as J,q as k,G as D,r as X,$ as Z,S as $e,ad as qe,n as He,z as Pe,B as Ke}from"./index-BtzTNpX2.js";import{u as Ye}from"./notifications-DxFAdT7x.js";import{u as Ge,P as Qe}from"./viewport-DHq3F722.js";import{t as ee}from"./grid-DHZFgqoY.js";import{R as We}from"./RichEditor-x1KqAxAl.js";import{L as Je}from"./LockClosedOutline-9_4z8swf.js";import{C as Xe}from"./CloseCircleOutline-Czbl59g1.js";import{C as Ze}from"./CheckmarkCircleOutline-BT04Bn85.js";import{T as et}from"./TimeOutline-Jfzw93ej.js";import{A as me}from"./AlertCircleOutline-7mlSPUp-.js";import{A as tt}from"./ArrowForwardOutline-UygcCGsT.js";import{_ as at}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./CopyOutline-Dj7oGup2.js";import"./upload-q8YfgnHY.js";import"./TextOutline-DWxoERpN.js";import"./ListOutline-BXXaNm52.js";import"./RemoveOutline-CkmmeHBk.js";import"./LinkOutline-DBCDyiaV.js";import"./ImageOutline-C-JvlXxv.js";import"./HappyOutline-DBaiQgr8.js";const ot={class:"toolbar"},lt={class:"total"},st={key:0,class:"cards"},nt={class:"cc-head"},it={class:"cc-id"},ct={class:"cc-body"},ut={class:"cc-title"},rt={class:"cc-sub"},dt={class:"cc-timeline"},mt={class:"cc-dates"},pt={class:"cc-foot"},ft={class:"cc-cust"},vt={class:"cc-info"},_t={class:"cc-name"},ht={class:"cc-via"},yt=["onClick"],bt=["title"],gt={key:0,class:"pager"},wt={class:"split"},kt={class:"col-left"},Ct={class:"col-title"},St={class:"cpl-list"},xt=["onClick"],Tt={class:"ci-top"},zt={class:"ci-code"},Ot={class:"ci-reason"},Ut={class:"ci-sub"},Lt={class:"col-right"},Nt={class:"col-title"},Dt={key:0,class:"th-empty"},Rt={key:0,class:"th-day"},At={class:"msg-col"},Et={key:0,class:"msg-who"},Ft=["innerHTML"],Mt=["title"],Vt={class:"th-box"},jt=Re({__name:"ComplaintList",setup(Bt){const{t:a}=Ae(),j=Ee(),pe=Fe(),R=Me(),fe=Ge(Qe),B=Ye(),I=m(!1),$=m([]),q=m(""),H=m(null),b=m({page:1,pageSize:Ve(),itemCount:0}),te={open:{label:a("staff.complaints.open"),color:"#dc2626",icon:me,fill:15},processing:{label:a("staff.complaints.processing"),color:"#d97706",icon:et,fill:55},resolved:{label:a("staff.complaints.resolved"),color:"#16a34a",icon:Ze,fill:100},rejected:{label:a("staff.complaints.rejected"),color:"#64748b",icon:Xe,fill:100},closed:{label:a("staff.complaints.closed"),color:"#64748b",icon:Je,fill:100}};function _(l){return te[l]||{label:l,color:"#98a2b3",icon:me,fill:0}}const ve=Object.entries(te).map(([l,o])=>({label:o.label,value:l}));function ae(l){const o=(l||"?").trim(),d=o.split(/\s+/);return(d.length>1?d[0][0]+d[d.length-1][0]:o.slice(0,2)).toUpperCase()}function P(l){if(!l)return"â";const o=new Date(l);return isNaN(o.getTime())?"â":o.toLocaleDateString("vi-VN",{day:"2-digit",month:"short"})+", "+o.toLocaleTimeString("vi-VN",{hour:"2-digit",minute:"2-digit"})}async function C(){var l;I.value=!0;try{const o=await x.complaints({q:q.value,status:H.value||"",page:b.value.page,page_size:b.value.pageSize});$.value=o.data,b.value.itemCount=((l=o.meta)==null?void 0:l.total)||0}finally{I.value=!1}}je(()=>{C(),oe(),B.fetchSummary()});async function oe(){const l=Number(j.query.open);if(!l)return;const{open:o,...d}=j.query;pe.replace({query:d});try{le(await x.complaint(l))}catch{}}Be(()=>j.query.open,()=>oe());const U=m(!1),g=m({});function _e(){g.value={order_id:null,method:"",reason:"",status:"open"},U.value=!0}async function he(){if(!g.value.order_id){R.warning(a("staff.complaints.needOrderId"));return}try{await x.createComplaint(g.value),R.success(a("staff.complaints.created")),U.value=!1,C()}catch{}}const A=m(!1),u=m({}),K=m([]),Y=m(!1);function le(l){B.markRef("complaint",l.id),u.value=l,A.value=!0,ne(),be()}function ye(){A.value=!1,xe(u.value)}async function be(){var l,o;if(K.value=(l=u.value)!=null&&l.id?[u.value]:[],!!((o=u.value)!=null&&o.order_id)){Y.value=!0;try{const d=await x.complaints({order_id:u.value.order_id,page_size:100});K.value=d.data||[]}catch{}finally{Y.value=!1}}}function ge(l){l.id!==u.value.id&&(u.value=l,ne())}const L=m([]),E=m(!1),F=m(""),G=m(!1),M=m(null);async function se(){await He(),M.value&&(M.value.scrollTop=M.value.scrollHeight)}async function ne(){var l;if(L.value=[],!!((l=u.value)!=null&&l.id)){E.value=!0;try{L.value=await x.complaintComments(u.value.id)||[],se()}finally{E.value=!1}}}function we(l){return!l.replace(/<[^>]*>| |\s/g,"")}function V(l){const o=new Date(l);return`${o.getFullYear()}-${o.getMonth()}-${o.getDate()}`}function ke(l){const o=new Date,d=V(l);if(d===V(o.toISOString()))return a("staff.complaints.threadToday");const h=new Date(o.getTime()-864e5);return d===V(h.toISOString())?a("staff.complaints.threadYesterday"):Ke(l)}const Ce=Pe(()=>{const l=[];let o="",d="";for(const h of L.value){const y=V(h.created_at);y!==o&&(l.push({kind:"day",key:"d"+y,label:ke(h.created_at)}),o=y,d=""),l.push({kind:"msg",key:"m"+h.id,data:h,cont:h.author_type===d}),d=h.author_type}return l});async function Se(){const l=F.value;if(we(l)){R.warning(a("staff.complaints.threadNeedContent"));return}G.value=!0;try{L.value.push(await x.addComplaintComment(u.value.id,l)),F.value="",se(),u.value.status==="open"&&(u.value.status="processing",C())}catch{}finally{G.value=!1}}const N=m(!1),ie=m(null),S=m({});function xe(l){ie.value=l,S.value={status:"resolved",resolution:"",refund_amount_vnd:0},N.value=!0}async function Te(){try{await x.resolveComplaint(ie.value.id,S.value),R.success(a("staff.complaints.resolvedMsg")),N.value=!1,C()}catch{}}return(l,o)=>{const d=f("n-input"),h=f("n-select"),y=f("n-button"),ze=f("n-empty"),Q=f("n-spin"),Oe=f("n-pagination"),ce=f("n-input-number"),T=f("n-form-item"),ue=f("n-form"),re=f("n-space"),de=f("n-modal"),w=f("n-descriptions-item"),Ue=f("n-descriptions"),Le=f("n-drawer-content"),Ne=f("n-drawer");return r(),v(z,null,[n("div",null,[n("div",ot,[s(d,{value:q.value,"onUpdate:value":o[0]||(o[0]=e=>q.value=e),placeholder:t(a)("staff.complaints.searchPlaceholder"),clearable:"",style:{"max-width":"280px"},onKeyup:Ie(C,["enter"])},null,8,["value","placeholder"]),s(h,{value:H.value,"onUpdate:value":[o[1]||(o[1]=e=>H.value=e),C],placeholder:t(a)("common.status"),clearable:"",style:{width:"170px"},options:t(ve)},null,8,["value","placeholder","options"]),s(y,{onClick:C},{default:c(()=>[p(i(t(a)("common.search")),1)]),_:1}),o[15]||(o[15]=n("div",{class:"spacer"},null,-1)),n("span",lt,i(b.value.itemCount)+" "+i(t(a)("staff.complaints.countSuffix")),1),s(y,{type:"primary",onClick:_e},{default:c(()=>[p(i(t(a)("staff.complaints.createBtn")),1)]),_:1})]),s(Q,{show:I.value},{default:c(()=>[$.value.length?(r(),v("div",st,[(r(!0),v(z,null,W($.value,e=>(r(),v("div",{key:e.id,class:"ccard",style:O({borderBottomColor:_(e.status).color})},[n("div",nt,[n("span",it,"#"+i(e.code),1),n("span",{class:"cc-badge",style:O({color:_(e.status).color,background:t(ee)(_(e.status).color,.12)})},[s(t(J),{component:_(e.status).icon,size:"14"},null,8,["component"]),p(" "+i(_(e.status).label),1)],4)]),n("div",ct,[n("div",ut,i(e.reason||t(a)("staff.complaints.titleFallback",{code:e.order_code||""})),1),n("div",rt,i(t(a)("staff.complaints.subLine",{code:e.order_code,method:e.method||t(a)("staff.complaints.unknownMethod")})),1)]),n("div",dt,[n("div",mt,[n("span",null,i(P(e.created_at)),1),n("span",null,i(P(e.resolved_at)),1)])]),n("div",pt,[n("div",ft,[n("div",{class:"cc-avatar",style:O({background:_(e.status).color})},i(ae(e.customer_name)),5),n("div",vt,[n("div",_t,i(e.customer_name||t(a)("staff.complaints.guest")),1),n("div",ht,i(e.method||t(a)("staff.complaints.complaintWord")),1)])]),n("button",{class:"cc-arrow",onClick:De=>le(e)},[s(t(J),{component:t(tt),size:"18"},null,8,["component"]),t(B).unreadComplaintIds.has(e.id)?(r(),v("span",{key:0,class:"cc-new-dot",title:t(a)("staff.noti.hasNew")},null,8,bt)):k("",!0)],8,yt)])],4))),128))])):(r(),D(ze,{key:1,description:t(a)("staff.complaints.empty"),style:{padding:"60px 0"}},null,8,["description"]))]),_:1},8,["show"]),b.value.itemCount>
1b.value.pageSize?(r(),v("div",gt,[s(Oe,{page:b.value.page,"page-size":b.value.pageSize,"item-count":b.value.itemCount,"onUpdate:page":o[2]||(o[2]=e=>{b.value.page=e,C()})},null,8,["page","page-size","item-count"])])):k("",!0)]),s(de,{show:U.value,"onUpdate:show":o[7]||(o[7]=e=>U.value=e),preset:"card",title:t(a)("staff.complaints.createTitle"),style:{width:"480px"}},{footer:c(()=>[s(re,{justify:"end"},{default:c(()=>[s(y,{onClick:o[6]||(o[6]=e=>U.value=!1)},{default:c(()=>[p(i(t(a)("common.cancel")),1)]),_:1}),s(y,{type:"primary",onClick:he},{default:c(()=>[p(i(t(a)("common.save")),1)]),_:1})]),_:1})]),default:c(()=>[s(ue,null,{default:c(()=>[s(T,{label:t(a)("staff.complaints.orderId")},{default:c(()=>[s(ce,{value:g.value.order_id,"onUpdate:value":o[3]||(o[3]=e=>g.value.order_id=e),style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),s(T,{label:t(a)("staff.complaints.method")},{default:c(()=>[s(h,{value:g.value.method,"onUpdate:value":o[4]||(o[4]=e=>g.value.method=e),options:["refund","exchange","negotiate","platform"].map(e=>({label:t(a)("portal.complaints.methods."+e),value:t(a)("portal.complaints.methods."+e)}))},null,8,["value","options"])]),_:1},8,["label"]),s(T,{label:t(a)("staff.complaints.reason")},{default:c(()=>[s(d,{value:g.value.reason,"onUpdate:value":o[5]||(o[5]=e=>g.value.reason=e),type:"textarea",rows:3},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"]),s(Ne,{show:A.value,"onUpdate:show":o[9]||(o[9]=e=>A.value=e),width:t(fe)?"100%":"50%",placement:"right"},{default:c(()=>[s(Le,{title:t(a)("staff.complaints.detailTitle",{code:u.value.code}),closable:""},{default:c(()=>[n("div",wt,[n("div",kt,[n("div",Ct,i(t(a)("staff.complaints.sameOrderTitle",{code:u.value.order_code||""})),1),s(Q,{show:Y.value},{default:c(()=>[n("div",St,[(r(!0),v(z,null,W(K.value,e=>(r(),v("button",{key:e.id,class:X(["cpl-item",{on:e.id===u.value.id}]),style:O({borderLeftColor:_(e.status).color}),onClick:De=>ge(e)},[n("div",Tt,[n("span",zt,"#"+i(e.code),1),n("span",{class:"ci-badge",style:O({color:_(e.status).color,background:t(ee)(_(e.status).color,.12)})},i(_(e.status).label),5)]),n("div",Ot,i(e.reason||t(a)("staff.complaints.titleFallback",{code:e.order_code||""})),1),n("div",Ut,i(e.method||t(a)("staff.complaints.unknownMethod"))+" · "+i(P(e.created_at)),1)],14,xt))),128))])]),_:1},8,["show"]),s(Ue,{column:1,"label-placement":"left",bordered:"",size:"small",style:{"margin-top":"14px"}},{default:c(()=>[s(w,{label:t(a)("common.status")},{default:c(()=>[n("span",{class:"cc-badge",style:O({color:_(u.value.status).color,background:t(ee)(_(u.value.status).color,.12)})},[s(t(J),{component:_(u.value.status).icon,size:"14"},null,8,["component"]),p(" "+i(_(u.value.status).label),1)],4)]),_:1},8,["label"]),s(w,{label:t(a)("common.order")},{default:c(()=>[p(i(u.value.order_code),1)]),_:1},8,["label"]),s(w,{label:t(a)("common.customer")},{default:c(()=>[p(i(u.value.customer_name),1)]),_:1},8,["label"]),s(w,{label:t(a)("staff.complaints.method")},{default:c(()=>[p(i(u.value.method||"â"),1)]),_:1},8,["label"]),s(w,{label:t(a)("staff.complaints.reason")},{default:c(()=>[p(i(u.value.reason||"â"),1)]),_:1},8,["label"]),s(w,{label:t(a)("common.createdAt")},{default:c(()=>[p(i(t(Z)(u.value.created_at)),1)]),_:1},8,["label"]),u.value.resolution?(r(),D(w,{key:0,label:t(a)("staff.complaints.resolution")},{default:c(()=>[p(i(u.value.resolution),1)]),_:1},8,["label"])):k("",!0),u.value.refund_amount_vnd?(r(),D(w,{key:1,label:t(a)("staff.complaints.refund")},{default:c(()=>[p(i(t($e)(u.value.refund_amount_vnd)),1)]),_:1},8,["label"])):k("",!0),u.value.resolved_at?(r(),D(w,{key:2,label:t(a)("staff.complaints.resolvedAt")},{default:c(()=>[p(i(t(Z)(u.value.resolved_at)),1)]),_:1},8,["label"])):k("",!0)]),_:1}),u.value.status==="open"||u.value.status==="processing"?(r(),D(y,{key:0,type:"primary",block:"",style:{"margin-top":"14px"},onClick:ye},{default:c(()=>[p(i(t(a)("staff.complaints.resolveBtn")),1)]),_:1})):k("",!0)]),n("div",Lt,[n("div",Nt,i(t(a)("staff.complaints.threadTitle")),1),n("div",{ref_key:"threadEl",ref:M,class:"th-scroll"},[s(Q,{show:E.value},{default:c(()=>[!L.value.length&&!E.value?(r(),v("div",Dt,i(t(a)("staff.complaints.threadEmpty")),1)):k("",!0),(r(!0),v(z,null,W(Ce.value,e=>(r(),v(z,{key:e.key},[e.kind==="day"?(r(),v("div",Rt,[n("span",null,i(e.label),1)])):(r(),v("div",{key:1,class:X(["msg",[e.data.author_type==="staff"?"mine":"theirs",{cont:e.cont}]])},[n("div",{class:X(["msg-av",e.data.author_type])},[e.cont?k("",!0):(r(),v(z,{key:0},[p(i(ae(e.data.author_name)),1)],64))],2),n("div",At,[e.cont?k("",!0):(r(),v("div",Et,i(e.data.author_name||(e.data.author_type==="staff"?t(a)("staff.complaints.threadStaff"):t(a)("staff.complaints.threadCustomer"))),1)),n("div",{class:"bub",innerHTML:e.data.content},null,8,Ft),n("div",{class:"msg-time",title:t(Z)(e.data.created_at)},i(t(qe)(e.data.created_at)),9,Mt)])],2))],64))),128))]),_:1},8,["show"])],512),n("div",Vt,[s(We,{modelValue:F.value,"onUpdate:modelValue":o[8]||(o[8]=e=>F.value=e),"enter-to-send":"",disabled:G.value,maxlength:2e3,placeholder:t(a)("staff.complaints.threadPlaceholder"),onSubmit:Se},null,8,["modelValue","disabled","placeholder"])])])])]),_:1},8,["title"])]),_:1},8,["show","width"]),s(de,{show:N.value,"onUpdate:show":o[14]||(o[14]=e=>
1N.value=e),preset:"card",title:t(a)("staff.complaints.resolveTitle"),style:{width:"480px"}},{footer:c(()=>[s(re,{justify:"end"},{default:c(()=>[s(y,{onClick:o[13]||(o[13]=e=>N.value=!1)},{default:c(()=>[p(i(t(a)("common.cancel")),1)]),_:1}),s(y,{type:"primary",onClick:Te},{default:c(()=>[p(i(t(a)("common.confirm")),1)]),_:1})]),_:1})]),default:c(()=>[s(ue,null,{default:c(()=>[s(T,{label:t(a)("staff.complaints.result")},{default:c(()=>[s(h,{value:S.value.status,"onUpdate:value":o[10]||(o[10]=e=>S.value.status=e),options:[{label:t(a)("staff.complaints.resolved"),value:"resolved"},{label:t(a)("staff.complaints.rejected"),value:"rejected"},{label:t(a)("staff.complaints.closed"),value:"closed"}]},null,8,["value","options"])]),_:1},8,["label"]),s(T,{label:t(a)("staff.complaints.refundAmount")},{default:c(()=>[s(ce,{value:S.value.refund_amount_vnd,"onUpdate:value":o[11]||(o[11]=e=>S.value.refund_amount_vnd=e),style:{width:"100%"},min:0},null,8,["value"])]),_:1},8,["label"]),s(T,{label:t(a)("staff.complaints.resolution")},{default:c(()=>[s(d,{value:S.value.resolution,"onUpdate:value":o[12]||(o[12]=e=>S.value.resolution=e),type:"textarea",rows:3},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title"])],64)}}}),ia=at(jt,[["__scopeId","data-v-b49f5496"]]);export{ia as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.