2 lines
9.3 KiB
JavaScript
2 lines
9.3 KiB
JavaScript
import{_ as W}from"./BasicMainCard-aaaa8dc3.js";import{_ as F}from"./BasicModal.vue_vue_type_style_index_0_lang-20cc468f.js";import{_ as G}from"./BasicInput.vue_vue_type_style_index_0_lang-4f908c47.js";import{_ as K,u as X}from"./useBaseTable-1184a002.js";import{_ as Q}from"./button.vue_vue_type_style_index_0_lang-cbfd9667.js";import{I as A}from"./Icon-0c226cc8.js";import{t as Y}from"./useDataTime-35d3ce8c.js";import{_ as Z,G as ee,H as te,I as ae,d as ie,g as b,o as R,c as D,b as n,w as g,a as i,e as oe,J as se,j as B,k as L,y as re,t as le,D as f,K as ne}from"./index-35c19078.js";import{g as z}from"./convert-2ad76038.js";import{_ as ce}from"./TextPreview.vue_vue_type_script_setup_true_lang-8b46377d.js";import{M as ue}from"./index-d1bea9c9.js";import{S as me}from"./index-c135e3cd.js";import{I as de}from"./index-e2b66426.js";import{T as j}from"./isSymbol-76912a30.js";import{U as pe}from"./index-b998e211.js";import"./Grid-5df717b4.js";import"./index-0b82077f.js";import"./_plugin-vue_export-helper-b8aa26f1.js";import"./shallowequal-336924ae.js";import"./index-e39a0c4e.js";import"./vnode-bd016db8.js";import"./index-81c6c557.js";import"./useState-0b0c0b26.js";import"./useRefs-d20fccdf.js";import"./_flatRest-ce9c6e5e.js";import"./isMobile-e2e89480.js";import"./omit-fea2187f.js";import"./index-5e048154.js";import"./Col-93e193e7.js";import"./styleChecker-5378d544.js";import"./isPlainObject-9fc066ac.js";import"./usePrice-bc935b83.js";import"./updateLocale-674603f1.js";import"./index-317dfb98.js";import"./useMemo-141475be.js";import"./FormItemContext-c59740e7.js";import"./lodash-e3d7e6b8.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-aa5cbf20.js";import"./index-9c958bd1.js";import"./Badge-5aec0f5b.js";import"./isNumeric-3f69e2aa.js";import"./index-597067d3.js";import"./index-3e7c49ac.js";import"./index-53a07be2.js";import"./DialogWrap-7ea92471.js";import"./pickAttrs-2a6a34d0.js";import"./css-aae66f86.js";import"./index-0cfe3fb2.js";import"./toArray-f7bbf4fe.js";import"./SearchOutlined-fd97bf7f.js";import"./index-70f42a71.js";import"./textUtils-c37780ad.js";import"./index-727899c3.js";import"./index-1016d40d.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-d68eb591.js"),["assets/buildSupabaseQuery-d68eb591.js","assets/index-35c19078.js","assets/index-a54d32f7.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"},$e={class:"h-2 rounded bg-gray-200 overflow-hidden"},Ae={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Lt=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 $=`${ne}/upload/machartaa-img`;h.value=0,v.value++,await new Promise((r,C)=>{const l=new XMLHttpRequest;l.open("POST",$),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,$=W;return R(),D("div",null,[n($,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(A,{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(A,{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"})])):L("",!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(A,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Re])):L("",!0)]),_:1},8,["file-list"]),h.value>0&&h.value<100?(R(),D("div",De,[i("div",$e,[i("div",{class:"h-2 bg-blue-500 transition-all",style:re(V(h.value))},null,4)]),i("div",Ae,le(h.value)+"%",1)])):L("",!0)])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{Lt as default};
|