Files
machartaa_admin_dist/dist/assets/index-5a09a080.js
T
2026-08-22 12:46:02 +03:30

2 lines
12 KiB
JavaScript

import{_ as Q}from"./BasicMainCard-5c5f6d5b.js";import{_ as Y}from"./BasicModal.vue_vue_type_style_index_0_lang-53a0262f.js";import{_ as Z,u as ee}from"./useBaseTable-8494769c.js";import{_ as te}from"./button.vue_vue_type_style_index_0_lang-6c8a1754.js";import{I as P}from"./Icon-a994075d.js";import{t as ae}from"./useDataTime-14b71fd1.js";import{_ as ne,G as ie,H as se,I as oe,d as le,g as y,A as re,o as T,i as ue,w as d,a as f,b as u,e as B,c as R,j as b,J as ce,k as L,y as de,t as q,D as m}from"./index-b8949cd5.js";import{fetchMatchingUserIds as z,formatTableResult as me}from"./supabaseTableQuery-6c5f43f6.js";import{c as fe}from"./pushNotification-b3293de1.js";import{_ as pe}from"./TextPreview.vue_vue_type_script_setup_true_lang-7d38bf77.js";import{e as _e,g as ve}from"./convert-2ad76038.js";import{M as F}from"./index-5dac065a.js";import{C as he}from"./index-8b8dacd8.js";import{I as xe}from"./index-be8f184f.js";import{T as N}from"./isSymbol-71c709aa.js";import{U as ge}from"./index-6115353a.js";import"./Grid-708d80d5.js";import"./index-6175522e.js";import"./_plugin-vue_export-helper-80a7ceaa.js";import"./shallowequal-a1fb5178.js";import"./index-21c91830.js";import"./vnode-30b649a7.js";import"./index-3f37bcfd.js";import"./useState-3541c1c7.js";import"./useRefs-ac0fbe98.js";import"./_flatRest-1538f4ef.js";import"./isMobile-e2e89480.js";import"./omit-df5a2f6f.js";import"./index-24c74f31.js";import"./Col-729d4045.js";import"./styleChecker-b373a9d5.js";import"./isPlainObject-ca054af0.js";import"./index-f14a229e.js";import"./updateLocale-8e612d44.js";import"./index-8b168f42.js";import"./useMemo-0a6b6d51.js";import"./FormItemContext-9a696347.js";import"./lodash-a74993a4.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-db4861df.js";import"./index-d5350fd3.js";import"./Badge-ae00479c.js";import"./isNumeric-3f69e2aa.js";import"./index-97b694b9.js";import"./index-fc7471c3.js";import"./toArray-6496b5b4.js";import"./SearchOutlined-78438a74.js";import"./pickAttrs-52cf5a7c.js";import"./index-93cdd76f.js";import"./textUtils-c37780ad.js";import"./DialogWrap-1ca5eb9f.js";import"./index-2eed37e0.js";import"./css-aae66f86.js";import"./index-9f670063.js";import"./index-bc3f8044.js";const ye=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"نام ارسال کننده",dataIndex:"owner_name",key:"owner_name",filterField:"owner_name",customRender:e=>e.record.owner_name||"-"},{title:"متن پیام",dataIndex:"text",key:"text",slot:"text"},{title:"فایل",dataIndex:"file",key:"file",align:"center",width:120,slot:"file"},{title:"وضعیت پین",dataIndex:"pined",key:"pined",align:"center",width:100,customRender:e=>e.record.pined?"پین شده":"-"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:e=>ae(e.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];function we(e){let _=null;if(e.owner_id){const t=Array.isArray(e.users)?e.users[0]:e.users;t?_=`${t.first_name||""} ${t.last_name||""}`.trim()||t.phone||`کاربر ${e.owner_id}`:_=`کاربر ${e.owner_id}`}return{...e,owner_name:_,text:e.text??"",file:e.file??null,pined:e.pined??!1,pined_at:e.pined_at??null,created_at:e.created_at??"",updated_at:e.updated_at??""}}async function ke(e){const _=await ie("channel_message",e);return Array.isArray(_)?_:[_]}async function H(e,_){const t=await se("channel_message",e,_);return Array.isArray(t)?t:[t]}async function Ie(e){await oe("channel_message",e)}async function be(e){var w,I,x;const{TableEngineRequest:_}=await ne(()=>import("./buildSupabaseQuery-bae49c63.js"),["assets/buildSupabaseQuery-bae49c63.js","assets/index-b8949cd5.js","assets/index-a54d32f7.css"]),t={...e};!t.sort&&!t.order&&(t.order="-id"),t.select=["*","users!owner_id(first_name, last_name, phone)"];const C=[...t.filters||[]],A=C.find(r=>r.field==="owner_name"&&!r.hidden);if(A&&["eq","has","like"].includes(A.op)){const r=await z(String(A.value));t.filters=C.filter(M=>M.field!=="owner_name"),r.length?t.includeIn={field:"owner_id",values:r}:t.includeIn={field:"owner_id",values:["00000000-0000-0000-0000-000000000000"]}}if((w=t.search)!=null&&w.trim()){const r=await z(t.search);r.length&&(t.includeIn={...t.includeIn||{},field:"owner_id",values:[...new Set([...((I=t.includeIn)==null?void 0:I.values)||[],...r])]})}const v=await _(t,"channel_message");return Array.isArray(v==null?void 0:v.rows)?me(v.rows,((x=v.query)==null?void 0:x.total)??v.rows.length,t,we):v}const Ce={class:"flex justify-between items-center mb-4"},Me=f("h2",null,"پیام‌های کانال",-1),Te=["href"],Ae={key:1},Pe={class:"gap-2 flex justify-center"},Re=f("span",null,"پین کردن",-1),De=f("span",null,"حذف",-1),Se=f("span",null,"ویرایش",-1),$e={class:"space-y-4"},Be=f("div",{class:"mb-1 text-sm text-gray-600"},"متن پیام *",-1),Ue={key:0},Ve=f("div",{class:"mb-1 text-sm text-gray-600"},"آپلود فایل (اختیاری)",-1),Le={key:0,class:"mt-2"},Ne={class:"h-2 rounded bg-gray-200 overflow-hidden"},Oe={class:"text-xs text-gray-700 font-semibold text-center mt-1"},qe={key:1,class:"mt-2"},ze=["href"],Ft=le({__name:"index",setup(e){const{TextArea:_}=xe,[t,C]=ee(),A=y({columns:ye,api:be,defaultPageLimit:20}),v=y(!1),w=y(!1),I=y(null),x=re(),r=y([]),M=y(!1),g=y(0),U=y(!0),p=y({owner_id:null,text:"",file:null});function J(i){return i.size/1024/1024<50?!0:(m.error("حجم فایل باید کمتر از 50MB باشد"),!1)}async function E(i){const{file:n,onSuccess:c,onError:s,onProgress:h}=i,k=new FormData;k.append("file",n);const o="https://node.macharta.ir/upload/message-file";g.value=0,M.value=!0,await new Promise((D,S)=>{const l=new XMLHttpRequest;l.open("POST",o),l.setRequestHeader("Authorization",`Bearer ${localStorage.getItem("tamin_token")||localStorage.getItem("token")||""}`),l.timeout=15*60*1e3,l.upload.onprogress=a=>{if(a.lengthComputable){const $=Math.round(a.loaded/a.total*100);g.value=$,h==null||h({percent:$})}},l.onload=()=>{if(g.value=100,l.status>=200&&l.status<300)try{const a=JSON.parse(l.responseText||"{}"),$=a.url||a.path||a.file||a.data&&(a.data.url||a.data.path||a.data.file)||"",V=_e($);p.value.file=V,r.value=V?[{uid:`${Date.now()}`,name:n.name,status:"done",url:ve(V)}]:[],c==null||c(a,l),m.success("فایل با موفقیت آپلود شد!"),D()}catch(a){s==null||s(a,l),S(a)}else{const a=new Error("خطا در آپلود فایل");m.error("خطا در آپلود فایل"),s==null||s(a,l),S(a)}},l.onerror=()=>{const a=new Error("خطا در آپلود فایل");m.error("خطا در آپلود فایل"),s==null||s(a,l),S(a)},l.ontimeout=()=>{const a=new Error("آپلود timeout شد");m.error("آپلود timeout شد"),s==null||s(a,l),S(a)},l.onloadend=()=>{M.value=!1,g.value=0},l.send(k)})}async function G(){var n;w.value=!1,I.value=null,r.value=[],x.userInfo||await x.getMyInfo();const i=((n=x.userInfo)==null?void 0:n.id)||null;p.value={owner_id:i,text:"",file:null},v.value=!0}function O(){v.value=!1,r.value=[],g.value=0}async function W(i){I.value=i.id,w.value=!0,p.value={owner_id:null,text:i.text||"",file:i.file||null},i.file?r.value=[{uid:"-1",name:i.file.split("/").pop()||"فایل",status:"done",url:i.file}]:r.value=[],v.value=!0}async function X(i){const n=i.pined===!0;F.confirm({title:"آیا مطمئن هستید؟",content:n?"این پیام در حال حاضر پین شده است. آیا می‌خواهید آن را از حالت پین خارج کنید؟":"آیا می‌خواهید این پیام را پین کنید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{const c=!n,s={pined:c,pined_at:c?new Date().toISOString():null};await H(i.id,s),m.success(c?"پیام با موفقیت پین شد!":"پیام با موفقیت از حالت پین خارج شد!"),C()}catch(c){m.error(c.message||"خطا در تغییر وضعیت پین پیام")}}})}async function j(i){F.confirm({title:"آیا مطمئن هستید؟",content:"آیا می‌خواهید این پیام را حذف کنید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{await Ie(i.id),m.success("پیام با موفقیت حذف شد!"),C()}catch(n){m.error(n.message||"خطا در حذف پیام")}}})}async function K(){var i,n,c,s;if(!((i=p.value.text)!=null&&i.trim())){m.error("لطفاً متن پیام را وارد کنید");return}if(M.value){m.warning("لطفاً تا پایان آپلود صبر کنید");return}try{if(w.value&&I.value){const h={text:p.value.text,file:p.value.file};await H(I.value,h),m.success("پیام با موفقیت به‌روزرسانی شد!")}else{x.userInfo||await x.getMyInfo();const h={owner_id:((n=x.userInfo)==null?void 0:n.id)||null,text:p.value.text,file:p.value.file||null};if(await ke(h),U.value)try{await fe("اطلاع‌رسانی ماچارتا",p.value.text.trim(),"/channel")}catch(k){m.warning(((s=(c=k==null?void 0:k.response)==null?void 0:c.data)==null?void 0:s.error)||"پیام ذخیره شد اما ارسال نوتیفیکیشن ناموفق بود")}m.success("پیام با موفقیت افزوده شد!")}O(),C()}catch(h){m.error(h.message||"خطا در ذخیره پیام")}}return(i,n)=>{const c=te,s=Z,h=Y,k=Q;return T(),ue(k,null,{default:d(()=>[f("div",Ce,[Me,u(c,{type:"primary",onClick:G},{default:d(()=>[B("افزودن اطلاع رسانی")]),_:1})]),u(s,ce(A.value,{ref:"table",onRegister:b(t)}),{text:d(({record:o})=>[u(pe,{text:o.text},null,8,["text"])]),file:d(({record:o})=>[o.file?(T(),R("a",{key:0,href:o.file,target:"_blank",class:"text-blue-500 hover:underline"}," دانلود فایل ",8,Te)):(T(),R("span",Ae,"-"))]),action:d(({record:o})=>[f("div",Pe,[u(b(N),{class:"cursor-pointer"},{title:d(()=>[Re]),default:d(()=>[u(P,{icon:"vuesax-linear:bookmark",color:"#16A34A",onClick:D=>X(o)},null,8,["onClick"])]),_:2},1024),u(b(N),{class:"cursor-pointer"},{title:d(()=>[De]),default:d(()=>[u(P,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:D=>j(o)},null,8,["onClick"])]),_:2},1024),u(b(N),{class:"cursor-pointer"},{title:d(()=>[Se]),default:d(()=>[u(P,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:D=>W(o)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),u(h,{visible:v.value,"onUpdate:visible":n[3]||(n[3]=o=>v.value=o),title:w.value?"ویرایش اطلاع رسانی":"افزودن اطلاع رسانی",onOk:K,onCancel:O,width:"80%",confirmLoading:M.value},{default:d(()=>[f("div",$e,[f("div",null,[Be,u(b(_),{value:p.value.text,"onUpdate:value":n[0]||(n[0]=o=>p.value.text=o),placeholder:"متن پیام",rows:6},null,8,["value"])]),w.value?L("",!0):(T(),R("div",Ue,[u(b(he),{checked:U.value,"onUpdate:checked":n[1]||(n[1]=o=>U.value=o)},{default:d(()=>[B(" همزمان نوتیفیکیشن Push به کاربران ارسال شود ")]),_:1},8,["checked"])])),f("div",null,[Ve,u(b(ge),{"file-list":r.value,"onUpdate:fileList":n[2]||(n[2]=o=>r.value=o),"before-upload":J,"custom-request":E,"max-count":1},{default:d(()=>[u(c,null,{default:d(()=>[u(P,{icon:"vuesax-linear:document-upload",class:"mr-1"}),B(" انتخاب فایل ")]),_:1})]),_:1},8,["file-list"]),g.value>0&&g.value<100?(T(),R("div",Le,[f("div",Ne,[f("div",{class:"h-2 bg-blue-500 transition-all",style:de({width:`${g.value}%`})},null,4)]),f("div",Oe,q(g.value)+"%",1)])):L("",!0),p.value.file?(T(),R("div",qe,[f("a",{href:p.value.file,target:"_blank",class:"text-blue-500 hover:underline text-sm"},[u(P,{icon:"vuesax-linear:document-download",class:"inline-block mr-1"}),B(" فایل فعلی: "+q(p.value.file.split("/").pop()),1)],8,ze)])):L("",!0)])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})}}});export{Ft as default};