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>
1 line
9.2 KiB
JavaScript
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}; |