Files
nademitex_admin/dist/assets/UsersView-By1IH79j.js
T
2026-09-30 09:53:30 +03:30

1 line
7.4 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,st as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as _,m as re,t as v}from"./http-BjLkjdQu.js";import{H as ie,R as ae,o as oe,u as y}from"./index-BzcByePp.js";import{t as se}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as b}from"./BaseSwitch-pJwnFBVo.js";import{t as ce}from"./BaseEmptyState-B7aEMvHg.js";import{t as le}from"./AdminSelect-8XDtPu3U.js";import{o as x}from"./adminLabels-Cz9ccm1Z.js";import{t as S}from"./ActiveSwitchCell-Mj6U4GtB.js";var ue={class:`users-page`},de={class:`users-page__search admin-card`},fe={key:2,class:`users-page__table admin-card desktop-only`},pe={class:`admin-table-wrap`},me={class:`admin-table`},he={dir:`ltr`},ge={class:`status`},C={class:`actions`},w=[`onClick`],T={key:3,class:`compact-only admin-card-list`},E={class:`admin-card-item__header`},D={class:`admin-card-item__title`},O={class:`admin-card-item__meta`},k={dir:`ltr`},A={class:`admin-card-item__actions`},j=[`onClick`],M={key:0,class:`admin-form__error`,role:`alert`},N={class:`admin-form__field`},P={class:`admin-form__row`},F={class:`admin-form__field`},I={class:`admin-form__field`},L={class:`admin-form__field`},_e={class:`admin-form__field`},ve=[`disabled`],ye={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},R=h(te({__name:`UsersView`,setup(te){let h=e([]),R=e(``),z=e(!0),B=e(null),V=e(null),H=e(``),U=e(!1),W=ne(),be=[{value:`admin`,label:`مدیر سیستم`},{value:`sales`,label:`واحد فروش`},{value:`finance`,label:`واحد مالی`},{value:`warehouse`,label:`انبار`}],G=()=>({fullName:``,phone:``,email:``,role:`sales`,isActive:!0}),K=ee(G()),xe=p(()=>B.value!==null),Se=p(()=>B.value===`edit`?`ویرایش کاربر`:`افزودن کاربر`),q=p(()=>K.fullName.trim()&&K.phone.trim()),J=p(()=>{let e=R.value.trim();return e?h.value.filter(t=>t.fullName.includes(e)||t.phone.includes(e)||t.email.includes(e)||x[t.role].includes(e)):h.value});async function Ce(){z.value=!0;try{h.value=await y.list()}catch(e){W.error(e instanceof v?e.message:`بارگذاری کاربران انجام نشد.`)}finally{z.value=!1}}n(()=>{Ce()});function Y(){B.value=`add`,V.value=null,Object.assign(K,G()),H.value=``}function X(e){B.value=`edit`,V.value=e.id,K.fullName=e.fullName,K.phone=e.phone,K.email=e.email,K.role=e.role,K.isActive=e.isActive,H.value=``}function Z(){B.value=null,V.value=null,H.value=``}async function Q(){if(!q.value){H.value=`نام و تلفن الزامی هستند.`;return}U.value=!0;let e={fullName:K.fullName.trim(),phone:K.phone.trim(),email:K.email.trim()||void 0,role:K.role,isActive:K.isActive};try{if(B.value===`edit`&&V.value){let t=await y.update(V.value,e),n=h.value.findIndex(e=>e.id===V.value);n!==-1&&(h.value[n]={...h.value[n],...t})}else{let t=await y.create(e);h.value.push(t)}W.success(B.value===`edit`?`اطلاعات کاربر به‌روزرسانی شد.`:`کاربر جدید ثبت شد.`),Z()}catch(e){W.error(e instanceof v?e.message:`ذخیره کاربر انجام نشد.`)}finally{U.value=!1}}async function $(e,t){await y.setActive(e,t)}function we(){R.value=``}return(e,n)=>(l(),s(`div`,ue,[o(`div`,{class:`admin-page-header`},[n[6]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`کاربران و دسترسی‌ها`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن کاربر `)]),o(`div`,de,[c(ae,{name:`search`,size:18}),a(o(`input`,{"onUpdate:modelValue":n[0]||=e=>R.value=e,type:`search`,class:`users-page__search-input`,placeholder:`جستجو در نام، تلفن، ایمیل...`},null,512),[[_,R.value]])]),z.value?(l(),u(se,{key:0,variant:`table`})):J.value.length?(l(),s(`div`,fe,[o(`div`,pe,[o(`table`,me,[n[7]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`نام`),o(`th`,null,`تلفن`),o(`th`,null,`ایمیل`),o(`th`,null,`نقش`),o(`th`,{class:`status`},`وضعیت`),o(`th`,null,`آخرین ورود`),o(`th`,{class:`actions`},`عملیات`)])],-1),o(`tbody`,null,[(l(!0),s(f,null,i(J.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,t(e.fullName),1),o(`td`,null,t(e.phone),1),o(`td`,he,t(e.email),1),o(`td`,null,t(m(x)[e.role]),1),o(`td`,ge,[c(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,t(e.lastLoginAt?m(oe)(e.lastLoginAt):`—`),1),o(`td`,C,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,w)])]))),128))])])])])):(l(),u(ce,{key:1,class:`admin-card`,icon:`users`,title:R.value.trim()?`نتیجه‌ای یافت نشد`:`کاربری ثبت نشده`,description:R.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کاربر را ثبت کنید.`},{default:r(()=>[R.value.trim()?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:we},` پاک کردن جستجو `)):(l(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن کاربر `))]),_:1},8,[`title`,`description`])),!z.value&&J.value.length?(l(),s(`div`,T,[(l(!0),s(f,null,i(J.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,E,[o(`p`,D,t(e.fullName),1),c(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,t(m(x)[e.role]),1),o(`span`,null,t(e.phone),1),o(`span`,k,t(e.email),1)]),o(`div`,A,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,j)])]))),128))])):g(``,!0),c(ie,{open:xe.value,title:Se.value,size:`lg`,onClose:Z},{footer:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!q.value||U.value,onClick:Q},[U.value?(l(),s(`span`,ye)):g(``,!0),d(` `+t(B.value===`edit`?`ذخیره تغییرات`:`ثبت کاربر`),1)],8,ve)]),default:r(()=>[o(`form`,{class:`admin-form`,onSubmit:re(Q,[`prevent`])},[H.value?(l(),s(`p`,M,t(H.value),1)):g(``,!0),o(`div`,N,[n[8]||=o(`label`,{for:`user-name`},[d(`نام کامل `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-name`,"onUpdate:modelValue":n[1]||=e=>K.fullName=e,type:`text`,class:`admin-input`},null,512),[[_,K.fullName]])]),o(`div`,P,[o(`div`,F,[n[9]||=o(`label`,{for:`user-phone`},[d(`تلفن `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-phone`,"onUpdate:modelValue":n[2]||=e=>K.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[_,K.phone]])]),o(`div`,I,[n[10]||=o(`label`,{for:`user-email`},`ایمیل`,-1),a(o(`input`,{id:`user-email`,"onUpdate:modelValue":n[3]||=e=>K.email=e,type:`email`,class:`admin-input`,dir:`ltr`},null,512),[[_,K.email]])])]),o(`div`,L,[n[11]||=o(`label`,null,`نقش`,-1),c(le,{modelValue:K.role,"onUpdate:modelValue":n[4]||=e=>K.role=e,block:``,"aria-label":`نقش کاربر`,options:be},null,8,[`modelValue`])]),o(`div`,_e,[c(b,{modelValue:K.isActive,"onUpdate:modelValue":n[5]||=e=>K.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-345a9659`]]);export{R as default};