Files
nademitex_admin/dist/assets/CompaniesView-CFgjGQke.js
T
mohmdsdgandCopilot 9854842ada fix(auth): secure sessions and app routing
Validate sessions against the API, honor configurable base paths, and route unknown pages to 404. Keep development ports stable so user and admin apps cannot be confused.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-24 20:14:11 +03:30

1 line
9.2 KiB
JavaScript

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