Files
nademitex_admin/dist/assets/OrdersView-D-3A1wX9.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
29 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{$ as e,Ct as t,F as n,G as r,H as i,I as a,J as o,N as s,P as c,Q as l,R as u,S as d,St as f,V as p,X as m,Y as h,Z as g,_t as _,a as v,at as y,bt as b,ct as x,dt as S,et as C,g as w,gt as T,h as E,ht as D,i as O,it as k,k as A,lt as j,mt as M,n as N,nt as P,o as F,ot as I,q as L,rt as R,st as z,tt as B,ut as V,vt as H,x as U,xt as W,y as G,yt as K,z as q}from"./index-B2VD3zy8.js";import{t as J}from"./AdminSelect-BeLNl2Qz.js";import{r as Y}from"./adminLabels-Cz9ccm1Z.js";import{c as X,i as Z,n as Q,o as ee,s as te,t as ne}from"./orderStatus-CYVblRJB.js";import{t as re}from"./StatusBadge-D3ThrLrU.js";function ie(){let e=n(),t=a(),r=q(),i=K([]),o=K([]),c=new Set(Q.map(e=>e.key));function l(){let t=typeof e.query.tab==`string`?e.query.tab:``;return c.has(t)?t:`all`}let u=K([]),d=K(l()),f=K(``),p=K(``),h=K(!1),g=K(!1),_=K(!1),v=K(``),y=K(!1),b=()=>({customerId:``,customerName:``,customerPhone:``,items:[]}),x=H(b()),S=m(()=>x.customerId.length>0&&x.items.length>0),C=m(()=>{let e=[...o.value];return e.sort((e,t)=>Number(t.isActive)-Number(e.isActive)||e.name.localeCompare(t.name,`fa`)),e});function T(e){let t=o.value.find(t=>t.id===e);x.customerId=e,x.customerName=t?.name??``,x.customerPhone=t?.phone??``}async function D(){try{o.value=await w.list()}catch(e){r.error(e instanceof s?e.message:`بارگذاری مشتریان انجام نشد.`)}}let O=m(()=>{let e=u.value;if(d.value!==`all`&&(e=e.filter(e=>e.status===d.value)),p.value.trim()){let t=p.value.trim();e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t))}return e}),k=m(()=>u.value.find(e=>e.id===f.value)??null);function A(e){let t=e.trim();if(t)return u.value.find(e=>e.id===t||e.orderNumber.toUpperCase()===t.toUpperCase())}async function j(){let n=typeof e.query.order==`string`?e.query.order:``;if(!n||!u.value.length)return;let r=A(n);if(!r){p.value=n;return}let i=typeof e.query.focus==`string`?e.query.focus:``;if(i===`pricing`){await t.replace(`/orders/${r.id}/pricing`);return}if(i===`checks`){await t.replace(`/orders/${r.id}/checks`);return}F(r),p.value=r.orderNumber}async function N(){try{let[e,t,n]=await Promise.all([U.list(),E.list(),w.list()]);u.value=e.map(e=>G(e)),i.value=t,o.value=n,await j()}catch(e){r.error(e instanceof s?e.message:`بارگذاری سفارش‌ها انجام نشد.`)}}z(()=>{N()}),M(()=>[e.query.order,e.query.focus],()=>{j()}),M(()=>e.query.tab,()=>{let e=l();d.value!==e&&(d.value=e)}),M(d,n=>{let r=typeof e.query.tab==`string`?e.query.tab:`all`,i=n===`all`?void 0:n;(r===`all`?void 0:r)!==i&&t.replace({query:{...e.query,tab:i}})});function P(e,t=!1){f.value=e.id,t&&(g.value=!0)}function F(e){f.value=e.id,_.value=!0}function I(){g.value=!1}function L(){_.value=!1}function R(e){return e?e===`check`?`چکی`:`نقدی`:`انتخاب‌نشده`}let B=K(!1);async function V(e){if(B.value)return null;B.value=!0;try{let t=await U.updateStatus(e.orderId,{status:e.status,note:e.note,reason:e.reason,force:e.force}),n=G(t),i=u.value.findIndex(t=>t.id===e.orderId);return i>=0&&(u.value[i]={...u.value[i],...n}),r.success(`وضعیت سفارش به «${X(e.status)}» تغییر کرد.`),n}catch(e){return r.error(e instanceof s?e.message:`تغییر وضعیت انجام نشد.`),null}finally{B.value=!1}}function W(e){t.push(`/orders/${e.id}/pricing`)}function J(e){t.push(`/orders/${e.id}/checks`)}function Y(e){t.push({path:`/cash-payments`,query:{order:e.orderNumber}})}function Z(){Object.assign(x,b()),v.value=``,h.value=!0,D()}function ee(){h.value=!1,v.value=``}function te(e){return x.items.some(t=>t.productId===e.productId)?(v.value=`این محصول قبلاً به سفارش اضافه شده است.`,!1):(x.items.push(e),v.value=``,!0)}function ne(e){x.items=x.items.filter(t=>t.productId!==e)}async function re(){if(!S.value){v.value=`انتخاب مشتری و حداقل یک محصول الزامی است.`;return}y.value=!0;try{let e=await U.create({customerId:x.customerId||void 0,userId:x.customerId||void 0,customerName:x.customerName.trim(),customerPhone:x.customerPhone.trim()||void 0,items:x.items.map(e=>({productId:e.productId,meterage:e.meterage}))}),t=G(e);u.value.unshift(t),f.value=t.id,r.success(`سفارش جدید ثبت شد.`),ee()}catch(e){r.error(e instanceof s?e.message:`ثبت سفارش انجام نشد.`)}finally{y.value=!1}}return{companies:i,customers:o,activeCustomers:C,applyCustomer:T,loadCustomers:D,orderList:u,activeTab:d,selectedOrderId:f,searchQuery:p,showAddModal:h,showDetailPanel:g,showDetailModal:_,formError:v,form:x,addFormItem:te,removeFormItem:ne,isFormValid:S,filteredOrders:O,selectedOrder:k,selectOrder:P,openOrderDetail:F,closeDetailPanel:I,closeDetailModal:L,settlementLabel:R,changeStatus:V,statusSaving:B,goPricing:W,goChecks:J,goCashReceipt:Y,openAddModal:Z,closeAddModal:ee,submitAddOrder:re,saving:y}}var ae=Symbol(`orders-page`);function oe(){let e=ie();return V(ae,e),e}function se(){let e=y(ae);if(!e)throw Error(`Orders page context is missing`);return e}var ce={class:`order-detail__hero`},$={class:`order-detail__hero-text`},le={class:`order-detail__id`},ue={key:0,class:`order-detail__raw-status`},de={class:`order-detail__actions no-print`},fe=[`disabled`],pe={class:`order-detail__panels`},me={class:`order-detail__section`},he={class:`order-detail__info`},ge={class:`order-detail__info-row`},_e={class:`order-detail__info-value`},ve={class:`order-detail__info-row`},ye={class:`order-detail__info-value order-detail__info-value--phone`,dir:`ltr`},be={class:`order-detail__info-row`},xe={class:`order-detail__info-value`},Se={class:`order-detail__info-row`},Ce={class:`order-detail__info-value`},we={class:`order-detail__section`},Te={class:`order-detail__info`},Ee={class:`order-detail__info-row`},De={class:`order-detail__info-value`},Oe={class:`order-detail__info-row`},ke={class:`order-detail__info-value`},Ae={class:`order-detail__info-row`},je={class:`order-detail__info-value`},Me={class:`order-detail__info-row`},Ne={class:`order-detail__info-value`},Pe={key:0,class:`order-detail__section`},Fe={key:0,class:`admin-table-wrap order-detail__table`},Ie={class:`admin-table admin-table--compact`},Le={key:1,class:`order-detail__items`},Re={class:`order-detail__item-head`},ze={class:`order-detail__item-meta`},Be={key:0},Ve={key:1},He={key:2,class:`order-detail__item-total`},Ue={class:`order-detail__section order-detail__status no-print`},We={class:`order-detail__status-head`},Ge={class:`order-detail__manual`},Ke={key:0,class:`order-detail__status-hint`},qe={key:1,class:`order-detail__status-hint`},Je={key:2,class:`order-detail__status-form`},Ye={class:`admin-form__field`},Xe={class:`admin-form__field`},Ze={for:`status-note`},Qe=[`disabled`],$e=p(k({__name:`OrderDetailContent`,props:{order:{},settlementLabel:{},layout:{default:`compact`},statusSaving:{type:Boolean}},emits:[`pricing`,`checks`,`cashReceipt`,`finalApprove`,`status`],setup(n,{emit:a}){let s=n,l=a,u=K(!1),d=K(``),f=K(``),p=Object.keys(Z),h=m(()=>s.order.allowedTransitions??[]),_=m(()=>u.value?p.filter(e=>e!==s.order.rawStatus):[...h.value]),y=m(()=>[{value:``,label:`انتخاب کنید…`},..._.value.map(e=>({value:e,label:X(e)}))]),x=m(()=>u.value),w=m(()=>!!d.value&&(!x.value||f.value.trim().length>0)),E=m(()=>s.layout===`desktop`),D=m(()=>ne[s.order.status]?.label??s.order.status),O=m(()=>{let e=X(s.order.rawStatus);return!e||e===D.value?``:e}),k=m(()=>{let e=s.order.customerType;return e?Y[e]??s.order.customerType??`—`:`—`}),A=m(()=>te(s.order)),P=m(()=>ee(s.order)),I=m(()=>s.order.settlementMethod===`check`&&!A.value),L=m(()=>s.order.settlementMethod===`cash`&&!A.value&&s.order.rawStatus!==`cash_confirmed`),z=m(()=>A.value?`pricing`:P.value?`final`:I.value?`checks`:L.value?`cash`:null);M([()=>s.order.id,u],()=>{d.value=``,f.value=``});function B(){if(!d.value||!w.value)return;let e=f.value.trim()||void 0;l(`status`,{orderId:s.order.id,status:d.value,note:e,reason:u.value?e:void 0,force:u.value||void 0}),d.value=``,f.value=``}return(a,s)=>(j(),C(`div`,{class:W([`order-detail`,`order-detail--${n.layout}`])},[g(`header`,ce,[g(`div`,$,[g(`div`,le,[g(`strong`,null,t(n.order.orderNumber),1),R(re,{status:n.order.status},null,8,[`status`])]),O.value?(j(),C(`p`,ue,t(O.value),1)):e(``,!0)]),g(`div`,de,[A.value?(j(),C(`button`,{key:0,type:`button`,class:W([`admin-btn admin-btn--sm`,z.value===`pricing`?`admin-btn--primary`:`admin-btn--outline`]),onClick:s[0]||=e=>l(`pricing`)},` قیمت‌گذاری سفارش `,2)):e(``,!0),I.value?(j(),C(`button`,{key:1,type:`button`,class:W([`admin-btn admin-btn--sm`,z.value===`checks`?`admin-btn--primary`:`admin-btn--outline`]),onClick:s[1]||=e=>l(`checks`)},` مدیریت چک‌ها `,2)):e(``,!0),L.value?(j(),C(`button`,{key:2,type:`button`,class:W([`admin-btn admin-btn--sm`,z.value===`cash`?`admin-btn--primary`:`admin-btn--outline`]),onClick:s[2]||=e=>l(`cashReceipt`)},` رسید پرداخت `,2)):e(``,!0),P.value?(j(),C(`button`,{key:3,type:`button`,class:W([`admin-btn admin-btn--sm`,z.value===`final`?`admin-btn--primary`:`admin-btn--outline`]),disabled:n.statusSaving,onClick:s[3]||=e=>l(`finalApprove`)},` تأیید نهایی `,10,fe)):e(``,!0)])]),g(`div`,pe,[g(`section`,me,[s[11]||=g(`h3`,{class:`order-detail__section-title`},`اطلاعات مشتری`,-1),g(`div`,he,[g(`div`,ge,[R(c,{name:`building`,size:16}),s[7]||=g(`span`,{class:`order-detail__info-label`},`مشتری`,-1),g(`span`,_e,t(n.order.customerName),1)]),g(`div`,ve,[R(c,{name:`phone`,size:16}),s[8]||=g(`span`,{class:`order-detail__info-label`},`تلفن`,-1),g(`span`,ye,t(n.order.customerPhone??`—`),1)]),g(`div`,be,[R(c,{name:`id-card`,size:16}),s[9]||=g(`span`,{class:`order-detail__info-label`},`شناسه ملی`,-1),g(`span`,xe,t(n.order.customerNationalId??`—`),1)]),g(`div`,Se,[R(c,{name:`user`,size:16}),s[10]||=g(`span`,{class:`order-detail__info-label`},`نوع مشتری`,-1),g(`span`,Ce,t(k.value),1)])])]),g(`section`,we,[s[16]||=g(`h3`,{class:`order-detail__section-title`},`اطلاعات سفارش`,-1),g(`div`,Te,[g(`div`,Ee,[s[12]||=g(`span`,{class:`order-detail__info-label`},`شرکت`,-1),g(`span`,De,t(n.order.companyName),1)]),g(`div`,Oe,[s[13]||=g(`span`,{class:`order-detail__info-label`},`روش تسویه`,-1),g(`span`,ke,t(n.settlementLabel(n.order.settlementMethod)),1)]),g(`div`,Ae,[s[14]||=g(`span`,{class:`order-detail__info-label`},`متراژ کل`,-1),g(`span`,je,t(b(v)(n.order.meterage)),1)]),g(`div`,Me,[s[15]||=g(`span`,{class:`order-detail__info-label`},`مبلغ کل`,-1),g(`span`,Ne,t(n.order.totalAmount==null?`پس از قیمت‌گذاری`:b(N)(n.order.totalAmount)),1)])])])]),n.order.items?.length?(j(),C(`section`,Pe,[s[18]||=g(`h3`,{class:`order-detail__section-title`},`محصولات سفارش`,-1),E.value?(j(),C(`div`,Fe,[g(`table`,Ie,[s[17]||=g(`thead`,null,[g(`tr`,null,[g(`th`,null,`شرکت`),g(`th`,null,`کالیته`),g(`th`,null,`محصول`),g(`th`,null,`رنگ`),g(`th`,null,`متراژ`),g(`th`,null,`قیمت`),g(`th`,null,`مبلغ`)])],-1),g(`tbody`,null,[(j(!0),C(o,null,S(n.order.items,e=>(j(),C(`tr`,{key:e.id},[g(`td`,null,t(e.companyName||n.order.companyName),1),g(`td`,null,t(e.catalogCode),1),g(`td`,null,t(e.productName),1),g(`td`,null,t(e.color),1),g(`td`,null,t(b(F)(e.confirmedMeterage??e.requestedMeterage)),1),g(`td`,null,t(e.supplyPrice==null?`—`:b(N)(e.supplyPrice)),1),g(`td`,null,t(e.totalAmount==null?`—`:b(N)(e.totalAmount)),1)]))),128))])])])):(j(),C(`ul`,Le,[(j(!0),C(o,null,S(n.order.items,n=>(j(),C(`li`,{key:n.id,class:`order-detail__item`},[g(`div`,Re,[g(`strong`,null,t(n.productName),1),g(`span`,null,t(n.catalogCode),1)]),g(`div`,ze,[n.companyName?(j(),C(`span`,Be,t(n.companyName),1)):e(``,!0),g(`span`,null,t(n.color),1),g(`span`,null,t(b(v)(n.confirmedMeterage??n.requestedMeterage)),1),n.supplyPrice==null?e(``,!0):(j(),C(`span`,Ve,t(b(N)(n.supplyPrice)),1)),n.totalAmount==null?e(``,!0):(j(),C(`span`,He,t(b(N)(n.totalAmount)),1))])]))),128))]))])):e(``,!0),g(`section`,Ue,[g(`div`,We,[s[20]||=g(`h3`,{class:`order-detail__section-title`},`تغییر وضعیت`,-1),g(`label`,Ge,[T(g(`input`,{"onUpdate:modelValue":s[4]||=e=>u.value=e,type:`checkbox`},null,512),[[i,u.value]]),s[19]||=g(`span`,null,`تغییر دستی`,-1)])]),u.value?(j(),C(`p`,Ke,` این گذر خارج از روال استاندارد است؛ ثبت یادداشت اجباری است. `)):_.value.length?e(``,!0):(j(),C(`p`,qe,` در این وضعیت گذر خودکاری وجود ندارد. برای تغییر، حالت دستی را فعال کنید. `)),_.value.length?(j(),C(`div`,Je,[g(`div`,Ye,[s[21]||=g(`label`,null,`وضعیت بعدی`,-1),R(J,{modelValue:d.value,"onUpdate:modelValue":s[5]||=e=>d.value=e,block:``,"aria-label":`وضعیت بعدی`,placeholder:`انتخاب کنید…`,options:y.value},null,8,[`modelValue`,`options`])]),g(`div`,Xe,[g(`label`,Ze,` یادداشت`+t(x.value?` (اجباری)`:` (اختیاری)`),1),T(g(`input`,{id:`status-note`,"onUpdate:modelValue":s[6]||=e=>f.value=e,type:`text`,class:`admin-input`,placeholder:`دلیل یا توضیح این تغییر`},null,512),[[r,f.value]])]),g(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!w.value||n.statusSaving,onClick:B},t(n.statusSaving?`در حال ثبت…`:`ثبت وضعیت`),9,Qe)])):e(``,!0)])],2))}}),[[`__scopeId`,`data-v-bfe77a62`]]),et={class:`orders-page`},tt={class:`orders-page__list-panel admin-card`},nt={class:`orders-page__list-header`},rt={class:`orders-page__list-actions`},it={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},at={class:`orders-page__search`},ot={class:`admin-tabs`},st=[`onClick`],ct={class:`admin-table-wrap`},lt={class:`admin-table admin-table--compact`},ut=[`onClick`],dt={class:`orders-page__actions-cell`},ft=[`aria-expanded`,`onClick`],pt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},mt=p(k({__name:`DesktopOrdersPage`,setup(n){let i=A(`(min-width: 1280px)`),{activeTab:a,selectedOrderId:s,searchQuery:d,filteredOrders:p,selectedOrder:m,showDetailModal:y,openOrderDetail:w,closeDetailModal:E,settlementLabel:k,goPricing:M,goChecks:F,goCashReceipt:V,changeStatus:H,statusSaving:U,openAddModal:G}=se(),q=K(null),J=K({});function Y(){q.value=null}async function X(e,t){if(t.stopPropagation(),q.value?.id===e.id){Y();return}let n=t.currentTarget.getBoundingClientRect();q.value=e,await I();let r=Math.min(Math.max(8,n.right-168),window.innerWidth-168-8);J.value={position:`fixed`,top:`${n.bottom+4}px`,left:`${r}px`,width:`168px`}}function Z(){Y()}z(()=>{document.addEventListener(`click`,Z),window.addEventListener(`scroll`,Y,!0),window.addEventListener(`resize`,Y)}),x(()=>{document.removeEventListener(`click`,Z),window.removeEventListener(`scroll`,Y,!0),window.removeEventListener(`resize`,Y)});function ne(){m.value&&(E(),M(m.value))}function ie(){m.value&&(E(),F(m.value))}function ae(){m.value&&(E(),V(m.value))}function oe(){m.value&&H({orderId:m.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}function ce(){if(!m.value)return;document.documentElement.classList.add(`printing-order-detail`);let e=()=>{document.documentElement.classList.remove(`printing-order-detail`),window.removeEventListener(`afterprint`,e)};window.addEventListener(`afterprint`,e),window.setTimeout(e,6e4),window.print()}function $(e){let t=q.value;if(t){if(Y(),e===`detail`){w(t);return}if(e===`pricing`){M(t);return}if(e===`checks`){F(t);return}if(e===`final`){H({orderId:t.id,status:`final_approved`,note:`تأیید نهایی سفارش`});return}V(t)}}return(n,x)=>(j(),C(`div`,et,[g(`div`,tt,[g(`div`,nt,[x[9]||=g(`div`,null,[g(`h2`,{class:`orders-page__list-title`},`سفارش‌ها`)],-1),g(`div`,rt,[g(`button`,it,[R(c,{name:`filter`,size:16}),x[8]||=P(` فیلتر `,-1)]),g(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>b(G)&&b(G)(...e)},` سفارش جدید `)])]),g(`div`,at,[R(c,{name:`search`,size:18}),T(g(`input`,{"onUpdate:modelValue":x[1]||=e=>_(d)?d.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[r,b(d)]])]),g(`div`,ot,[(j(!0),C(o,null,S(b(Q),n=>(j(),C(`button`,{key:n.key,type:`button`,class:W([`admin-tab`,{active:b(a)===n.key}]),onClick:e=>a.value=n.key},[P(t(n.label)+` `,1),`count`in n&&n.count?(j(),C(o,{key:0},[P(` (`+t(n.count)+`)`,1)],64)):e(``,!0)],10,st))),128))]),g(`div`,ct,[g(`table`,lt,[x[10]||=g(`thead`,null,[g(`tr`,null,[g(`th`,null,`شماره سفارش`),g(`th`,null,`مشتری`),g(`th`,null,`روش تسویه`),g(`th`,null,`مبلغ کل`),g(`th`,null,`متراژ`),g(`th`,null,`وضعیت`),g(`th`,null,`تاریخ ثبت`),g(`th`,null,`عملیات`)])],-1),g(`tbody`,null,[(j(!0),C(o,null,S(b(p),e=>(j(),C(`tr`,{key:e.id,class:W({"is-selected":b(s)===e.id}),onClick:t=>b(w)(e)},[g(`td`,null,t(e.orderNumber),1),g(`td`,null,t(e.customerName),1),g(`td`,null,t(b(k)(e.settlementMethod)),1),g(`td`,null,t(e.totalAmount?b(N)(e.totalAmount):`—`),1),g(`td`,null,t(b(v)(e.meterage)),1),g(`td`,null,[R(re,{status:e.status},null,8,[`status`])]),g(`td`,null,t(b(O)(e.createdAt)),1),g(`td`,dt,[g(`button`,{type:`button`,class:`orders-page__more-btn`,"aria-expanded":q.value?.id===e.id,"aria-haspopup":`menu`,"aria-label":`عملیات سفارش`,onClick:t=>X(e,t)},[R(c,{name:`more`,size:18})],8,ft)])],10,ut))),128))])])]),x[11]||=B(`<div class="admin-pagination" data-v-cfed03e1><span data-v-cfed03e1>نمایش ۱ تا ۷ از ۱۰۳ سفارش</span><div class="admin-pagination__pages" data-v-cfed03e1><button type="button" class="admin-pagination__page active" data-v-cfed03e1>۱</button><button type="button" class="admin-pagination__page" data-v-cfed03e1>۲</button><button type="button" class="admin-pagination__page" data-v-cfed03e1>۳</button><span data-v-cfed03e1>...</span><button type="button" class="admin-pagination__page" data-v-cfed03e1>۱۲</button></div></div>`,1)]),(j(),l(h,{to:`body`},[q.value?(j(),C(`div`,{key:0,class:`orders-page__menu`,role:`menu`,style:f(J.value),onClick:x[7]||=L(()=>{},[`stop`])},[g(`button`,{type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:x[2]||=e=>$(`detail`)},` جزئیات سفارش `),q.value&&b(te)(q.value)?(j(),C(`button`,{key:0,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:x[3]||=e=>$(`pricing`)},` قیمت‌گذاری `)):e(``,!0),q.value.settlementMethod===`check`?(j(),C(`button`,{key:1,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:x[4]||=e=>$(`checks`)},` مدیریت چک‌ها `)):e(``,!0),q.value.settlementMethod===`cash`&&q.value.rawStatus!==`cash_confirmed`?(j(),C(`button`,{key:2,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:x[5]||=e=>$(`cash`)},` رسید پرداخت `)):e(``,!0),b(ee)(q.value)?(j(),C(`button`,{key:3,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:x[6]||=e=>$(`final`)},` تأیید نهایی `)):e(``,!0)],4)):e(``,!0)])),R(u,{open:b(i)&&b(y)&&!!b(m),title:`جزئیات سفارش`,size:`xl`,onClose:b(E)},{footer:D(()=>[g(`button`,pt,[R(c,{name:`sms`,size:16}),x[12]||=P(` ارسال پیامک `,-1)]),g(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:ce},[R(c,{name:`print`,size:16}),x[13]||=P(` چاپ `,-1)])]),default:D(()=>[b(m)?(j(),l($e,{key:0,order:b(m),layout:`desktop`,"settlement-label":b(k),"status-saving":b(U),onPricing:ne,onChecks:ie,onCashReceipt:ae,onFinalApprove:oe,onStatus:b(H)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):e(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-cfed03e1`]]),ht={class:`compact-orders`},gt={class:`compact-page-header`},_t={class:`compact-page-header__row`},vt={class:`compact-page-header__actions`},yt={key:0,class:`compact-orders__filter-dot`,"aria-hidden":`true`},bt={class:`orders-page__search admin-card`},xt={key:0,class:`compact-orders__filter-chip admin-card`},St={key:1,class:`admin-tabs compact-orders__tabs`},Ct=[`onClick`],wt={class:`compact-orders__filter-form`,role:`listbox`,"aria-label":`وضعیت سفارش`},Tt=[`aria-selected`,`onClick`],Et={key:0,class:`compact-orders__filter-check`,"aria-hidden":`true`},Dt={class:`admin-card-list`},Ot=[`onClick`],kt={class:`admin-card-item__header`},At={class:`admin-card-item__title`},jt={class:`admin-card-item__meta`},Mt={key:0,class:`admin-detail-panel__inner`},Nt={class:`admin-detail-panel__header`},Pt={class:`admin-detail-panel__body`},Ft=p(k({__name:`CompactOrdersPage`,setup(n){let i=A(`(max-width: 767px)`),a=A(`(max-width: 1279px)`),{activeTab:s,selectedOrderId:d,searchQuery:f,filteredOrders:p,selectedOrder:h,showDetailPanel:y,showDetailModal:x,selectOrder:w,openOrderDetail:E,closeDetailPanel:k,closeDetailModal:M,settlementLabel:F,goPricing:I,goChecks:L,goCashReceipt:z,changeStatus:B,statusSaving:V,openAddModal:H}=se(),U=K(!1),G=m(()=>s.value!==`all`),q=m(()=>Q.find(e=>e.key===s.value)?.label??`همه`);function J(){U.value=!0}function Y(){U.value=!1}function X(){s.value=`all`,U.value=!1}function Z(e){s.value=e,U.value=!1}function ee(e){if(i.value){w(e,!0);return}E(e)}function te(){h.value&&(M(),k(),I(h.value))}function ne(){h.value&&(M(),k(),L(h.value))}function ie(){h.value&&(M(),k(),z(h.value))}function ae(){h.value&&B({orderId:h.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}return(n,m)=>(j(),C(`div`,ht,[g(`div`,gt,[g(`div`,_t,[m[4]||=g(`div`,null,[g(`h2`,{class:`compact-page-header__title`},`سفارش‌ها`)],-1),g(`div`,vt,[g(`button`,{type:`button`,class:W([`admin-btn admin-btn--outline admin-btn--sm`,{"admin-btn--filter-active":G.value}]),onClick:J},[R(c,{name:`filter`,size:16}),m[3]||=P(` فیلتر `,-1),G.value?(j(),C(`span`,yt)):e(``,!0)],2),g(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:m[0]||=(...e)=>b(H)&&b(H)(...e)},` سفارش جدید `)])])]),g(`div`,bt,[R(c,{name:`search`,size:18}),T(g(`input`,{"onUpdate:modelValue":m[1]||=e=>_(f)?f.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[r,b(f)]])]),b(i)&&G.value?(j(),C(`div`,xt,[g(`span`,null,`وضعیت: `+t(q.value),1),g(`button`,{type:`button`,class:`compact-orders__filter-clear`,onClick:X},`پاک کردن`)])):e(``,!0),b(i)?e(``,!0):(j(),C(`div`,St,[(j(!0),C(o,null,S(b(Q),n=>(j(),C(`button`,{key:n.key,type:`button`,class:W([`admin-tab`,{active:b(s)===n.key}]),onClick:e=>s.value=n.key},[P(t(n.label)+` `,1),`count`in n&&n.count?(j(),C(o,{key:0},[P(` (`+t(n.count)+`)`,1)],64)):e(``,!0)],10,Ct))),128))])),R(u,{open:U.value,title:`فیلتر سفارش‌ها`,onClose:Y},{footer:D(()=>[g(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` پاک کردن `),g(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` بستن `)]),default:D(()=>[g(`div`,wt,[(j(!0),C(o,null,S(b(Q),n=>(j(),C(`button`,{key:n.key,type:`button`,class:W([`compact-orders__filter-option`,{"is-active":b(s)===n.key}]),role:`option`,"aria-selected":b(s)===n.key,onClick:e=>Z(n.key)},[g(`span`,null,t(n.label),1),b(s)===n.key?(j(),C(`span`,Et,`✓`)):e(``,!0)],10,Tt))),128))])]),_:1},8,[`open`]),g(`div`,Dt,[(j(!0),C(o,null,S(b(p),e=>(j(),C(`button`,{key:e.id,type:`button`,class:W([`admin-card-item`,{selected:b(d)===e.id}]),onClick:t=>ee(e)},[g(`div`,kt,[g(`p`,At,t(e.orderNumber),1),R(re,{status:e.status},null,8,[`status`])]),g(`div`,jt,[g(`span`,null,[m[5]||=g(`strong`,null,`مشتری:`,-1),P(` `+t(e.customerName),1)]),g(`span`,null,[m[6]||=g(`strong`,null,`متراژ:`,-1),P(` `+t(b(v)(e.meterage)),1)]),g(`span`,null,[m[7]||=g(`strong`,null,`مبلغ:`,-1),P(` `+t(e.totalAmount?b(N)(e.totalAmount):`—`),1)]),g(`span`,null,t(b(O)(e.createdAt)),1)])],10,Ot))),128))]),g(`div`,{class:W([`admin-detail-panel compact-orders__mobile-panel`,{open:b(i)&&b(y)&&b(h)}])},[b(h)?(j(),C(`div`,Mt,[g(`div`,Nt,[g(`button`,{type:`button`,class:`admin-detail-panel__back`,"aria-label":`بازگشت به لیست`,onClick:m[2]||=(...e)=>b(k)&&b(k)(...e)},[R(c,{name:`chevron-back`,size:20})]),m[8]||=g(`h2`,{class:`admin-detail-panel__title`},`جزئیات سفارش`,-1)]),g(`div`,Pt,[R($e,{order:b(h),"settlement-label":b(F),"status-saving":b(V),onPricing:te,onChecks:ne,onCashReceipt:ie,onFinalApprove:ae,onStatus:b(B)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])])])):e(``,!0)],2),R(u,{open:b(a)&&!b(i)&&b(x)&&!!b(h),title:`جزئیات سفارش`,size:`xl`,onClose:b(M)},{default:D(()=>[b(h)?(j(),l($e,{key:0,order:b(h),"settlement-label":b(F),"status-saving":b(V),onPricing:te,onChecks:ne,onCashReceipt:ie,onFinalApprove:ae,onStatus:b(B)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):e(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-fe86c1c8`]]),It={key:0,class:`admin-form__error`,role:`alert`},Lt={class:`admin-form__field`},Rt={key:0,class:`admin-form__hint`},zt={class:`admin-form__row`},Bt={class:`admin-form__field`},Vt={class:`admin-form__field`},Ht={key:1,class:`order-add__items`},Ut=[`onClick`],Wt={key:2,class:`admin-form__hint`},Gt=[`disabled`],Kt=p(k({__name:`OrderAddModal`,setup(n){let{showAddModal:i,formError:a,form:c,isFormValid:f,activeCustomers:p,applyCustomer:h,addFormItem:_,removeFormItem:v,closeAddModal:y,submitAddOrder:x}=se(),w=q(),E=K([]),O=H({productId:``,meterage:0}),k=m(()=>p.value.map(e=>{let t=e.phone?` — ${e.phone}`:``,n=e.isActive===!1?` (غیرفعال)`:``;return{value:e.id,label:`${e.name}${t}${n}`}})),A=m(()=>E.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),N=m(()=>E.value.find(e=>e.id===O.productId)??null);M(()=>c.customerId,e=>{if(!e){c.customerName=``,c.customerPhone=``;return}h(e)}),M(i,async e=>{if(e){O.productId=``,O.meterage=0;try{E.value=await d.list({activeOnly:!0})}catch(e){w.error(e instanceof s?e.message:`بارگذاری محصولات انجام نشد.`)}}}),M(()=>O.productId,e=>{let t=E.value.find(t=>t.id===e);t&&(O.meterage=t.rollMeters||t.minMeterage||t.orderStep||50)});function I(){let e=N.value;if(!e){a.value=`محصول را انتخاب کنید.`;return}if(!O.meterage||O.meterage<=0){a.value=`متراژ باید بزرگ‌تر از صفر باشد.`;return}_({productId:e.id,productName:e.name,catalogCode:e.catalogCode,meterage:O.meterage}),O.productId=``,O.meterage=0}return(n,s)=>(j(),l(u,{open:b(i),title:`پیش‌سفارش جدید`,size:`lg`,onClose:b(y)},{footer:D(()=>[g(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:s[4]||=(...e)=>b(y)&&b(y)(...e)},` انصراف `),g(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!b(f),onClick:s[5]||=(...e)=>b(x)&&b(x)(...e)},` ثبت پیش‌سفارش `,8,Gt)]),default:D(()=>[g(`form`,{class:`admin-form`,onSubmit:s[3]||=L((...e)=>b(x)&&b(x)(...e),[`prevent`])},[b(a)?(j(),C(`p`,It,t(b(a)),1)):e(``,!0),s[9]||=g(`p`,{class:`admin-form__hint`},` مثل سفارش مشتری: ابتدا اقلام ثبت می‌شود، قیمت‌گذاری و تسویه بعداً انجام می‌شود. `,-1),g(`div`,Lt,[s[6]||=g(`label`,{id:`order-customer-label`},[P(` مشتری `),g(`span`,{class:`admin-form__required`},`*`)],-1),R(J,{id:`order-customer`,modelValue:b(c).customerId,"onUpdate:modelValue":s[0]||=e=>b(c).customerId=e,block:``,searchable:``,"aria-label":`انتخاب مشتری از لیست`,placeholder:`انتخاب مشتری از لیست`,"search-placeholder":`جستجوی نام یا موبایل…`,options:k.value},null,8,[`modelValue`,`options`]),k.value.length?e(``,!0):(j(),C(`p`,Rt,` مشتری‌ای در سیستم نیست. ابتدا از بخش «مشتریان» یک مشتری ثبت کنید. `))]),g(`div`,zt,[g(`div`,Bt,[s[7]||=g(`label`,null,`محصول`,-1),R(J,{modelValue:O.productId,"onUpdate:modelValue":s[1]||=e=>O.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:A.value},null,8,[`modelValue`,`options`])]),g(`div`,Vt,[s[8]||=g(`label`,{for:`order-item-meterage`},`متراژ (متر)`,-1),T(g(`input`,{id:`order-item-meterage`,"onUpdate:modelValue":s[2]||=e=>O.meterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[r,O.meterage,void 0,{number:!0}]])])]),g(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:I},` افزودن به اقلام `),b(c).items.length?(j(),C(`div`,Ht,[(j(!0),C(o,null,S(b(c).items,e=>(j(),C(`div`,{key:e.productId,class:`order-add__item`},[g(`div`,null,[g(`strong`,null,t(e.productName),1),g(`span`,null,`کالیته `+t(e.catalogCode)+` — `+t(b(F)(e.meterage))+` متر`,1)]),g(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>b(v)(e.productId)},` حذف `,8,Ut)]))),128))])):(j(),C(`p`,Wt,`هنوز محصولی به پیش‌سفارش اضافه نشده است.`))],32)]),_:1},8,[`open`,`onClose`]))}}),[[`__scopeId`,`data-v-291a46f0`]]),qt=k({__name:`OrdersView`,setup(e){return oe(),(e,t)=>(j(),C(o,null,[R(mt,{class:`desktop-only`}),R(Ft,{class:`compact-only`}),R(Kt)],64))}});export{qt as default};