1 line
9.2 KiB
JavaScript
1 line
9.2 KiB
JavaScript
import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as ee,c as o,d as s,g as te,h as c,k as l,l as u,m as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as g,m as re,t as _}from"./http-BjLkjdQu.js";import{B as ie,H as ae,V as oe,k as se,v}from"./index-BzcByePp.js";import{t as ce}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as le}from"./BaseSwitch-pJwnFBVo.js";import{t as ue}from"./BaseEmptyState-B7aEMvHg.js";import{t as y}from"./ActiveSwitchCell-Mj6U4GtB.js";var de={class:`companies-page`},fe={key:2,class:`companies-page__table admin-card desktop-only`},pe={class:`admin-table-wrap`},me={class:`admin-table`},he=[`src`,`alt`],ge={key:1,class:`company-logo company-logo--fallback`},_e={class:`numeric`},ve={class:`status`},ye={class:`actions`},be={class:`admin-action-group`},xe=[`onClick`],b=[`onClick`],x={key:3,class:`compact-only admin-card-list`},S={class:`admin-card-item__header`},C={class:`companies-page__card-logo`},w=[`src`,`alt`],T={key:1,class:`company-logo company-logo--fallback`},E={class:`admin-card-item__title`},D={class:`companies-page__card-desc`},O={class:`admin-card-item__meta`},k={class:`admin-card-item__actions`},A=[`onClick`],j=[`onClick`],M={key:0,class:`admin-form__error`,role:`alert`},Se={class:`admin-form__field`},Ce={class:`logo-upload`},we={key:0,class:`logo-upload__preview-wrap`},Te=[`src`],Ee={key:1,class:`logo-upload__dropzone`,for:`company-logo-file`},De={class:`admin-form__field`},Oe={class:`admin-form__field`},ke={class:`admin-form__row`},Ae={class:`admin-form__field`},je={class:`admin-form__field`},Me=[`disabled`],Ne=2097152,N=m(te({__name:`CompaniesView`,setup(te){let m=[`image/png`,`image/jpeg`,`image/webp`,`image/svg+xml`],N=ie(),P=ne(),F=e([]),I=e(!0),L=e(null),R=e(null),z=e(null),B=e(null),V=e(!1);async function Pe(){I.value=!0;try{F.value=await v.list()}catch(e){P.error(e instanceof _?e.message:`بارگذاری شرکتها انجام نشد.`)}finally{I.value=!1}}n(()=>{Pe()});let H=()=>({name:``,description:``,displayOrder:F.value.length+1,isActive:!0}),U=ee(H()),W=e(``),Fe=p(()=>L.value!==null),Ie=p(()=>L.value===`edit`?`ویرایش شرکت`:`افزودن شرکت`),Le=p(()=>L.value===`edit`?`ذخیره تغییرات`:`ثبت شرکت`),Re=p(()=>U.name.trim().length>0&&z.value!==null);function G(){z.value=null,B.value&&(B.value.value=``)}function K(){L.value=`add`,R.value=null,Object.assign(U,H()),G(),W.value=``}function q(e){L.value=`edit`,R.value=e.id,U.name=e.name,U.description=e.description===`—`?``:e.description,U.displayOrder=e.displayOrder,U.isActive=e.isActive,z.value=e.logoUrl,B.value&&(B.value.value=``),W.value=``}function J(){L.value=null,R.value=null,W.value=``,G()}function ze(e){let t=e.target.files?.[0];if(!t)return;if(!m.includes(t.type)){W.value=`فرمت مجاز: PNG، JPG، WEBP یا SVG`;return}if(t.size>Ne){W.value=`حداکثر حجم تصویر ۲ مگابایت است.`;return}W.value=``;let n=new FileReader;n.onload=()=>{z.value=n.result},n.readAsDataURL(t)}async function Y(){z.value&&await oe({title:`حذف تصویر`,message:`آیا از حذف لوگوی شرکت مطمئن هستید؟`,confirmLabel:`حذف`,cancelLabel:`انصراف`,tone:`danger`})&&G()}async function X(){let e=U.name.trim();if(!e){W.value=`نام شرکت الزامی است.`;return}if(!z.value){W.value=`آپلود لوگو الزامی است.`;return}if(F.value.some(t=>t.name===e&&t.id!==R.value)){W.value=`شرکتی با این نام قبلاً ثبت شده است.`;return}V.value=!0;try{if(L.value===`edit`&&R.value){let t=await v.update(R.value,{name:e,description:U.description.trim()||void 0,displayOrder:Number(U.displayOrder)||1,isActive:U.isActive,logoUrl:z.value}),n=F.value.findIndex(e=>e.id===R.value);n!==-1&&(F.value[n]={...F.value[n],...t}),P.success(`اطلاعات شرکت بهروزرسانی شد.`)}else{let t=await v.create({name:e,slug:se(e),description:U.description.trim()||void 0,displayOrder:Number(U.displayOrder)||F.value.length+1,isActive:U.isActive,logoUrl:z.value});F.value.push(t),P.success(`شرکت جدید ثبت شد.`)}J()}catch(e){P.error(e instanceof _?e.message:`ذخیره شرکت انجام نشد.`)}finally{V.value=!1}}async function Z(e,t){await v.setActive(e,t)}function Q(e){N.push(`/companies/${e}/accounts`)}function $(e){return e.trim().charAt(0)||`؟`}return(e,n)=>(l(),s(`div`,de,[o(`div`,{class:`admin-page-header`},[n[5]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`مدیریت شرکتها`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:K},` افزودن شرکت `)]),I.value?(l(),u(ce,{key:0,variant:`table`})):F.value.length?(l(),s(`div`,fe,[o(`div`,pe,[o(`table`,me,[n[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`لوگو`),o(`th`,{class:`numeric`},`ترتیب`),o(`th`,{class:`status`},`وضعیت`),o(`th`,null,`توضیحات`),o(`th`,null,`نام شرکت`),o(`th`,{class:`actions`},`عملیات`)])],-1),o(`tbody`,null,[(l(!0),s(f,null,i(F.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,[e.logoUrl?(l(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,he)):(l(),s(`div`,ge,t($(e.name)),1))]),o(`td`,_e,t(e.displayOrder),1),o(`td`,ve,[c(y,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`شرکت`,persist:Z},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,t(e.description),1),o(`td`,null,t(e.name),1),o(`td`,ye,[o(`div`,be,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>q(e)},` ویرایش `,8,xe),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e.id)},` حسابها `,8,b)])])]))),128))])])])])):(l(),u(ue,{key:1,class:`admin-card`,icon:`companies`,title:`شرکتی ثبت نشده`,description:`برای شروع، اولین شرکت را ثبت کنید.`},{default:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:K},` افزودن شرکت `)]),_:1})),!I.value&&F.value.length?(l(),s(`div`,x,[(l(!0),s(f,null,i(F.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,S,[o(`div`,C,[e.logoUrl?(l(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,w)):(l(),s(`div`,T,t($(e.name)),1)),o(`div`,null,[o(`p`,E,t(e.name),1),o(`p`,D,t(e.description),1)])]),c(y,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`شرکت`,persist:Z},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,`ترتیب: `+t(e.displayOrder),1)]),o(`div`,k,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>q(e)},` ویرایش `,8,A),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e.id)},` حسابها `,8,j)])]))),128))])):h(``,!0),c(ae,{open:Fe.value,title:Ie.value,onClose:J},{footer:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:J},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Re.value||V.value,onClick:X},t(Le.value),9,Me)]),default:r(()=>[o(`form`,{class:`admin-form`,onSubmit:re(X,[`prevent`])},[W.value?(l(),s(`p`,M,t(W.value),1)):h(``,!0),o(`div`,Se,[n[8]||=o(`label`,null,[d(`لوگو `),o(`span`,{class:`admin-form__required`},`*`)],-1),o(`div`,Ce,[z.value?(l(),s(`div`,we,[o(`img`,{src:z.value,alt:`پیشنمایش لوگو`,class:`logo-upload__preview`},null,8,Te),o(`button`,{type:`button`,class:`logo-upload__remove`,onClick:Y},` حذف تصویر `)])):(l(),s(`label`,Ee,[...n[7]||=[o(`span`,{class:`logo-upload__icon`},`+`,-1),o(`span`,{class:`logo-upload__text`},`انتخاب یا رها کردن تصویر لوگو`,-1),o(`span`,{class:`logo-upload__hint`},`PNG، JPG، WEBP یا SVG — حداکثر ۲ مگابایت`,-1)]])),o(`input`,{id:`company-logo-file`,ref_key:`logoInputRef`,ref:B,type:`file`,accept:`image/png,image/jpeg,image/webp,image/svg+xml`,class:`logo-upload__input`,onChange:ze},null,544),z.value?(l(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm logo-upload__change`,onClick:n[0]||=e=>B.value?.click()},` تغییر تصویر `)):h(``,!0)])]),o(`div`,De,[n[9]||=o(`label`,{for:`company-name`},[d(`نام شرکت `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`company-name`,"onUpdate:modelValue":n[1]||=e=>U.name=e,type:`text`,class:`admin-input`,placeholder:`مثال: شرکت پَر`,autocomplete:`off`},null,512),[[g,U.name]])]),o(`div`,Oe,[n[10]||=o(`label`,{for:`company-description`},`توضیحات`,-1),a(o(`textarea`,{id:`company-description`,"onUpdate:modelValue":n[2]||=e=>U.description=e,class:`admin-form__textarea`,placeholder:`تولید و عرضه انواع پارچه`,rows:`3`},null,512),[[g,U.description]])]),o(`div`,ke,[o(`div`,Ae,[n[11]||=o(`label`,{for:`company-order`},`ترتیب نمایش`,-1),a(o(`input`,{id:`company-order`,"onUpdate:modelValue":n[3]||=e=>U.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[g,U.displayOrder,void 0,{number:!0}]])]),o(`div`,je,[c(le,{modelValue:U.isActive,"onUpdate:modelValue":n[4]||=e=>U.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-b4857c22`]]);export{N as default}; |