2 lines
9.4 KiB
JavaScript
2 lines
9.4 KiB
JavaScript
import{_ as J}from"./BasicMainCard-02aee5ac.js";import{_ as G}from"./BasicModal.vue_vue_type_style_index_0_lang-ca4aa0a6.js";import{_ as X}from"./BasicInput.vue_vue_type_style_index_0_lang-7718018f.js";import{_ as K,u as Q}from"./useBaseTable-8eb27015.js";import{_ as Y}from"./button.vue_vue_type_style_index_0_lang-b7b1a519.js";import{I as P}from"./Icon-82f6c95b.js";import{t as Z}from"./useDataTime-785ab201.js";import{_ as ee,G as S,d as te,g as b,o as D,c as $,b as n,w as g,a as i,e as ae,H as ie,j as B,k as R,y as oe,t as se,D as _,I as re}from"./index-b279599b.js";import{g as q}from"./convert-2ad76038.js";import{_ as le}from"./TextPreview.vue_vue_type_script_setup_true_lang-9c9e9766.js";import{M as ne}from"./index-9c450bf9.js";import{S as ce}from"./index-86478c3f.js";import{I as ue}from"./index-e626bdbb.js";import{T as A}from"./isSymbol-4b8c1f3e.js";import{U as me}from"./index-98405404.js";import"./Grid-ba9af77d.js";import"./index-5e6ef189.js";import"./_plugin-vue_export-helper-f38a7ea6.js";import"./shallowequal-59da3a36.js";import"./index-5f5b359c.js";import"./vnode-cc30a5f9.js";import"./index-cce68701.js";import"./useState-588c2312.js";import"./useRefs-72c4a0da.js";import"./_flatRest-cb9a1464.js";import"./isMobile-e2e89480.js";import"./omit-4c59a877.js";import"./index-60598d32.js";import"./Col-c7dcaed0.js";import"./styleChecker-e8fc6c1f.js";import"./isPlainObject-093495b2.js";import"./usePrice-bc935b83.js";import"./updateLocale-1fd95539.js";import"./index-9879659d.js";import"./index-bc659f42.js";import"./useMemo-39d0bfae.js";import"./FormItemContext-a76fbf7e.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-076900a0.js";import"./index-624f47cc.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"./index-2f258009.js";import"./textUtils-c37780ad.js";import"./index-1fd3daba.js";import"./index-de855912.js";const de=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:o=>o.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"توضیحات",dataIndex:"description",key:"description",slot:"description"},{title:"تصویر",dataIndex:"src_img",key:"src_img",customRender:o=>o.record.src_img||"-"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:o=>Z(o.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];async function pe(o){const{data:p,error:c}=await S.from("images_book").insert([o]).select();if(c)throw c;return p}async function fe(o,p){const{data:c,error:m}=await S.from("images_book").update(p).eq("id",o).select();if(m)throw m;return c}async function ge(o){const{error:p}=await S.from("images_book").delete().eq("id",o);if(p)throw p}async function _e(o){const{TableEngineRequest:p}=await ee(()=>import("./buildSupabaseQuery-7cbfb50c.js"),["assets/buildSupabaseQuery-7cbfb50c.js","assets/index-b279599b.js","assets/index-a54d32f7.css","assets/supabaseTableQuery-8ab5665d.js"]),c={...o};!c.sort&&!c.order&&(c.order="-id");const m=await p(c,"images_book");try{if(Array.isArray(m==null?void 0:m.rows)){const T=c.page||1,w=c.limit||200,k=(T-1)*w,I=m.rows.map((u,v)=>({id:u.id,title:u.title??null,description:u.description??null,src_img:u.src_img??null,created_at:u.created_at??"",index:k+v,...u}));return{...m,rows:I}}}catch(T){console.log("[getImagesBookTable] normalize error:",T)}return m}const ve={class:"flex justify-between items-center mb-4"},he=i("h2",null,"تصاویر کتاب",-1),xe={class:"gap-2 flex justify-center"},ye=i("span",null,"حذف",-1),be=i("span",null,"ویرایش",-1),we={class:"space-y-4 relative"},ke={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Ie=i("div",{class:"mb-1 text-sm text-gray-600"},"عنوان",-1),Be=i("div",{class:"mb-1 text-sm text-gray-600"},"توضیحات",-1),Te=i("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر",-1),Ce={key:0},Me=i("div",null,"آپلود تصویر",-1),Ue={key:0,class:"mt-1"},De={class:"h-2 rounded bg-gray-200 overflow-hidden"},$e={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Pt=te({__name:"index",setup(o){const{TextArea:p}=ue,[c,m]=Q(),T=b({columns:de,api:_e,defaultPageLimit:20}),w=b(!1),k=b(!1),I=b(null),u=b([]),v=b(0),h=b(0),f=b({title:null,description:null,src_img:null});function E(){u.value=[],k.value=!1,I.value=null,f.value={title:null,description:null,src_img:null},w.value=!0}function z(){w.value=!1}function N(a){return a.type.startsWith("image/")?a.size/1024/1024<5?!0:(_.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(_.error("فقط فایلهای تصویری مجاز است"),!1)}async function O(a){const{file:e,onSuccess:d,onError:s,onProgress:x}=a,M=new FormData;M.append("file",e);const L=`${re}/upload/machartaa-img`;h.value=0,v.value++,await new Promise((r,C)=>{const l=new XMLHttpRequest;l.open("POST",L),l.setRequestHeader("Authorization",`Bearer ${localStorage.getItem("token")||""}`),l.upload.onprogress=t=>{if(t.lengthComputable){const y=Math.round(t.loaded/t.total*100);h.value=y,x==null||x({percent:y})}},l.onload=()=>{if(h.value=100,l.status>=200&&l.status<300)try{const t=JSON.parse(l.responseText||"{}"),y=t.full_src||t.url||t.src||t.path||t.data&&(t.data.full_src||t.data.url||t.data.src||t.data.path)||"";let U=y;y!=null&&y.startsWith("http")&&(U=y.replace(/^https?:\/\/[^\/]+/,""));const j=q(U);f.value.src_img=U,u.value=j?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:j,response:{path:U}}]:[],d==null||d(t,l),_.success("تصویر با موفقیت آپلود شد!"),r()}catch(t){s==null||s(t,l),C(t)}else{const t=new Error("خطا در آپلود تصویر");s==null||s(t,l),C(t)}},l.onerror=()=>{const t=new Error("خطا در آپلود تصویر");s==null||s(t,l),C(t)},l.onloadend=()=>{v.value=Math.max(0,v.value-1),h.value=0},l.send(M)})}function V(a){return{width:`${Math.max(0,Math.min(100,a))}%`}}async function H(){var e,d,s;if(v.value>0){_.warning("لطفاً تا پایان آپلود صبر کنید");return}const a={title:((e=f.value.title)==null?void 0:e.trim())||null,description:((d=f.value.description)==null?void 0:d.trim())||null,src_img:((s=f.value.src_img)==null?void 0:s.trim())||null};try{k.value&&I.value?(await fe(I.value,a),_.success("تصویر با موفقیت ویرایش شد")):(await pe(a),_.success("تصویر با موفقیت افزوده شد")),z(),await m()}catch(x){console.error("Error saving image:",x),_.error("خطا در ذخیره تصویر: "+(x.message||"خطای ناشناخته"))}}function W(a){k.value=!0,I.value=a.id;let e=a.src_img||null;e&&e.startsWith("http")&&(e=e.replace(/^https?:\/\/[^\/]+/,"")),f.value={title:a.title||null,description:a.description||null,src_img:e};const d=e?q(e):null;u.value=d?[{uid:"-1",name:"image.jpg",status:"done",url:d,response:{path:e}}]:[],w.value=!0}function F(a){ne.confirm({title:"حذف تصویر",content:"آیا مطمئن هستید که میخواهید این تصویر را حذف کنید؟",okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await ge(a.id),_.success("تصویر با موفقیت حذف شد"),await m()}catch(e){console.error("Error deleting image:",e),_.error("خطا در حذف تصویر: "+(e.message||"خطای ناشناخته"))}}})}return(a,e)=>{const d=Y,s=K,x=X,M=G,L=J;return D(),$("div",null,[n(L,null,{default:g(()=>[i("div",ve,[he,n(d,{type:"primary",onClick:E},{default:g(()=>[ae("افزودن تصویر")]),_:1})]),n(s,ie(T.value,{ref:"table",onRegister:B(c)}),{description:g(({record:r})=>[n(le,{text:r.description},null,8,["text"])]),action:g(({record:r})=>[i("div",xe,[n(B(A),{class:"cursor-pointer"},{title:g(()=>[ye]),default:g(()=>[n(P,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:C=>F(r)},null,8,["onClick"])]),_:2},1024),n(B(A),{class:"cursor-pointer"},{title:g(()=>[be]),default:g(()=>[n(P,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:C=>W(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),n(M,{visible:w.value,"onUpdate:visible":e[3]||(e[3]=r=>w.value=r),title:k.value?"ویرایش تصویر":"افزودن تصویر",onOk:H,onCancel:z,width:"80%",confirmLoading:v.value>0},{default:g(()=>[i("div",we,[v.value>0?(D(),$("div",ke,[n(B(ce),{size:"large"})])):R("",!0),i("div",null,[Ie,n(x,{value:f.value.title,"onUpdate:value":e[0]||(e[0]=r=>f.value.title=r),placeholder:"عنوان"},null,8,["value"])]),i("div",null,[Be,n(B(p),{value:f.value.description??void 0,"onUpdate:value":e[1]||(e[1]=r=>f.value.description=r??null),placeholder:"توضیحات",rows:4},null,8,["value"])]),i("div",null,[Te,n(B(me),{"file-list":u.value,"onUpdate:fileList":e[2]||(e[2]=r=>u.value=r),"before-upload":N,"custom-request":O,accept:"image/jpeg,image/png,image/webp,image/gif,image/heic,image/heif,.jpg,.jpeg,.png,.webp,.gif,.heic,.heif","max-count":1,"list-type":"picture-card"},{default:g(()=>[u.value.length<1?(D(),$("div",Ce,[n(P,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Me])):R("",!0)]),_:1},8,["file-list"]),h.value>0&&h.value<100?(D(),$("div",Ue,[i("div",De,[i("div",{class:"h-2 bg-blue-500 transition-all",style:oe(V(h.value))},null,4)]),i("div",$e,se(h.value)+"%",1)])):R("",!0)])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{Pt as default};
|