2 lines
9.3 KiB
JavaScript
2 lines
9.3 KiB
JavaScript
import{_ as W}from"./BasicMainCard-9a9b0e82.js";import{_ as F}from"./BasicModal.vue_vue_type_style_index_0_lang-0db8aa6c.js";import{_ as G}from"./BasicInput.vue_vue_type_style_index_0_lang-75e51b7f.js";import{_ as K,u as X}from"./useBaseTable-0fdb84ad.js";import{_ as Q}from"./button.vue_vue_type_style_index_0_lang-0b499337.js";import{I as $}from"./Icon-d1d29ca3.js";import{t as Y}from"./useDataTime-234977eb.js";import{_ as Z,H as ee,I as te,J as ae,d as ie,i as b,o as R,c as D,e as n,w as g,b as i,f as oe,K as se,l as B,n as A,B as re,t as le,G as f,L as ne}from"./index-0ae7844c.js";import{g as z}from"./convert-2ad76038.js";import{_ as ce}from"./TextPreview.vue_vue_type_script_setup_true_lang-cae329b9.js";import{M as ue}from"./index-6d32dcba.js";import{S as me}from"./index-0309284c.js";import{I as de}from"./index-81a07cb9.js";import{T as j}from"./isSymbol-d0ec885c.js";import{U as pe}from"./index-5936ec05.js";import"./Grid-1b086c47.js";import"./index-33c0557e.js";import"./_plugin-vue_export-helper-277b1c3f.js";import"./shallowequal-a089597b.js";import"./index-02b92135.js";import"./vnode-454b4aa7.js";import"./index-c2776ddf.js";import"./useState-80fd23c9.js";import"./useRefs-0b121885.js";import"./_flatRest-5e9bcb10.js";import"./isMobile-e2e89480.js";import"./omit-e036f60c.js";import"./index-3189b1a9.js";import"./Col-84747301.js";import"./styleChecker-918e9a0f.js";import"./isPlainObject-4659a577.js";import"./usePrice-bc935b83.js";import"./updateLocale-15cba891.js";import"./index-c2bca1e0.js";import"./useMemo-19000d17.js";import"./FormItemContext-e7b6ca96.js";import"./lodash-6746fa7b.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-630a739a.js";import"./index-ff77e42c.js";import"./Badge-3dfd39bb.js";import"./isNumeric-3f69e2aa.js";import"./index-6585bad2.js";import"./index-7d2db2fd.js";import"./index-0c08cf04.js";import"./DialogWrap-930ec585.js";import"./pickAttrs-2e870478.js";import"./css-aae66f86.js";import"./index-a2cfdf13.js";import"./toArray-592e82ea.js";import"./SearchOutlined-8b990494.js";import"./index-7090fbb0.js";import"./textUtils-c37780ad.js";import"./index-936e9d5d.js";import"./index-9d9cf8fd.js";const ge=[{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=>Y(o.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];async function _e(o){const d=await ee("images_book",o);return Array.isArray(d)?d:[d]}async function fe(o,d){const u=await te("images_book",o,d);return Array.isArray(u)?u:[u]}async function ve(o){await ae("images_book",o)}async function he(o){const{TableEngineRequest:d}=await Z(()=>import("./buildSupabaseQuery-ef030906.js"),["assets/buildSupabaseQuery-ef030906.js","assets/index-0ae7844c.js","assets/index-71a80eb0.css"]),u={...o};!u.sort&&!u.order&&(u.order="-id");const _=await d(u,"images_book");try{if(Array.isArray(_==null?void 0:_.rows)){const T=u.page||1,k=u.limit||200,w=(T-1)*k,I=_.rows.map((c,v)=>({id:c.id,title:c.title??null,description:c.description??null,src_img:c.src_img??null,created_at:c.created_at??"",index:w+v,...c}));return{..._,rows:I}}}catch(T){console.log("[getImagesBookTable] normalize error:",T)}return _}const ye={class:"flex justify-between items-center mb-4"},xe=i("h2",null,"تصاویر کتاب",-1),be={class:"gap-2 flex justify-center"},ke=i("span",null,"حذف",-1),we=i("span",null,"ویرایش",-1),Ie={class:"space-y-4 relative"},Be={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Te=i("div",{class:"mb-1 text-sm text-gray-600"},"عنوان",-1),Ce=i("div",{class:"mb-1 text-sm text-gray-600"},"توضیحات",-1),Ue=i("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر",-1),Me={key:0},Re=i("div",null,"آپلود تصویر",-1),De={key:0,class:"mt-1"},Le={class:"h-2 rounded bg-gray-200 overflow-hidden"},$e={class:"text-xs text-gray-700 font-semibold text-center mt-1"},At=ie({__name:"index",setup(o){const{TextArea:d}=de,[u,_]=X(),T=b({columns:ge,api:he,defaultPageLimit:20}),k=b(!1),w=b(!1),I=b(null),c=b([]),v=b(0),h=b(0),p=b({title:null,description:null,src_img:null});function E(){c.value=[],w.value=!1,I.value=null,p.value={title:null,description:null,src_img:null},k.value=!0}function P(){k.value=!1}function N(a){return a.type.startsWith("image/")?a.size/1024/1024<5?!0:(f.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(f.error("فقط فایلهای تصویری مجاز است"),!1)}async function O(a){const{file:e,onSuccess:m,onError:s,onProgress:y}=a,U=new FormData;U.append("file",e);const L=`${ne}/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 x=Math.round(t.loaded/t.total*100);h.value=x,y==null||y({percent:x})}},l.onload=()=>{if(h.value=100,l.status>=200&&l.status<300)try{const t=JSON.parse(l.responseText||"{}"),x=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 M=x;x!=null&&x.startsWith("http")&&(M=x.replace(/^https?:\/\/[^\/]+/,""));const S=z(M);p.value.src_img=M,c.value=S?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:S,response:{path:M}}]:[],m==null||m(t,l),f.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(U)})}function V(a){return{width:`${Math.max(0,Math.min(100,a))}%`}}async function q(){var e,m,s;if(v.value>0){f.warning("لطفاً تا پایان آپلود صبر کنید");return}const a={title:((e=p.value.title)==null?void 0:e.trim())||null,description:((m=p.value.description)==null?void 0:m.trim())||null,src_img:((s=p.value.src_img)==null?void 0:s.trim())||null};try{w.value&&I.value?(await fe(I.value,a),f.success("تصویر با موفقیت ویرایش شد")):(await _e(a),f.success("تصویر با موفقیت افزوده شد")),P(),await _()}catch(y){console.error("Error saving image:",y),f.error("خطا در ذخیره تصویر: "+(y.message||"خطای ناشناخته"))}}function H(a){w.value=!0,I.value=a.id;let e=a.src_img||null;e&&e.startsWith("http")&&(e=e.replace(/^https?:\/\/[^\/]+/,"")),p.value={title:a.title||null,description:a.description||null,src_img:e};const m=e?z(e):null;c.value=m?[{uid:"-1",name:"image.jpg",status:"done",url:m,response:{path:e}}]:[],k.value=!0}function J(a){ue.confirm({title:"حذف تصویر",content:"آیا مطمئن هستید که میخواهید این تصویر را حذف کنید؟",okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await ve(a.id),f.success("تصویر با موفقیت حذف شد"),await _()}catch(e){console.error("Error deleting image:",e),f.error("خطا در حذف تصویر: "+(e.message||"خطای ناشناخته"))}}})}return(a,e)=>{const m=Q,s=K,y=G,U=F,L=W;return R(),D("div",null,[n(L,null,{default:g(()=>[i("div",ye,[xe,n(m,{type:"primary",onClick:E},{default:g(()=>[oe("افزودن تصویر")]),_:1})]),n(s,se(T.value,{ref:"table",onRegister:B(u)}),{description:g(({record:r})=>[n(ce,{text:r.description},null,8,["text"])]),action:g(({record:r})=>[i("div",be,[n(B(j),{class:"cursor-pointer"},{title:g(()=>[ke]),default:g(()=>[n($,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:C=>J(r)},null,8,["onClick"])]),_:2},1024),n(B(j),{class:"cursor-pointer"},{title:g(()=>[we]),default:g(()=>[n($,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:C=>H(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),n(U,{visible:k.value,"onUpdate:visible":e[3]||(e[3]=r=>k.value=r),title:w.value?"ویرایش تصویر":"افزودن تصویر",onOk:q,onCancel:P,width:"80%",confirmLoading:v.value>0},{default:g(()=>[i("div",Ie,[v.value>0?(R(),D("div",Be,[n(B(me),{size:"large"})])):A("",!0),i("div",null,[Te,n(y,{value:p.value.title,"onUpdate:value":e[0]||(e[0]=r=>p.value.title=r),placeholder:"عنوان"},null,8,["value"])]),i("div",null,[Ce,n(B(d),{value:p.value.description??void 0,"onUpdate:value":e[1]||(e[1]=r=>p.value.description=r??null),placeholder:"توضیحات",rows:4},null,8,["value"])]),i("div",null,[Ue,n(B(pe),{"file-list":c.value,"onUpdate:fileList":e[2]||(e[2]=r=>c.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(()=>[c.value.length<1?(R(),D("div",Me,[n($,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Re])):A("",!0)]),_:1},8,["file-list"]),h.value>0&&h.value<100?(R(),D("div",De,[i("div",Le,[i("div",{class:"h-2 bg-blue-500 transition-all",style:re(V(h.value))},null,4)]),i("div",$e,le(h.value)+"%",1)])):A("",!0)])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{At as default};
|