Files
nademitex_admin/dist/assets/ProductsView-DVd3z46A.js
T

1 line
15 KiB
JavaScript

import{A as e,At as t,G as n,I as r,K as i,Mt as a,N as o,Nt as s,a as c,b as l,c as u,et as ee,f as d,g as f,h as p,m,nt as h,o as te,p as g,t as _,ut as v,x as y,y as b}from"./http-DH3a8ZHi.js";import{B as x,L as ne,N as re,S,U as ie,V as C,n as w,o as T,p as ae}from"./index-tqT6UwOm.js";import{t as oe}from"./AdminPageSkeleton-BcF2AzMt.js";import{t as E}from"./BaseSwitch-DY_8WO_c.js";import{t as se}from"./BaseEmptyState-CG1RbXkS.js";import{t as ce}from"./catalogImage-DbusXpop.js";import{t as D}from"./AdminSelect-Dv_-57-E.js";import{t as O}from"./ActiveSwitchCell-D5OkScNe.js";import{t as le}from"./AdminCurrencyInput-UoJ-5k4r.js";var ue={class:`products-page`},de={class:`products-page__filters admin-card`},fe={class:`products-page__search`},pe={key:2,class:`products-page__table admin-card desktop-only`},me={class:`admin-table-wrap`},he={class:`admin-table`},ge={class:`numeric`},_e={class:`numeric`},ve={class:`numeric`},ye={class:`numeric`},be={class:`status`},xe={class:`actions`},k=[`onClick`],A={key:3,class:`compact-only admin-card-list`},j={class:`admin-card-item__header`},M={class:`admin-card-item__title`},Se={class:`admin-card-item__header-actions`},Ce=[`onClick`],we={class:`admin-card-item__meta`},Te={key:0,class:`admin-form__error`,role:`alert`},Ee={class:`admin-form__field`},De={class:`admin-form__row`},Oe={class:`admin-form__field`},ke={class:`admin-form__field`},Ae={class:`admin-form__field`},je={class:`admin-form__row`},Me={class:`admin-form__field`},Ne={class:`admin-form__field`},Pe={class:`admin-form__row`},Fe={class:`admin-form__field`},Ie={class:`admin-form__field`},Le={class:`admin-form__row`},Re={class:`admin-form__field`},ze={class:`admin-form__field`},Be={class:`admin-form__row`},Ve={class:`admin-form__field`},He={class:`admin-form__field`},Ue={class:`admin-form__row`},We={class:`admin-form__field`},Ge={class:`admin-form__field`},Ke={class:`admin-form__field`},qe={class:`admin-form__field`},Je={class:`product-images`},Ye=[`onClick`],Xe={class:`product-images__add`},Ze=[`disabled`],Qe={class:`admin-form__field`},$e={class:`admin-form__field`},et=[`disabled`],N=te(y({__name:`ProductsView`,setup(te){let y=h([]),N=h([]),P=h(``),F=h(`all`),I=h(!0),L=h(null),R=h(null),z=h(``),B=h(!1),V=c(),tt=d(()=>[{value:`all`,label:`همه کالیته‌ها`},...N.value.map(e=>({value:e.id,label:`${e.code} — ${e.name}`}))]),nt=d(()=>N.value.map(e=>({value:e.id,label:`${e.code} — ${e.name} (${e.companyName})`}))),H=()=>({catalogId:N.value[0]?.id??``,name:``,color:``,productCode:``,minMeterage:100,orderStep:50,price:null,internalStock:0,isActive:!0,usageCategory:`other`,season:`all_season`,composition:``,weaveType:``,subtitle:``,rollMeters:50,isNew:!1,colorsText:``,imageUrls:[]}),U=ee(H()),rt=d(()=>L.value!==null),W=d(()=>L.value===`edit`?`ویرایش محصول`:`افزودن محصول`),G=d(()=>U.name.trim()&&U.catalogId&&U.minMeterage>0),K=d(()=>P.value.trim().length>0||F.value!==`all`),q=d(()=>{let e=y.value;F.value!==`all`&&(e=e.filter(e=>e.catalogId===F.value));let t=P.value.trim();return t&&(e=e.filter(e=>e.name.includes(t)||e.color.includes(t)||e.productCode.includes(t)||e.catalogCode.includes(t))),e});async function it(){I.value=!0;try{let[e,t]=await Promise.all([S.list(),ae.list()]);y.value=e,N.value=t}catch(e){V.error(e instanceof _?e.message:`بارگذاری محصولات انجام نشد.`)}finally{I.value=!1}}e(()=>{it()});function at(e){return N.value.find(t=>t.id===e)}function J(){L.value=`add`,R.value=null,Object.assign(U,H()),z.value=``}function Y(e){L.value=`edit`,R.value=e.id,U.catalogId=e.catalogId,U.name=e.name,U.color=e.color,U.productCode=e.productCode,U.minMeterage=e.minMeterage,U.orderStep=e.orderStep,U.price=e.price,U.internalStock=e.internalStock,U.isActive=e.isActive,U.usageCategory=e.usageCategory??`other`,U.season=e.season??`all_season`,U.composition=e.composition??``,U.weaveType=e.weaveType??``,U.subtitle=e.subtitle??``,U.rollMeters=e.rollMeters??50,U.isNew=e.isNew??!1,U.colorsText=(e.colors??[]).join(`, `),U.imageUrls=[...e.imageUrls??[]],z.value=``}function ot(e){return e.split(`,`).map(e=>e.trim()).filter(Boolean)}let X=h(!1);async function st(e){let t=e.target,n=[...t.files??[]];if(t.value=``,n.length){X.value=!0,z.value=``;try{let e=await Promise.all(n.map(e=>ce(e)));U.imageUrls=[...U.imageUrls,...e]}catch(e){z.value=e instanceof Error?e.message:`بارگذاری تصویر ناموفق بود.`}finally{X.value=!1}}}function ct(e){U.imageUrls.splice(e,1)}function Z(){L.value=null,R.value=null,z.value=``}async function Q(){if(!G.value){z.value=`نام محصول، کالیته و حداقل متراژ الزامی هستند.`;return}let e=at(U.catalogId);if(!e){z.value=`کالیته معتبر انتخاب کنید.`;return}let t={usageCategory:U.usageCategory,season:U.season,composition:U.composition.trim()||null,weaveType:U.weaveType.trim()||null,subtitle:U.subtitle.trim()||null,rollMeters:U.rollMeters,isNew:U.isNew,colorsJson:ot(U.colorsText),imageUrlsJson:U.imageUrls},n=U.productCode.trim()||`${e.code}-NEW`;B.value=!0;try{if(L.value===`edit`&&R.value){let e=await S.update(R.value,{catalogId:U.catalogId,name:U.name.trim(),color:U.color.trim()||`—`,code:n,productCode:n,minMeterage:U.minMeterage,orderStep:U.orderStep,price:U.price,internalStock:U.internalStock,isActive:U.isActive,...t}),r=y.value.findIndex(e=>e.id===R.value);r!==-1&&(y.value[r]={...y.value[r],...e}),V.success(`اطلاعات محصول به‌روزرسانی شد.`)}else{let r=await S.create({companyId:e.companyId,catalogId:U.catalogId,name:U.name.trim(),color:U.color.trim()||`—`,code:n,productCode:n,minMeterage:U.minMeterage,orderStep:U.orderStep,price:U.price,internalStock:U.internalStock,isActive:U.isActive,...t});y.value.push(r),V.success(`محصول جدید ثبت شد.`)}Z()}catch(e){V.error(e instanceof _?e.message:`ذخیره محصول انجام نشد.`)}finally{B.value=!1}}async function $(e,t){await S.setActive(e,t)}function lt(){P.value=``,F.value=`all`}return(e,c)=>(o(),f(`div`,ue,[g(`div`,{class:`admin-page-header`},[c[19]||=g(`div`,null,[g(`h1`,{class:`admin-page-header__title`},`محصولات`)],-1),g(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:J},` افزودن محصول `)]),g(`div`,de,[g(`div`,fe,[l(re,{name:`search`,size:18}),i(g(`input`,{"onUpdate:modelValue":c[0]||=e=>P.value=e,type:`search`,class:`products-page__search-input`,placeholder:`جستجو در نام، رنگ، کد...`},null,512),[[C,P.value]])]),l(D,{modelValue:F.value,"onUpdate:modelValue":c[1]||=e=>F.value=e,class:`products-page__catalog-filter`,"aria-label":`فیلتر کالیته`,options:tt.value},null,8,[`modelValue`,`options`])]),I.value?(o(),m(oe,{key:0,variant:`table`})):q.value.length?(o(),f(`div`,pe,[g(`div`,me,[g(`table`,he,[c[20]||=g(`thead`,null,[g(`tr`,null,[g(`th`,null,`تصویر`),g(`th`,null,`کد محصول`),g(`th`,null,`نام`),g(`th`,null,`رنگ`),g(`th`,null,`کالیته`),g(`th`,null,`شرکت`),g(`th`,{class:`numeric`},`حداقل متراژ`),g(`th`,{class:`numeric`},`ضریب`),g(`th`,{class:`numeric`},`قیمت`),g(`th`,{class:`numeric`},`موجودی`),g(`th`,{class:`status`},`وضعیت`),g(`th`,{class:`actions`},`عملیات`)])],-1),g(`tbody`,null,[(o(!0),f(u,null,r(q.value,e=>(o(),f(`tr`,{key:e.id},[g(`td`,null,[g(`span`,{class:t([`product-thumb`,{"product-thumb--empty":!e.imageUrls?.[0]}]),style:a(e.imageUrls?.[0]?{backgroundImage:`url(${e.imageUrls[0]})`}:void 0)},null,6)]),g(`td`,null,s(e.productCode),1),g(`td`,null,s(e.name),1),g(`td`,null,s(e.color),1),g(`td`,null,s(e.catalogCode),1),g(`td`,null,s(e.companyName),1),g(`td`,ge,s(v(T)(e.minMeterage))+` متر`,1),g(`td`,_e,s(v(T)(e.orderStep)),1),g(`td`,ve,s(e.price?v(w)(e.price):`—`),1),g(`td`,ye,s(v(T)(e.internalStock))+` متر`,1),g(`td`,be,[l(O,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`محصول`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),g(`td`,xe,[g(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>Y(e)},` ویرایش `,8,k)])]))),128))])])])])):(o(),m(se,{key:1,class:`admin-card`,icon:`products`,title:K.value?`نتیجه‌ای یافت نشد`:`محصولی ثبت نشده`,description:K.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین محصول را ثبت کنید.`},{default:n(()=>[K.value?(o(),f(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:lt},` پاک کردن فیلترها `)):(o(),f(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:J},` افزودن محصول `))]),_:1},8,[`title`,`description`])),!I.value&&q.value.length?(o(),f(`div`,A,[(o(!0),f(u,null,r(q.value,e=>(o(),f(`article`,{key:e.id,class:`admin-card-item`},[g(`div`,j,[g(`p`,M,s(e.name),1),g(`div`,Se,[l(O,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`محصول`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),g(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>Y(e)},` ویرایش `,8,Ce)])]),g(`div`,we,[g(`span`,null,s(e.productCode),1),g(`span`,null,s(e.color),1),g(`span`,null,`کالیته `+s(e.catalogCode),1),g(`span`,null,s(e.price?v(w)(e.price):`بدون قیمت`),1)])]))),128))])):p(``,!0),l(ne,{open:rt.value,title:W.value,size:`lg`,onClose:Z},{footer:n(()=>[g(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),g(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!G.value||B.value,onClick:Q},s(L.value===`edit`?`ذخیره تغییرات`:`ثبت محصول`),9,et)]),default:n(()=>[g(`form`,{class:`admin-form`,onSubmit:ie(Q,[`prevent`])},[z.value?(o(),f(`p`,Te,s(z.value),1)):p(``,!0),g(`div`,Ee,[c[21]||=g(`label`,null,[b(`کالیته `),g(`span`,{class:`admin-form__required`},`*`)],-1),l(D,{modelValue:U.catalogId,"onUpdate:modelValue":c[2]||=e=>U.catalogId=e,block:``,"aria-label":`انتخاب کالیته`,placeholder:`انتخاب کالیته`,options:nt.value},null,8,[`modelValue`,`options`])]),g(`div`,De,[g(`div`,Oe,[c[22]||=g(`label`,{for:`product-name`},[b(`نام محصول `),g(`span`,{class:`admin-form__required`},`*`)],-1),i(g(`input`,{id:`product-name`,"onUpdate:modelValue":c[3]||=e=>U.name=e,type:`text`,class:`admin-input`},null,512),[[C,U.name]])]),g(`div`,ke,[c[23]||=g(`label`,{for:`product-color`},`رنگ / نوع`,-1),i(g(`input`,{id:`product-color`,"onUpdate:modelValue":c[4]||=e=>U.color=e,type:`text`,class:`admin-input`},null,512),[[C,U.color]])])]),g(`div`,Ae,[c[24]||=g(`label`,{for:`product-code`},`کد محصول`,-1),i(g(`input`,{id:`product-code`,"onUpdate:modelValue":c[5]||=e=>U.productCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[C,U.productCode]])]),g(`div`,je,[g(`div`,Me,[c[25]||=g(`label`,{for:`product-min`},`حداقل متراژ`,-1),i(g(`input`,{id:`product-min`,"onUpdate:modelValue":c[6]||=e=>U.minMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[C,U.minMeterage,void 0,{number:!0}]])]),g(`div`,Ne,[c[26]||=g(`label`,{for:`product-step`},`ضریب سفارش`,-1),i(g(`input`,{id:`product-step`,"onUpdate:modelValue":c[7]||=e=>U.orderStep=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[C,U.orderStep,void 0,{number:!0}]])])]),g(`div`,Pe,[g(`div`,Fe,[c[27]||=g(`label`,{for:`product-price`},`قیمت (تومان)`,-1),l(le,{id:`product-price`,modelValue:U.price,"onUpdate:modelValue":c[8]||=e=>U.price=e},null,8,[`modelValue`])]),g(`div`,Ie,[c[28]||=g(`label`,{for:`product-stock`},`موجودی داخلی (متر)`,-1),i(g(`input`,{id:`product-stock`,"onUpdate:modelValue":c[9]||=e=>U.internalStock=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[C,U.internalStock,void 0,{number:!0}]])])]),g(`div`,Le,[g(`div`,Re,[c[30]||=g(`label`,{for:`product-usage`},`کاربرد`,-1),i(g(`select`,{id:`product-usage`,"onUpdate:modelValue":c[10]||=e=>U.usageCategory=e,class:`admin-input`},[...c[29]||=[g(`option`,{value:`trousers`},`شلوار`,-1),g(`option`,{value:`suit`},`کت‌وشلوار`,-1),g(`option`,{value:`shirt`},`پیراهن`,-1),g(`option`,{value:`other`},`سایر`,-1)]],512),[[x,U.usageCategory]])]),g(`div`,ze,[c[32]||=g(`label`,{for:`product-season`},`فصل`,-1),i(g(`select`,{id:`product-season`,"onUpdate:modelValue":c[11]||=e=>U.season=e,class:`admin-input`},[...c[31]||=[g(`option`,{value:`summer`},`تابستان`,-1),g(`option`,{value:`winter`},`زمستان`,-1),g(`option`,{value:`all_season`},`چهارفصل`,-1)]],512),[[x,U.season]])])]),g(`div`,Be,[g(`div`,Ve,[c[33]||=g(`label`,{for:`product-composition`},`جنس / ترکیب`,-1),i(g(`input`,{id:`product-composition`,"onUpdate:modelValue":c[12]||=e=>U.composition=e,type:`text`,class:`admin-input`},null,512),[[C,U.composition]])]),g(`div`,He,[c[34]||=g(`label`,{for:`product-weave`},`نوع بافت`,-1),i(g(`input`,{id:`product-weave`,"onUpdate:modelValue":c[13]||=e=>U.weaveType=e,type:`text`,class:`admin-input`},null,512),[[C,U.weaveType]])])]),g(`div`,Ue,[g(`div`,We,[c[35]||=g(`label`,{for:`product-subtitle`},`زیرعنوان`,-1),i(g(`input`,{id:`product-subtitle`,"onUpdate:modelValue":c[14]||=e=>U.subtitle=e,type:`text`,class:`admin-input`},null,512),[[C,U.subtitle]])]),g(`div`,Ge,[c[36]||=g(`label`,{for:`product-roll`},`متراژ طاقه`,-1),i(g(`input`,{id:`product-roll`,"onUpdate:modelValue":c[15]||=e=>U.rollMeters=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[C,U.rollMeters,void 0,{number:!0}]])])]),g(`div`,Ke,[c[37]||=g(`label`,{for:`product-colors`},`رنگ‌ها (با ویرگول)`,-1),i(g(`input`,{id:`product-colors`,"onUpdate:modelValue":c[16]||=e=>U.colorsText=e,type:`text`,class:`admin-input`,placeholder:`مثلاً: سرمه‌ای، خاکستری، بژ`},null,512),[[C,U.colorsText]])]),g(`div`,qe,[c[38]||=g(`label`,null,`تصاویر محصول`,-1),g(`div`,Je,[(o(!0),f(u,null,r(U.imageUrls,(e,t)=>(o(),f(`div`,{key:`${t}-${e.slice(0,24)}`,class:`product-images__item`},[g(`span`,{class:`product-images__thumb`,style:a({backgroundImage:`url(${e})`})},null,4),g(`button`,{type:`button`,class:`product-images__remove`,onClick:e=>ct(t)},` حذف `,8,Ye)]))),128)),g(`label`,Xe,[g(`input`,{type:`file`,accept:`image/*`,multiple:``,hidden:``,disabled:X.value,onChange:st},null,40,Ze),b(` `+s(X.value?`...`:`+ افزودن تصویر`),1)])])]),g(`div`,Qe,[l(E,{modelValue:U.isNew,"onUpdate:modelValue":c[17]||=e=>U.isNew=e,label:`محصول جدید`},null,8,[`modelValue`])]),g(`div`,$e,[l(E,{modelValue:U.isActive,"onUpdate:modelValue":c[18]||=e=>U.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-89b21e26`]]);export{N as default};