Files
machartaa_admin_dist/dist/assets/index-051d8b84.js
T

2 lines
9.3 KiB
JavaScript

import{_ as W}from"./BasicMainCard-4c879cc2.js";import{_ as F}from"./BasicModal.vue_vue_type_style_index_0_lang-c3b69d02.js";import{_ as K}from"./BasicInput.vue_vue_type_style_index_0_lang-9a0053be.js";import{_ as X,u as G}from"./useBaseTable-e35ecaa9.js";import{_ as Q}from"./button.vue_vue_type_style_index_0_lang-b32e1136.js";import{I as $}from"./Icon-85823aa3.js";import{t as Y}from"./useDataTime-c7be2668.js";import{_ as Z,I as ee,J as te,K 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,L as se,l as B,n as A,C as re,t as le,H as f,M as ne}from"./index-90ac1a44.js";import{g as z}from"./convert-2ad76038.js";import{_ as ce}from"./TextPreview.vue_vue_type_script_setup_true_lang-acd6228c.js";import{M as ue}from"./index-a413fea1.js";import{S as me}from"./index-93d9312f.js";import{I as de}from"./index-027c2128.js";import{T as j}from"./isSymbol-9094e8b7.js";import{U as pe}from"./index-e50485ad.js";import"./Grid-839ef6d1.js";import"./index-4d938e91.js";import"./_plugin-vue_export-helper-8ee86600.js";import"./shallowequal-36516cfd.js";import"./index-9869a66e.js";import"./vnode-b0455438.js";import"./index-c0eeee91.js";import"./useState-64f2823f.js";import"./useRefs-2a883b79.js";import"./_flatRest-f2577aae.js";import"./isMobile-e2e89480.js";import"./omit-84d71e15.js";import"./index-109c99be.js";import"./Col-fddaa6b7.js";import"./styleChecker-1445806f.js";import"./isPlainObject-aab367ce.js";import"./usePrice-bc935b83.js";import"./updateLocale-cec40f3d.js";import"./index-cfa536c5.js";import"./useMemo-9928f29b.js";import"./FormItemContext-64f846db.js";import"./lodash-07b825be.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-fb5041dc.js";import"./index-95b42b3e.js";import"./Badge-54a9cc4e.js";import"./isNumeric-3f69e2aa.js";import"./index-5f5223b4.js";import"./index-788f312f.js";import"./index-90f5ddad.js";import"./DialogWrap-6616a498.js";import"./pickAttrs-ba13e92c.js";import"./css-aae66f86.js";import"./index-a2503c07.js";import"./toArray-3936b2d5.js";import"./SearchOutlined-0eaaa97a.js";import"./index-bb804fdd.js";import"./textUtils-c37780ad.js";import"./index-03d99677.js";import"./index-ebd9fdbb.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-c046d1a6.js"),["assets/buildSupabaseQuery-c046d1a6.js","assets/index-90ac1a44.js","assets/index-0643191e.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),Me=i("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر",-1),Ue={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,_]=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 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,M=new FormData;M.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 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(M)})}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=X,y=K,M=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(M,{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,[Me,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",Ue,[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};