Files
machartaa_admin_dist/dist/assets/index-bd8d4d3c.js
T
2026-08-20 17:26:16 +03:30

2 lines
16 KiB
JavaScript

import{_ as Ie}from"./BasicMainCard-02aee5ac.js";import{_ as Se}from"./BasicModal.vue_vue_type_style_index_0_lang-ca4aa0a6.js";import{_ as Ae,u as $e}from"./useBaseTable-8eb27015.js";import{_ as Re}from"./button.vue_vue_type_style_index_0_lang-b7b1a519.js";import{I as N}from"./Icon-82f6c95b.js";import{t as Z}from"./useDataTime-785ab201.js";import{g as J}from"./convert-2ad76038.js";import{t as Ue}from"./textUtils-c37780ad.js";import{j as ee,k as qe,l as Be,n as Pe,o as je,p as De,q as Ee,v as Me}from"./support-e10407b1.js";import{l as Ne}from"./subscription-3191d0ab.js";import{M as Fe}from"./index-9c450bf9.js";import{_ as Le,T as Ke}from"./index-5e6ef189.js";import{a as te,A as ae}from"./index-f04936ef.js";import{I as Qe}from"./index-e626bdbb.js";import{d as Oe,g as y,r as se,h as F,E as Ve,v as Je,l as ze,o,c,b as d,w as u,a,e as C,F as B,n as D,j as _,i as b,k as I,H as Ge,t as h,p as z,D as g,O as He,P as We}from"./index-b279599b.js";import{T as L}from"./isSymbol-4b8c1f3e.js";import{U as Xe}from"./index-98405404.js";import{_ as Ye}from"./_plugin-vue_export-helper-f38a7ea6.js";import"./Grid-ba9af77d.js";import"./index-60598d32.js";import"./Col-c7dcaed0.js";import"./styleChecker-e8fc6c1f.js";import"./isPlainObject-093495b2.js";import"./vnode-cc30a5f9.js";import"./index-86478c3f.js";import"./updateLocale-1fd95539.js";import"./index-9879659d.js";import"./index-bc659f42.js";import"./shallowequal-59da3a36.js";import"./useState-588c2312.js";import"./useMemo-39d0bfae.js";import"./FormItemContext-a76fbf7e.js";import"./omit-4c59a877.js";import"./lodash-98c01373.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-62e181b5.js";import"./index-7dd4f08a.js";import"./Badge-2dd91e64.js";import"./isNumeric-3f69e2aa.js";import"./index-cb1dea06.js";import"./index-cce68701.js";import"./index-076900a0.js";import"./index-624f47cc.js";import"./index-5f5b359c.js";import"./DialogWrap-a7021269.js";import"./pickAttrs-7db0f563.js";import"./css-aae66f86.js";import"./index-6707c586.js";import"./toArray-b7e6b8ed.js";import"./SearchOutlined-3414d521.js";import"./isMobile-e2e89480.js";import"./index-2f258009.js";import"./pushNotification-47cd7dd6.js";import"./supabaseTableQuery-8ab5665d.js";import"./useRefs-72c4a0da.js";import"./_flatRest-cb9a1464.js";import"./index-1fd3daba.js";import"./index-de855912.js";function Ze(n){const f=n==null?void 0:n.users;return f?f.name||[f.first_name,f.last_name].filter(Boolean).join(" ")||f.phone||(n==null?void 0:n.account_name)||"—":(n==null?void 0:n.account_name)||"—"}function et(n){var f;return((f=n==null?void 0:n.users)==null?void 0:f.phone)||(n==null?void 0:n.account_phone)||"—"}const tt=[{title:"ردیف",dataIndex:"id",key:"row_index",filterable:!1,width:70,align:"center",customRender:n=>n.record.index+1},{title:"شماره تیکت",dataIndex:"id",key:"id",type:"Number",width:110,align:"center",customRender:n=>`#${n.record.id}`},{title:"نام کاربر",dataIndex:"account_name",key:"account_name",type:"Text",width:160,customRender:n=>Ze(n.record)},{title:"شماره موبایل",dataIndex:"account_phone",key:"account_phone",type:"Text",width:130,customRender:n=>et(n.record)},{title:"متن تیکت",dataIndex:"problem",key:"problem",type:"Text",width:280,customRender:n=>{const{truncated:f}=Ue(n.record.problem||"",70);return f}},{title:"عملیات",dataIndex:"action",key:"action",width:150,align:"center",slot:"action",filterable:!1}],le=[{value:"codoblo",label:"اشتراک کدوبلو"},{value:"shop",label:"بخش فروشگاه"},{value:"other",label:"بخش‌های دیگر اپلیکیشن"},{value:"feedback",label:"انتقاد و پیشنهاد"}],at=[{value:"new",label:"درخواست‌های جدید"},{value:"answered",label:"پاسخ داده‌شده"},{value:"follow_up",label:"ادامه گفتگو"},{value:"closed",label:"بسته‌شده"},{value:"spam",label:"اسپم"}],m=n=>(He("data-v-18c2d840"),n=n(),We(),n),st={class:"tickets-page"},lt={class:"tickets-page__inner"},nt={class:"tickets-page__header flex justify-between items-center gap-3 flex-wrap"},ot=m(()=>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)),it={class:"tickets-layout"},ut={class:"tickets-queues"},rt=m(()=>a("div",{class:"tickets-queues__title"},"وضعیت درخواست‌ها",-1)),ct=["onClick"],dt={class:"tickets-queues__item-label"},pt={class:"tickets-queues__item-count"},mt={class:"tickets-main"},_t={class:"tickets-table-wrap"},vt={class:"gap-2 flex justify-center items-center"},ft=m(()=>a("span",null,"مشاهده",-1)),yt=m(()=>a("span",null,"بستن تیکت",-1)),ht=m(()=>a("span",null,"اسپم",-1)),gt=m(()=>a("span",null,"بازگردانی از اسپم",-1)),xt={key:0,class:"py-8 text-center text-gray-500"},kt={key:1,class:"space-y-4"},bt={class:"grid grid-cols-1 md:grid-cols-2 gap-3 text-sm"},wt=m(()=>a("div",{class:"text-gray-500 mb-1"},"شماره تیکت",-1)),Tt={class:"font-600 dir-ltr text-right"},Ct=m(()=>a("div",{class:"text-gray-500 mb-1"},"موضوع",-1)),It={class:"font-600"},St=m(()=>a("div",{class:"text-gray-500 mb-1"},"نام و نام خانوادگی",-1)),At={class:"font-600"},$t=m(()=>a("div",{class:"text-gray-500 mb-1"},"شماره همراه",-1)),Rt={class:"font-600 dir-ltr text-right"},Ut=m(()=>a("div",{class:"text-gray-500 mb-1"},"وضعیت اشتراک",-1)),qt=m(()=>a("div",{class:"text-gray-500 mb-1"},"پلن / انقضا",-1)),Bt={class:"font-600"},Pt=m(()=>a("div",{class:"text-gray-500 mb-1 text-sm"},"متن پیام کاربر",-1)),jt={class:"rounded-xl border border-gray-200 bg-gray-50 p-3 text-sm leading-7 whitespace-pre-wrap"},Dt={key:0,class:"flex flex-wrap gap-2 mt-2"},Et={key:0,class:"space-y-2"},Mt=m(()=>a("div",{class:"text-gray-500 text-sm"},"تاریخچه گفتگو",-1)),Nt={class:"text-xs text-gray-500 mb-1"},Ft={class:"leading-7 whitespace-pre-wrap"},Lt={key:0,class:"flex flex-wrap gap-2 mt-2"},Kt=m(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"متن پاسخ کارشناس",-1)),Qt=m(()=>a("div",{class:"mb-1 text-sm text-gray-600"},"تصاویر مربوطه برای کاربر",-1)),Ot={key:0},Vt=m(()=>a("div",{class:"text-xs"},"آپلود تصویر",-1)),Jt=[Vt],zt={key:2,class:"rounded-xl bg-gray-100 p-3 text-center text-sm text-gray-600"},Gt={key:3,class:"rounded-xl bg-orange-50 border border-orange-200 p-3 text-center text-sm text-orange-700"},Ht={key:0,class:"flex justify-end gap-2 flex-wrap"},Wt={key:1,class:"flex justify-end gap-2 flex-wrap"},Xt=Oe({__name:"index",setup(n){const{TextArea:f}=Qe,ne=y(),P=y(!1),K=y(!1),l=y(null),S=y(null),Q=y(!1),k=y(!1),$=y("new"),R=y("all"),U=se({new:0,answered:0,follow_up:0,closed:0,spam:0}),q=se({content:""}),A=y([]),w=y([]),oe=at,ie=F(()=>`${$.value}:${R.value}`),[ue,E]=$e(),O=y({columns:tt,api:ee($.value,R.value),defaultPageLimit:20}),re=F(()=>{var t,s,r;const e=(t=l.value)==null?void 0:t.users;return e?e.name||[e.first_name,e.last_name].filter(Boolean).join(" ")||((s=l.value)==null?void 0:s.account_name)||"—":((r=l.value)==null?void 0:r.account_name)||"—"}),ce=F(()=>{var e,t,s;return((t=(e=l.value)==null?void 0:e.users)==null?void 0:t.phone)||((s=l.value)==null?void 0:s.account_phone)||"—"}),de=F(()=>{const e=S.value;if(!e)return"—";const t=e.planTitle||"",s=e.expiresAt?Z(e.expiresAt):"";return t&&s?`${t} — ${s}`:t||s||"—"});function pe(e){var t;return((t=le.find(s=>s.value===e))==null?void 0:t.label)||e||"—"}function me(){O.value={...O.value,api:ee($.value,R.value)}}async function j(){try{const e=await qe();U.new=e.new,U.answered=e.answered,U.follow_up=e.follow_up,U.closed=e.closed,U.spam=e.spam}catch{}}function _e(e){$.value=e}Ve([$,R],()=>{me()});async function ve(e){var t;P.value=!0,K.value=!0,l.value=null,S.value=null,q.content="",A.value=[],w.value=[];try{l.value=await Be(e.id);const s=l.value.user_id||((t=l.value.users)==null?void 0:t.id);try{S.value=await Ne(s)}catch{S.value={isActive:!1,label:"نامشخص",planTitle:null,expiresAt:null,remainingDays:0}}}catch{g.error("خطا در دریافت جزئیات تیکت"),P.value=!1}finally{K.value=!1}}function T(){P.value=!1,l.value=null,S.value=null,q.content="",A.value=[],w.value=[]}function fe(e){return e.type.startsWith("image/")?!0:(g.error("فقط تصویر مجاز است"),!1)}async function ye(e){const{file:t,onSuccess:s,onError:r}=e;try{const p=await Pe(t);A.value.push({url:p,name:t.name}),w.value=[...w.value,{uid:`${Date.now()}`,name:t.name,status:"done",url:J(p),response:{path:p}}],s==null||s({path:p})}catch(p){r==null||r(p),g.error("خطا در آپلود تصویر")}}function he(e){var s;const t=((s=e==null?void 0:e.response)==null?void 0:s.path)||ge(e==null?void 0:e.url);A.value=A.value.filter(r=>r.url!==t),w.value=w.value.filter(r=>r.uid!==e.uid)}function ge(e){return e?e.replace(/^https?:\/\/[^/]+/,""):""}async function G(e){var s,r;const t=(e==null?void 0:e.id)||((s=l.value)==null?void 0:s.id);if(t)try{k.value=!0,await je(t),g.success("تیکت به اسپم منتقل شد"),((r=l.value)==null?void 0:r.id)===t&&T(),await j(),await E()}catch(p){g.error((p==null?void 0:p.message)||"خطا در انتقال به اسپم")}finally{k.value=!1}}async function V(e){var s;const t=e!=null&&e.id?e:l.value;if(t!=null&&t.id)try{k.value=!0,await De({id:t.id,status:t.status||"pending"}),g.success("تیکت از اسپم بازگردانده شد"),((s=l.value)==null?void 0:s.id)===t.id&&T(),await j(),await E()}catch(r){g.error((r==null?void 0:r.message)||"خطا در بازگردانی تیکت")}finally{k.value=!1}}function H(e){var s;const t=(e==null?void 0:e.id)||((s=l.value)==null?void 0:s.id);t&&Fe.confirm({title:"بستن تیکت",content:`آیا از بستن تیکت #${t} مطمئن هستید؟`,okText:"بستن تیکت",cancelText:"انصراف",okType:"danger",async onOk(){var r;try{k.value=!0,await Ee(t),g.success("تیکت بسته شد"),((r=l.value)==null?void 0:r.id)===t&&T(),await j(),await E()}catch(p){g.error((p==null?void 0:p.message)||"خطا در بستن تیکت")}finally{k.value=!1}}})}async function xe(){if(l.value){if(!q.content.trim()&&!A.value.length){g.warning("متن پاسخ یا تصویر را وارد کنید");return}try{Q.value=!0,await Me({ticketId:l.value.id,content:q.content,attachments:A.value}),g.success("پاسخ ارسال شد"),T(),await j(),await E()}catch(e){g.error((e==null?void 0:e.message)||"خطا در ارسال پاسخ")}finally{Q.value=!1}}}return Je(j),(e,t)=>{const s=Re,r=ze("RouterLink"),p=Le,ke=Ke,be=Ae,we=Se,Te=Ie;return o(),c("div",st,[d(Te,null,{default:u(()=>[a("div",lt,[a("div",nt,[ot,d(r,{to:{name:"supportMain"}},{default:u(()=>[d(s,null,{default:u(()=>[C("بازگشت به چت")]),_:1})]),_:1})]),a("div",it,[a("aside",ut,[rt,(o(!0),c(B,null,D(_(oe),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:x=>_e(i.value)},[a("span",dt,h(i.label),1),a("span",pt,h(U[i.value]||0),1)],10,ct))),128))]),a("section",mt,[d(ke,{activeKey:R.value,"onUpdate:activeKey":t[0]||(t[0]=i=>R.value=i),class:"tickets-tabs"},{default:u(()=>[d(p,{key:"all",tab:"همه موضوعات"}),(o(!0),c(B,null,D(_(le),i=>(o(),b(p,{key:i.value,tab:i.label},null,8,["tab"]))),128))]),_:1},8,["activeKey"]),a("div",_t,[(o(),b(be,Ge({key:ie.value},O.value,{ref_key:"table",ref:ne,onRegister:_(ue)}),{action:u(({record:i})=>[a("div",vt,[d(_(L),{class:"cursor-pointer"},{title:u(()=>[ft]),default:u(()=>[d(N,{icon:"vuesax-linear:eye",color:"#1D4ED8",onClick:x=>ve(i)},null,8,["onClick"])]),_:2},1024),i.status!=="closed"?(o(),b(_(L),{key:0,class:"cursor-pointer"},{title:u(()=>[yt]),default:u(()=>[d(N,{icon:"vuesax-linear:close-circle",color:"#DC2626",onClick:x=>H(i)},null,8,["onClick"])]),_:2},1024)):I("",!0),i.admin_queue!=="spam"?(o(),b(_(L),{key:1,class:"cursor-pointer"},{title:u(()=>[ht]),default:u(()=>[d(N,{icon:"vuesax-linear:danger",color:"#EA580C",onClick:x=>G(i)},null,8,["onClick"])]),_:2},1024)):(o(),b(_(L),{key:2,class:"cursor-pointer"},{title:u(()=>[gt]),default:u(()=>[d(N,{icon:"vuesax-linear:refresh-circle",color:"#16A34A",onClick:x=>V(i)},null,8,["onClick"])]),_:2},1024))])]),_:1},16,["onRegister"]))])])])]),d(we,{visible:P.value,"onUpdate:visible":t[6]||(t[6]=i=>P.value=i),title:"جزئیات تیکت پشتیبانی","custom-footer":!0,width:"720px",onCancel:T,onClose:T},{footer:u(()=>{var i;return[l.value&&l.value.status!=="closed"?(o(),c("div",Ht,[d(s,{onClick:T},{default:u(()=>[C("انصراف")]),_:1}),l.value.admin_queue!=="spam"?(o(),b(s,{key:0,loading:k.value,onClick:t[2]||(t[2]=x=>G())},{default:u(()=>[C(" انتقال به اسپم ")]),_:1},8,["loading"])):(o(),b(s,{key:1,loading:k.value,onClick:t[3]||(t[3]=x=>V())},{default:u(()=>[C(" بازگردانی از اسپم ")]),_:1},8,["loading"])),d(s,{type:"danger",loading:k.value,onClick:t[4]||(t[4]=x=>H())},{default:u(()=>[C(" بستن تیکت ")]),_:1},8,["loading"]),d(s,{type:"primary",loading:Q.value,onClick:xe},{default:u(()=>[C(" ارسال پاسخ ")]),_:1},8,["loading"])])):(o(),c("div",Wt,[((i=l.value)==null?void 0:i.admin_queue)==="spam"?(o(),b(s,{key:0,loading:k.value,onClick:t[5]||(t[5]=x=>V())},{default:u(()=>[C(" بازگردانی از اسپم ")]),_:1},8,["loading"])):I("",!0),d(s,{onClick:T},{default:u(()=>[C("بستن")]),_:1})]))]}),default:u(()=>{var i,x,W,X;return[K.value?(o(),c("div",xt,"در حال بارگذاری...")):l.value?(o(),c("div",kt,[a("div",bt,[a("div",null,[wt,a("div",Tt,"#"+h(l.value.id),1)]),a("div",null,[Ct,a("div",It,h(pe(l.value.subject)),1)]),a("div",null,[St,a("div",At,h(re.value),1)]),a("div",null,[$t,a("div",Rt,h(ce.value),1)]),a("div",null,[Ut,a("div",{class:z(["font-600",(i=S.value)!=null&&i.isActive?"text-green-700":"text-gray-800"])},h(((x=S.value)==null?void 0:x.label)||"—"),3)]),a("div",null,[qt,a("div",Bt,h(de.value),1)])]),a("div",null,[Pt,a("div",jt,h(l.value.problem),1),(W=l.value.attachments)!=null&&W.length?(o(),c("div",Dt,[d(_(te),null,{default:u(()=>[(o(!0),c(B,null,D(l.value.attachments,(v,M)=>(o(),b(_(ae),{key:`att-${M}`,src:_(J)(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)]),(X=l.value.messages)!=null&&X.length?(o(),c("div",Et,[Mt,(o(!0),c(B,null,D(l.value.messages,v=>{var M;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",Nt,h(v.sender_type==="admin"?"کارشناس":"کاربر")+" · "+h(v.created_at?_(Z)(v.created_at):""),1),a("div",Ft,h(v.content),1),(M=v.attachments)!=null&&M.length?(o(),c("div",Lt,[d(_(te),null,{default:u(()=>[(o(!0),c(B,null,D(v.attachments,(Y,Ce)=>(o(),b(_(ae),{key:`msg-att-${v.id}-${Ce}`,src:_(J)(Y.url),alt:Y.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),l.value.status!=="closed"?(o(),c(B,{key:1},[a("div",null,[Kt,d(_(f),{value:q.content,"onUpdate:value":t[1]||(t[1]=v=>q.content=v),rows:4,placeholder:"پاسخ خود را بنویسید..."},null,8,["value"])]),a("div",null,[Qt,d(_(Xe),{"list-type":"picture-card","file-list":w.value,"custom-request":ye,"before-upload":fe,onRemove:he},{default:u(()=>[w.value.length<6?(o(),c("div",Ot,Jt)):I("",!0)]),_:1},8,["file-list"])])],64)):(o(),c("div",zt," این تیکت بسته‌شده است. ")),l.value.admin_queue==="spam"?(o(),c("div",Gt," این تیکت در وضعیت اسپم است و برای کاربر تغییری نمایش داده نمی‌شود. ")):I("",!0)])):I("",!0)]}),_:1},8,["visible"])]),_:1})])}}});const ts=Ye(Xt,[["__scopeId","data-v-18c2d840"]]);export{ts as default};