Files
machartaa_admin_dist/dist/assets/index-ce3be3d5.js
T
2026-10-17 17:09:50 +03:30

2 lines
9.3 KiB
JavaScript

import{_ as F}from"./BasicMainCard-d88efce1.js";import{_ as J}from"./BasicModal.vue_vue_type_style_index_0_lang-8b3762d2.js";import{_ as Q}from"./BasicInput.vue_vue_type_style_index_0_lang-98efdfef.js";import{_ as X,u as G}from"./useBaseTable-b65e968f.js";import{_ as K}from"./button.vue_vue_type_style_index_0_lang-dc7b87c6.js";import{I as $}from"./Icon-b5a365b6.js";import{t as Y}from"./useDataTime-4da2f466.js";import{_ as Z,O as ee,P as te,Q as ae,d as ie,i as b,o as M,c as D,e as n,w as g,b as i,f as oe,R as se,l as B,n as A,C as re,t as le,H as f,S as ne}from"./index-f7911a6d.js";import{g as z}from"./convert-2ad76038.js";import{_ as ce}from"./TextPreview.vue_vue_type_script_setup_true_lang-c8c339ed.js";import{M as ue}from"./index-6f289e55.js";import{S as me}from"./index-c7e434df.js";import{I as de}from"./index-31699bda.js";import{T as j}from"./isSymbol-b0715776.js";import{U as pe}from"./index-2eb9a3fd.js";import"./Grid-d4d08bfb.js";import"./index-10c207c0.js";import"./_plugin-vue_export-helper-a59ccce4.js";import"./shallowequal-1fb084f0.js";import"./index-2e819d27.js";import"./vnode-160a3584.js";import"./index-c48ccee5.js";import"./useState-2a09ed7b.js";import"./useRefs-2e02a4a6.js";import"./_flatRest-dd0446c0.js";import"./isMobile-e2e89480.js";import"./omit-19fd03e3.js";import"./index-c5c3e497.js";import"./Col-a3b51974.js";import"./styleChecker-10d88d72.js";import"./isPlainObject-72a97f79.js";import"./usePrice-bc935b83.js";import"./updateLocale-0c609c95.js";import"./index-fd54b9e9.js";import"./useMemo-dd1208f0.js";import"./FormItemContext-e8070c30.js";import"./lodash-38d75800.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-c915f24e.js";import"./index-53f009ba.js";import"./index-af05d1fd.js";import"./Badge-1e5825d4.js";import"./isNumeric-3f69e2aa.js";import"./index-aafb52b8.js";import"./index-da7ed9ea.js";import"./index-4a17ebf7.js";import"./DialogWrap-157169f5.js";import"./pickAttrs-d4e89cbd.js";import"./css-aae66f86.js";import"./index-317bbaff.js";import"./toArray-a2b9a939.js";import"./SearchOutlined-9cce5c32.js";import"./index-79a6c7d7.js";import"./textUtils-c37780ad.js";import"./index-9ce8e289.js";import"./index-06662595.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-69b5fd5d.js"),["assets/buildSupabaseQuery-69b5fd5d.js","assets/index-f7911a6d.js","assets/index-ceed3b68.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),Re=i("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر",-1),Ue={key:0},Me=i("div",null,"آپلود تصویر",-1),De={key:0,class:"mt-1"},Pe={class:"h-2 rounded bg-gray-200 overflow-hidden"},$e={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Lt=ie({__name:"index",setup(o){const{TextArea:d}=de,[u,_]=G(),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 L(){k.value=!1}function O(a){return a.type.startsWith("image/")?a.size/1024/1024<5?!0:(f.error("حجم تصویر باید کمتر از 5MB باشد!"),!1):(f.error("فقط فایل‌های تصویری مجاز است"),!1)}async function N(a){const{file:e,onSuccess:m,onError:s,onProgress:y}=a,R=new FormData;R.append("file",e);const P=`${ne}/upload/machartaa-img`;h.value=0,v.value++,await new Promise((r,C)=>{const l=new XMLHttpRequest;l.open("POST",P),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 U=x;x!=null&&x.startsWith("http")&&(U=x.replace(/^https?:\/\/[^\/]+/,""));const S=z(U);p.value.src_img=U,c.value=S?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:S,response:{path:U}}]:[],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(R)})}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("تصویر با موفقیت افزوده شد")),L(),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 W(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=K,s=X,y=Q,R=J,P=F;return M(),D("div",null,[n(P,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=>W(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(R,{visible:k.value,"onUpdate:visible":e[3]||(e[3]=r=>k.value=r),title:w.value?"ویرایش تصویر":"افزودن تصویر",onOk:q,onCancel:L,width:"80%",confirmLoading:v.value>0},{default:g(()=>[i("div",Ie,[v.value>0?(M(),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,[Re,n(B(pe),{"file-list":c.value,"onUpdate:fileList":e[2]||(e[2]=r=>c.value=r),"before-upload":O,"custom-request":N,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?(M(),D("div",Ue,[n($,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Me])):A("",!0)]),_:1},8,["file-list"]),h.value>0&&h.value<100?(M(),D("div",De,[i("div",Pe,[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{Lt as default};