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
3.2 KiB
JavaScript
1 line
3.2 KiB
JavaScript
import{Ct as e,D as t,G as n,J as r,N as i,Q as a,R as o,S as s,V as c,X as l,Z as u,dt as d,et as f,g as p,gt as m,ht as h,it as g,lt as _,nt as v,rt as y,st as b,vt as x,yt as S,z as C}from"./index-B2VD3zy8.js";import{t as w}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as T}from"./BaseEmptyState-DGu6Pfui.js";import{t as E}from"./AdminSelect-BeLNl2Qz.js";var D={class:`admin-page`},O={class:`admin-page__head`},k={key:2,class:`admin-table`},A={class:`muted`,dir:`ltr`},j=[`onClick`],M={class:`field`},N={class:`field`},P={class:`field`},F=[`disabled`],I=c(g({__name:`SuggestionsView`,setup(c){let g=S([]),I=S(!0),L=S([]),R=S([]),z=S(!1),B=C(),V=x({customerId:``,productId:``,note:``}),H=l(()=>L.value.map(e=>({value:e.id,label:e.name?.trim()||e.phone}))),U=l(()=>R.value.map(e=>({value:e.id,label:`${e.name} (${e.productCode})`})));async function W(){I.value=!0;try{let[e,n,r]=await Promise.all([t.list(),p.list(),s.list()]);g.value=e,L.value=n,R.value=r}catch(e){B.error(e instanceof i?e.message:`بارگذاری ناموفق بود`)}finally{I.value=!1}}async function G(){try{await t.create({customerId:V.customerId,productId:V.productId,note:V.note.trim()||void 0}),z.value=!1,V.note=``,B.success(`پیشنهاد ثبت شد`),await W()}catch(e){B.error(e instanceof i?e.message:`ثبت ناموفق بود`)}}async function K(e){try{await t.setActive(e.id,!e.isActive),await W()}catch(e){B.error(e instanceof i?e.message:`بهروزرسانی ناموفق بود`)}}return b(()=>{W()}),(t,i)=>(_(),f(`div`,D,[u(`header`,O,[i[5]||=u(`div`,null,[u(`h1`,null,`پیشنهاد محصول`),u(`p`,null,`پیشنهاد دستی محصول به مشتری`)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:i[0]||=e=>z.value=!0},`پیشنهاد جدید`)]),I.value?(_(),a(w,{key:0,variant:`table`})):g.value.length?(_(),f(`table`,k,[i[6]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`مشتری`),u(`th`,null,`محصول`),u(`th`,null,`یادداشت`),u(`th`,null,`وضعیت`),u(`th`)])],-1),u(`tbody`,null,[(_(!0),f(r,null,d(g.value,t=>(_(),f(`tr`,{key:t.id},[u(`td`,null,e(t.customerName),1),u(`td`,null,[v(e(t.productName)+` `,1),u(`span`,A,`(`+e(t.productCode)+`)`,1)]),u(`td`,null,e(t.note||`—`),1),u(`td`,null,e(t.isActive?`فعال`:`غیرفعال`),1),u(`td`,null,[u(`button`,{type:`button`,class:`link`,onClick:e=>K(t)},e(t.isActive?`غیرفعال`:`فعال`),9,j)])]))),128))])])):(_(),a(T,{key:1,title:`پیشنهادی ثبت نشده`})),y(o,{open:z.value,title:`پیشنهاد محصول`,onClose:i[4]||=e=>z.value=!1},{footer:h(()=>[u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!V.customerId||!V.productId,onClick:G},` ثبت `,8,F)]),default:h(()=>[u(`label`,M,[i[7]||=v(`مشتری `,-1),y(E,{modelValue:V.customerId,"onUpdate:modelValue":i[1]||=e=>V.customerId=e,options:H.value},null,8,[`modelValue`,`options`])]),u(`label`,N,[i[8]||=v(`محصول `,-1),y(E,{modelValue:V.productId,"onUpdate:modelValue":i[2]||=e=>V.productId=e,options:U.value},null,8,[`modelValue`,`options`])]),u(`label`,P,[i[9]||=v(`یادداشت`,-1),m(u(`textarea`,{"onUpdate:modelValue":i[3]||=e=>V.note=e,class:`admin-input`,rows:`3`},null,512),[[n,V.note]])])]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-56e3e728`]]);export{I as default}; |