Files
machartaa_admin_dist/dist/assets/index-42413947.js
T
2026-08-19 11:15:51 +03:30

2 lines
15 KiB
JavaScript

import{_ as be}from"./BasicMainCard-945a60be.js";import{_ as xe}from"./BasicModal.vue_vue_type_style_index_0_lang-31a77bff.js";import{_ as we,u as Ce}from"./useBaseTable-53dd99af.js";import{_ as Te}from"./button.vue_vue_type_style_index_0_lang-bfd9fcfc.js";import{I as M}from"./Icon-49e380f5.js";import{t as Ie}from"./useDataTime-3763aaa9.js";import{g as O}from"./convert-2ad76038.js";import{t as Se}from"./textUtils-c37780ad.js";import{j as H,k as $e,l as Ae,n as Re,o as Ue,p as qe,q as Be,v as je}from"./support-48b085f1.js";import{M as Pe}from"./index-30f4723a.js";import{_ as De,T as Ee}from"./index-17e4f352.js";import{a as W,A as X}from"./index-d7aee433.js";import{I as Me}from"./index-3a7846ee.js";import{d as Ne,g,r as Y,h as V,E as Fe,v as Le,l as Ke,o,c,b as d,w as u,a,e as T,F as q,n as P,j as m,i as b,k as I,H as Qe,t as x,D as y,O as Oe,P as Ve,p as Z}from"./index-bfe458ac.js";import{T as N}from"./isSymbol-0bccfc01.js";import{U as Je}from"./index-3c17cc81.js";import{_ as ze}from"./_plugin-vue_export-helper-67599eab.js";import"./Grid-653102df.js";import"./index-61da12ec.js";import"./Col-37dd3be5.js";import"./styleChecker-8e2e8c57.js";import"./isPlainObject-d0372073.js";import"./vnode-d4498b2d.js";import"./index-a231d930.js";import"./updateLocale-01f6a4ae.js";import"./index-866ab3cc.js";import"./index-bc659f42.js";import"./shallowequal-58ae19a4.js";import"./useState-28dabf70.js";import"./useMemo-c07be216.js";import"./FormItemContext-50ffb9a1.js";import"./omit-31473f11.js";import"./lodash-6ccdc7c6.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-5abef7b1.js";import"./index-24b7e322.js";import"./Badge-2d408009.js";import"./isNumeric-3f69e2aa.js";import"./index-231f7c05.js";import"./index-d162d812.js";import"./index-f9fac6a3.js";import"./index-78c7f5e8.js";import"./index-d6fc1ec7.js";import"./DialogWrap-f94b796f.js";import"./pickAttrs-c1604177.js";import"./css-aae66f86.js";import"./index-d61dbb2f.js";import"./toArray-54bd8d35.js";import"./SearchOutlined-2adda210.js";import"./isMobile-e2e89480.js";import"./index-d3413392.js";import"./useRefs-7ed7974b.js";import"./_flatRest-e19970cd.js";import"./index-42759bd8.js";import"./index-7bc50da0.js";function Ge(l){const f=l==null?void 0:l.users;return f?f.name||[f.first_name,f.last_name].filter(Boolean).join(" ")||f.phone||(l==null?void 0:l.account_name)||"—":(l==null?void 0:l.account_name)||"—"}function He(l){var f;return((f=l==null?void 0:l.users)==null?void 0:f.phone)||(l==null?void 0:l.account_phone)||"—"}const We=[{title:"ردیف",dataIndex:"id",key:"row_index",filterable:!1,width:70,align:"center",customRender:l=>l.record.index+1},{title:"شماره تیکت",dataIndex:"id",key:"id",type:"Number",width:110,align:"center",customRender:l=>`#${l.record.id}`},{title:"نام کاربر",dataIndex:"account_name",key:"account_name",type:"Text",width:160,customRender:l=>Ge(l.record)},{title:"شماره موبایل",dataIndex:"account_phone",key:"account_phone",type:"Text",width:130,customRender:l=>He(l.record)},{title:"متن تیکت",dataIndex:"problem",key:"problem",type:"Text",width:280,customRender:l=>{const{truncated:f}=Se(l.record.problem||"",70);return f}},{title:"عملیات",dataIndex:"action",key:"action",width:150,align:"center",slot:"action",filterable:!1}],ee=[{value:"codoblo",label:"اشتراک کدوبلو"},{value:"shop",label:"بخش فروشگاه"},{value:"other",label:"بخش‌های دیگر اپلیکیشن"},{value:"feedback",label:"انتقاد و پیشنهاد"}],Xe=[{value:"new",label:"درخواست‌های جدید"},{value:"answered",label:"پاسخ داده‌شده"},{value:"follow_up",label:"ادامه گفتگو"},{value:"closed",label:"بسته‌شده"},{value:"spam",label:"اسپم"}],_=l=>(Oe("data-v-80dd4ab2"),l=l(),Ve(),l),Ye={class:"tickets-page"},Ze={class:"tickets-page__inner"},et={class:"tickets-page__header flex justify-between items-center gap-3 flex-wrap"},tt=_(()=>a("div",null,[a("h2",{class:"text-lg font-bold m-0"},"تیکت‌های پشتیبانی"),a("p",{class:"text-sm text-gray-500 mt-1 mb-0"},"مدیریت درخواست‌های پشتیبانی کاربران")],-1)),at={class:"tickets-layout"},st={class:"tickets-queues"},lt=_(()=>a("div",{class:"tickets-queues__title"},"وضعیت درخواست‌ها",-1)),nt=["onClick"],ot={class:"tickets-queues__item-label"},it={class:"tickets-queues__item-count"},ut={class:"tickets-main"},rt={class:"tickets-table-wrap"},ct={class:"gap-2 flex justify-center items-center"},dt=_(()=>a("span",null,"مشاهده",-1)),pt=_(()=>a("span",null,"بستن تیکت",-1)),mt=_(()=>a("span",null,"اسپم",-1)),_t=_(()=>a("span",null,"بازگردانی از اسپم",-1)),vt={key:0,class:"py-8 text-center text-gray-500"},ft={key:1,class:"space-y-4"},yt={class:"grid grid-cols-1 md:grid-cols-2 gap-3 text-sm"},ht=_(()=>a("div",{class:"text-gray-500 mb-1"},"شماره تیکت",-1)),gt={class:"font-600 dir-ltr text-right"},kt=_(()=>a("div",{class:"text-gray-500 mb-1"},"موضوع",-1)),bt={class:"font-600"},xt=_(()=>a("div",{class:"text-gray-500 mb-1"},"نام و نام خانوادگی",-1)),wt={class:"font-600"},Ct=_(()=>a("div",{class:"text-gray-500 mb-1"},"شماره همراه",-1)),Tt={class:"font-600 dir-ltr text-right"},It=_(()=>a("div",{class:"text-gray-500 mb-1 text-sm"},"متن پیام کاربر",-1)),St={class:"rounded-xl border border-gray-200 bg-gray-50 p-3 text-sm leading-7 whitespace-pre-wrap"},$t={key:0,class:"flex flex-wrap gap-2 mt-2"},At={key:0,class:"space-y-2"},Rt=_(()=>a("div",{class:"text-gray-500 text-sm"},"تاریخچه گفتگو",-1)),Ut={class:"text-xs text-gray-500 mb-1"},qt={class:"leading-7 whitespace-pre-wrap"},Bt={key:0,class:"flex flex-wrap gap-2 mt-2"},jt=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"متن پاسخ کارشناس",-1)),Pt=_(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"تصاویر مربوطه برای کاربر",-1)),Dt={key:0},Et=_(()=>a("div",{class:"text-xs"},"آپلود تصویر",-1)),Mt=[Et],Nt={key:2,class:"rounded-xl bg-gray-100 p-3 text-center text-sm text-gray-600"},Ft={key:3,class:"rounded-xl bg-orange-50 border border-orange-200 p-3 text-center text-sm text-orange-700"},Lt={key:0,class:"flex justify-end gap-2 flex-wrap"},Kt={key:1,class:"flex justify-end gap-2 flex-wrap"},Qt=Ne({__name:"index",setup(l){const{TextArea:f}=Me,te=g(),B=g(!1),F=g(!1),n=g(null),L=g(!1),k=g(!1),$=g("new"),A=g("all"),R=Y({new:0,answered:0,follow_up:0,closed:0,spam:0}),U=Y({content:""}),S=g([]),w=g([]),ae=Xe,se=V(()=>`${$.value}:${A.value}`),[le,D]=Ce(),K=g({columns:We,api:H($.value,A.value),defaultPageLimit:20}),ne=V(()=>{var t,s,r;const e=(t=n.value)==null?void 0:t.users;return e?e.name||[e.first_name,e.last_name].filter(Boolean).join(" ")||((s=n.value)==null?void 0:s.account_name)||"—":((r=n.value)==null?void 0:r.account_name)||"—"}),oe=V(()=>{var e,t,s;return((t=(e=n.value)==null?void 0:e.users)==null?void 0:t.phone)||((s=n.value)==null?void 0:s.account_phone)||"—"});function ie(e){var t;return((t=ee.find(s=>s.value===e))==null?void 0:t.label)||e||"—"}function ue(){K.value={...K.value,api:H($.value,A.value)}}async function j(){try{const e=await $e();R.new=e.new,R.answered=e.answered,R.follow_up=e.follow_up,R.closed=e.closed,R.spam=e.spam}catch{}}function re(e){$.value=e}Fe([$,A],()=>{ue()});async function ce(e){B.value=!0,F.value=!0,n.value=null,U.content="",S.value=[],w.value=[];try{n.value=await Ae(e.id)}catch{y.error("خطا در دریافت جزئیات تیکت"),B.value=!1}finally{F.value=!1}}function C(){B.value=!1,n.value=null,U.content="",S.value=[],w.value=[]}function de(e){return e.type.startsWith("image/")?!0:(y.error("فقط تصویر مجاز است"),!1)}async function pe(e){const{file:t,onSuccess:s,onError:r}=e;try{const p=await Re(t);S.value.push({url:p,name:t.name}),w.value=[...w.value,{uid:`${Date.now()}`,name:t.name,status:"done",url:O(p),response:{path:p}}],s==null||s({path:p})}catch(p){r==null||r(p),y.error("خطا در آپلود تصویر")}}function me(e){var s;const t=((s=e==null?void 0:e.response)==null?void 0:s.path)||_e(e==null?void 0:e.url);S.value=S.value.filter(r=>r.url!==t),w.value=w.value.filter(r=>r.uid!==e.uid)}function _e(e){return e?e.replace(/^https?:\/\/[^/]+/,""):""}async function J(e){var s,r;const t=(e==null?void 0:e.id)||((s=n.value)==null?void 0:s.id);if(t)try{k.value=!0,await Ue(t),y.success("تیکت به اسپم منتقل شد"),((r=n.value)==null?void 0:r.id)===t&&C(),await j(),await D()}catch(p){y.error((p==null?void 0:p.message)||"خطا در انتقال به اسپم")}finally{k.value=!1}}async function Q(e){var s;const t=e!=null&&e.id?e:n.value;if(t!=null&&t.id)try{k.value=!0,await qe({id:t.id,status:t.status||"pending"}),y.success("تیکت از اسپم بازگردانده شد"),((s=n.value)==null?void 0:s.id)===t.id&&C(),await j(),await D()}catch(r){y.error((r==null?void 0:r.message)||"خطا در بازگردانی تیکت")}finally{k.value=!1}}function z(e){var s;const t=(e==null?void 0:e.id)||((s=n.value)==null?void 0:s.id);t&&Pe.confirm({title:"بستن تیکت",content:`آیا از بستن تیکت #${t} مطمئن هستید؟`,okText:"بستن تیکت",cancelText:"انصراف",okType:"danger",async onOk(){var r;try{k.value=!0,await Be(t),y.success("تیکت بسته شد"),((r=n.value)==null?void 0:r.id)===t&&C(),await j(),await D()}catch(p){y.error((p==null?void 0:p.message)||"خطا در بستن تیکت")}finally{k.value=!1}}})}async function ve(){if(n.value){if(!U.content.trim()&&!S.value.length){y.warning("متن پاسخ یا تصویر را وارد کنید");return}try{L.value=!0,await je({ticketId:n.value.id,content:U.content,attachments:S.value}),y.success("پاسخ ارسال شد"),C(),await j(),await D()}catch(e){y.error((e==null?void 0:e.message)||"خطا در ارسال پاسخ")}finally{L.value=!1}}}return Le(j),(e,t)=>{const s=Te,r=Ke("RouterLink"),p=De,fe=Ee,ye=we,he=xe,ge=be;return o(),c("div",Ye,[d(ge,null,{default:u(()=>[a("div",Ze,[a("div",et,[tt,d(r,{to:{name:"supportMain"}},{default:u(()=>[d(s,null,{default:u(()=>[T("بازگشت به چت")]),_:1})]),_:1})]),a("div",at,[a("aside",st,[lt,(o(!0),c(q,null,P(m(ae),i=>(o(),c("button",{key:i.value,type:"button",class:Z(["tickets-queues__item",{"tickets-queues__item--active":$.value===i.value,"tickets-queues__item--spam":i.value==="spam"}]),onClick:h=>re(i.value)},[a("span",ot,x(i.label),1),a("span",it,x(R[i.value]||0),1)],10,nt))),128))]),a("section",ut,[d(fe,{activeKey:A.value,"onUpdate:activeKey":t[0]||(t[0]=i=>A.value=i),class:"tickets-tabs"},{default:u(()=>[d(p,{key:"all",tab:"همه موضوعات"}),(o(!0),c(q,null,P(m(ee),i=>(o(),b(p,{key:i.value,tab:i.label},null,8,["tab"]))),128))]),_:1},8,["activeKey"]),a("div",rt,[(o(),b(ye,Qe({key:se.value},K.value,{ref_key:"table",ref:te,onRegister:m(le)}),{action:u(({record:i})=>[a("div",ct,[d(m(N),{class:"cursor-pointer"},{title:u(()=>[dt]),default:u(()=>[d(M,{icon:"vuesax-linear:eye",color:"#1D4ED8",onClick:h=>ce(i)},null,8,["onClick"])]),_:2},1024),i.status!=="closed"?(o(),b(m(N),{key:0,class:"cursor-pointer"},{title:u(()=>[pt]),default:u(()=>[d(M,{icon:"vuesax-linear:close-circle",color:"#DC2626",onClick:h=>z(i)},null,8,["onClick"])]),_:2},1024)):I("",!0),i.admin_queue!=="spam"?(o(),b(m(N),{key:1,class:"cursor-pointer"},{title:u(()=>[mt]),default:u(()=>[d(M,{icon:"vuesax-linear:danger",color:"#EA580C",onClick:h=>J(i)},null,8,["onClick"])]),_:2},1024)):(o(),b(m(N),{key:2,class:"cursor-pointer"},{title:u(()=>[_t]),default:u(()=>[d(M,{icon:"vuesax-linear:refresh-circle",color:"#16A34A",onClick:h=>Q(i)},null,8,["onClick"])]),_:2},1024))])]),_:1},16,["onRegister"]))])])])]),d(he,{visible:B.value,"onUpdate:visible":t[6]||(t[6]=i=>B.value=i),title:"جزئیات تیکت پشتیبانی","custom-footer":!0,width:"720px",onCancel:C,onClose:C},{footer:u(()=>{var i;return[n.value&&n.value.status!=="closed"?(o(),c("div",Lt,[d(s,{onClick:C},{default:u(()=>[T("انصراف")]),_:1}),n.value.admin_queue!=="spam"?(o(),b(s,{key:0,loading:k.value,onClick:t[2]||(t[2]=h=>J())},{default:u(()=>[T(" انتقال به اسپم ")]),_:1},8,["loading"])):(o(),b(s,{key:1,loading:k.value,onClick:t[3]||(t[3]=h=>Q())},{default:u(()=>[T(" بازگردانی از اسپم ")]),_:1},8,["loading"])),d(s,{type:"danger",loading:k.value,onClick:t[4]||(t[4]=h=>z())},{default:u(()=>[T(" بستن تیکت ")]),_:1},8,["loading"]),d(s,{type:"primary",loading:L.value,onClick:ve},{default:u(()=>[T(" ارسال پاسخ ")]),_:1},8,["loading"])])):(o(),c("div",Kt,[((i=n.value)==null?void 0:i.admin_queue)==="spam"?(o(),b(s,{key:0,loading:k.value,onClick:t[5]||(t[5]=h=>Q())},{default:u(()=>[T(" بازگردانی از اسپم ")]),_:1},8,["loading"])):I("",!0),d(s,{onClick:C},{default:u(()=>[T("بستن")]),_:1})]))]}),default:u(()=>{var i,h;return[F.value?(o(),c("div",vt,"در حال بارگذاری...")):n.value?(o(),c("div",ft,[a("div",yt,[a("div",null,[ht,a("div",gt,"#"+x(n.value.id),1)]),a("div",null,[kt,a("div",bt,x(ie(n.value.subject)),1)]),a("div",null,[xt,a("div",wt,x(ne.value),1)]),a("div",null,[Ct,a("div",Tt,x(oe.value),1)])]),a("div",null,[It,a("div",St,x(n.value.problem),1),(i=n.value.attachments)!=null&&i.length?(o(),c("div",$t,[d(m(W),null,{default:u(()=>[(o(!0),c(q,null,P(n.value.attachments,(v,E)=>(o(),b(m(X),{key:`att-${E}`,src:m(O)(v.url),alt:v.name||"تصویر",width:80,height:80,preview:{mask:"پیش‌نمایش"},style:{"object-fit":"cover","border-radius":"8px",overflow:"hidden",border:"1px solid #e5e7eb"}},null,8,["src","alt"]))),128))]),_:1})])):I("",!0)]),(h=n.value.messages)!=null&&h.length?(o(),c("div",At,[Rt,(o(!0),c(q,null,P(n.value.messages,v=>{var E;return o(),c("div",{key:v.id,class:Z(["rounded-xl border border-gray-200 p-3 text-sm",v.sender_type==="admin"?"bg-amber-50":"bg-white"])},[a("div",Ut,x(v.sender_type==="admin"?"کارشناس":"کاربر")+" · "+x(v.created_at?m(Ie)(v.created_at):""),1),a("div",qt,x(v.content),1),(E=v.attachments)!=null&&E.length?(o(),c("div",Bt,[d(m(W),null,{default:u(()=>[(o(!0),c(q,null,P(v.attachments,(G,ke)=>(o(),b(m(X),{key:`msg-att-${v.id}-${ke}`,src:m(O)(G.url),alt:G.name||"تصویر",width:64,height:64,preview:{mask:"پیش‌نمایش"},style:{"object-fit":"cover","border-radius":"8px",overflow:"hidden",border:"1px solid #e5e7eb"}},null,8,["src","alt"]))),128))]),_:2},1024)])):I("",!0)],2)}),128))])):I("",!0),n.value.status!=="closed"?(o(),c(q,{key:1},[a("div",null,[jt,d(m(f),{value:U.content,"onUpdate:value":t[1]||(t[1]=v=>U.content=v),rows:4,placeholder:"پاسخ خود را بنویسید..."},null,8,["value"])]),a("div",null,[Pt,d(m(Je),{"list-type":"picture-card","file-list":w.value,"custom-request":pe,"before-upload":de,onRemove:me},{default:u(()=>[w.value.length<6?(o(),c("div",Dt,Mt)):I("",!0)]),_:1},8,["file-list"])])],64)):(o(),c("div",Nt," این تیکت بسته‌شده است. ")),n.value.admin_queue==="spam"?(o(),c("div",Ft," این تیکت در وضعیت اسپم است و برای کاربر تغییری نمایش داده نمی‌شود. ")):I("",!0)])):I("",!0)]}),_:1},8,["visible"])]),_:1})])}}});const Oa=ze(Qt,[["__scopeId","data-v-80dd4ab2"]]);export{Oa as default};