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