Files
machartaa_admin_dist/dist/assets/index-e85f52d6.js
T
2026-06-16 18:30:01 +03:30

2 lines
18 KiB
JavaScript

import{_ as Be}from"./BasicModal.vue_vue_type_style_index_0_lang-dd7b7ec8.js";import{_ as Le,u as Me}from"./useBaseTable-82988bac.js";import{_ as Te,B as Ve}from"./button.vue_vue_type_style_index_0_lang-2c1bd48f.js";import{I as Y}from"./Icon-e6a8fed2.js";import{t as De}from"./useDataTime-e2be3a73.js";import{g as A}from"./convert-67c23be8.js";import{_ as le}from"./TextPreview.vue_vue_type_script_setup_true_lang-b51083e4.js";import{u as Oe}from"./usePrice-bc935b83.js";import{b as t,d as Se,g as h,r as Re,h as T,v as Ae,l as je,o as f,c as U,a as p,w as s,e as x,j as q,E as Ee,k as $,F as N,n as Z,i as H,C as _,ab as ze,G as qe,t as ee}from"./index-818832f6.js";import{g as Ne,u as He,a as Je,b as Ke,d as We}from"./products-56ee4e5a.js";import{g as te}from"./index-b7592eeb.js";import{g as Ge}from"./category-9850d0c2.js";import{g as Xe}from"./brand-afdc945b.js";import{l as R}from"./lodash-a34081a8.js";import{M as Qe,_ as Ye}from"./index-4ab1f351.js";import{I as Ze,_ as et}from"./index-d7a2bf7d.js";import{_ as tt,a as at}from"./index-b25d6457.js";import{_ as lt}from"./index-dac8bf73.js";import{_ as ot,F as nt}from"./index-06fb0aba.js";import{_ as st,a as it}from"./index-f0acd122.js";import{S as rt}from"./fa_IR-6fcbcb1f.js";import{U as ut}from"./index-34285f57.js";import{T as ae}from"./shallowequal-d146fef2.js";import"./index-3a54c033.js";import"./vnode-64cb3fc2.js";import"./Col-48f581a2.js";import"./_plugin-vue_export-helper-d7928b20.js";import"./useState-0d2b1012.js";import"./FormItemContext-2aeab186.js";import"./pickAttrs-6ffcd9a2.js";import"./isPlainObject-9b4ffff0.js";import"./toArray-8487a9ec.js";import"./useRefs-67ee408f.js";const dt=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:m=>m.index+1},{title:"تصویر ",dataIndex:"original_image",key:"original_image",customRender:m=>{const j=A(m.record.original_image);return t("img",{src:j,width:60},null)}},{title:"عنوان",dataIndex:"title_fa",key:"title_fa"},{title:"کد",dataIndex:"code",key:"code"},{title:"توضیحات",dataIndex:"description",key:"description",customRender:m=>t(le,{text:m.record.description},null)},{title:"قیمت (ریال)",dataIndex:"price",key:"price",align:"center",width:120,customRender:m=>Oe(m.record.price??0,!0,"")},{title:"موجودی",dataIndex:"count",key:"count",align:"center",width:120,customRender:m=>m.record.count??0},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:m=>De(m.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],ct={class:"flex justify-between items-center mb-4"},pt=p("h2",null,"محصولات",-1),_t={class:"gap-2 flex justify-center"},vt=p("span",null,"حذف",-1),mt=p("span",null,"ویرایش",-1),ft={key:0,class:"text-gray-500 text-sm mt-1"},gt={class:"col-span-2 flex"},bt={key:0},ht=p("div",{style:{"margin-top":"8px"}},"آپلود",-1),yt=p("div",null,"آپلود فایل‌ها",-1),kt={class:"space-y-2"},wt={class:"flex justify-between items-center mb-2"},Ut={class:"text-sm text-gray-500"},xt={key:1,class:"text-gray-500 text-sm mt-2"},Ct={class:"mt-2 flex flex-wrap gap-4"},It={class:"space-y-3"},Pt={class:"flex justify-between items-center mb-2"},$t={class:"font-medium"},Ft={class:"grid grid-cols-3 gap-4"},ua=Se({__name:"index",setup(m){`${te()||localStorage.getItem("tamin_token")||""}`;const[j,J]=Me(),oe=h({columns:dt,api:Ne,defaultPageLimit:20}),F=h(!1),V=h(!1),D=h(null),B=h(0),O=h(0),a=Re({title_fa:"",title:"",price:0,body:"",is_show:!0,is_active:!0,box_size:0,sell_type:"numeric",original_image:void 0,product_attributes:[],files:[],auto_calculate:!1,is_exist:!0,created_at:void 0,updated_at:void 0,deleted_at:null,count_order:void 0,count_fav:void 0,count_view:void 0,min_price:void 0,max_price:void 0,type:"simple",owner_id:void 0,users:void 0,saved:[],variants:[],code:void 0,brand_id:void 0,collection_id:void 0,discount:void 0,discount_type:"percent",id:void 0,count:void 0,display_price:void 0,meta:void 0,seo_title:void 0,description:void 0,product_type:void 0,weight:void 0,rial_fee:void 0,percent_fee:void 0}),K=h(),ne=T(()=>K.value.map(n=>({value:n.id,label:n.title}))),W=h(),se=T(()=>W.value.map(n=>({value:n.id,label:n.title}))),I=h([]),y=T(()=>a.type==="variant"),ie=T(()=>I.value.map(n=>({value:n.id,label:n.name}))),re=T(()=>{const n=new Set((a.product_attributes??[]).filter(o=>o.use_in_variant&&o.attribute_id!=null).map(o=>o.attribute_id));return(n.size?I.value.filter(o=>n.has(o.id)):I.value).flatMap(o=>(o.attribute_values??[]).map(i=>({value:i.id,label:`${o.name}: ${i.value}`})))}),ue=n=>{if(!n)return[];const e=I.value.find(o=>o.id===n);return((e==null?void 0:e.attribute_values)??[]).map(o=>({value:o.id,label:o.value}))},de=n=>{const e=new Set((a.product_attributes??[]).map(o=>o.attribute_id).filter(o=>o!=null&&o!==n));return ie.value.filter(o=>!e.has(o.value))};function ce(n){return n.use_in_variant?!1:n.use_in_product_page!==!1}function pe(n){n.use_in_variant&&(n.attribute_values=[])}const _e=n=>{var e;(e=a.product_attributes)==null||e.splice(n,1)},ve=(n,e)=>((e==null?void 0:e.label)??"").toLowerCase().includes(n.toLowerCase());function me(){var n;a.type==="variant"?(n=a.variants)!=null&&n.length||G():a.variants=[]}const fe=()=>{var o;const n=new Set((a.product_attributes??[]).map(i=>i.attribute_id).filter(i=>i!=null)),e=I.value.find(i=>!n.has(i.id));if(!e){_.warning("همه ویژگی‌ها قبلاً اضافه شده‌اند");return}(o=a.product_attributes)==null||o.push({attribute_id:e.id,attribute_values:[],use_in_product_page:!y.value,use_in_variant:y.value})},G=()=>{a.variants||(a.variants=[]),a.variants.push({id:null,sku:"",price:0,box_price:0,stock:0,discount:void 0,discount_type:"percent",is_default:a.variants.length===0,attribute_values:[],attribute_values_name:[]})},ge=n=>{var e,o;(e=a.variants)==null||e.splice(n,1),((o=a.variants)==null?void 0:o.length)===1&&(a.variants[0].is_default=!0)};function be(n,e){var o;(o=a.variants)!=null&&o.length&&(e?a.variants.forEach((i,v)=>{i.is_default=v===n}):a.variants.some(i=>i.is_default)||(a.variants[0].is_default=!0))}const P=h([]),he=()=>!1,ye=()=>{};function ke(){Object.assign(a,R.cloneDeep(E),{type:"simple",product_attributes:[],variants:[],discount_type:"percent"}),P.value=[],V.value=!1,D.value=null,F.value=!0}function X(){Object.assign(a,E),F.value=!1}function we(n){return n.type.startsWith("image/")?n.size/1024/1024<5?!0:(_.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(_.error("فقط فایل‌های تصویری مجاز است"),!1)}async function Ue(n){const{file:e,onSuccess:o,onError:i,onProgress:v}=n,r=new FormData;r.append("file",e);const C=`${qe}/upload/machartaa-img`;O.value=0,B.value++,await new Promise((S,L)=>{const c=new XMLHttpRequest;c.open("POST",C);const z=te()||localStorage.getItem("tamin_token")||"";c.setRequestHeader("Authorization",`Bearer ${z}`),c.upload.onprogress=u=>{if(u.lengthComputable){const g=Math.round(u.loaded/u.total*100);O.value=g,v==null||v({percent:g})}},c.onload=()=>{if(O.value=100,c.status>=200&&c.status<300)try{const u=JSON.parse(c.responseText||"{}"),g=u.full_src||u.url||u.src||u.path||u.data&&(u.data.full_src||u.data.url||u.data.src||u.data.path)||"";let k=g;g!=null&&g.startsWith("http")&&(k=g.replace(/^https?:\/\/[^\/]+/,""));const w=A(k);a.original_image=k,P.value=w?[{uid:`${Date.now()}`,name:"products.jpg",status:"done",url:w,response:{path:k}}]:[],o==null||o(u,c),_.success("تصویر با موفقیت آپلود شد!"),S()}catch(u){i==null||i(u,c),L(u)}else{const u=new Error("خطا در آپلود تصویر");i==null||i(u,c),L(u)}},c.onerror=()=>{const u=new Error("خطا در آپلود کاور");i==null||i(u,c),L(u)},c.onloadend=()=>{B.value=Math.max(0,B.value-1),O.value=0},c.send(r)})}async function xe(){var n;if(B.value>0){_.warning("لطفاً تا پایان آپلود صبر کنید");return}if(y.value){if(!((n=a.variants)!=null&&n.length)){_.error("حداقل یک تنوع برای محصول تعریف کنید");return}if(a.variants.find(o=>!o.price||o.stock==null)){_.error("برای هر تنوع، قیمت و موجودی الزامی است");return}}else if(!a.price){_.error("قیمت محصول را وارد کنید");return}try{const e=R.cloneDeep(a);y.value?(e.price=0,e.discount=null,e.discount_type=null):(e.variants=[],e.discount_type=e.discount?"percent":null),V.value&&D.value?(await He(D.value,e),_.success("محصول با موفقیت ویرایش شد")):(await Je(e),_.success("محصول با موفقیت افزوده شد")),X(),await J()}catch(e){console.error("Error saving Product:",e),_.error("خطا در ذخیره محصول: "+(e.message||"خطای ناشناخته"))}}async function Ce(n){var e;E=R.cloneDeep(a),V.value=!0,D.value=n.id;try{const o=await Ke(n.id);for(const i in a)o.hasOwnProperty(i)&&(a[i]=o[i]);a.type=(((e=o.variants)==null?void 0:e.length)??0)>0||o.type==="variant"?"variant":"simple",a.product_attributes=o.product_attributes??[],a.variants=o.variants??[],a.discount_type=o.discount_type??"percent",P.value=o.original_image?[{uid:"-1",name:"original_image.jpg",status:"done",url:A(o.original_image),response:{path:o.original_image}}]:[],a.files=Array.isArray(o.files)?o.files.slice(1).map((i,v)=>({uid:`${v}`,name:`product_image${v}.jpg`,status:"done",url:A(i.url),response:{path:i.url}})):[],F.value=!0}catch(o){console.error("Error loading product:",o),_.error("خطا در بارگذاری اطلاعات محصول: "+(o.message||"خطای ناشناخته"))}}function Ie(n){Qe.confirm({title:"حذف محصول",content:`آیا مطمئن هستید که می‌خواهید محصول "${n.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await We(n.id),_.success("محصول با موفقیت حذف شد"),await J()}catch(e){console.error("Error deleting Product:",e),_.error("خطا در حذف محصول: "+(e.message||"خطای ناشناخته"))}}})}let E=R.cloneDeep(a);async function Pe(){const{data:n,error:e}=await ze.from("attributes").select("*, attribute_values(*)").order("id");if(e){console.error("Error loading features:",e),_.error("خطا در بارگذاری ویژگی‌ها");return}I.value=n??[]}return Ae(async()=>{W.value=await Ge(),K.value=await Xe(),await Pe()}),(n,e)=>{const o=Te,i=Le,v=Ze,r=ot,C=rt,S=tt,L=at,c=lt,z=et,u=je("plus-outlined"),g=ut,k=Ve,w=Ye,M=st,Q=it,$e=nt,Fe=Be;return f(),U("div",null,[p("div",ct,[pt,t(o,{type:"primary",onClick:ke},{default:s(()=>[x("افزودن محصول")]),_:1})]),t(i,Ee(oe.value,{ref:"table",onRegister:q(j)}),{text:s(({record:l})=>[t(le,{text:l.description},null,8,["text"])]),action:s(({record:l})=>[p("div",_t,[t(q(ae),{class:"cursor-pointer"},{title:s(()=>[vt]),default:s(()=>[t(Y,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:b=>Ie(l)},null,8,["onClick"])]),_:2},1024),t(q(ae),{class:"cursor-pointer"},{title:s(()=>[mt]),default:s(()=>[t(Y,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:b=>Ce(l)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),t(Fe,{visible:F.value,"onUpdate:visible":e[15]||(e[15]=l=>F.value=l),title:V.value?"ویرایش محصول":"افزودن محصول",onOk:xe,onClose:e[16]||(e[16]=l=>X()),width:"80%",confirmLoading:B.value>0},{default:s(()=>[t($e,{layout:"vertical",class:"grid grid-cols-3 gap-2"},{default:s(()=>[t(r,{label:"عنوان فارسی",required:""},{default:s(()=>[t(v,{value:a.title_fa,"onUpdate:value":e[0]||(e[0]=l=>a.title_fa=l),placeholder:"عنوان فارسی محصول"},null,8,["value"])]),_:1}),t(r,{label:"عنوان انگلیسی"},{default:s(()=>[t(v,{value:a.title,"onUpdate:value":e[1]||(e[1]=l=>a.title=l),placeholder:"عنوان انگلیسی محصول"},null,8,["value"])]),_:1}),t(r,{label:"برند"},{default:s(()=>[t(C,{value:a.brand_id,"onUpdate:value":e[2]||(e[2]=l=>a.brand_id=l),placeholder:"انتخاب برند",options:ne.value,"show-search":"","filter-option":ve},null,8,["value","options"])]),_:1}),t(r,{label:"کالکشن"},{default:s(()=>[t(C,{value:a.collection_id,"onUpdate:value":e[3]||(e[3]=l=>a.collection_id=l),placeholder:"انتخاب کالکشن",options:se.value},null,8,["value","options"])]),_:1}),t(r,{label:"نوع محصول",class:"col-span-3"},{default:s(()=>[t(L,{value:a.type,"onUpdate:value":e[4]||(e[4]=l=>a.type=l),onChange:me},{default:s(()=>[t(S,{value:"simple"},{default:s(()=>[x("محصول ساده")]),_:1}),t(S,{value:"variant"},{default:s(()=>[x("محصول دارای تنوع")]),_:1})]),_:1},8,["value"]),y.value?(f(),U("div",ft," در حالت تنوع، قیمت و موجودی کلی محصول استفاده نمی‌شود و برای هر تنوع جداگانه تعریف می‌شود. ")):$("",!0)]),_:1}),y.value?$("",!0):(f(),U(N,{key:0},[t(r,{label:"قیمت (تومان)"},{default:s(()=>[t(c,{value:a.price,"onUpdate:value":e[5]||(e[5]=l=>a.price=l),style:{width:"100%"},placeholder:"قیمت را وارد کنید",min:0},null,8,["value"])]),_:1}),t(r,{label:"تخفیف %"},{default:s(()=>[t(c,{value:a.discount,"onUpdate:value":e[6]||(e[6]=l=>a.discount=l),style:{width:"100%"},placeholder:"درصد تخفیف را وارد کنید",min:0,max:100},null,8,["value"])]),_:1}),t(r,{label:"تعداد موجودی محصول"},{default:s(()=>[t(c,{value:a.count,"onUpdate:value":e[7]||(e[7]=l=>a.count=l),style:{width:"100%"},placeholder:"تعداد موجودی محصول را وارد کنید",min:0},null,8,["value"])]),_:1})],64)),t(r,{label:"کد محصول"},{default:s(()=>[t(v,{value:a.code,"onUpdate:value":e[8]||(e[8]=l=>a.code=l),style:{width:"100%"},placeholder:"کد محصول را وارد کنید"},null,8,["value"])]),_:1}),t(r,{class:"col-span-3",label:"توضیحات محصول"},{default:s(()=>[t(z,{value:a.description,"onUpdate:value":e[9]||(e[9]=l=>a.description=l),rows:"4",placeholder:"توضیحات محصول"},null,8,["value"])]),_:1}),p("div",gt,[t(r,{label:"تصویر اصلی"},{default:s(()=>[t(g,{"file-list":P.value,"onUpdate:fileList":e[10]||(e[10]=l=>P.value=l),"before-upload":we,"custom-request":Ue,accept:"image/*","list-type":"picture-card","max-count":1},{default:s(()=>[P.value.length<1?(f(),U("div",bt,[t(u),ht])):$("",!0)]),_:1},8,["file-list"])]),_:1}),t(r,{label:"فایل‌های محصول"},{default:s(()=>[t(g,{"file-list":a.files,"onUpdate:fileList":e[11]||(e[11]=l=>a.files=l),"before-upload":he,"custom-request":ye,multiple:"","list-type":"picture-card"},{default:s(()=>[yt]),_:1},8,["file-list"])]),_:1})]),t(r,{class:"col-span-3",label:"ویژگی‌های محصول"},{default:s(()=>[p("div",kt,[(f(!0),U(N,null,Z(a.product_attributes,(l,b)=>(f(),U("div",{key:b,class:"px-3 py-2 border rounded-md"},[p("div",wt,[p("span",Ut,"ویژگی "+ee(b+1),1),t(k,{type:"link",danger:"",size:"small",onClick:d=>_e(b)},{default:s(()=>[x("حذف")]),_:2},1032,["onClick"])]),t(C,{value:l.attribute_id,"onUpdate:value":d=>l.attribute_id=d,options:de(l.attribute_id),placeholder:"انتخاب ویژگی",style:{width:"100%"}},null,8,["value","onUpdate:value","options"]),ce(l)?(f(),H(C,{key:0,value:l.attribute_values,"onUpdate:value":d=>l.attribute_values=d,options:ue(l.attribute_id),placeholder:"انتخاب مقدار ویژگی",mode:"multiple",style:{width:"100%"},class:"mt-2"},null,8,["value","onUpdate:value","options"])):l.use_in_variant?(f(),U("div",xt," مقادیر این ویژگی در بخش تنوع‌ها تعریف می‌شود. ")):$("",!0),p("div",Ct,[t(w,{checked:l.use_in_product_page,"onUpdate:checked":d=>l.use_in_product_page=d,checkedChildren:"نمایش در صفحه محصول",unCheckedChildren:"مخفی"},null,8,["checked","onUpdate:checked"]),y.value?(f(),H(w,{key:0,checked:l.use_in_variant,"onUpdate:checked":d=>l.use_in_variant=d,checkedChildren:"استفاده در تنوع",unCheckedChildren:"بدون تنوع",onChange:()=>pe(l)},null,8,["checked","onUpdate:checked","onChange"])):$("",!0)])]))),128)),t(k,{type:"dashed",block:"",onClick:fe},{default:s(()=>[x("+ افزودن ویژگی")]),_:1})])]),_:1}),y.value?(f(),H(r,{key:1,class:"col-span-3",label:"تنوع‌های محصول"},{default:s(()=>[p("div",It,[(f(!0),U(N,null,Z(a.variants,(l,b)=>(f(),U("div",{key:b,class:"border rounded-md p-3 bg-gray-50"},[p("div",Pt,[p("span",$t,"تنوع "+ee(b+1),1),t(k,{type:"link",danger:"",onClick:d=>ge(b)},{default:s(()=>[x("حذف")]),_:2},1032,["onClick"])]),t(Q,{gutter:12},{default:s(()=>[t(M,{span:8},{default:s(()=>[t(r,{label:"قیمت (تومان)",class:"mb-0"},{default:s(()=>[t(c,{value:l.price,"onUpdate:value":d=>l.price=d,style:{width:"100%"},min:0,placeholder:"قیمت"},null,8,["value","onUpdate:value"])]),_:2},1024)]),_:2},1024),t(M,{span:8},{default:s(()=>[t(r,{label:"تخفیف %",class:"mb-0"},{default:s(()=>[t(c,{value:l.discount,"onUpdate:value":d=>l.discount=d,style:{width:"100%"},min:0,max:100,placeholder:"تخفیف"},null,8,["value","onUpdate:value"])]),_:2},1024)]),_:2},1024),t(M,{span:8},{default:s(()=>[t(r,{label:"موجودی",class:"mb-0"},{default:s(()=>[t(c,{value:l.stock,"onUpdate:value":d=>l.stock=d,style:{width:"100%"},min:0,placeholder:"موجودی"},null,8,["value","onUpdate:value"])]),_:2},1024)]),_:2},1024)]),_:2},1024),t(Q,{gutter:12,class:"mt-2"},{default:s(()=>[t(M,{span:12},{default:s(()=>[t(r,{label:"کد SKU",class:"mb-0"},{default:s(()=>[t(v,{value:l.sku,"onUpdate:value":d=>l.sku=d,placeholder:"کد SKU"},null,8,["value","onUpdate:value"])]),_:2},1024)]),_:2},1024),t(M,{span:12,class:"flex items-end"},{default:s(()=>[t(w,{checked:l.is_default,"onUpdate:checked":d=>l.is_default=d,onChange:d=>be(b,d)},{default:s(()=>[x(" تنوع پیش‌فرض ")]),_:2},1032,["checked","onUpdate:checked","onChange"])]),_:2},1024)]),_:2},1024),t(r,{label:"مقادیر ویژگی این تنوع",class:"mb-0 mt-2"},{default:s(()=>[t(C,{value:l.attribute_values,"onUpdate:value":d=>l.attribute_values=d,options:re.value,mode:"multiple",style:{width:"100%"},placeholder:"مثلاً رنگ: سفید، سایز: متوسط"},null,8,["value","onUpdate:value","options"])]),_:2},1024)]))),128)),t(k,{type:"dashed",block:"",onClick:G},{default:s(()=>[x("+ افزودن تنوع")]),_:1})])]),_:1})):$("",!0),p("div",Ft,[t(r,{label:"نمایش"},{default:s(()=>[t(w,{checked:a.is_show,"onUpdate:checked":e[12]||(e[12]=l=>a.is_show=l)},null,8,["checked"])]),_:1}),t(r,{label:"فعال"},{default:s(()=>[t(w,{checked:a.is_active,"onUpdate:checked":e[13]||(e[13]=l=>a.is_active=l)},null,8,["checked"])]),_:1}),t(r,{label:"موجود"},{default:s(()=>[t(w,{checked:a.is_exist,"onUpdate:checked":e[14]||(e[14]=l=>a.is_exist=l),disabled:y.value},null,8,["checked","disabled"])]),_:1})])]),_:1})]),_:1},8,["visible","title","confirmLoading"])])}}});export{ua as default};