2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
import{_ as ee}from"./BasicMainCard-f15cc82d.js";import{_ as te}from"./BasicModal.vue_vue_type_style_index_0_lang-3186fd13.js";import{_ as ae}from"./BasicInput.vue_vue_type_style_index_0_lang-8f3a56f0.js";import{_ as ie,u as le}from"./useBaseTable-e684a9eb.js";import{_ as se}from"./button.vue_vue_type_style_index_0_lang-de1581fe.js";import{I as D}from"./Icon-623de3ea.js";import{t as oe}from"./useDataTime-284d8334.js";import{_ as ne,I as re,J as ue,K as ce,d as de,i as g,o as C,c as R,e as o,w as d,b as i,f as j,L as me,l as y,t as pe,n as P,C as _e,H as h,M as ve}from"./index-185c08ed.js";import{g as A}from"./convert-2ad76038.js";import{g as E}from"./index-58ff633a.js";import{M as fe}from"./index-2573091c.js";import{S as ge}from"./index-5a721f2f.js";import{C as he}from"./index-33777d70.js";import{T as N}from"./isSymbol-18d6b370.js";import{U as xe}from"./index-c950ff98.js";import"./Grid-337aeaf9.js";import"./index-c3741845.js";import"./_plugin-vue_export-helper-e26fbd9a.js";import"./shallowequal-6622fb79.js";import"./index-1f485cc0.js";import"./vnode-8a371720.js";import"./index-a2809ce1.js";import"./useState-50bb8c1f.js";import"./useRefs-b56c6fdc.js";import"./_flatRest-947e7901.js";import"./isMobile-e2e89480.js";import"./omit-d93eaa18.js";import"./index-229a6022.js";import"./Col-2d184441.js";import"./styleChecker-7bb1c6f5.js";import"./isPlainObject-5638f45d.js";import"./usePrice-bc935b83.js";import"./index-a29d0cc7.js";import"./SearchOutlined-d9b8def2.js";import"./FormItemContext-2d3e7341.js";import"./index-f463cb03.js";import"./updateLocale-d0f4ef4d.js";import"./useMemo-4f3c1eb4.js";import"./lodash-0633e973.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-e9f1c563.js";import"./index-9383b001.js";import"./Badge-51142f0a.js";import"./isNumeric-3f69e2aa.js";import"./index-9e9f857b.js";import"./index-0ee37254.js";import"./toArray-da31f78e.js";import"./pickAttrs-e062aa3e.js";import"./index-77ae4c49.js";import"./DialogWrap-9863a7c0.js";import"./index-975de3f6.js";import"./css-aae66f86.js";import"./index-82269ca5.js";import"./index-b2f5f66c.js";const V=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:s=>s.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"لینک",dataIndex:"link_url",key:"link_url",customRender:s=>s.record.link_url||"-"},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",align:"center",width:90,customRender:s=>String(s.record.sort_order??0)},{title:"فعال",dataIndex:"active",key:"active",align:"center",width:90,customRender:s=>s.record.active!==!1?"بله":"خیر"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:s=>oe(s.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];async function ye(s){const f=await re("home_slider_slides",s);return Array.isArray(f)?f:[f]}async function q(s,f){const m=await ue("home_slider_slides",s,{...f,updated_at:new Date().toISOString()});return Array.isArray(m)?m:[m]}async function ke(s){await ce("home_slider_slides",s)}async function be(s){const{TableEngineRequest:f}=await ne(()=>import("./buildSupabaseQuery-32cb26f7.js"),["assets/buildSupabaseQuery-32cb26f7.js","assets/index-185c08ed.js","assets/index-0643191e.css"]),m={...s};!m.sort&&!m.order&&(m.order="sort_order");const _=await f(m,"home_slider_slides");try{if(Array.isArray(_==null?void 0:_.rows)){const T=m.page||1,k=m.limit||20,w=(T-1)*k,I=_.rows.map((r,x)=>({...r,title:r.title??"",image:r.image??null,link_url:r.link_url??null,sort_order:Number(r.sort_order??0),active:r.active!==!1,index:w+x}));return{..._,rows:I}}}catch(T){console.error("[getHomeSliderTable]",T)}return _}const we={class:"flex flex-wrap justify-between items-start gap-3 mb-4"},Ie=i("div",null,[i("h2",{class:"m-0"},"اسلایدر صفحه خانه"),i("p",{class:"m-0 mt-1 text-sm text-gray-500"}," اسلایدهای تصویر عریض صفحه خانه. بنرهای اطلاعرسانی ویدیویی هم در همین اسلایدشو نمایش داده میشوند. ")],-1),Se=["src"],Ce={key:1},Re={class:"gap-2 flex justify-center"},Te=i("span",null,"حذف",-1),Ue=i("span",null,"ویرایش",-1),Be={class:"space-y-4 relative"},$e={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},De=i("div",{class:"mb-1 text-sm text-gray-600"},"عنوان",-1),Me=i("div",{class:"mb-1 text-sm text-gray-600"},"لینک کلیک (اختیاری)",-1),Le=i("p",{class:"m-0 mt-1 text-xs text-gray-500"}," مسیر داخلی با / شروع شود؛ لینک خارجی با http/https. ",-1),Pe={class:"grid grid-cols-2 gap-3"},Ae=i("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),Ne={class:"flex items-end pb-1"},ze={class:"rounded-xl border-2 border-dashed border-emerald-400 bg-emerald-50 p-4 space-y-3"},He=i("div",null,[i("div",{class:"text-sm font-bold text-emerald-800"},"تصویر اسلاید *"),i("p",{class:"m-0 mt-1 text-xs text-gray-600 leading-5"}," تصویر عریض (ترجیحاً نسبت حدود ۱۶:۹) برای اسلایدشو صفحه خانه. ")],-1),Oe={key:0},je=i("div",null,"آپلود تصویر",-1),Ee={key:0,class:"mt-1"},Ve={class:"h-2 rounded bg-gray-200 overflow-hidden"},Vt=de({__name:"index",setup(s){const f={authorization:`Bearer ${E()||localStorage.getItem("tamin_token")||""}`},[m,_]=le(),T=g({columns:[...V.slice(0,2),{title:"تصویر",dataIndex:"image",key:"image",slot:"image",align:"center",width:130,filterable:!1},...V.slice(2)],api:be,defaultPageLimit:20}),k=g(!1),w=g(!1),I=g(null),r=g([]),x=g(0),b=g(0),U=g("0"),n=g({title:"",image:"",link_url:null,sort_order:0,active:!0});function F(){r.value=[],w.value=!1,I.value=null,U.value="0",n.value={title:"",image:"",link_url:null,sort_order:0,active:!0},k.value=!0}function z(){k.value=!1}function J(t){return t.type.startsWith("image/")?t.size/1024/1024<5?!0:(h.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(h.error("فقط فایلهای تصویری مجاز است"),!1)}function H(t){return t?t.startsWith("http")?t.replace(/^https?:\/\/[^\/]+/,""):t:null}async function W(t){const{file:a,onSuccess:p,onError:u,onProgress:v}=t,B=new FormData;B.append("file",a);const M=`${ve}/upload/machartaa-img`;b.value=0,x.value++,await new Promise((e,S)=>{const c=new XMLHttpRequest;c.open("POST",M);const Z=E()||localStorage.getItem("tamin_token")||"";c.setRequestHeader("Authorization",`Bearer ${Z}`),c.upload.onprogress=l=>{if(l.lengthComputable){const $=Math.round(l.loaded/l.total*100);b.value=$,v==null||v({percent:$})}},c.onload=()=>{if(b.value=100,c.status>=200&&c.status<300)try{const l=JSON.parse(c.responseText||"{}"),$=l.full_src||l.url||l.src||l.path||l.data&&(l.data.full_src||l.data.url||l.data.src||l.data.path)||"",L=H($)||"",O=A(L);n.value.image=L,r.value=O?[{uid:`${Date.now()}`,name:"slide.jpg",status:"done",url:O,response:{path:L}}]:[],p==null||p(l,c),h.success("تصویر اسلاید آپلود شد"),e()}catch(l){u==null||u(l,c),S(l)}else{const l=new Error("خطا در آپلود تصویر");u==null||u(l,c),S(l)}},c.onerror=()=>{const l=new Error("خطا در آپلود تصویر");u==null||u(l,c),S(l)},c.onloadend=()=>{x.value=Math.max(0,x.value-1),b.value=0},c.send(B)})}function K(){n.value.image="",r.value=[]}function X(t){w.value=!0,I.value=t.id;const a=H(t.image||null)||"";U.value=String(t.sort_order??0),n.value={title:t.title||"",image:a,link_url:t.link_url||null,sort_order:Number(t.sort_order??0),active:t.active!==!1};const p=a?A(a):null;r.value=p?[{uid:"-slide",name:"slide.jpg",status:"done",url:p,response:{path:a}}]:[],k.value=!0}function G(t){fe.confirm({title:"حذف اسلاید",content:`آیا از حذف «${t.title||"این اسلاید"}» مطمئن هستید؟`,okText:"حذف",cancelText:"انصراف",onOk:async()=>{await ke(t.id),h.success("حذف شد"),_()}})}async function Q(t){const a=t.active===!1;await q(t.id,{active:a}),h.success(a?"اسلاید فعال شد":"اسلاید غیرفعال شد"),_()}async function Y(){var p,u,v;if(!((p=n.value.image)!=null&&p.trim())){h.warning("تصویر اسلاید الزامی است");return}if(x.value>0){h.warning("لطفاً تا پایان آپلود صبر کنید");return}const t=Number(U.value),a={title:((u=n.value.title)==null?void 0:u.trim())||"",image:n.value.image.trim(),link_url:((v=n.value.link_url)==null?void 0:v.trim())||null,sort_order:Number.isFinite(t)?t:0,active:n.value.active!==!1};w.value&&I.value?(await q(I.value,a),h.success("ویرایش شد")):(await ye(a),h.success("افزوده شد")),z(),_()}return(t,a)=>{const p=se,u=ie,v=ae,B=te,M=ee;return C(),R("div",null,[o(M,null,{default:d(()=>[i("div",we,[Ie,o(p,{type:"primary",onClick:F},{default:d(()=>[j("افزودن اسلاید")]),_:1})]),o(u,me(T.value,{ref:"table",onRegister:y(m)}),{image:d(({record:e})=>[e.image?(C(),R("img",{key:0,src:y(A)(e.image),alt:"",class:"w-24 h-12 object-cover rounded"},null,8,Se)):(C(),R("span",Ce,"-"))]),action:d(({record:e})=>[i("div",Re,[o(y(N),{class:"cursor-pointer"},{title:d(()=>[i("span",null,pe((e==null?void 0:e.active)===!1?"فعالسازی":"غیرفعالسازی"),1)]),default:d(()=>[o(D,{icon:(e==null?void 0:e.active)===!1?"vuesax-linear:eye":"vuesax-linear:eye-slash",color:(e==null?void 0:e.active)===!1?"#10B981":"#F59E0B",onClick:S=>Q(e)},null,8,["icon","color","onClick"])]),_:2},1024),o(y(N),{class:"cursor-pointer"},{title:d(()=>[Te]),default:d(()=>[o(D,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:S=>G(e)},null,8,["onClick"])]),_:2},1024),o(y(N),{class:"cursor-pointer"},{title:d(()=>[Ue]),default:d(()=>[o(D,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:S=>X(e)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),o(B,{visible:k.value,"onUpdate:visible":a[5]||(a[5]=e=>k.value=e),title:w.value?"ویرایش اسلاید":"افزودن اسلاید",onOk:Y,onCancel:z,width:"640px",confirmLoading:x.value>0},{default:d(()=>[i("div",Be,[x.value>0?(C(),R("div",$e,[o(y(ge),{size:"large"})])):P("",!0),i("div",null,[De,o(v,{value:n.value.title,"onUpdate:value":a[0]||(a[0]=e=>n.value.title=e),placeholder:"مثلاً خبرهای داغ"},null,8,["value"])]),i("div",null,[Me,o(v,{value:n.value.link_url,"onUpdate:value":a[1]||(a[1]=e=>n.value.link_url=e),placeholder:"مثلاً /announcements/7 یا https://example.com"},null,8,["value"]),Le]),i("div",Pe,[i("div",null,[Ae,o(v,{value:U.value,"onUpdate:value":a[2]||(a[2]=e=>U.value=e),type:"number",placeholder:"0"},null,8,["value"])]),i("div",Ne,[o(y(he),{checked:n.value.active,"onUpdate:checked":a[3]||(a[3]=e=>n.value.active=e)},{default:d(()=>[j("فعال")]),_:1},8,["checked"])])]),i("div",ze,[He,o(y(xe),{"file-list":r.value,"onUpdate:fileList":a[4]||(a[4]=e=>r.value=e),"before-upload":J,"custom-request":W,headers:f,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",onRemove:K},{default:d(()=>[r.value.length<1?(C(),R("div",Oe,[o(D,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),je])):P("",!0)]),_:1},8,["file-list"]),b.value>0&&b.value<100?(C(),R("div",Ee,[i("div",Ve,[i("div",{class:"h-2 bg-emerald-500 transition-all",style:_e({width:`${b.value}%`})},null,4)])])):P("",!0)])])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{Vt as default};
|