diff --git a/dist/assets/ActiveSwitchCell-DIzTn08M.js b/dist/assets/ActiveSwitchCell-DIzTn08M.js
deleted file mode 100644
index 0ee36db..0000000
--- a/dist/assets/ActiveSwitchCell-DIzTn08M.js
+++ /dev/null
@@ -1 +0,0 @@
-import{L as e,Q as t,bt as n,it as r,lt as i,yt as a,z as o}from"./index-B2VD3zy8.js";import{t as s}from"./BaseSwitch-dp2xMemS.js";function c(e=480){return new Promise(t=>{window.setTimeout(t,e)})}function l(e){let t=a(null),n=a(null),r=o();async function i(i,a){if(t.value)return a;let o=!a;if(!o&&e.confirmOff&&!await e.confirmOff())return a;t.value=i,n.value=null;let s=a;try{return await e.onPersist(o),r.success(e.successMessage?.(o)??(o?`وضعیت فعال شد.`:`وضعیت غیرفعال شد.`)),o}catch{return n.value=i,r.error(e.errorMessage??`بهروزرسانی وضعیت انجام نشد.`),s}finally{t.value=null}}function s(e){return t.value===e}function c(e){return n.value===e}return{toggle:i,isLoading:s,hasError:c}}var u=r({__name:`ActiveSwitchCell`,props:{id:{},modelValue:{type:Boolean},entityName:{},entityType:{},persist:{type:Function}},emits:[`update:modelValue`],setup(r,{emit:a}){let o=r,u=a,{toggle:d,isLoading:f,hasError:p}=l({onPersist:async e=>{o.persist?await o.persist(o.id,e):await c()},successMessage:e=>e?`${o.entityType??`مورد`} «${o.entityName}» فعال شد.`:`${o.entityType??`مورد`} «${o.entityName}» غیرفعال شد.`});async function m(t){if(t===o.modelValue)return;let n=o.entityType??`مورد`;if(!await e({title:t?`فعالسازی ${n}`:`غیرفعالسازی ${n}`,message:t?`آیا از فعال کردن «${o.entityName}» مطمئن هستید؟`:`آیا از غیرفعال کردن «${o.entityName}» مطمئن هستید؟`,tone:t?`primary`:`danger`,confirmLabel:t?`فعال کردن`:`غیرفعال کردن`,cancelLabel:`انصراف`}))return;let r=await d(o.id,o.modelValue);u(`update:modelValue`,r)}return(e,a)=>(i(),t(s,{"model-value":r.modelValue,loading:n(f)(r.id),error:n(p)(r.id),"onUpdate:modelValue":m},null,8,[`model-value`,`loading`,`error`]))}});export{u as t};
\ No newline at end of file
diff --git a/dist/assets/ActiveSwitchCell-DJZQHZ-8.js b/dist/assets/ActiveSwitchCell-DJZQHZ-8.js
new file mode 100644
index 0000000..b1965db
--- /dev/null
+++ b/dist/assets/ActiveSwitchCell-DJZQHZ-8.js
@@ -0,0 +1 @@
+import{O as e,Z as t,at as n,g as r,l as i}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{L as a,z as o}from"./index-CXa4EMLW.js";import{t as s}from"./BaseSwitch-TV5Yvtf7.js";function c(e=480){return new Promise(t=>{window.setTimeout(t,e)})}function l(e){let n=t(null),r=t(null),i=o();async function a(t,a){if(n.value)return a;let o=!a;if(!o&&e.confirmOff&&!await e.confirmOff())return a;n.value=t,r.value=null;let s=a;try{return await e.onPersist(o),i.success(e.successMessage?.(o)??(o?`وضعیت فعال شد.`:`وضعیت غیرفعال شد.`)),o}catch{return r.value=t,i.error(e.errorMessage??`بهروزرسانی وضعیت انجام نشد.`),s}finally{n.value=null}}function s(e){return n.value===e}function c(e){return r.value===e}return{toggle:a,isLoading:s,hasError:c}}var u=r({__name:`ActiveSwitchCell`,props:{id:{},modelValue:{type:Boolean},entityName:{},entityType:{},persist:{type:Function}},emits:[`update:modelValue`],setup(t,{emit:r}){let o=t,u=r,{toggle:d,isLoading:f,hasError:p}=l({onPersist:async e=>{o.persist?await o.persist(o.id,e):await c()},successMessage:e=>e?`${o.entityType??`مورد`} «${o.entityName}» فعال شد.`:`${o.entityType??`مورد`} «${o.entityName}» غیرفعال شد.`});async function m(e){if(e===o.modelValue)return;let t=o.entityType??`مورد`;if(!await a({title:e?`فعالسازی ${t}`:`غیرفعالسازی ${t}`,message:e?`آیا از فعال کردن «${o.entityName}» مطمئن هستید؟`:`آیا از غیرفعال کردن «${o.entityName}» مطمئن هستید؟`,tone:e?`primary`:`danger`,confirmLabel:e?`فعال کردن`:`غیرفعال کردن`,cancelLabel:`انصراف`}))return;let n=await d(o.id,o.modelValue);u(`update:modelValue`,n)}return(r,a)=>(e(),i(s,{"model-value":t.modelValue,loading:n(f)(t.id),error:n(p)(t.id),"onUpdate:modelValue":m},null,8,[`model-value`,`loading`,`error`]))}});export{u as t};
\ No newline at end of file
diff --git a/dist/assets/AdminCurrencyInput-D6MsBhvR.js b/dist/assets/AdminCurrencyInput-D6MsBhvR.js
new file mode 100644
index 0000000..8e42bd3
--- /dev/null
+++ b/dist/assets/AdminCurrencyInput-D6MsBhvR.js
@@ -0,0 +1 @@
+import{O as e,Tt as t,d as n,g as r,s as i,t as a}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{o,t as s}from"./index-CXa4EMLW.js";var c=[`id`,`value`,`placeholder`,`disabled`],l=a(r({__name:`AdminCurrencyInput`,props:{modelValue:{default:null},placeholder:{default:``},disabled:{type:Boolean,default:!1},id:{},inputClass:{default:`admin-input`},allowEmpty:{type:Boolean,default:!0}},emits:[`update:modelValue`],setup(r,{emit:a}){let l=r,u=a,d=i(()=>l.modelValue==null||!Number.isFinite(l.modelValue)?``:o(l.modelValue));function f(e){let t=e.target,n=s(t.value);if(!n){u(`update:modelValue`,l.allowEmpty?null:0),t.value=``;return}let r=Number(n);u(`update:modelValue`,r),t.value=o(r)}return(i,a)=>(e(),n(`input`,{id:r.id,type:`text`,inputmode:`numeric`,dir:`ltr`,class:t([`admin-currency-input`,r.inputClass]),value:d.value,placeholder:r.placeholder,disabled:r.disabled,onInput:f},null,42,c))}}),[[`__scopeId`,`data-v-56435fc8`]]);export{l as t};
\ No newline at end of file
diff --git a/dist/assets/AdminCurrencyInput-DxQX_Gwe.js b/dist/assets/AdminCurrencyInput-DxQX_Gwe.js
deleted file mode 100644
index 5ae7f52..0000000
--- a/dist/assets/AdminCurrencyInput-DxQX_Gwe.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as e,X as t,et as n,it as r,lt as i,o as a,t as o,xt as s}from"./index-B2VD3zy8.js";var c=[`id`,`value`,`placeholder`,`disabled`],l=e(r({__name:`AdminCurrencyInput`,props:{modelValue:{default:null},placeholder:{default:``},disabled:{type:Boolean,default:!1},id:{},inputClass:{default:`admin-input`},allowEmpty:{type:Boolean,default:!0}},emits:[`update:modelValue`],setup(e,{emit:r}){let l=e,u=r,d=t(()=>l.modelValue==null||!Number.isFinite(l.modelValue)?``:a(l.modelValue));function f(e){let t=e.target,n=o(t.value);if(!n){u(`update:modelValue`,l.allowEmpty?null:0),t.value=``;return}let r=Number(n);u(`update:modelValue`,r),t.value=a(r)}return(t,r)=>(i(),n(`input`,{id:e.id,type:`text`,inputmode:`numeric`,dir:`ltr`,class:s([`admin-currency-input`,e.inputClass]),value:d.value,placeholder:e.placeholder,disabled:e.disabled,onInput:f},null,42,c))}}),[[`__scopeId`,`data-v-56435fc8`]]);export{l as t};
\ No newline at end of file
diff --git a/dist/assets/AdminImagePicker-C0OGC-bB.js b/dist/assets/AdminImagePicker-C0OGC-bB.js
deleted file mode 100644
index b33d118..0000000
--- a/dist/assets/AdminImagePicker-C0OGC-bB.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,St as n,V as r,Z as i,bt as a,et as o,it as s,lt as c,xt as l,yt as u}from"./index-B2VD3zy8.js";var d=960,f=.82;function p(e){let t=e.trim();return t?`url("${t.replace(/"/g,`\\"`)}")`:``}async function m(e){if(!e.type.startsWith(`image/`))throw Error(`فقط فایل تصویری مجاز است.`);if(e.size>8388608)throw Error(`حجم تصویر نباید بیشتر از ۸ مگابایت باشد.`);return g(await h(e))}function h(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result??``)),r.onerror=()=>n(Error(`خواندن تصویر ناموفق بود.`)),r.readAsDataURL(e)})}function g(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{let e=Math.min(1,d/Math.max(r.width,r.height)),i=Math.max(1,Math.round(r.width*e)),a=Math.max(1,Math.round(r.height*e)),o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s){n(Error(`پردازش تصویر ناموفق بود.`));return}s.drawImage(r,0,0,i,a),t(o.toDataURL(`image/jpeg`,f))},r.onerror=()=>n(Error(`تصویر نامعتبر است.`)),r.src=e})}var _={class:`image-picker`},v={key:0,class:`image-picker__label`},y={class:`image-picker__row`},b={class:`image-picker__actions`},x=[`disabled`],S=[`disabled`],C={key:1,class:`image-picker__error`},w={key:2,class:`image-picker__ok`},T=r(s({__name:`AdminImagePicker`,props:{modelValue:{},label:{}},emits:[`update:modelValue`],setup(r,{emit:s}){let d=r,f=s,h=u(null),g=u(!1),T=u(``),E=u(!1);function D(){h.value?.click()}async function O(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){g.value=!0,T.value=``,E.value=!1;try{f(`update:modelValue`,await m(n)),E.value=!0}catch(e){T.value=e instanceof Error?e.message:`بارگذاری تصویر ناموفق بود.`}finally{g.value=!1}}}function k(){f(`update:modelValue`,null)}return(s,u)=>(c(),o(`div`,_,[r.label?(c(),o(`p`,v,t(r.label),1)):e(``,!0),i(`div`,y,[i(`div`,{class:l([`image-picker__preview`,{"image-picker__preview--empty":!d.modelValue}]),style:n(d.modelValue?{backgroundImage:a(p)(d.modelValue)}:void 0)},null,6),i(`div`,b,[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:g.value,onClick:D},t(d.modelValue?`تغییر تصویر`:`افزودن تصویر`),9,x),d.modelValue?(c(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:g.value,onClick:k},` حذف `,8,S)):e(``,!0),T.value?(c(),o(`p`,C,t(T.value),1)):E.value?(c(),o(`p`,w,`تصویر انتخاب شد — برای ثبت نهایی «ذخیره» را بزنید.`)):e(``,!0)])]),i(`input`,{ref_key:`inputRef`,ref:h,type:`file`,accept:`image/*`,class:`image-picker__file`,onChange:O},null,544)]))}}),[[`__scopeId`,`data-v-05db5be7`]]);export{m as n,p as r,T as t};
\ No newline at end of file
diff --git a/dist/assets/AdminImagePicker-C4toq7MG.js b/dist/assets/AdminImagePicker-C4toq7MG.js
new file mode 100644
index 0000000..3e80fec
--- /dev/null
+++ b/dist/assets/AdminImagePicker-C4toq7MG.js
@@ -0,0 +1 @@
+import{Dt as e,O as t,Ot as n,Tt as r,Z as i,at as a,c as o,d as s,g as c,t as l,u}from"./_plugin-vue_export-helper-OaxA6A2f.js";var d=960,f=.82;function p(e){let t=e.trim();return t?`url("${t.replace(/"/g,`\\"`)}")`:``}async function m(e){if(!e.type.startsWith(`image/`))throw Error(`فقط فایل تصویری مجاز است.`);if(e.size>8388608)throw Error(`حجم تصویر نباید بیشتر از ۸ مگابایت باشد.`);return g(await h(e))}function h(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result??``)),r.onerror=()=>n(Error(`خواندن تصویر ناموفق بود.`)),r.readAsDataURL(e)})}function g(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{let e=Math.min(1,d/Math.max(r.width,r.height)),i=Math.max(1,Math.round(r.width*e)),a=Math.max(1,Math.round(r.height*e)),o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s){n(Error(`پردازش تصویر ناموفق بود.`));return}s.drawImage(r,0,0,i,a),t(o.toDataURL(`image/jpeg`,f))},r.onerror=()=>n(Error(`تصویر نامعتبر است.`)),r.src=e})}var _={class:`image-picker`},v={key:0,class:`image-picker__label`},y={class:`image-picker__row`},b={class:`image-picker__actions`},x=[`disabled`],S=[`disabled`],C={key:1,class:`image-picker__error`},w={key:2,class:`image-picker__ok`},T=l(c({__name:`AdminImagePicker`,props:{modelValue:{},label:{}},emits:[`update:modelValue`],setup(c,{emit:l}){let d=c,f=l,h=i(null),g=i(!1),T=i(``),E=i(!1);function D(){h.value?.click()}async function O(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){g.value=!0,T.value=``,E.value=!1;try{f(`update:modelValue`,await m(n)),E.value=!0}catch(e){T.value=e instanceof Error?e.message:`بارگذاری تصویر ناموفق بود.`}finally{g.value=!1}}}function k(){f(`update:modelValue`,null)}return(i,l)=>(t(),s(`div`,_,[c.label?(t(),s(`p`,v,n(c.label),1)):u(``,!0),o(`div`,y,[o(`div`,{class:r([`image-picker__preview`,{"image-picker__preview--empty":!d.modelValue}]),style:e(d.modelValue?{backgroundImage:a(p)(d.modelValue)}:void 0)},null,6),o(`div`,b,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:g.value,onClick:D},n(d.modelValue?`تغییر تصویر`:`افزودن تصویر`),9,x),d.modelValue?(t(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:g.value,onClick:k},` حذف `,8,S)):u(``,!0),T.value?(t(),s(`p`,C,n(T.value),1)):E.value?(t(),s(`p`,w,`تصویر انتخاب شد — برای ثبت نهایی «ذخیره» را بزنید.`)):u(``,!0)])]),o(`input`,{ref_key:`inputRef`,ref:h,type:`file`,accept:`image/*`,class:`image-picker__file`,onChange:O},null,544)]))}}),[[`__scopeId`,`data-v-05db5be7`]]);export{m as n,p as r,T as t};
\ No newline at end of file
diff --git a/dist/assets/AdminPageSkeleton-BJpm6oxf.js b/dist/assets/AdminPageSkeleton-BJpm6oxf.js
deleted file mode 100644
index f2eee0f..0000000
--- a/dist/assets/AdminPageSkeleton-BJpm6oxf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{J as e,V as t,Z as n,dt as r,et as i,it as a,lt as o,tt as s}from"./index-B2VD3zy8.js";var c={class:`admin-page-skeleton`,role:`status`,"aria-live":`polite`,"aria-busy":`true`,"aria-label":`در حال بارگذاری`},l={class:`admin-card admin-page-skeleton__table`},u={key:1,class:`admin-card admin-page-skeleton__form`},d={key:2,class:`admin-card admin-page-skeleton__detail`},f={key:3,class:`admin-page-skeleton__cards`},p=t(a({__name:`AdminPageSkeleton`,props:{variant:{default:`cards`},rows:{default:5}},setup(t){return(a,p)=>(o(),i(`div`,c,[t.variant===`table`?(o(),i(e,{key:0},[p[1]||=n(`div`,{class:`admin-page-skeleton__toolbar`},[n(`span`,{class:`admin-skeleton admin-page-skeleton__search`}),n(`span`,{class:`admin-skeleton admin-page-skeleton__btn`})],-1),n(`div`,l,[(o(!0),i(e,null,r(t.rows,e=>(o(),i(`div`,{key:e,class:`admin-page-skeleton__tr`},[...p[0]||=[s(``,5)]]))),128))])],64)):t.variant===`form`?(o(),i(`div`,u,[(o(!0),i(e,null,r(t.rows,e=>(o(),i(`div`,{key:e,class:`admin-page-skeleton__field`},[...p[2]||=[n(`span`,{class:`admin-skeleton`,style:{width:`28%`,height:`10px`}},null,-1),n(`span`,{class:`admin-skeleton`,style:{width:`100%`,height:`40px`,"border-radius":`10px`}},null,-1)]]))),128))])):t.variant===`detail`?(o(),i(`div`,d,[...p[3]||=[s(``,5)]])):(o(),i(`div`,f,[(o(!0),i(e,null,r(t.rows,e=>(o(),i(`div`,{key:e,class:`admin-card admin-page-skeleton__card`},[...p[4]||=[n(`span`,{class:`admin-skeleton`,style:{width:`45%`,height:`14px`}},null,-1),n(`span`,{class:`admin-skeleton`,style:{width:`70%`,height:`11px`}},null,-1),n(`span`,{class:`admin-skeleton`,style:{width:`35%`,height:`11px`}},null,-1)]]))),128))]))]))}}),[[`__scopeId`,`data-v-8283cd1d`]]);export{p as t};
\ No newline at end of file
diff --git a/dist/assets/AdminPageSkeleton-CTgUqaAu.js b/dist/assets/AdminPageSkeleton-CTgUqaAu.js
new file mode 100644
index 0000000..0df9128
--- /dev/null
+++ b/dist/assets/AdminPageSkeleton-CTgUqaAu.js
@@ -0,0 +1 @@
+import{O as e,c as t,d as n,g as r,j as i,p as a,r as o,t as s}from"./_plugin-vue_export-helper-OaxA6A2f.js";var c={class:`admin-page-skeleton`,role:`status`,"aria-live":`polite`,"aria-busy":`true`,"aria-label":`در حال بارگذاری`},l={class:`admin-card admin-page-skeleton__table`},u={key:1,class:`admin-card admin-page-skeleton__form`},d={key:2,class:`admin-card admin-page-skeleton__detail`},f={key:3,class:`admin-page-skeleton__cards`},p=s(r({__name:`AdminPageSkeleton`,props:{variant:{default:`cards`},rows:{default:5}},setup(r){return(s,p)=>(e(),n(`div`,c,[r.variant===`table`?(e(),n(o,{key:0},[p[1]||=t(`div`,{class:`admin-page-skeleton__toolbar`},[t(`span`,{class:`admin-skeleton admin-page-skeleton__search`}),t(`span`,{class:`admin-skeleton admin-page-skeleton__btn`})],-1),t(`div`,l,[(e(!0),n(o,null,i(r.rows,t=>(e(),n(`div`,{key:t,class:`admin-page-skeleton__tr`},[...p[0]||=[a(``,5)]]))),128))])],64)):r.variant===`form`?(e(),n(`div`,u,[(e(!0),n(o,null,i(r.rows,r=>(e(),n(`div`,{key:r,class:`admin-page-skeleton__field`},[...p[2]||=[t(`span`,{class:`admin-skeleton`,style:{width:`28%`,height:`10px`}},null,-1),t(`span`,{class:`admin-skeleton`,style:{width:`100%`,height:`40px`,"border-radius":`10px`}},null,-1)]]))),128))])):r.variant===`detail`?(e(),n(`div`,d,[...p[3]||=[a(``,5)]])):(e(),n(`div`,f,[(e(!0),n(o,null,i(r.rows,r=>(e(),n(`div`,{key:r,class:`admin-card admin-page-skeleton__card`},[...p[4]||=[t(`span`,{class:`admin-skeleton`,style:{width:`45%`,height:`14px`}},null,-1),t(`span`,{class:`admin-skeleton`,style:{width:`70%`,height:`11px`}},null,-1),t(`span`,{class:`admin-skeleton`,style:{width:`35%`,height:`11px`}},null,-1)]]))),128))]))]))}}),[[`__scopeId`,`data-v-8283cd1d`]]);export{p as t};
\ No newline at end of file
diff --git a/dist/assets/AdminSelect-9UfEJQzN.js b/dist/assets/AdminSelect-9UfEJQzN.js
new file mode 100644
index 0000000..a40daf4
--- /dev/null
+++ b/dist/assets/AdminSelect-9UfEJQzN.js
@@ -0,0 +1 @@
+import{C as e,Dt as t,E as n,M as r,O as i,Ot as a,R as o,Tt as s,V as c,Z as l,a as u,c as d,d as f,g as p,h as m,j as h,l as g,r as _,s as v,t as y,u as b}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{G as x,K as S,O as C,P as w,W as T}from"./index-CXa4EMLW.js";var E=[`id`],D=[`aria-label`,`aria-expanded`],O={class:`admin-select__trigger-content`},k={class:`admin-select__value`},A={class:`admin-select__chevron`,"aria-hidden":`true`},j=[`aria-label`],M={key:0,class:`admin-select__search`,role:`presentation`},N=[`placeholder`],P={key:1,class:`admin-select__empty`,role:`presentation`},F=[`aria-selected`,`onClick`],I={class:`admin-select__option-label`},L=y(p({__name:`AdminSelect`,props:{modelValue:{},options:{},placeholder:{default:`انتخاب کنید`},ariaLabel:{default:`انتخاب`},block:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},searchPlaceholder:{default:`جستجو…`},id:{default:void 0}},emits:[`update:modelValue`],setup(p,{emit:y}){let L=p,R=y,z=l(!1),B=l(``),V=l(null),H=l(null),U=l(null),W=l({});C(V,()=>{z.value=!1,B.value=``},{ignore:[H]});let G=v(()=>L.options.find(e=>e.value===L.modelValue)),K=v(()=>G.value?.label??L.placeholder),q=v(()=>{let e=B.value.trim().toLowerCase();return e?L.options.filter(t=>t.label.toLowerCase().includes(e)):L.options});function J(){let e=V.value;if(!e)return;let t=e.getBoundingClientRect(),n=Math.min(320,window.innerHeight*.5),r=window.innerHeight-t.bottom-6,i=t.top-6,a=rr,o=Math.max(120,Math.min(n,a?i:r));W.value={position:`fixed`,left:`${Math.max(8,Math.min(t.left,window.innerWidth-Math.max(t.width,220)-8))}px`,width:`${Math.max(t.width,220)}px`,zIndex:`1100`,maxHeight:`${o}px`,...a?{top:`auto`,bottom:`${window.innerHeight-t.top+6}px`}:{top:`${t.bottom+6}px`,bottom:`auto`}}}function Y(e){e?(window.addEventListener(`resize`,J),window.addEventListener(`scroll`,J,!0)):(window.removeEventListener(`resize`,J),window.removeEventListener(`scroll`,J,!0))}async function X(){z.value=!z.value,z.value&&(await e(),J(),L.searchable&&(B.value=``,await e(),U.value?.focus()))}function Z(e){R(`update:modelValue`,e),z.value=!1,B.value=``}return o(z,t=>{Y(t),t&&e(()=>J())}),n(()=>{Y(!1)}),(e,n)=>(i(),f(`div`,{id:p.id,ref_key:`rootRef`,ref:V,class:s([`admin-select`,{"admin-select--open":z.value,"admin-select--block":p.block}])},[d(`button`,{type:`button`,class:`admin-select__trigger`,"aria-label":p.ariaLabel,"aria-expanded":z.value,"aria-haspopup":`listbox`,onClick:X},[d(`span`,O,[r(e.$slots,`option-leading`,{option:G.value},void 0,!0),d(`span`,k,a(K.value),1)]),d(`span`,A,[m(w,{name:`chevron-down`,size:16})])],8,D),(i(),g(u,{to:`body`},[z.value?(i(),f(`ul`,{key:0,ref_key:`menuRef`,ref:H,class:`admin-select__menu`,role:`listbox`,"aria-label":p.ariaLabel,style:t(W.value)},[p.searchable?(i(),f(`li`,M,[c(d(`input`,{ref_key:`searchInputRef`,ref:U,"onUpdate:modelValue":n[0]||=e=>B.value=e,type:`search`,class:`admin-select__search-input`,placeholder:p.searchPlaceholder,onClick:n[1]||=S(()=>{},[`stop`]),onKeydown:n[2]||=x(S(e=>z.value=!1,[`stop`]),[`esc`])},null,40,N),[[T,B.value]])])):b(``,!0),q.value.length?b(``,!0):(i(),f(`li`,P,` موردی یافت نشد `)),(i(!0),f(_,null,h(q.value,t=>(i(),f(`li`,{key:t.value,role:`presentation`},[d(`button`,{type:`button`,class:s([`admin-select__option`,{"admin-select__option--active":t.value===p.modelValue}]),role:`option`,"aria-selected":t.value===p.modelValue,onClick:e=>Z(t.value)},[d(`span`,I,[r(e.$slots,`option-leading`,{option:t},void 0,!0),d(`span`,null,a(t.label),1)]),t.value===p.modelValue?(i(),g(w,{key:0,name:`check`,size:16,class:`admin-select__check`})):b(``,!0)],10,F)]))),128))],12,j)):b(``,!0)]))],10,E))}}),[[`__scopeId`,`data-v-4623e322`]]);export{L as t};
\ No newline at end of file
diff --git a/dist/assets/AdminSelect-BeLNl2Qz.js b/dist/assets/AdminSelect-BeLNl2Qz.js
deleted file mode 100644
index b4753db..0000000
--- a/dist/assets/AdminSelect-BeLNl2Qz.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,G as n,J as r,K as i,O as a,P as o,Q as s,St as c,V as l,X as u,Y as d,Z as f,ct as p,dt as m,et as h,ft as g,gt as _,it as v,lt as y,mt as b,ot as x,q as S,rt as C,xt as w,yt as T}from"./index-B2VD3zy8.js";var E=[`id`],D=[`aria-label`,`aria-expanded`],O={class:`admin-select__trigger-content`},k={class:`admin-select__value`},A={class:`admin-select__chevron`,"aria-hidden":`true`},j=[`aria-label`],M={key:0,class:`admin-select__search`,role:`presentation`},N=[`placeholder`],P={key:1,class:`admin-select__empty`,role:`presentation`},F=[`aria-selected`,`onClick`],I={class:`admin-select__option-label`},L=l(v({__name:`AdminSelect`,props:{modelValue:{},options:{},placeholder:{default:`انتخاب کنید`},ariaLabel:{default:`انتخاب`},block:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},searchPlaceholder:{default:`جستجو…`},id:{default:void 0}},emits:[`update:modelValue`],setup(l,{emit:v}){let L=l,R=v,z=T(!1),B=T(``),V=T(null),H=T(null),U=T(null),W=T({});a(V,()=>{z.value=!1,B.value=``},{ignore:[H]});let G=u(()=>L.options.find(e=>e.value===L.modelValue)),K=u(()=>G.value?.label??L.placeholder),q=u(()=>{let e=B.value.trim().toLowerCase();return e?L.options.filter(t=>t.label.toLowerCase().includes(e)):L.options});function J(){let e=V.value;if(!e)return;let t=e.getBoundingClientRect(),n=Math.min(320,window.innerHeight*.5),r=window.innerHeight-t.bottom-6,i=t.top-6,a=rr,o=Math.max(120,Math.min(n,a?i:r));W.value={position:`fixed`,left:`${Math.max(8,Math.min(t.left,window.innerWidth-Math.max(t.width,220)-8))}px`,width:`${Math.max(t.width,220)}px`,zIndex:`1100`,maxHeight:`${o}px`,...a?{top:`auto`,bottom:`${window.innerHeight-t.top+6}px`}:{top:`${t.bottom+6}px`,bottom:`auto`}}}function Y(e){e?(window.addEventListener(`resize`,J),window.addEventListener(`scroll`,J,!0)):(window.removeEventListener(`resize`,J),window.removeEventListener(`scroll`,J,!0))}async function X(){z.value=!z.value,z.value&&(await x(),J(),L.searchable&&(B.value=``,await x(),U.value?.focus()))}function Z(e){R(`update:modelValue`,e),z.value=!1,B.value=``}return b(z,e=>{Y(e),e&&x(()=>J())}),p(()=>{Y(!1)}),(a,u)=>(y(),h(`div`,{id:l.id,ref_key:`rootRef`,ref:V,class:w([`admin-select`,{"admin-select--open":z.value,"admin-select--block":l.block}])},[f(`button`,{type:`button`,class:`admin-select__trigger`,"aria-label":l.ariaLabel,"aria-expanded":z.value,"aria-haspopup":`listbox`,onClick:X},[f(`span`,O,[g(a.$slots,`option-leading`,{option:G.value},void 0,!0),f(`span`,k,t(K.value),1)]),f(`span`,A,[C(o,{name:`chevron-down`,size:16})])],8,D),(y(),s(d,{to:`body`},[z.value?(y(),h(`ul`,{key:0,ref_key:`menuRef`,ref:H,class:`admin-select__menu`,role:`listbox`,"aria-label":l.ariaLabel,style:c(W.value)},[l.searchable?(y(),h(`li`,M,[_(f(`input`,{ref_key:`searchInputRef`,ref:U,"onUpdate:modelValue":u[0]||=e=>B.value=e,type:`search`,class:`admin-select__search-input`,placeholder:l.searchPlaceholder,onClick:u[1]||=S(()=>{},[`stop`]),onKeydown:u[2]||=i(S(e=>z.value=!1,[`stop`]),[`esc`])},null,40,N),[[n,B.value]])])):e(``,!0),q.value.length?e(``,!0):(y(),h(`li`,P,` موردی یافت نشد `)),(y(!0),h(r,null,m(q.value,n=>(y(),h(`li`,{key:n.value,role:`presentation`},[f(`button`,{type:`button`,class:w([`admin-select__option`,{"admin-select__option--active":n.value===l.modelValue}]),role:`option`,"aria-selected":n.value===l.modelValue,onClick:e=>Z(n.value)},[f(`span`,I,[g(a.$slots,`option-leading`,{option:n},void 0,!0),f(`span`,null,t(n.label),1)]),n.value===l.modelValue?(y(),s(o,{key:0,name:`check`,size:16,class:`admin-select__check`})):e(``,!0)],10,F)]))),128))],12,j)):e(``,!0)]))],10,E))}}),[[`__scopeId`,`data-v-4623e322`]]);export{L as t};
\ No newline at end of file
diff --git a/dist/assets/BankAccountsView-33uUkn7P.js b/dist/assets/BankAccountsView-33uUkn7P.js
deleted file mode 100644
index 4e74838..0000000
--- a/dist/assets/BankAccountsView-33uUkn7P.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,F as n,G as r,I as i,J as a,N as o,Q as ee,R as te,V as ne,X as s,Z as c,c as l,dt as u,et as d,gt as f,h as re,ht as p,it as m,lt as h,nt as g,q as ie,rt as _,st as ae,vt as v,yt as y,z as oe}from"./index-B2VD3zy8.js";import{t as b}from"./BaseSwitch-dp2xMemS.js";import{t as se}from"./BaseEmptyState-DGu6Pfui.js";import{t as x}from"./ActiveSwitchCell-DIzTn08M.js";var S={class:`accounts-page`},ce={class:`admin-page-header`},le={class:`admin-page-header__title`},ue={key:1,class:`accounts-page__table admin-card desktop-only`},de={class:`admin-table-wrap`},fe={class:`admin-table`},pe={class:`status`},me={key:2,class:`compact-only admin-card-list`},C={class:`admin-card-item__header`},w={class:`admin-card-item__title`},T={class:`admin-card-item__meta`},E={key:0},D={key:1,dir:`ltr`},O={key:0,class:`admin-form__error`,role:`alert`},k={class:`admin-form__row`},A={class:`admin-form__field`},j={class:`admin-form__field`},M={class:`admin-form__field`},N={class:`admin-form__row`},P={class:`admin-form__field`},F={class:`admin-form__field`},I={class:`admin-form__field`},L=[`disabled`],R=ne(m({__name:`BankAccountsView`,setup(ne){let m=n(),R=i(),z=oe(),B=y(null),V=y([]),H=y(!1),U=y(``),W=y(!1),G=s(()=>String(m.params.companyId)),K=s(()=>V.value),q=()=>({bankName:``,accountNumber:``,accountHolder:B.value?.name??``,cardNumber:``,iban:``,isActive:!0}),J=v(q()),Y=s(()=>J.bankName.trim().length>0&&J.accountNumber.trim().length>0&&J.accountHolder.trim().length>0);async function he(){try{let[e,t]=await Promise.all([re.get(G.value),l.listByCompany(G.value)]);B.value=e,V.value=t}catch(e){z.error(e instanceof o?e.message:`بارگذاری حسابها انجام نشد.`)}}ae(()=>{he()});function X(){Object.assign(J,q()),U.value=``,H.value=!0}function Z(){H.value=!1,U.value=``}async function Q(){if(!Y.value){U.value=`فیلدهای ستارهدار الزامی هستند.`;return}W.value=!0;try{let e=await l.create(G.value,{bankName:J.bankName.trim(),accountNumber:J.accountNumber.trim(),accountHolder:J.accountHolder.trim(),cardNumber:J.cardNumber.trim()||`-`,iban:J.iban.trim()||`-`,isActive:J.isActive,displayOrder:V.value.length+1});V.value.push(e),z.success(`حساب بانکی جدید ثبت شد.`),Z()}catch(e){z.error(e instanceof o?e.message:`ثبت حساب انجام نشد.`)}finally{W.value=!1}}async function $(e,t){await l.setActive(e,t)}function ge(){R.push(`/companies`)}return(n,i)=>(h(),d(`div`,S,[c(`div`,ce,[c(`div`,null,[c(`h1`,le,` مدیریت حسابهای بانکی — `+t(B.value?.name??`…`),1)]),c(`div`,{class:`admin-action-group`},[c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:X},` افزودن حساب `),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:ge},` بازگشت `)])]),K.value.length?(h(),d(`div`,ue,[c(`div`,de,[c(`table`,fe,[i[6]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`بانک`),c(`th`,null,`حساب بانکی`),c(`th`,null,`نام صاحب`),c(`th`,null,`شماره کارت`),c(`th`,null,`شماره شبا`),c(`th`,{class:`status`},`وضعیت`)])],-1),c(`tbody`,null,[(h(!0),d(a,null,u(K.value,e=>(h(),d(`tr`,{key:e.id},[c(`td`,null,t(e.bankName),1),c(`td`,null,t(e.accountNumber),1),c(`td`,null,t(e.accountHolder),1),c(`td`,null,t(e.cardNumber||`—`),1),c(`td`,null,t(e.iban||`—`),1),c(`td`,pe,[_(x,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])])]))),128))])])])])):(h(),ee(se,{key:0,class:`admin-card`,icon:`wallet`,title:`حساب بانکی ثبت نشده`,description:`برای این شرکت هنوز حساب بانکی ثبت نشده است.`},{default:p(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:X},` افزودن حساب `)]),_:1})),K.value.length?(h(),d(`div`,me,[(h(!0),d(a,null,u(K.value,n=>(h(),d(`article`,{key:n.id,class:`admin-card-item`},[c(`div`,C,[c(`p`,w,`بانک `+t(n.bankName),1),_(x,{id:n.id,modelValue:n.isActive,"onUpdate:modelValue":e=>n.isActive=e,"entity-name":n.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),c(`div`,T,[c(`span`,null,t(n.accountHolder),1),c(`span`,null,`حساب: `+t(n.accountNumber),1),n.cardNumber?(h(),d(`span`,E,`کارت: `+t(n.cardNumber),1)):e(``,!0),n.iban?(h(),d(`span`,D,t(n.iban),1)):e(``,!0)])]))),128))])):e(``,!0),_(te,{open:H.value,title:`افزودن حساب بانکی`,size:`lg`,onClose:Z},{footer:p(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},` انصراف `),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Y.value||W.value,onClick:Q},` ثبت حساب `,8,L)]),default:p(()=>[c(`form`,{class:`admin-form`,onSubmit:ie(Q,[`prevent`])},[U.value?(h(),d(`p`,O,t(U.value),1)):e(``,!0),c(`div`,k,[c(`div`,A,[i[7]||=c(`label`,{for:`bank-name`},[g(`نام بانک `),c(`span`,{class:`admin-form__required`},`*`)],-1),f(c(`input`,{id:`bank-name`,"onUpdate:modelValue":i[0]||=e=>J.bankName=e,type:`text`,class:`admin-input`,placeholder:`مثال: ملت`},null,512),[[r,J.bankName]])]),c(`div`,j,[i[8]||=c(`label`,{for:`account-number`},[g(` شماره حساب `),c(`span`,{class:`admin-form__required`},`*`)],-1),f(c(`input`,{id:`account-number`,"onUpdate:modelValue":i[1]||=e=>J.accountNumber=e,type:`text`,class:`admin-input`,placeholder:`1234567890`,inputmode:`numeric`,dir:`ltr`},null,512),[[r,J.accountNumber]])])]),c(`div`,M,[i[9]||=c(`label`,{for:`account-holder`},[g(` نام صاحب حساب `),c(`span`,{class:`admin-form__required`},`*`)],-1),f(c(`input`,{id:`account-holder`,"onUpdate:modelValue":i[2]||=e=>J.accountHolder=e,type:`text`,class:`admin-input`},null,512),[[r,J.accountHolder]])]),c(`div`,N,[c(`div`,P,[i[10]||=c(`label`,{for:`card-number`},`شماره کارت`,-1),f(c(`input`,{id:`card-number`,"onUpdate:modelValue":i[3]||=e=>J.cardNumber=e,type:`text`,class:`admin-input`,placeholder:`6104 3378 0077 1234`,inputmode:`numeric`,dir:`ltr`},null,512),[[r,J.cardNumber]])]),c(`div`,F,[i[11]||=c(`label`,{for:`iban`},`شماره شبا`,-1),f(c(`input`,{id:`iban`,"onUpdate:modelValue":i[4]||=e=>J.iban=e,type:`text`,class:`admin-input`,placeholder:`IR...`,dir:`ltr`},null,512),[[r,J.iban]])])]),c(`div`,I,[_(b,{modelValue:J.isActive,"onUpdate:modelValue":i[5]||=e=>J.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-0011826b`]]);export{R as default};
\ No newline at end of file
diff --git a/dist/assets/BankAccountsView-CjjgU3ea.js b/dist/assets/BankAccountsView-CjjgU3ea.js
new file mode 100644
index 0000000..e8eb6fe
--- /dev/null
+++ b/dist/assets/BankAccountsView-CjjgU3ea.js
@@ -0,0 +1 @@
+import{B as e,O as t,Ot as n,T as ee,V as r,Y as i,Z as a,c as o,d as s,g as te,h as c,j as l,l as u,m as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{F as g,I as ne,K as re,N as _,R as v,W as y,c as b,h as ie,z as ae}from"./index-CXa4EMLW.js";import{t as oe}from"./BaseSwitch-TV5Yvtf7.js";import{t as se}from"./BaseEmptyState-BmO9aDcK.js";import{t as x}from"./ActiveSwitchCell-DJZQHZ-8.js";var ce={class:`accounts-page`},le={class:`admin-page-header`},ue={class:`admin-page-header__title`},de={key:1,class:`accounts-page__table admin-card desktop-only`},fe={class:`admin-table-wrap`},pe={class:`admin-table`},S={class:`status`},C={key:2,class:`compact-only admin-card-list`},w={class:`admin-card-item__header`},T={class:`admin-card-item__title`},E={class:`admin-card-item__meta`},D={key:0},O={key:1,dir:`ltr`},k={key:0,class:`admin-form__error`,role:`alert`},A={class:`admin-form__row`},j={class:`admin-form__field`},M={class:`admin-form__field`},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`},me=[`disabled`],R=m(te({__name:`BankAccountsView`,setup(te){let m=g(),R=ne(),z=ae(),B=a(null),V=a([]),H=a(!1),U=a(``),W=a(!1),G=p(()=>String(m.params.companyId)),K=p(()=>V.value),q=()=>({bankName:``,accountNumber:``,accountHolder:B.value?.name??``,cardNumber:``,iban:``,isActive:!0}),J=i(q()),Y=p(()=>J.bankName.trim().length>0&&J.accountNumber.trim().length>0&&J.accountHolder.trim().length>0);async function he(){try{let[e,t]=await Promise.all([ie.get(G.value),b.listByCompany(G.value)]);B.value=e,V.value=t}catch(e){z.error(e instanceof _?e.message:`بارگذاری حسابها انجام نشد.`)}}ee(()=>{he()});function X(){Object.assign(J,q()),U.value=``,H.value=!0}function Z(){H.value=!1,U.value=``}async function Q(){if(!Y.value){U.value=`فیلدهای ستارهدار الزامی هستند.`;return}W.value=!0;try{let e=await b.create(G.value,{bankName:J.bankName.trim(),accountNumber:J.accountNumber.trim(),accountHolder:J.accountHolder.trim(),cardNumber:J.cardNumber.trim()||`-`,iban:J.iban.trim()||`-`,isActive:J.isActive,displayOrder:V.value.length+1});V.value.push(e),z.success(`حساب بانکی جدید ثبت شد.`),Z()}catch(e){z.error(e instanceof _?e.message:`ثبت حساب انجام نشد.`)}finally{W.value=!1}}async function $(e,t){await b.setActive(e,t)}function ge(){R.push(`/companies`)}return(ee,i)=>(t(),s(`div`,ce,[o(`div`,le,[o(`div`,null,[o(`h1`,ue,` مدیریت حسابهای بانکی — `+n(B.value?.name??`…`),1)]),o(`div`,{class:`admin-action-group`},[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:X},` افزودن حساب `),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:ge},` بازگشت `)])]),K.value.length?(t(),s(`div`,de,[o(`div`,fe,[o(`table`,pe,[i[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`بانک`),o(`th`,null,`حساب بانکی`),o(`th`,null,`نام صاحب`),o(`th`,null,`شماره کارت`),o(`th`,null,`شماره شبا`),o(`th`,{class:`status`},`وضعیت`)])],-1),o(`tbody`,null,[(t(!0),s(f,null,l(K.value,e=>(t(),s(`tr`,{key:e.id},[o(`td`,null,n(e.bankName),1),o(`td`,null,n(e.accountNumber),1),o(`td`,null,n(e.accountHolder),1),o(`td`,null,n(e.cardNumber||`—`),1),o(`td`,null,n(e.iban||`—`),1),o(`td`,S,[c(x,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])])]))),128))])])])])):(t(),u(se,{key:0,class:`admin-card`,icon:`wallet`,title:`حساب بانکی ثبت نشده`,description:`برای این شرکت هنوز حساب بانکی ثبت نشده است.`},{default:e(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:X},` افزودن حساب `)]),_:1})),K.value.length?(t(),s(`div`,C,[(t(!0),s(f,null,l(K.value,e=>(t(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,w,[o(`p`,T,`بانک `+n(e.bankName),1),c(x,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,E,[o(`span`,null,n(e.accountHolder),1),o(`span`,null,`حساب: `+n(e.accountNumber),1),e.cardNumber?(t(),s(`span`,D,`کارت: `+n(e.cardNumber),1)):h(``,!0),e.iban?(t(),s(`span`,O,n(e.iban),1)):h(``,!0)])]))),128))])):h(``,!0),c(v,{open:H.value,title:`افزودن حساب بانکی`,size:`lg`,onClose:Z},{footer:e(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Y.value||W.value,onClick:Q},` ثبت حساب `,8,me)]),default:e(()=>[o(`form`,{class:`admin-form`,onSubmit:re(Q,[`prevent`])},[U.value?(t(),s(`p`,k,n(U.value),1)):h(``,!0),o(`div`,A,[o(`div`,j,[i[7]||=o(`label`,{for:`bank-name`},[d(`نام بانک `),o(`span`,{class:`admin-form__required`},`*`)],-1),r(o(`input`,{id:`bank-name`,"onUpdate:modelValue":i[0]||=e=>J.bankName=e,type:`text`,class:`admin-input`,placeholder:`مثال: ملت`},null,512),[[y,J.bankName]])]),o(`div`,M,[i[8]||=o(`label`,{for:`account-number`},[d(` شماره حساب `),o(`span`,{class:`admin-form__required`},`*`)],-1),r(o(`input`,{id:`account-number`,"onUpdate:modelValue":i[1]||=e=>J.accountNumber=e,type:`text`,class:`admin-input`,placeholder:`1234567890`,inputmode:`numeric`,dir:`ltr`},null,512),[[y,J.accountNumber]])])]),o(`div`,N,[i[9]||=o(`label`,{for:`account-holder`},[d(` نام صاحب حساب `),o(`span`,{class:`admin-form__required`},`*`)],-1),r(o(`input`,{id:`account-holder`,"onUpdate:modelValue":i[2]||=e=>J.accountHolder=e,type:`text`,class:`admin-input`},null,512),[[y,J.accountHolder]])]),o(`div`,P,[o(`div`,F,[i[10]||=o(`label`,{for:`card-number`},`شماره کارت`,-1),r(o(`input`,{id:`card-number`,"onUpdate:modelValue":i[3]||=e=>J.cardNumber=e,type:`text`,class:`admin-input`,placeholder:`6104 3378 0077 1234`,inputmode:`numeric`,dir:`ltr`},null,512),[[y,J.cardNumber]])]),o(`div`,I,[i[11]||=o(`label`,{for:`iban`},`شماره شبا`,-1),r(o(`input`,{id:`iban`,"onUpdate:modelValue":i[4]||=e=>J.iban=e,type:`text`,class:`admin-input`,placeholder:`IR...`,dir:`ltr`},null,512),[[y,J.iban]])])]),o(`div`,L,[c(oe,{modelValue:J.isActive,"onUpdate:modelValue":i[5]||=e=>J.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-0011826b`]]);export{R as default};
\ No newline at end of file
diff --git a/dist/assets/BannersView-CZaBcIQn.js b/dist/assets/BannersView-CZaBcIQn.js
deleted file mode 100644
index a7e7640..0000000
--- a/dist/assets/BannersView-CZaBcIQn.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,G as n,J as r,N as i,Q as a,R as o,St as s,V as c,X as l,Z as u,dt as d,et as f,gt as p,ht as m,it as h,l as g,lt as _,nt as v,rt as y,st as ee,vt as b,xt 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"./BaseSwitch-dp2xMemS.js";import{t as te}from"./BaseEmptyState-DGu6Pfui.js";import{t as E}from"./AdminImagePicker-C0OGC-bB.js";import{t as D}from"./AdminSelect-BeLNl2Qz.js";var O={class:`banners-page`},k={key:2,class:`admin-card`},A={class:`admin-table`},j={key:0,class:`banner-sub`},M={class:`actions`},N=[`onClick`],P=[`onClick`],F={class:`field`},I={class:`field`},L={class:`field__head`},R={class:`field`},z={class:`field__head`},B={class:`field`},ne={class:`field__head`},V={class:`field`},H={class:`field`},U=[`disabled`],W=c(h({__name:`BannersView`,setup(c){let h=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دستهبندیها`}],W=S([]),G=S(!0),K=S(!1),q=S(!1),J=S(null),Y=C(),X=b({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,imageUrl:null,displayOrder:0,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),Z=l(()=>J.value?`ویرایش بنر`:`افزودن بنر`);function re(e){return h.find(t=>t.value===e)?.label??e}async function Q(){G.value=!0;try{W.value=await g.list()}catch(e){Y.error(e instanceof i?e.message:`بارگذاری بنرها ناموفق بود.`)}finally{G.value=!1}}function $(){J.value=null,Object.assign(X,{slot:`home_hero`,title:``,subtitle:``,ctaLabel:`مشاهده کالکشن`,ctaLink:`/categories`,imageUrl:null,displayOrder:W.value.length,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),q.value=!0}function ie(e){J.value=e.id,Object.assign(X,{slot:e.slot,title:e.title,subtitle:e.subtitle,ctaLabel:e.ctaLabel,ctaLink:e.ctaLink||`/categories`,imageUrl:e.imageUrl||null,displayOrder:e.displayOrder,isActive:e.isActive,showTitle:e.showTitle!==!1,showSubtitle:e.showSubtitle!==!1,showCta:e.showCta!==!1}),q.value=!0}async function ae(){if(X.title.trim()){K.value=!0;try{let e={slot:X.slot,title:X.title.trim(),subtitle:X.subtitle.trim()||null,ctaLabel:X.ctaLabel.trim()||null,ctaLink:X.ctaLink.trim()||null,imageUrl:X.imageUrl,displayOrder:X.displayOrder,isActive:X.isActive,showTitle:X.showTitle,showSubtitle:X.showSubtitle,showCta:X.showCta};J.value?await g.update(J.value,e):await g.create(e),q.value=!1,Y.success(`بنر ذخیره شد.`),await Q()}catch(e){Y.error(e instanceof i?e.message:`ذخیره بنر ناموفق بود.`)}finally{K.value=!1}}}async function oe(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await g.remove(e.id),Y.success(`بنر حذف شد.`),await Q()}catch(e){Y.error(e instanceof i?e.message:`حذف بنر ناموفق بود.`)}}return ee(()=>{Q()}),(i,c)=>(_(),f(`div`,O,[u(`div`,{class:`admin-page-header`},[c[13]||=u(`div`,null,[u(`h1`,{class:`admin-page-header__title`},`بنرها`),u(`p`,{class:`admin-page-header__sub`},`بنر بخشهای مختلف اپ کاربر را از اینجا مدیریت کنید.`)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:$},`افزودن بنر`)]),G.value?(_(),a(w,{key:0,variant:`table`})):W.value.length?(_(),f(`div`,k,[u(`table`,A,[c[14]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`تصویر`),u(`th`,null,`عنوان`),u(`th`,null,`بخش`),u(`th`,null,`دکمه`),u(`th`,null,`فعال`),u(`th`,{class:`actions`},`عملیات`)])],-1),u(`tbody`,null,[(_(!0),f(r,null,d(W.value,n=>(_(),f(`tr`,{key:n.id},[u(`td`,null,[u(`span`,{class:x([`banner-thumb`,{"banner-thumb--empty":!n.imageUrl}]),style:s(n.imageUrl?{backgroundImage:`url(${n.imageUrl})`}:void 0)},null,6)]),u(`td`,null,[u(`strong`,null,t(n.title),1),n.subtitle?(_(),f(`p`,j,t(n.subtitle),1)):e(``,!0)]),u(`td`,null,t(re(n.slot)),1),u(`td`,null,t(n.ctaLabel||`—`),1),u(`td`,null,t(n.isActive?`بله`:`خیر`),1),u(`td`,M,[u(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ie(n)},` ویرایش `,8,N),u(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>oe(n)},` حذف `,8,P)])]))),128))])])])):(_(),a(te,{key:1,title:`بنری ثبت نشده`,description:`اولین بنر خانه را اضافه کنید.`},{default:m(()=>[u(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:$},` افزودن بنر `)]),_:1})),y(o,{open:q.value,title:Z.value,onClose:c[12]||=e=>q.value=!1},{footer:m(()=>[u(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:c[11]||=e=>q.value=!1},`انصراف`),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.title.trim()||K.value,onClick:ae},t(K.value?`در حال ذخیره...`:`ذخیره`),9,U)]),default:m(()=>[u(`label`,F,[c[15]||=v(` بخش نمایش `,-1),y(D,{modelValue:X.slot,"onUpdate:modelValue":c[0]||=e=>X.slot=e,options:h},null,8,[`modelValue`])]),u(`div`,I,[u(`span`,L,[c[16]||=v(` عنوان `,-1),y(T,{modelValue:X.showTitle,"onUpdate:modelValue":c[1]||=e=>X.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),p(u(`input`,{"onUpdate:modelValue":c[2]||=e=>X.title=e,class:`admin-input`},null,512),[[n,X.title]])]),u(`div`,R,[u(`span`,z,[c[17]||=v(` زیرعنوان `,-1),y(T,{modelValue:X.showSubtitle,"onUpdate:modelValue":c[3]||=e=>X.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),p(u(`input`,{"onUpdate:modelValue":c[4]||=e=>X.subtitle=e,class:`admin-input`},null,512),[[n,X.subtitle]])]),u(`div`,B,[u(`span`,ne,[c[18]||=v(` متن دکمه `,-1),y(T,{modelValue:X.showCta,"onUpdate:modelValue":c[5]||=e=>X.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),p(u(`input`,{"onUpdate:modelValue":c[6]||=e=>X.ctaLabel=e,class:`admin-input`},null,512),[[n,X.ctaLabel]])]),u(`label`,V,[c[19]||=v(` لینک دکمه `,-1),p(u(`input`,{"onUpdate:modelValue":c[7]||=e=>X.ctaLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories`},null,512),[[n,X.ctaLink]])]),u(`label`,H,[c[20]||=v(`ترتیب نمایش`,-1),p(u(`input`,{"onUpdate:modelValue":c[8]||=e=>X.displayOrder=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[n,X.displayOrder,void 0,{number:!0}]])]),y(E,{modelValue:X.imageUrl,"onUpdate:modelValue":c[9]||=e=>X.imageUrl=e,label:`تصویر بنر`},null,8,[`modelValue`]),y(T,{modelValue:X.isActive,"onUpdate:modelValue":c[10]||=e=>X.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-1ca3d686`]]);export{W as default};
\ No newline at end of file
diff --git a/dist/assets/BannersView-KHMLub3-.js b/dist/assets/BannersView-KHMLub3-.js
new file mode 100644
index 0000000..c6519d2
--- /dev/null
+++ b/dist/assets/BannersView-KHMLub3-.js
@@ -0,0 +1 @@
+import{B as e,Dt as t,O as n,Ot as r,T as i,Tt as a,V as o,Y as s,Z as c,c as l,d as u,g as d,h as f,j as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{N as b,R as ee,W as x,l as S,z as C}from"./index-CXa4EMLW.js";import{t as te}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as w}from"./BaseSwitch-TV5Yvtf7.js";import{t as T}from"./BaseEmptyState-BmO9aDcK.js";import{t as E}from"./AdminImagePicker-C4toq7MG.js";import{t as D}from"./AdminSelect-9UfEJQzN.js";var O={class:`banners-page`},k={key:2,class:`admin-card`},A={class:`admin-table`},j={key:0,class:`banner-sub`},M={class:`actions`},N=[`onClick`],P=[`onClick`],F={class:`field`},I={class:`field`},L={class:`field__head`},R={class:`field`},z={class:`field__head`},B={class:`field`},ne={class:`field__head`},V={class:`field`},H={class:`field`},U=[`disabled`],W=v(d({__name:`BannersView`,setup(d){let v=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دستهبندیها`}],W=c([]),G=c(!0),K=c(!1),q=c(!1),J=c(null),Y=C(),X=s({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,imageUrl:null,displayOrder:0,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),Z=_(()=>J.value?`ویرایش بنر`:`افزودن بنر`);function re(e){return v.find(t=>t.value===e)?.label??e}async function Q(){G.value=!0;try{W.value=await S.list()}catch(e){Y.error(e instanceof b?e.message:`بارگذاری بنرها ناموفق بود.`)}finally{G.value=!1}}function $(){J.value=null,Object.assign(X,{slot:`home_hero`,title:``,subtitle:``,ctaLabel:`مشاهده کالکشن`,ctaLink:`/categories`,imageUrl:null,displayOrder:W.value.length,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),q.value=!0}function ie(e){J.value=e.id,Object.assign(X,{slot:e.slot,title:e.title,subtitle:e.subtitle,ctaLabel:e.ctaLabel,ctaLink:e.ctaLink||`/categories`,imageUrl:e.imageUrl||null,displayOrder:e.displayOrder,isActive:e.isActive,showTitle:e.showTitle!==!1,showSubtitle:e.showSubtitle!==!1,showCta:e.showCta!==!1}),q.value=!0}async function ae(){if(X.title.trim()){K.value=!0;try{let e={slot:X.slot,title:X.title.trim(),subtitle:X.subtitle.trim()||null,ctaLabel:X.ctaLabel.trim()||null,ctaLink:X.ctaLink.trim()||null,imageUrl:X.imageUrl,displayOrder:X.displayOrder,isActive:X.isActive,showTitle:X.showTitle,showSubtitle:X.showSubtitle,showCta:X.showCta};J.value?await S.update(J.value,e):await S.create(e),q.value=!1,Y.success(`بنر ذخیره شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`ذخیره بنر ناموفق بود.`)}finally{K.value=!1}}}async function oe(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await S.remove(e.id),Y.success(`بنر حذف شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`حذف بنر ناموفق بود.`)}}return i(()=>{Q()}),(i,s)=>(n(),u(`div`,O,[l(`div`,{class:`admin-page-header`},[s[13]||=l(`div`,null,[l(`h1`,{class:`admin-page-header__title`},`بنرها`),l(`p`,{class:`admin-page-header__sub`},`بنر بخشهای مختلف اپ کاربر را از اینجا مدیریت کنید.`)],-1),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:$},`افزودن بنر`)]),G.value?(n(),m(te,{key:0,variant:`table`})):W.value.length?(n(),u(`div`,k,[l(`table`,A,[s[14]||=l(`thead`,null,[l(`tr`,null,[l(`th`,null,`تصویر`),l(`th`,null,`عنوان`),l(`th`,null,`بخش`),l(`th`,null,`دکمه`),l(`th`,null,`فعال`),l(`th`,{class:`actions`},`عملیات`)])],-1),l(`tbody`,null,[(n(!0),u(g,null,p(W.value,e=>(n(),u(`tr`,{key:e.id},[l(`td`,null,[l(`span`,{class:a([`banner-thumb`,{"banner-thumb--empty":!e.imageUrl}]),style:t(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6)]),l(`td`,null,[l(`strong`,null,r(e.title),1),e.subtitle?(n(),u(`p`,j,r(e.subtitle),1)):y(``,!0)]),l(`td`,null,r(re(e.slot)),1),l(`td`,null,r(e.ctaLabel||`—`),1),l(`td`,null,r(e.isActive?`بله`:`خیر`),1),l(`td`,M,[l(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>ie(e)},` ویرایش `,8,N),l(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>oe(e)},` حذف `,8,P)])]))),128))])])])):(n(),m(T,{key:1,title:`بنری ثبت نشده`,description:`اولین بنر خانه را اضافه کنید.`},{default:e(()=>[l(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:$},` افزودن بنر `)]),_:1})),f(ee,{open:q.value,title:Z.value,onClose:s[12]||=e=>q.value=!1},{footer:e(()=>[l(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:s[11]||=e=>q.value=!1},`انصراف`),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.title.trim()||K.value,onClick:ae},r(K.value?`در حال ذخیره...`:`ذخیره`),9,U)]),default:e(()=>[l(`label`,F,[s[15]||=h(` بخش نمایش `,-1),f(D,{modelValue:X.slot,"onUpdate:modelValue":s[0]||=e=>X.slot=e,options:v},null,8,[`modelValue`])]),l(`div`,I,[l(`span`,L,[s[16]||=h(` عنوان `,-1),f(w,{modelValue:X.showTitle,"onUpdate:modelValue":s[1]||=e=>X.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(l(`input`,{"onUpdate:modelValue":s[2]||=e=>X.title=e,class:`admin-input`},null,512),[[x,X.title]])]),l(`div`,R,[l(`span`,z,[s[17]||=h(` زیرعنوان `,-1),f(w,{modelValue:X.showSubtitle,"onUpdate:modelValue":s[3]||=e=>X.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(l(`input`,{"onUpdate:modelValue":s[4]||=e=>X.subtitle=e,class:`admin-input`},null,512),[[x,X.subtitle]])]),l(`div`,B,[l(`span`,ne,[s[18]||=h(` متن دکمه `,-1),f(w,{modelValue:X.showCta,"onUpdate:modelValue":s[5]||=e=>X.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(l(`input`,{"onUpdate:modelValue":s[6]||=e=>X.ctaLabel=e,class:`admin-input`},null,512),[[x,X.ctaLabel]])]),l(`label`,V,[s[19]||=h(` لینک دکمه `,-1),o(l(`input`,{"onUpdate:modelValue":s[7]||=e=>X.ctaLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories`},null,512),[[x,X.ctaLink]])]),l(`label`,H,[s[20]||=h(`ترتیب نمایش`,-1),o(l(`input`,{"onUpdate:modelValue":s[8]||=e=>X.displayOrder=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[x,X.displayOrder,void 0,{number:!0}]])]),f(E,{modelValue:X.imageUrl,"onUpdate:modelValue":s[9]||=e=>X.imageUrl=e,label:`تصویر بنر`},null,8,[`modelValue`]),f(w,{modelValue:X.isActive,"onUpdate:modelValue":s[10]||=e=>X.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-1ca3d686`]]);export{W as default};
\ No newline at end of file
diff --git a/dist/assets/BaseEmptyState-BmO9aDcK.js b/dist/assets/BaseEmptyState-BmO9aDcK.js
new file mode 100644
index 0000000..a9c7d65
--- /dev/null
+++ b/dist/assets/BaseEmptyState-BmO9aDcK.js
@@ -0,0 +1 @@
+import{M as e,O as t,Ot as n,Tt as r,c as i,d as a,g as o,h as s,t as c,u as l}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{P as u}from"./index-CXa4EMLW.js";var d={class:`base-empty__icon`,"aria-hidden":`true`},f={class:`base-empty__title`},p={key:0,class:`base-empty__description`},m={key:1,class:`base-empty__actions`},h=c(o({__name:`BaseEmptyState`,props:{icon:{default:`file`},title:{},description:{},compact:{type:Boolean}},emits:[`action`,`secondary`],setup(o){return(c,h)=>(t(),a(`div`,{class:r([`base-empty`,{"base-empty--compact":o.compact}])},[i(`div`,d,[s(u,{name:o.icon,size:o.compact?28:36},null,8,[`name`,`size`])]),i(`h3`,f,n(o.title),1),o.description?(t(),a(`p`,p,n(o.description),1)):l(``,!0),c.$slots.default||c.$slots.secondary?(t(),a(`div`,m,[e(c.$slots,`default`,{},void 0,!0),e(c.$slots,`secondary`,{},void 0,!0)])):l(``,!0)],2))}}),[[`__scopeId`,`data-v-47ea81e4`]]);export{h as t};
\ No newline at end of file
diff --git a/dist/assets/BaseEmptyState-DGu6Pfui.js b/dist/assets/BaseEmptyState-DGu6Pfui.js
deleted file mode 100644
index 2ecb131..0000000
--- a/dist/assets/BaseEmptyState-DGu6Pfui.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,P as n,V as r,Z as i,et as a,ft as o,it as s,lt as c,rt as l,xt as u}from"./index-B2VD3zy8.js";var d={class:`base-empty__icon`,"aria-hidden":`true`},f={class:`base-empty__title`},p={key:0,class:`base-empty__description`},m={key:1,class:`base-empty__actions`},h=r(s({__name:`BaseEmptyState`,props:{icon:{default:`file`},title:{},description:{},compact:{type:Boolean}},emits:[`action`,`secondary`],setup(r){return(s,h)=>(c(),a(`div`,{class:u([`base-empty`,{"base-empty--compact":r.compact}])},[i(`div`,d,[l(n,{name:r.icon,size:r.compact?28:36},null,8,[`name`,`size`])]),i(`h3`,f,t(r.title),1),r.description?(c(),a(`p`,p,t(r.description),1)):e(``,!0),s.$slots.default||s.$slots.secondary?(c(),a(`div`,m,[o(s.$slots,`default`,{},void 0,!0),o(s.$slots,`secondary`,{},void 0,!0)])):e(``,!0)],2))}}),[[`__scopeId`,`data-v-47ea81e4`]]);export{h as t};
\ No newline at end of file
diff --git a/dist/assets/BaseSwitch-TV5Yvtf7.js b/dist/assets/BaseSwitch-TV5Yvtf7.js
new file mode 100644
index 0000000..a0115d5
--- /dev/null
+++ b/dist/assets/BaseSwitch-TV5Yvtf7.js
@@ -0,0 +1 @@
+import{O as e,Ot as t,Tt as n,c as r,d as i,g as a,s as o,t as s,u as c}from"./_plugin-vue_export-helper-OaxA6A2f.js";var l=[`title`],u={key:0,class:`base-switch__label`},d={class:`base-switch__control`},f=[`id`,`checked`,`disabled`,`aria-checked`,`aria-label`],p={class:`base-switch__track`,"aria-hidden":`true`},m={class:`base-switch__thumb`},h={key:0,class:`base-switch__spinner`},g=s(a({__name:`BaseSwitch`,props:{modelValue:{type:Boolean},disabled:{type:Boolean},loading:{type:Boolean},error:{type:Boolean},label:{},activeText:{default:`فعال`},inactiveText:{default:`غیرفعال`},id:{}},emits:[`update:modelValue`],setup(a,{emit:s}){let g=a,_=s,v=o(()=>g.id??`switch-${crypto.randomUUID().slice(0,8)}`),y=o(()=>g.modelValue?g.activeText:g.inactiveText);function b(e){let t=e.target,n=t.checked;t.checked=g.modelValue,!(g.disabled||g.loading)&&_(`update:modelValue`,n)}return(o,s)=>(e(),i(`label`,{class:n([`base-switch`,{"base-switch--disabled":a.disabled||a.loading,"base-switch--error":a.error}]),title:y.value},[a.label?(e(),i(`span`,u,t(a.label),1)):c(``,!0),r(`span`,d,[r(`input`,{id:v.value,class:`base-switch__input`,type:`checkbox`,role:`switch`,checked:a.modelValue,disabled:a.disabled||a.loading,"aria-checked":a.modelValue,"aria-label":a.label||y.value,onChange:b},null,40,f),r(`span`,p,[r(`span`,m,[a.loading?(e(),i(`span`,h)):c(``,!0)])])])],10,l))}}),[[`__scopeId`,`data-v-0410eed4`]]);export{g as t};
\ No newline at end of file
diff --git a/dist/assets/BaseSwitch-dp2xMemS.js b/dist/assets/BaseSwitch-dp2xMemS.js
deleted file mode 100644
index a6a696c..0000000
--- a/dist/assets/BaseSwitch-dp2xMemS.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,V as n,X as r,Z as i,et as a,it as o,lt as s,xt as c}from"./index-B2VD3zy8.js";var l=[`title`],u={key:0,class:`base-switch__label`},d={class:`base-switch__control`},f=[`id`,`checked`,`disabled`,`aria-checked`,`aria-label`],p={class:`base-switch__track`,"aria-hidden":`true`},m={class:`base-switch__thumb`},h={key:0,class:`base-switch__spinner`},g=n(o({__name:`BaseSwitch`,props:{modelValue:{type:Boolean},disabled:{type:Boolean},loading:{type:Boolean},error:{type:Boolean},label:{},activeText:{default:`فعال`},inactiveText:{default:`غیرفعال`},id:{}},emits:[`update:modelValue`],setup(n,{emit:o}){let g=n,_=o,v=r(()=>g.id??`switch-${crypto.randomUUID().slice(0,8)}`),y=r(()=>g.modelValue?g.activeText:g.inactiveText);function b(e){let t=e.target,n=t.checked;t.checked=g.modelValue,!(g.disabled||g.loading)&&_(`update:modelValue`,n)}return(r,o)=>(s(),a(`label`,{class:c([`base-switch`,{"base-switch--disabled":n.disabled||n.loading,"base-switch--error":n.error}]),title:y.value},[n.label?(s(),a(`span`,u,t(n.label),1)):e(``,!0),i(`span`,d,[i(`input`,{id:v.value,class:`base-switch__input`,type:`checkbox`,role:`switch`,checked:n.modelValue,disabled:n.disabled||n.loading,"aria-checked":n.modelValue,"aria-label":n.label||y.value,onChange:b},null,40,f),i(`span`,p,[i(`span`,m,[n.loading?(s(),a(`span`,h)):e(``,!0)])])])],10,l))}}),[[`__scopeId`,`data-v-0410eed4`]]);export{g as t};
\ No newline at end of file
diff --git a/dist/assets/BrandsView-CPBAGKxa.js b/dist/assets/BrandsView-CPBAGKxa.js
deleted file mode 100644
index 4e5b973..0000000
--- a/dist/assets/BrandsView-CPBAGKxa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{Ct as e,G as t,J as n,N as r,Q as i,R as a,V as o,X as s,Z as c,dt as l,et as u,gt as d,ht as f,it as p,lt as m,nt as h,rt as g,st as _,u as v,vt as y,yt as b,z as x}from"./index-B2VD3zy8.js";import{t as S}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as C}from"./BaseSwitch-dp2xMemS.js";import{t as w}from"./BaseEmptyState-DGu6Pfui.js";var T={class:`admin-page`},E={key:2,class:`admin-table`},D={dir:`ltr`},O=[`onClick`],k={class:`field`},A={class:`field`},j={class:`field`},M={class:`field`},N=[`disabled`],P=o(p({__name:`BrandsView`,setup(o){let p=b([]),P=b(!0),F=b(!1),I=b(null),L=x(),R=y({name:``,slug:``,description:``,displayOrder:0,isActive:!0}),z=s(()=>I.value?`ویرایش برند`:`افزودن برند`);async function B(){P.value=!0;try{p.value=await v.list()}catch(e){L.error(e instanceof r?e.message:`بارگذاری برندها ناموفق بود`)}finally{P.value=!1}}function V(){I.value=null,Object.assign(R,{name:``,slug:``,description:``,displayOrder:p.value.length+1,isActive:!0}),F.value=!0}function H(e){I.value=e.id,Object.assign(R,{name:e.name,slug:e.slug??``,description:e.description??``,displayOrder:e.displayOrder,isActive:e.isActive}),F.value=!0}async function U(){try{let e={name:R.name.trim(),slug:R.slug.trim()||void 0,description:R.description.trim()||void 0,displayOrder:R.displayOrder,isActive:R.isActive};I.value?await v.update(I.value,e):await v.create(e),F.value=!1,L.success(`ذخیره شد`),await B()}catch(e){L.error(e instanceof r?e.message:`ذخیره ناموفق بود`)}}return _(()=>{B()}),(r,o)=>(m(),u(`div`,T,[c(`header`,{class:`admin-page__head`},[o[6]||=c(`div`,null,[c(`h1`,null,`برندها`)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:V},`افزودن برند`)]),P.value?(m(),i(S,{key:0,variant:`table`})):p.value.length?(m(),u(`table`,E,[o[7]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`نام`),c(`th`,null,`شناسه لاتین`),c(`th`,null,`مشتریان`),c(`th`,null,`فعال`),c(`th`)])],-1),c(`tbody`,null,[(m(!0),u(n,null,l(p.value,t=>(m(),u(`tr`,{key:t.id},[c(`td`,null,e(t.name),1),c(`td`,D,e(t.slug||`—`),1),c(`td`,null,e(t.customersCount??0),1),c(`td`,null,e(t.isActive?`بله`:`خیر`),1),c(`td`,null,[c(`button`,{type:`button`,class:`link`,onClick:e=>H(t)},`ویرایش`,8,O)])]))),128))])])):(m(),i(w,{key:1,title:`برندی ثبت نشده`})),g(a,{open:F.value,title:z.value,onClose:o[5]||=e=>F.value=!1},{footer:f(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!R.name.trim(),onClick:U},`ذخیره`,8,N)]),default:f(()=>[c(`label`,k,[o[8]||=h(`نام`,-1),d(c(`input`,{"onUpdate:modelValue":o[0]||=e=>R.name=e,class:`admin-input`},null,512),[[t,R.name]])]),c(`label`,A,[o[9]||=h(`شناسه لاتین`,-1),d(c(`input`,{"onUpdate:modelValue":o[1]||=e=>R.slug=e,class:`admin-input`,dir:`ltr`,placeholder:`مثلاً nademi-silk`},null,512),[[t,R.slug]])]),c(`label`,j,[o[10]||=h(`توضیح`,-1),d(c(`textarea`,{"onUpdate:modelValue":o[2]||=e=>R.description=e,class:`admin-input`,rows:`3`},null,512),[[t,R.description]])]),c(`label`,M,[o[11]||=h(`ترتیب`,-1),d(c(`input`,{"onUpdate:modelValue":o[3]||=e=>R.displayOrder=e,type:`number`,class:`admin-input`},null,512),[[t,R.displayOrder,void 0,{number:!0}]])]),g(C,{modelValue:R.isActive,"onUpdate:modelValue":o[4]||=e=>R.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-88043806`]]);export{P as default};
\ No newline at end of file
diff --git a/dist/assets/BrandsView-Il4Q4zqB.js b/dist/assets/BrandsView-Il4Q4zqB.js
new file mode 100644
index 0000000..5e935b2
--- /dev/null
+++ b/dist/assets/BrandsView-Il4Q4zqB.js
@@ -0,0 +1 @@
+import{B as e,O as t,Ot as n,T as r,V as i,Y as a,Z as o,c as s,d as c,g as l,h as u,j as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{N as _,R as v,W as y,u as b,z as x}from"./index-CXa4EMLW.js";import{t as S}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as C}from"./BaseSwitch-TV5Yvtf7.js";import{t as w}from"./BaseEmptyState-BmO9aDcK.js";var T={class:`admin-page`},E={key:2,class:`admin-table`},D={dir:`ltr`},O=[`onClick`],k={class:`field`},A={class:`field`},j={class:`field`},M={class:`field`},N=[`disabled`],P=g(l({__name:`BrandsView`,setup(l){let g=o([]),P=o(!0),F=o(!1),I=o(null),L=x(),R=a({name:``,slug:``,description:``,displayOrder:0,isActive:!0}),z=h(()=>I.value?`ویرایش برند`:`افزودن برند`);async function B(){P.value=!0;try{g.value=await b.list()}catch(e){L.error(e instanceof _?e.message:`بارگذاری برندها ناموفق بود`)}finally{P.value=!1}}function V(){I.value=null,Object.assign(R,{name:``,slug:``,description:``,displayOrder:g.value.length+1,isActive:!0}),F.value=!0}function H(e){I.value=e.id,Object.assign(R,{name:e.name,slug:e.slug??``,description:e.description??``,displayOrder:e.displayOrder,isActive:e.isActive}),F.value=!0}async function U(){try{let e={name:R.name.trim(),slug:R.slug.trim()||void 0,description:R.description.trim()||void 0,displayOrder:R.displayOrder,isActive:R.isActive};I.value?await b.update(I.value,e):await b.create(e),F.value=!1,L.success(`ذخیره شد`),await B()}catch(e){L.error(e instanceof _?e.message:`ذخیره ناموفق بود`)}}return r(()=>{B()}),(r,a)=>(t(),c(`div`,T,[s(`header`,{class:`admin-page__head`},[a[6]||=s(`div`,null,[s(`h1`,null,`برندها`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:V},`افزودن برند`)]),P.value?(t(),f(S,{key:0,variant:`table`})):g.value.length?(t(),c(`table`,E,[a[7]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`نام`),s(`th`,null,`شناسه لاتین`),s(`th`,null,`مشتریان`),s(`th`,null,`فعال`),s(`th`)])],-1),s(`tbody`,null,[(t(!0),c(m,null,d(g.value,e=>(t(),c(`tr`,{key:e.id},[s(`td`,null,n(e.name),1),s(`td`,D,n(e.slug||`—`),1),s(`td`,null,n(e.customersCount??0),1),s(`td`,null,n(e.isActive?`بله`:`خیر`),1),s(`td`,null,[s(`button`,{type:`button`,class:`link`,onClick:t=>H(e)},`ویرایش`,8,O)])]))),128))])])):(t(),f(w,{key:1,title:`برندی ثبت نشده`})),u(v,{open:F.value,title:z.value,onClose:a[5]||=e=>F.value=!1},{footer:e(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!R.name.trim(),onClick:U},`ذخیره`,8,N)]),default:e(()=>[s(`label`,k,[a[8]||=p(`نام`,-1),i(s(`input`,{"onUpdate:modelValue":a[0]||=e=>R.name=e,class:`admin-input`},null,512),[[y,R.name]])]),s(`label`,A,[a[9]||=p(`شناسه لاتین`,-1),i(s(`input`,{"onUpdate:modelValue":a[1]||=e=>R.slug=e,class:`admin-input`,dir:`ltr`,placeholder:`مثلاً nademi-silk`},null,512),[[y,R.slug]])]),s(`label`,j,[a[10]||=p(`توضیح`,-1),i(s(`textarea`,{"onUpdate:modelValue":a[2]||=e=>R.description=e,class:`admin-input`,rows:`3`},null,512),[[y,R.description]])]),s(`label`,M,[a[11]||=p(`ترتیب`,-1),i(s(`input`,{"onUpdate:modelValue":a[3]||=e=>R.displayOrder=e,type:`number`,class:`admin-input`},null,512),[[y,R.displayOrder,void 0,{number:!0}]])]),u(C,{modelValue:R.isActive,"onUpdate:modelValue":a[4]||=e=>R.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-88043806`]]);export{P as default};
\ No newline at end of file
diff --git a/dist/assets/CashPaymentsView-BmPMXCl-.js b/dist/assets/CashPaymentsView-BmPMXCl-.js
new file mode 100644
index 0000000..0e7d38a
--- /dev/null
+++ b/dist/assets/CashPaymentsView-BmPMXCl-.js
@@ -0,0 +1 @@
+import{O as e,Ot as t,T as n,Tt as r,V as ee,Z as i,at as a,c as o,d as s,g as te,h as c,j as l,l as u,r as d,s as ne,t as f,u as p}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{F as re,N as m,P as h,W as g,d as _,i as v,n as y,x as ie,z as ae}from"./index-CXa4EMLW.js";import{t as b}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as oe}from"./AdminSelect-9UfEJQzN.js";import{n as x,t as S}from"./adminLabels-Cz9ccm1Z.js";var se={class:`cash-payments-page`},C={class:`cash-payments-page__filters admin-card`},w={class:`cash-payments-page__search`},T={class:`cash-payments-page__table admin-card desktop-only`},E={class:`admin-table-wrap`},D={class:`admin-table`},O={dir:`ltr`},k={key:0,class:`admin-action-group`},A=[`disabled`,`onClick`],j=[`disabled`,`onClick`],M={key:1,class:`admin-action-group`},N=[`disabled`,`onClick`],P={key:2},F={class:`compact-only admin-card-list`},I={class:`admin-card-item__header`},L={class:`admin-card-item__title`},ce={class:`admin-card-item__meta`},R={key:0},z={dir:`ltr`},B={key:0,class:`admin-card-item__actions`},V=[`disabled`,`onClick`],H=[`disabled`,`onClick`],U=[`disabled`,`onClick`],W=f(te({__name:`CashPaymentsView`,setup(te){let f=re(),W=i([]),G=i(f.query.order??``),K=i(`all`),q=i(!0),J=ae(),Y=i(null),le=[{value:`all`,label:`همه وضعیتها`},{value:`pending_review`,label:`در انتظار تأیید`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`},{value:`expired`,label:`منقضیشده`}],X=ne(()=>{let e=W.value;K.value!==`all`&&(e=e.filter(e=>e.status===K.value));let t=G.value.trim();return t&&(e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t)||e.trackingCode.includes(t))),e});async function ue(){q.value=!0;try{W.value=await _.list()}catch(e){J.error(e instanceof m?e.message:`بارگذاری پرداختها انجام نشد.`)}finally{q.value=!1}}n(()=>{ue()});async function Z(e){Y.value=e.id;try{let t=await _.updateStatus(e.id,{status:`approved`}),n=W.value.findIndex(t=>t.id===e.id);n!==-1&&(W.value[n]={...W.value[n],...t}),J.success(`پرداخت سفارش ${e.orderNumber} تأیید شد.`)}catch(e){J.error(e instanceof m?e.message:`تأیید پرداخت انجام نشد.`)}finally{Y.value=null}}async function Q(e){Y.value=e.id;try{await ie.updateStatus(e.orderId,{status:`final_approved`,note:`تأیید نهایی پس از تأیید رسید نقدی`}),J.success(`سفارش ${e.orderNumber} تأیید نهایی شد.`)}catch(e){J.error(e instanceof m?e.message:`تأیید نهایی انجام نشد.`)}finally{Y.value=null}}async function $(e){Y.value=e.id;try{let t=await _.updateStatus(e.id,{status:`rejected`}),n=W.value.findIndex(t=>t.id===e.id);n!==-1&&(W.value[n]={...W.value[n],...t}),J.warning(`پرداخت سفارش ${e.orderNumber} رد شد.`)}catch(e){J.error(e instanceof m?e.message:`رد پرداخت انجام نشد.`)}finally{Y.value=null}}return(n,i)=>(e(),s(`div`,se,[i[3]||=o(`div`,{class:`admin-page-header`},[o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`پرداختهای نقدی`)])],-1),o(`div`,C,[o(`div`,w,[c(h,{name:`search`,size:18}),ee(o(`input`,{"onUpdate:modelValue":i[0]||=e=>G.value=e,type:`search`,class:`cash-payments-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، پیگیری...`},null,512),[[g,G.value]])]),c(oe,{modelValue:K.value,"onUpdate:modelValue":i[1]||=e=>K.value=e,class:`cash-payments-page__status-select`,"aria-label":`فیلتر وضعیت پرداخت`,options:le},null,8,[`modelValue`])]),q.value?(e(),u(b,{key:0,variant:`table`})):(e(),s(d,{key:1},[o(`div`,T,[o(`div`,E,[o(`table`,D,[i[2]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`شماره سفارش`),o(`th`,null,`مشتری`),o(`th`,null,`مبلغ فاکتور`),o(`th`,null,`مبلغ واریزی`),o(`th`,null,`تاریخ واریز`),o(`th`,null,`شماره پیگیری`),o(`th`,null,`پایان اعتبار`),o(`th`,null,`وضعیت`),o(`th`,null,`عملیات`)])],-1),o(`tbody`,null,[(e(!0),s(d,null,l(X.value,n=>(e(),s(`tr`,{key:n.id},[o(`td`,null,t(n.orderNumber),1),o(`td`,null,t(n.customerName),1),o(`td`,null,t(a(y)(n.amount)),1),o(`td`,null,t(n.paidAmount?a(y)(n.paidAmount):`—`),1),o(`td`,null,t(n.transferDate?a(v)(n.transferDate):`—`),1),o(`td`,O,t(n.trackingCode),1),o(`td`,null,t(a(v)(n.expiresAt)),1),o(`td`,null,[o(`span`,{class:r([`admin-badge`,a(S)[n.status]])},t(a(x)[n.status]),3)]),o(`td`,null,[n.status===`pending_review`?(e(),s(`div`,k,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>Z(n)},` تأیید `,8,A),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>$(n)},` رد `,8,j)])):n.status===`approved`?(e(),s(`div`,M,[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>Q(n)},` تأیید نهایی سفارش `,8,N)])):(e(),s(`span`,P,`—`))])]))),128))])])])]),o(`div`,F,[(e(!0),s(d,null,l(X.value,n=>(e(),s(`article`,{key:n.id,class:`admin-card-item`},[o(`div`,I,[o(`p`,L,t(n.orderNumber),1),o(`span`,{class:r([`admin-badge`,a(S)[n.status]])},t(a(x)[n.status]),3)]),o(`div`,ce,[o(`span`,null,t(n.customerName),1),o(`span`,null,t(a(y)(n.amount)),1),n.paidAmount==null?p(``,!0):(e(),s(`span`,R,`پرداختی: `+t(a(y)(n.paidAmount)),1)),o(`span`,z,t(n.trackingCode),1)]),n.status===`pending_review`||n.status===`approved`?(e(),s(`div`,B,[n.status===`pending_review`?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>Z(n)},` تأیید `,8,V)):p(``,!0),n.status===`pending_review`?(e(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>$(n)},` رد `,8,H)):p(``,!0),n.status===`approved`?(e(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>Q(n)},` تأیید نهایی سفارش `,8,U)):p(``,!0)])):p(``,!0)]))),128))])],64))]))}}),[[`__scopeId`,`data-v-9afb2a83`]]);export{W as default};
\ No newline at end of file
diff --git a/dist/assets/CashPaymentsView-C7RaPyP8.js b/dist/assets/CashPaymentsView-C7RaPyP8.js
deleted file mode 100644
index 06aa9ca..0000000
--- a/dist/assets/CashPaymentsView-C7RaPyP8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,F as n,G as r,J as i,N as a,P as o,Q as s,V as ee,X as te,Z as c,bt as l,d as u,dt as d,et as f,gt as ne,i as p,it as m,lt as h,n as g,rt as _,st as re,x as ie,xt as v,yt as y,z as ae}from"./index-B2VD3zy8.js";import{t as oe}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as se}from"./AdminSelect-BeLNl2Qz.js";import{n as b,t as x}from"./adminLabels-Cz9ccm1Z.js";var S={class:`cash-payments-page`},C={class:`cash-payments-page__filters admin-card`},w={class:`cash-payments-page__search`},T={class:`cash-payments-page__table admin-card desktop-only`},E={class:`admin-table-wrap`},D={class:`admin-table`},O={dir:`ltr`},k={key:0,class:`admin-action-group`},A=[`disabled`,`onClick`],j=[`disabled`,`onClick`],M={key:1,class:`admin-action-group`},N=[`disabled`,`onClick`],P={key:2},F={class:`compact-only admin-card-list`},I={class:`admin-card-item__header`},L={class:`admin-card-item__title`},ce={class:`admin-card-item__meta`},R={key:0},z={dir:`ltr`},B={key:0,class:`admin-card-item__actions`},V=[`disabled`,`onClick`],H=[`disabled`,`onClick`],U=[`disabled`,`onClick`],W=ee(m({__name:`CashPaymentsView`,setup(ee){let m=n(),W=y([]),G=y(m.query.order??``),K=y(`all`),q=y(!0),J=ae(),Y=y(null),le=[{value:`all`,label:`همه وضعیتها`},{value:`pending_review`,label:`در انتظار تأیید`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`},{value:`expired`,label:`منقضیشده`}],X=te(()=>{let e=W.value;K.value!==`all`&&(e=e.filter(e=>e.status===K.value));let t=G.value.trim();return t&&(e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t)||e.trackingCode.includes(t))),e});async function ue(){q.value=!0;try{W.value=await u.list()}catch(e){J.error(e instanceof a?e.message:`بارگذاری پرداختها انجام نشد.`)}finally{q.value=!1}}re(()=>{ue()});async function Z(e){Y.value=e.id;try{let t=await u.updateStatus(e.id,{status:`approved`}),n=W.value.findIndex(t=>t.id===e.id);n!==-1&&(W.value[n]={...W.value[n],...t}),J.success(`پرداخت سفارش ${e.orderNumber} تأیید شد.`)}catch(e){J.error(e instanceof a?e.message:`تأیید پرداخت انجام نشد.`)}finally{Y.value=null}}async function Q(e){Y.value=e.id;try{await ie.updateStatus(e.orderId,{status:`final_approved`,note:`تأیید نهایی پس از تأیید رسید نقدی`}),J.success(`سفارش ${e.orderNumber} تأیید نهایی شد.`)}catch(e){J.error(e instanceof a?e.message:`تأیید نهایی انجام نشد.`)}finally{Y.value=null}}async function $(e){Y.value=e.id;try{let t=await u.updateStatus(e.id,{status:`rejected`}),n=W.value.findIndex(t=>t.id===e.id);n!==-1&&(W.value[n]={...W.value[n],...t}),J.warning(`پرداخت سفارش ${e.orderNumber} رد شد.`)}catch(e){J.error(e instanceof a?e.message:`رد پرداخت انجام نشد.`)}finally{Y.value=null}}return(n,a)=>(h(),f(`div`,S,[a[3]||=c(`div`,{class:`admin-page-header`},[c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`پرداختهای نقدی`)])],-1),c(`div`,C,[c(`div`,w,[_(o,{name:`search`,size:18}),ne(c(`input`,{"onUpdate:modelValue":a[0]||=e=>G.value=e,type:`search`,class:`cash-payments-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، پیگیری...`},null,512),[[r,G.value]])]),_(se,{modelValue:K.value,"onUpdate:modelValue":a[1]||=e=>K.value=e,class:`cash-payments-page__status-select`,"aria-label":`فیلتر وضعیت پرداخت`,options:le},null,8,[`modelValue`])]),q.value?(h(),s(oe,{key:0,variant:`table`})):(h(),f(i,{key:1},[c(`div`,T,[c(`div`,E,[c(`table`,D,[a[2]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`شماره سفارش`),c(`th`,null,`مشتری`),c(`th`,null,`مبلغ فاکتور`),c(`th`,null,`مبلغ واریزی`),c(`th`,null,`تاریخ واریز`),c(`th`,null,`شماره پیگیری`),c(`th`,null,`پایان اعتبار`),c(`th`,null,`وضعیت`),c(`th`,null,`عملیات`)])],-1),c(`tbody`,null,[(h(!0),f(i,null,d(X.value,e=>(h(),f(`tr`,{key:e.id},[c(`td`,null,t(e.orderNumber),1),c(`td`,null,t(e.customerName),1),c(`td`,null,t(l(g)(e.amount)),1),c(`td`,null,t(e.paidAmount?l(g)(e.paidAmount):`—`),1),c(`td`,null,t(e.transferDate?l(p)(e.transferDate):`—`),1),c(`td`,O,t(e.trackingCode),1),c(`td`,null,t(l(p)(e.expiresAt)),1),c(`td`,null,[c(`span`,{class:v([`admin-badge`,l(x)[e.status]])},t(l(b)[e.status]),3)]),c(`td`,null,[e.status===`pending_review`?(h(),f(`div`,k,[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:Y.value===e.id,onClick:t=>Z(e)},` تأیید `,8,A),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:Y.value===e.id,onClick:t=>$(e)},` رد `,8,j)])):e.status===`approved`?(h(),f(`div`,M,[c(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:Y.value===e.id,onClick:t=>Q(e)},` تأیید نهایی سفارش `,8,N)])):(h(),f(`span`,P,`—`))])]))),128))])])])]),c(`div`,F,[(h(!0),f(i,null,d(X.value,n=>(h(),f(`article`,{key:n.id,class:`admin-card-item`},[c(`div`,I,[c(`p`,L,t(n.orderNumber),1),c(`span`,{class:v([`admin-badge`,l(x)[n.status]])},t(l(b)[n.status]),3)]),c(`div`,ce,[c(`span`,null,t(n.customerName),1),c(`span`,null,t(l(g)(n.amount)),1),n.paidAmount==null?e(``,!0):(h(),f(`span`,R,`پرداختی: `+t(l(g)(n.paidAmount)),1)),c(`span`,z,t(n.trackingCode),1)]),n.status===`pending_review`||n.status===`approved`?(h(),f(`div`,B,[n.status===`pending_review`?(h(),f(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>Z(n)},` تأیید `,8,V)):e(``,!0),n.status===`pending_review`?(h(),f(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>$(n)},` رد `,8,H)):e(``,!0),n.status===`approved`?(h(),f(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:Y.value===n.id,onClick:e=>Q(n)},` تأیید نهایی سفارش `,8,U)):e(``,!0)])):e(``,!0)]))),128))])],64))]))}}),[[`__scopeId`,`data-v-9afb2a83`]]);export{W as default};
\ No newline at end of file
diff --git a/dist/assets/CatalogRequestsView-DQu3_M_v.js b/dist/assets/CatalogRequestsView-DQu3_M_v.js
new file mode 100644
index 0000000..1f64cd0
--- /dev/null
+++ b/dist/assets/CatalogRequestsView-DQu3_M_v.js
@@ -0,0 +1 @@
+import{O as e,Ot as t,T as n,Z as r,at as i,c as a,d as o,g as s,h as c,j as l,l as u,m as d,r as f,t as p,u as m}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{N as h,f as g,i as _,z as v}from"./index-CXa4EMLW.js";import{t as y}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as b}from"./BaseEmptyState-BmO9aDcK.js";import{t as x}from"./AdminSelect-9UfEJQzN.js";var S={class:`admin-page`},C={class:`admin-page__head`},w={class:`request-card__top`},T={class:`muted`,dir:`ltr`},E={class:`badge`},D={key:0,class:`muted`},O={class:`admin-table`},k={dir:`ltr`},A={key:0,class:`movements`},j={class:`muted`},M=p(s({__name:`CatalogRequestsView`,setup(s){let p=[{value:``,label:`همه وضعیتها`},{value:`new`,label:`درخواست جدید`},{value:`approved`,label:`تأیید شده`},{value:`ready_to_ship`,label:`آماده ارسال`},{value:`delivered`,label:`تحویل به مشتری`},{value:`returned`,label:`بازگردانده شده`},{value:`cancelled`,label:`لغو شده`}],M=[{value:`warehouse`,label:`انبار`},{value:`customer`,label:`مشتری`},{value:`agent`,label:`واسطه`}],N=Object.fromEntries(p.filter(e=>e.value).map(e=>[e.value,e.label])),P=Object.fromEntries(M.map(e=>[e.value,e.label])),F=r([]),I=r(``),L=r(!0),R=r(null),z=v();async function B(){L.value=!0;try{F.value=await g.list(I.value||void 0)}catch(e){z.error(e instanceof h?e.message:`بارگذاری انجام نشد`)}finally{L.value=!1}}async function V(e,t){try{await g.updateStatus(e,t),z.success(`وضعیت بهروز شد`),await B()}catch(e){z.error(e instanceof h?e.message:`بهروزرسانی ناموفق بود`)}}async function H(e,t){if(!R.value){R.value=e;try{await g.updateHolder(e,{holderType:t}),z.success(`محل نگهداری بهروز شد`),await B()}catch(e){z.error(e instanceof h?e.message:`بهروزرسانی محل ناموفق بود`)}finally{R.value=null}}}function U(e){return P[e]??e}return n(()=>{B()}),(n,r)=>(e(),o(`div`,S,[a(`header`,C,[r[1]||=a(`div`,null,[a(`h1`,null,`درخواست کالیته فیزیکی`),a(`p`,null,`بررسی، گردش وضعیت و محل نگهداری اقلام`)],-1),c(x,{modelValue:I.value,"onUpdate:modelValue":[r[0]||=e=>I.value=e,B],options:p},null,8,[`modelValue`])]),L.value?(e(),u(y,{key:0,variant:`cards`})):F.value.length?(e(!0),o(f,{key:2},l(F.value,n=>(e(),o(`div`,{key:n.id,class:`request-card`},[a(`div`,w,[a(`div`,null,[a(`strong`,null,t(n.customerName),1),a(`span`,T,t(n.customerPhone),1),a(`span`,E,t(i(N)[n.status]??n.status),1)]),c(x,{"model-value":n.status,options:p.filter(e=>e.value),"onUpdate:modelValue":e=>V(n.id,String(e))},null,8,[`model-value`,`options`,`onUpdate:modelValue`])]),n.note?(e(),o(`p`,D,t(n.note),1)):m(``,!0),a(`table`,O,[r[2]||=a(`thead`,null,[a(`tr`,null,[a(`th`,null,`محصول`),a(`th`,null,`کد`),a(`th`,null,`تعداد`),a(`th`,null,`محل`)])],-1),a(`tbody`,null,[(e(!0),o(f,null,l(n.items,n=>(e(),o(`tr`,{key:n.id},[a(`td`,null,t(n.productName),1),a(`td`,k,t(n.productCode),1),a(`td`,null,t(n.quantity),1),a(`td`,null,[c(x,{"model-value":n.holderType,options:M,"onUpdate:modelValue":e=>H(n.id,String(e))},null,8,[`model-value`,`onUpdate:modelValue`]),n.movements?.length?(e(),o(`ul`,A,[(e(!0),o(f,null,l(n.movements,n=>(e(),o(`li`,{key:n.id},[d(t(U(n.fromHolder))+` → `+t(U(n.toHolder))+` `,1),a(`span`,j,t(i(_)(n.movedAt)),1)]))),128))])):m(``,!0)])]))),128))])])]))),128)):(e(),u(b,{key:1,title:`درخواستی نیست`}))]))}}),[[`__scopeId`,`data-v-747d8f88`]]);export{M as default};
\ No newline at end of file
diff --git a/dist/assets/CatalogRequestsView-DSpZCB11.js b/dist/assets/CatalogRequestsView-DSpZCB11.js
deleted file mode 100644
index b7b8aa9..0000000
--- a/dist/assets/CatalogRequestsView-DSpZCB11.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,J as n,N as r,Q as i,V as a,Z as o,bt as s,dt as c,et as l,f as u,i as d,it as f,lt as p,nt as m,rt as h,st as g,yt as _,z as v}from"./index-B2VD3zy8.js";import{t as y}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as b}from"./BaseEmptyState-DGu6Pfui.js";import{t as x}from"./AdminSelect-BeLNl2Qz.js";var S={class:`admin-page`},C={class:`admin-page__head`},w={class:`request-card__top`},T={class:`muted`,dir:`ltr`},E={class:`badge`},D={key:0,class:`muted`},O={class:`admin-table`},k={dir:`ltr`},A={key:0,class:`movements`},j={class:`muted`},M=a(f({__name:`CatalogRequestsView`,setup(a){let f=[{value:``,label:`همه وضعیتها`},{value:`new`,label:`درخواست جدید`},{value:`approved`,label:`تأیید شده`},{value:`ready_to_ship`,label:`آماده ارسال`},{value:`delivered`,label:`تحویل به مشتری`},{value:`returned`,label:`بازگردانده شده`},{value:`cancelled`,label:`لغو شده`}],M=[{value:`warehouse`,label:`انبار`},{value:`customer`,label:`مشتری`},{value:`agent`,label:`واسطه`}],N=Object.fromEntries(f.filter(e=>e.value).map(e=>[e.value,e.label])),P=Object.fromEntries(M.map(e=>[e.value,e.label])),F=_([]),I=_(``),L=_(!0),R=_(null),z=v();async function B(){L.value=!0;try{F.value=await u.list(I.value||void 0)}catch(e){z.error(e instanceof r?e.message:`بارگذاری انجام نشد`)}finally{L.value=!1}}async function V(e,t){try{await u.updateStatus(e,t),z.success(`وضعیت بهروز شد`),await B()}catch(e){z.error(e instanceof r?e.message:`بهروزرسانی ناموفق بود`)}}async function H(e,t){if(!R.value){R.value=e;try{await u.updateHolder(e,{holderType:t}),z.success(`محل نگهداری بهروز شد`),await B()}catch(e){z.error(e instanceof r?e.message:`بهروزرسانی محل ناموفق بود`)}finally{R.value=null}}}function U(e){return P[e]??e}return g(()=>{B()}),(r,a)=>(p(),l(`div`,S,[o(`header`,C,[a[1]||=o(`div`,null,[o(`h1`,null,`درخواست کالیته فیزیکی`),o(`p`,null,`بررسی، گردش وضعیت و محل نگهداری اقلام`)],-1),h(x,{modelValue:I.value,"onUpdate:modelValue":[a[0]||=e=>I.value=e,B],options:f},null,8,[`modelValue`])]),L.value?(p(),i(y,{key:0,variant:`cards`})):F.value.length?(p(!0),l(n,{key:2},c(F.value,r=>(p(),l(`div`,{key:r.id,class:`request-card`},[o(`div`,w,[o(`div`,null,[o(`strong`,null,t(r.customerName),1),o(`span`,T,t(r.customerPhone),1),o(`span`,E,t(s(N)[r.status]??r.status),1)]),h(x,{"model-value":r.status,options:f.filter(e=>e.value),"onUpdate:modelValue":e=>V(r.id,String(e))},null,8,[`model-value`,`options`,`onUpdate:modelValue`])]),r.note?(p(),l(`p`,D,t(r.note),1)):e(``,!0),o(`table`,O,[a[2]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`محصول`),o(`th`,null,`کد`),o(`th`,null,`تعداد`),o(`th`,null,`محل`)])],-1),o(`tbody`,null,[(p(!0),l(n,null,c(r.items,r=>(p(),l(`tr`,{key:r.id},[o(`td`,null,t(r.productName),1),o(`td`,k,t(r.productCode),1),o(`td`,null,t(r.quantity),1),o(`td`,null,[h(x,{"model-value":r.holderType,options:M,"onUpdate:modelValue":e=>H(r.id,String(e))},null,8,[`model-value`,`onUpdate:modelValue`]),r.movements?.length?(p(),l(`ul`,A,[(p(!0),l(n,null,c(r.movements,e=>(p(),l(`li`,{key:e.id},[m(t(U(e.fromHolder))+` → `+t(U(e.toHolder))+` `,1),o(`span`,j,t(s(d)(e.movedAt)),1)]))),128))])):e(``,!0)])]))),128))])])]))),128)):(p(),i(b,{key:1,title:`درخواستی نیست`}))]))}}),[[`__scopeId`,`data-v-747d8f88`]]);export{M as default};
\ No newline at end of file
diff --git a/dist/assets/CatalogsView-BqUCTvB5.js b/dist/assets/CatalogsView-BqUCTvB5.js
deleted file mode 100644
index 8ed9895..0000000
--- a/dist/assets/CatalogsView-BqUCTvB5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,G as n,J as r,N as i,P as ee,Q as a,R as te,St as o,V as s,X as c,Z as l,dt as u,et as d,gt as f,h as ne,ht as p,it as m,lt as h,nt as g,p as _,q as re,rt as v,st as ie,vt as ae,xt as y,yt as b,z as oe}from"./index-B2VD3zy8.js";import{t as se}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as ce}from"./BaseSwitch-dp2xMemS.js";import{t as le}from"./BaseEmptyState-DGu6Pfui.js";import{t as ue}from"./AdminImagePicker-C0OGC-bB.js";import{t as x}from"./AdminSelect-BeLNl2Qz.js";import{t as S}from"./ActiveSwitchCell-DIzTn08M.js";var de={class:`catalogs-page`},fe={class:`catalogs-page__filters admin-card`},pe={class:`catalogs-page__search`},me={key:2,class:`catalogs-page__table admin-card desktop-only`},he={class:`admin-table-wrap`},ge={class:`admin-table`},_e={class:`numeric`},ve={class:`numeric`},ye={class:`status`},be={class:`actions`},xe=[`onClick`],C={key:3,class:`compact-only admin-card-list`},w={class:`admin-card-item__header`},T={class:`admin-card-item__title`},E={class:`admin-card-item__meta`},D={class:`admin-card-item__actions`},O=[`onClick`],k={key:0,class:`admin-form__error`,role:`alert`},A={class:`admin-form__field`},j={class:`admin-form__row`},M={class:`admin-form__field`},Se={class:`admin-form__field`},Ce={class:`admin-form__row`},we={class:`admin-form__field`},Te={class:`admin-form__field`},Ee=[`disabled`],N=s(m({__name:`CatalogsView`,setup(s){let m=b([]),N=b([]),P=b(``),F=b(`all`),I=b(!0),L=b(null),R=b(null),z=b(``),B=b(!1),V=oe(),De=c(()=>[{value:`all`,label:`همه شرکتها`},...N.value.map(e=>({value:e.id,label:e.name}))]),Oe=c(()=>N.value.map(e=>({value:e.id,label:e.name}))),H=()=>({companyId:N.value[0]?.id??``,code:``,name:``,displayOrder:m.value.length+1,isActive:!0,imageUrl:null}),U=ae(H()),ke=c(()=>L.value!==null),W=c(()=>L.value===`edit`?`ویرایش کالیته`:`افزودن کالیته`),G=c(()=>U.code.trim()&&U.name.trim()&&U.companyId),K=c(()=>P.value.trim().length>0||F.value!==`all`),q=c(()=>{let e=m.value;F.value!==`all`&&(e=e.filter(e=>e.companyId===F.value));let t=P.value.trim();return t&&(e=e.filter(e=>e.code.includes(t)||e.name.includes(t)||e.companyName.includes(t))),e});async function Ae(){I.value=!0;try{let[e,t]=await Promise.all([_.list(),ne.list()]);m.value=e,N.value=t}catch(e){V.error(e instanceof i?e.message:`بارگذاری کالیتهها انجام نشد.`)}finally{I.value=!1}}ie(()=>{Ae()});function J(e){return N.value.find(t=>t.id===e)?.name??`—`}function Y(){L.value=`add`,R.value=null,Object.assign(U,H()),z.value=``}function X(e){L.value=`edit`,R.value=e.id,U.companyId=e.companyId,U.code=e.code,U.name=e.name,U.displayOrder=e.displayOrder,U.isActive=e.isActive,U.imageUrl=e.imageUrl??null,z.value=``}function Z(){L.value=null,R.value=null,z.value=``}async function Q(){if(!G.value){z.value=`کد، نام و شرکت الزامی هستند.`;return}B.value=!0;try{if(L.value===`edit`&&R.value){let e=await _.update(R.value,{code:U.code.trim(),name:U.name.trim(),displayOrder:Number(U.displayOrder)||1,isActive:U.isActive,imageUrl:U.imageUrl}),t=m.value.findIndex(e=>e.id===R.value);t!==-1&&(m.value[t]={...m.value[t],...e,companyName:J(U.companyId)}),V.success(`اطلاعات کالیته بهروزرسانی شد.`)}else{let e=await _.create({companyId:U.companyId,code:U.code.trim(),name:U.name.trim(),displayOrder:Number(U.displayOrder)||1,isActive:U.isActive,imageUrl:U.imageUrl});m.value.push({...e,companyName:e.companyName||J(U.companyId),productCount:e.productCount??0}),V.success(`کالیته جدید ثبت شد.`)}Z()}catch(e){V.error(e instanceof i?e.message:`ذخیره کالیته انجام نشد.`)}finally{B.value=!1}}async function $(e,t){await _.setActive(e,t)}function je(){P.value=``,F.value=`all`}return(i,s)=>(h(),d(`div`,de,[l(`div`,{class:`admin-page-header`},[s[8]||=l(`div`,null,[l(`h1`,{class:`admin-page-header__title`},`کالیتهها`)],-1),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن کالیته `)]),l(`div`,fe,[l(`div`,pe,[v(ee,{name:`search`,size:18}),f(l(`input`,{"onUpdate:modelValue":s[0]||=e=>P.value=e,type:`search`,class:`catalogs-page__search-input`,placeholder:`جستجو بر اساس کد یا نام...`},null,512),[[n,P.value]])]),v(x,{modelValue:F.value,"onUpdate:modelValue":s[1]||=e=>F.value=e,class:`catalogs-page__company-filter`,"aria-label":`فیلتر شرکت`,options:De.value},null,8,[`modelValue`,`options`])]),I.value?(h(),a(se,{key:0,variant:`table`})):q.value.length?(h(),d(`div`,me,[l(`div`,he,[l(`table`,ge,[s[9]||=l(`thead`,null,[l(`tr`,null,[l(`th`,null,`تصویر`),l(`th`,null,`کد`),l(`th`,null,`نام کالیته`),l(`th`,null,`شرکت`),l(`th`,{class:`numeric`},`ترتیب`),l(`th`,{class:`numeric`},`تعداد محصول`),l(`th`,{class:`status`},`وضعیت`),l(`th`,{class:`actions`},`عملیات`)])],-1),l(`tbody`,null,[(h(!0),d(r,null,u(q.value,e=>(h(),d(`tr`,{key:e.id},[l(`td`,null,[l(`span`,{class:y([`catalog-thumb`,{"catalog-thumb--empty":!e.imageUrl}]),style:o(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6)]),l(`td`,null,t(e.code),1),l(`td`,null,t(e.name),1),l(`td`,null,t(e.companyName),1),l(`td`,_e,t(e.displayOrder),1),l(`td`,ve,t(e.productCount),1),l(`td`,ye,[v(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`کالیته`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),l(`td`,be,[l(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,xe)])]))),128))])])])])):(h(),a(le,{key:1,class:`admin-card`,icon:`catalogs`,title:K.value?`نتیجهای یافت نشد`:`کالیتهای ثبت نشده`,description:K.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کالیته را ثبت کنید.`},{default:p(()=>[K.value?(h(),d(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:je},` پاک کردن فیلترها `)):(h(),d(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن کالیته `))]),_:1},8,[`title`,`description`])),!I.value&&q.value.length?(h(),d(`div`,C,[(h(!0),d(r,null,u(q.value,e=>(h(),d(`article`,{key:e.id,class:`admin-card-item`},[l(`div`,w,[l(`span`,{class:y([`catalog-thumb`,{"catalog-thumb--empty":!e.imageUrl}]),style:o(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6),l(`p`,T,`کالیته `+t(e.code)+` — `+t(e.name),1),v(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`کالیته`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),l(`div`,E,[l(`span`,null,t(e.companyName),1),l(`span`,null,t(e.productCount)+` محصول`,1),l(`span`,null,`ترتیب: `+t(e.displayOrder),1)]),l(`div`,D,[l(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,O)])]))),128))])):e(``,!0),v(te,{open:ke.value,title:W.value,size:`lg`,onClose:Z},{footer:p(()=>[l(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!G.value||B.value,onClick:Q},t(L.value===`edit`?`ذخیره تغییرات`:`ثبت کالیته`),9,Ee)]),default:p(()=>[l(`form`,{class:`admin-form`,onSubmit:re(Q,[`prevent`])},[z.value?(h(),d(`p`,k,t(z.value),1)):e(``,!0),l(`div`,A,[s[10]||=l(`label`,null,[g(`شرکت `),l(`span`,{class:`admin-form__required`},`*`)],-1),v(x,{modelValue:U.companyId,"onUpdate:modelValue":s[2]||=e=>U.companyId=e,block:``,"aria-label":`انتخاب شرکت`,placeholder:`انتخاب شرکت`,options:Oe.value},null,8,[`modelValue`,`options`])]),l(`div`,j,[l(`div`,M,[s[11]||=l(`label`,{for:`catalog-code`},[g(`کد کالیته `),l(`span`,{class:`admin-form__required`},`*`)],-1),f(l(`input`,{id:`catalog-code`,"onUpdate:modelValue":s[3]||=e=>U.code=e,type:`text`,class:`admin-input`,placeholder:`377`},null,512),[[n,U.code]])]),l(`div`,Se,[s[12]||=l(`label`,{for:`catalog-name`},[g(`نام کالیته `),l(`span`,{class:`admin-form__required`},`*`)],-1),f(l(`input`,{id:`catalog-name`,"onUpdate:modelValue":s[4]||=e=>U.name=e,type:`text`,class:`admin-input`},null,512),[[n,U.name]])])]),l(`div`,Ce,[l(`div`,we,[s[13]||=l(`label`,{for:`catalog-order`},`ترتیب نمایش`,-1),f(l(`input`,{id:`catalog-order`,"onUpdate:modelValue":s[5]||=e=>U.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[n,U.displayOrder,void 0,{number:!0}]])]),l(`div`,Te,[v(ce,{modelValue:U.isActive,"onUpdate:modelValue":s[6]||=e=>U.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])]),v(ue,{modelValue:U.imageUrl,"onUpdate:modelValue":s[7]||=e=>U.imageUrl=e,label:`تصویر بنر کالیته`},null,8,[`modelValue`])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-4fb827ad`]]);export{N as default};
\ No newline at end of file
diff --git a/dist/assets/CatalogsView-DJJrDHxo.js b/dist/assets/CatalogsView-DJJrDHxo.js
new file mode 100644
index 0000000..159ccd4
--- /dev/null
+++ b/dist/assets/CatalogsView-DJJrDHxo.js
@@ -0,0 +1 @@
+import{B as e,Dt as t,O as n,Ot as r,T as ee,Tt as i,V as a,Y as o,Z as s,c,d as l,g as te,h as u,j as d,l as f,m as p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{K as ne,N as v,P as re,R as ie,W as y,h as ae,p as b,z as oe}from"./index-CXa4EMLW.js";import{t as se}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as ce}from"./BaseSwitch-TV5Yvtf7.js";import{t as le}from"./BaseEmptyState-BmO9aDcK.js";import{t as ue}from"./AdminImagePicker-C4toq7MG.js";import{t as x}from"./AdminSelect-9UfEJQzN.js";import{t as S}from"./ActiveSwitchCell-DJZQHZ-8.js";var de={class:`catalogs-page`},fe={class:`catalogs-page__filters admin-card`},pe={class:`catalogs-page__search`},me={key:2,class:`catalogs-page__table admin-card desktop-only`},he={class:`admin-table-wrap`},ge={class:`admin-table`},_e={class:`numeric`},ve={class:`numeric`},ye={class:`status`},be={class:`actions`},xe=[`onClick`],C={key:3,class:`compact-only admin-card-list`},w={class:`admin-card-item__header`},T={class:`admin-card-item__title`},E={class:`admin-card-item__meta`},D={class:`admin-card-item__actions`},O=[`onClick`],k={key:0,class:`admin-form__error`,role:`alert`},A={class:`admin-form__field`},j={class:`admin-form__row`},M={class:`admin-form__field`},Se={class:`admin-form__field`},Ce={class:`admin-form__row`},we={class:`admin-form__field`},Te={class:`admin-form__field`},Ee=[`disabled`],N=g(te({__name:`CatalogsView`,setup(te){let g=s([]),N=s([]),P=s(``),F=s(`all`),I=s(!0),L=s(null),R=s(null),z=s(``),B=s(!1),V=oe(),De=h(()=>[{value:`all`,label:`همه شرکتها`},...N.value.map(e=>({value:e.id,label:e.name}))]),Oe=h(()=>N.value.map(e=>({value:e.id,label:e.name}))),H=()=>({companyId:N.value[0]?.id??``,code:``,name:``,displayOrder:g.value.length+1,isActive:!0,imageUrl:null}),U=o(H()),ke=h(()=>L.value!==null),W=h(()=>L.value===`edit`?`ویرایش کالیته`:`افزودن کالیته`),G=h(()=>U.code.trim()&&U.name.trim()&&U.companyId),K=h(()=>P.value.trim().length>0||F.value!==`all`),q=h(()=>{let e=g.value;F.value!==`all`&&(e=e.filter(e=>e.companyId===F.value));let t=P.value.trim();return t&&(e=e.filter(e=>e.code.includes(t)||e.name.includes(t)||e.companyName.includes(t))),e});async function Ae(){I.value=!0;try{let[e,t]=await Promise.all([b.list(),ae.list()]);g.value=e,N.value=t}catch(e){V.error(e instanceof v?e.message:`بارگذاری کالیتهها انجام نشد.`)}finally{I.value=!1}}ee(()=>{Ae()});function J(e){return N.value.find(t=>t.id===e)?.name??`—`}function Y(){L.value=`add`,R.value=null,Object.assign(U,H()),z.value=``}function X(e){L.value=`edit`,R.value=e.id,U.companyId=e.companyId,U.code=e.code,U.name=e.name,U.displayOrder=e.displayOrder,U.isActive=e.isActive,U.imageUrl=e.imageUrl??null,z.value=``}function Z(){L.value=null,R.value=null,z.value=``}async function Q(){if(!G.value){z.value=`کد، نام و شرکت الزامی هستند.`;return}B.value=!0;try{if(L.value===`edit`&&R.value){let e=await b.update(R.value,{code:U.code.trim(),name:U.name.trim(),displayOrder:Number(U.displayOrder)||1,isActive:U.isActive,imageUrl:U.imageUrl}),t=g.value.findIndex(e=>e.id===R.value);t!==-1&&(g.value[t]={...g.value[t],...e,companyName:J(U.companyId)}),V.success(`اطلاعات کالیته بهروزرسانی شد.`)}else{let e=await b.create({companyId:U.companyId,code:U.code.trim(),name:U.name.trim(),displayOrder:Number(U.displayOrder)||1,isActive:U.isActive,imageUrl:U.imageUrl});g.value.push({...e,companyName:e.companyName||J(U.companyId),productCount:e.productCount??0}),V.success(`کالیته جدید ثبت شد.`)}Z()}catch(e){V.error(e instanceof v?e.message:`ذخیره کالیته انجام نشد.`)}finally{B.value=!1}}async function $(e,t){await b.setActive(e,t)}function je(){P.value=``,F.value=`all`}return(ee,o)=>(n(),l(`div`,de,[c(`div`,{class:`admin-page-header`},[o[8]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`کالیتهها`)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن کالیته `)]),c(`div`,fe,[c(`div`,pe,[u(re,{name:`search`,size:18}),a(c(`input`,{"onUpdate:modelValue":o[0]||=e=>P.value=e,type:`search`,class:`catalogs-page__search-input`,placeholder:`جستجو بر اساس کد یا نام...`},null,512),[[y,P.value]])]),u(x,{modelValue:F.value,"onUpdate:modelValue":o[1]||=e=>F.value=e,class:`catalogs-page__company-filter`,"aria-label":`فیلتر شرکت`,options:De.value},null,8,[`modelValue`,`options`])]),I.value?(n(),f(se,{key:0,variant:`table`})):q.value.length?(n(),l(`div`,me,[c(`div`,he,[c(`table`,ge,[o[9]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`تصویر`),c(`th`,null,`کد`),c(`th`,null,`نام کالیته`),c(`th`,null,`شرکت`),c(`th`,{class:`numeric`},`ترتیب`),c(`th`,{class:`numeric`},`تعداد محصول`),c(`th`,{class:`status`},`وضعیت`),c(`th`,{class:`actions`},`عملیات`)])],-1),c(`tbody`,null,[(n(!0),l(m,null,d(q.value,e=>(n(),l(`tr`,{key:e.id},[c(`td`,null,[c(`span`,{class:i([`catalog-thumb`,{"catalog-thumb--empty":!e.imageUrl}]),style:t(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6)]),c(`td`,null,r(e.code),1),c(`td`,null,r(e.name),1),c(`td`,null,r(e.companyName),1),c(`td`,_e,r(e.displayOrder),1),c(`td`,ve,r(e.productCount),1),c(`td`,ye,[u(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`کالیته`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),c(`td`,be,[c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,xe)])]))),128))])])])])):(n(),f(le,{key:1,class:`admin-card`,icon:`catalogs`,title:K.value?`نتیجهای یافت نشد`:`کالیتهای ثبت نشده`,description:K.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کالیته را ثبت کنید.`},{default:e(()=>[K.value?(n(),l(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:je},` پاک کردن فیلترها `)):(n(),l(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن کالیته `))]),_:1},8,[`title`,`description`])),!I.value&&q.value.length?(n(),l(`div`,C,[(n(!0),l(m,null,d(q.value,e=>(n(),l(`article`,{key:e.id,class:`admin-card-item`},[c(`div`,w,[c(`span`,{class:i([`catalog-thumb`,{"catalog-thumb--empty":!e.imageUrl}]),style:t(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6),c(`p`,T,`کالیته `+r(e.code)+` — `+r(e.name),1),u(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`کالیته`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),c(`div`,E,[c(`span`,null,r(e.companyName),1),c(`span`,null,r(e.productCount)+` محصول`,1),c(`span`,null,`ترتیب: `+r(e.displayOrder),1)]),c(`div`,D,[c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,O)])]))),128))])):_(``,!0),u(ie,{open:ke.value,title:W.value,size:`lg`,onClose:Z},{footer:e(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!G.value||B.value,onClick:Q},r(L.value===`edit`?`ذخیره تغییرات`:`ثبت کالیته`),9,Ee)]),default:e(()=>[c(`form`,{class:`admin-form`,onSubmit:ne(Q,[`prevent`])},[z.value?(n(),l(`p`,k,r(z.value),1)):_(``,!0),c(`div`,A,[o[10]||=c(`label`,null,[p(`شرکت `),c(`span`,{class:`admin-form__required`},`*`)],-1),u(x,{modelValue:U.companyId,"onUpdate:modelValue":o[2]||=e=>U.companyId=e,block:``,"aria-label":`انتخاب شرکت`,placeholder:`انتخاب شرکت`,options:Oe.value},null,8,[`modelValue`,`options`])]),c(`div`,j,[c(`div`,M,[o[11]||=c(`label`,{for:`catalog-code`},[p(`کد کالیته `),c(`span`,{class:`admin-form__required`},`*`)],-1),a(c(`input`,{id:`catalog-code`,"onUpdate:modelValue":o[3]||=e=>U.code=e,type:`text`,class:`admin-input`,placeholder:`377`},null,512),[[y,U.code]])]),c(`div`,Se,[o[12]||=c(`label`,{for:`catalog-name`},[p(`نام کالیته `),c(`span`,{class:`admin-form__required`},`*`)],-1),a(c(`input`,{id:`catalog-name`,"onUpdate:modelValue":o[4]||=e=>U.name=e,type:`text`,class:`admin-input`},null,512),[[y,U.name]])])]),c(`div`,Ce,[c(`div`,we,[o[13]||=c(`label`,{for:`catalog-order`},`ترتیب نمایش`,-1),a(c(`input`,{id:`catalog-order`,"onUpdate:modelValue":o[5]||=e=>U.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,U.displayOrder,void 0,{number:!0}]])]),c(`div`,Te,[u(ce,{modelValue:U.isActive,"onUpdate:modelValue":o[6]||=e=>U.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])]),u(ue,{modelValue:U.imageUrl,"onUpdate:modelValue":o[7]||=e=>U.imageUrl=e,label:`تصویر بنر کالیته`},null,8,[`modelValue`])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-4fb827ad`]]);export{N as default};
\ No newline at end of file
diff --git a/dist/assets/CategoriesView-DAT9P8-Q.js b/dist/assets/CategoriesView-DAT9P8-Q.js
new file mode 100644
index 0000000..d41349c
--- /dev/null
+++ b/dist/assets/CategoriesView-DAT9P8-Q.js
@@ -0,0 +1 @@
+import{B as e,O as t,Ot as n,T as r,V as i,Y as a,Z as o,c as s,d as c,g as l,h as u,j as d,l as f,p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{B as v,C as y,N as b,W as x,z as ee}from"./index-CXa4EMLW.js";import{t as te}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as S}from"./BaseSwitch-TV5Yvtf7.js";import{t as C}from"./AdminImagePicker-C4toq7MG.js";import{t as w}from"./AdminSelect-9UfEJQzN.js";var T={class:`category-icon`,"aria-hidden":`true`},E=[`width`,`height`,`stroke`,`stroke-width`],D=[`width`,`height`,`stroke`,`stroke-width`],O=[`width`,`height`,`stroke`,`stroke-width`],k=[`width`,`height`,`stroke`],A=[`width`,`height`,`stroke`],j=[`width`,`height`,`stroke`],M=g(l({__name:`CategoryIcon`,props:{name:{},size:{default:18},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(e){let n=e,r={bolt:`vuesax-linear:flash`,feather:`vuesax-linear:pen-add`,diamond:`vuesax-linear:diamonds`,grid:`vuesax-linear:element-3`,bag:`vuesax-linear:shopping-bag`,weight:`vuesax-linear:shopping-bag`,"id-card":`vuesax-linear:personalcard`,catalog:`vuesax-linear:category`,headset:`vuesax-linear:headphone`,home:`vuesax-linear:home`},i=h(()=>r[n.name]);return(n,r)=>(t(),c(`span`,T,[i.value?(t(),f(v,{key:0,icon:i.value,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`icon`,`size`,`stroke-width`,`color`])):e.name===`shirt`?(t(),c(`svg`,{key:1,width:e.size,height:e.size,viewBox:`0 0 24 24`,fill:`none`,stroke:e.color,"stroke-width":e.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[0]||=[s(`path`,{d:`M8.25 5.25 12 7.75l3.75-2.5 2.25 2.75L16 9.5V18.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V9.5L6 8l2.25-2.75Z`},null,-1),s(`path`,{d:`M12 7.75V18.5`},null,-1)]],8,E)):e.name===`suit`?(t(),c(`svg`,{key:2,width:e.size,height:e.size,viewBox:`0 0 24 24`,fill:`none`,stroke:e.color,"stroke-width":e.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[1]||=[s(`path`,{d:`M7.5 5.5h9l2 3v10.5a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V8.5l2-3Z`},null,-1),s(`path`,{d:`M12 5.5v13`},null,-1),s(`path`,{d:`M7.5 9 12 11.75 16.5 9`},null,-1),s(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`},null,-1)]],8,D)):e.name===`trousers`?(t(),c(`svg`,{key:3,width:e.size,height:e.size,viewBox:`0 0 24 24`,fill:`none`,stroke:e.color,"stroke-width":e.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[2]||=[s(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`},null,-1),s(`path`,{d:`M12 8.75v11`},null,-1),s(`path`,{d:`M8 7.25h8`},null,-1)]],8,O)):e.name===`ruler`?(t(),c(`svg`,{key:4,width:e.size,height:e.size,viewBox:`0 0 24 24`,fill:`none`,stroke:e.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[3]||=[p(``,5)]],8,k)):e.name===`composition`?(t(),c(`svg`,{key:5,width:e.size,height:e.size,viewBox:`0 0 24 24`,fill:`none`,stroke:e.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[4]||=[s(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,A)):e.name===`weave`?(t(),c(`svg`,{key:6,width:e.size,height:e.size,viewBox:`0 0 24 24`,fill:`none`,stroke:e.color,"stroke-width":`1.6`,"stroke-linecap":`round`},[...r[5]||=[p(``,7)]],8,j)):_(``,!0)]))}}),[[`__scopeId`,`data-v-76e4dc13`]]),ne={class:`categories-admin`},re={class:`admin-page-header`},ie=[`disabled`],ae={key:1,class:`categories-admin__grid`},oe={class:`admin-card categories-panel`},se={class:`categories-panel__head`},ce={key:0,class:`categories-panel__add`},le={key:1,class:`categories-panel__empty`},ue={key:2,class:`categories-panel__list`},N={class:`category-row__fields`},P={class:`category-row__line`},F=[`onUpdate:modelValue`],I={class:`category-row__line`},L=[`onUpdate:modelValue`],R={class:`category-row__line`},z={class:`category-row__id`,dir:`ltr`},B=[`onClick`],V={class:`admin-card categories-panel`},H={class:`categories-panel__head`},U={key:0,class:`categories-panel__add`},de={key:1,class:`categories-panel__empty`},fe={key:2,class:`categories-panel__list`},pe={class:`category-row__fields`},W={class:`category-row__line`},me=[`onUpdate:modelValue`],he={class:`category-row__line`},ge=[`onUpdate:modelValue`],_e={class:`category-row__line`},ve=[`onUpdate:modelValue`],ye={class:`category-row__line`},be={class:`category-row__id`,dir:`ltr`},xe=[`onClick`],G=g(l({__name:`CategoriesView`,setup(l){let p=o([]),g=o([]),v=a({}),T=o(!0),E=o(!1),D=ee(),O=o(!1),k=o(!1),A=[{value:`shirt`,label:`پیراهن`},{value:`suit`,label:`کتشلوار`},{value:`trousers`,label:`شلوار`},{value:`bolt`,label:`آذرخش`},{value:`feather`,label:`پر`},{value:`diamond`,label:`الماس`},{value:`grid`,label:`شبکه`},{value:`bag`,label:`کیف`},{value:`id-card`,label:`کارت`},{value:`catalog`,label:`کالیته`},{value:`headset`,label:`پشتیبانی`},{value:`home`,label:`خانه`},{value:`ruler`,label:`عرض`},{value:`composition`,label:`جنس`},{value:`weight`,label:`وزن`},{value:`weave`,label:`نوع بافت`}];function j(e){return e===`shirt`?`shirt`:e===`suit`?`suit`:e===`trousers`?`trousers`:`grid`}function G(e){return e===`summer`?`bolt`:e===`winter`?`feather`:`diamond`}let K=a({id:``,title:``,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0}),q=a({id:``,title:``,description:``,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0});function J(e){return e!==!1}let Y=h(()=>p.value.map(e=>e.id)),X=h(()=>g.value.map(e=>e.id));function Z(e){return e.trim().toLowerCase().replace(/\s+/g,`_`).replace(/[^a-z0-9_\u0600-\u06ff-]/gi,``).slice(0,48)}function Q(){let e=[...Y.value,...X.value];for(let t of e)t in v||(v[t]=null);for(let t of Object.keys(v))e.includes(t)||delete v[t]}async function $(){T.value=!0;try{let e=await y.get();p.value=e.categoryDefsJson?.usage?.length?e.categoryDefsJson.usage.map(e=>({id:e.id,title:e.title,subtitle:e.subtitle||`مشاهده محصولات`,icon:e.icon||j(e.id),showTitle:J(e.showTitle),showSubtitle:J(e.showSubtitle),showIcon:J(e.showIcon)})):[{id:`trousers`,title:`پارچههای شلواری`,subtitle:`مشاهده محصولات`,icon:`trousers`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`suit`,title:`پارچههای کتشلواری`,subtitle:`مشاهده محصولات`,icon:`suit`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`shirt`,title:`پارچههای پیراهنی`,subtitle:`مشاهده محصولات`,icon:`shirt`,showTitle:!0,showSubtitle:!0,showIcon:!0}],g.value=e.categoryDefsJson?.seasons?.length?e.categoryDefsJson.seasons.map(e=>({id:e.id,title:e.title,description:e.description||``,ctaLabel:e.ctaLabel||`مشاهده محصولات`,icon:e.icon||G(e.id),showTitle:J(e.showTitle),showDescription:J(e.showDescription),showCta:J(e.showCta),showIcon:J(e.showIcon)})):[{id:`summer`,title:`تابستانه`,description:`سبک، خنک و مناسب فصل گرم`,ctaLabel:`مشاهده محصولات`,icon:`bolt`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`winter`,title:`زمستانه`,description:`گرم و مناسب فصل سرد`,ctaLabel:`مشاهده محصولات`,icon:`feather`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`all_season`,title:`چهارفصل`,description:`مناسب استفاده در بیشتر فصلهای سال`,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0}],Q();let t=e.categoryImagesJson??{};for(let e of Object.keys(v))v[e]=t[e]??null}catch(e){D.error(e instanceof b?e.message:`بارگذاری دستهها ناموفق بود.`),p.value.length||(p.value=[{id:`trousers`,title:`پارچههای شلواری`,subtitle:`مشاهده محصولات`,icon:`trousers`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`suit`,title:`پارچههای کتشلواری`,subtitle:`مشاهده محصولات`,icon:`suit`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`shirt`,title:`پارچههای پیراهنی`,subtitle:`مشاهده محصولات`,icon:`shirt`,showTitle:!0,showSubtitle:!0,showIcon:!0}]),g.value.length||(g.value=[{id:`summer`,title:`تابستانه`,description:`سبک، خنک و مناسب فصل گرم`,ctaLabel:`مشاهده محصولات`,icon:`bolt`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`winter`,title:`زمستانه`,description:`گرم و مناسب فصل سرد`,ctaLabel:`مشاهده محصولات`,icon:`feather`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`all_season`,title:`چهارفصل`,description:`مناسب استفاده در بیشتر فصلهای سال`,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0}]),Q()}finally{T.value=!1}}function Se(){let e=Z(K.id||K.title),t=K.title.trim();if(!e||!t){D.error(`شناسه و عنوان دسته کاربرد الزامی است.`);return}if(Y.value.includes(e)||X.value.includes(e)){D.error(`این شناسه از قبل وجود دارد.`);return}p.value.push({id:e,title:t,subtitle:K.subtitle.trim()||`مشاهده محصولات`,icon:K.icon,showTitle:K.showTitle,showSubtitle:K.showSubtitle,showIcon:K.showIcon}),v[e]=null,K.id=``,K.title=``,K.subtitle=`مشاهده محصولات`,K.icon=`grid`,K.showTitle=!0,K.showSubtitle=!0,K.showIcon=!0,O.value=!1}function Ce(){let e=Z(q.id||q.title),t=q.title.trim();if(!e||!t){D.error(`شناسه و عنوان دسته فصل الزامی است.`);return}if(Y.value.includes(e)||X.value.includes(e)){D.error(`این شناسه از قبل وجود دارد.`);return}g.value.push({id:e,title:t,description:q.description.trim(),ctaLabel:q.ctaLabel.trim()||`مشاهده محصولات`,icon:q.icon,showTitle:q.showTitle,showDescription:q.showDescription,showCta:q.showCta,showIcon:q.showIcon}),v[e]=null,q.id=``,q.title=``,q.description=``,q.ctaLabel=`مشاهده محصولات`,q.icon=`diamond`,q.showTitle=!0,q.showDescription=!0,q.showCta=!0,q.showIcon=!0,k.value=!1}function we(e){if(p.value.length<=1){D.error(`حداقل یک دسته کاربرد لازم است.`);return}p.value=p.value.filter(t=>t.id!==e),delete v[e]}function Te(e){if(g.value.length<=1){D.error(`حداقل یک دسته فصل لازم است.`);return}g.value=g.value.filter(t=>t.id!==e),delete v[e]}async function Ee(){E.value=!0;try{let e={};for(let[t,n]of Object.entries(v))n&&(e[t]=n);await y.update({categoryDefsJson:{usage:p.value,seasons:g.value},categoryImagesJson:e}),D.success(`دستهبندیها ذخیره شد.`),await $()}catch(e){D.error(e instanceof b?e.message:`ذخیره دستهبندیها ناموفق بود.`)}finally{E.value=!1}}return r(()=>{$()}),(r,a)=>(t(),c(`div`,ne,[s(`div`,re,[a[8]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`دستهبندیها`),s(`p`,{class:`admin-page-header__sub`},` دستههای کاربرد و فصل را اضافه کنید. با کلید «نمایش / مخفی» مشخص کنید عنوان و توضیح در اپ کاربر دیده شود. `)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:E.value||T.value,onClick:Ee},n(E.value?`در حال ذخیره...`:`ذخیره تغییرات`),9,ie)]),T.value?(t(),f(te,{key:0,variant:`cards`})):(t(),c(`div`,ae,[s(`section`,oe,[s(`div`,se,[s(`div`,null,[a[9]||=s(`h2`,null,`بر اساس کاربرد`,-1),s(`p`,null,n(p.value.length)+` دسته برای فیلتر محصول در اپ کاربر`,1)]),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:a[0]||=e=>O.value=!O.value},n(O.value?`بستن فرم`:`+ افزودن دسته`),1)]),O.value?(t(),c(`div`,ce,[i(s(`input`,{"onUpdate:modelValue":a[1]||=e=>K.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً پارچههای مانتویی)`},null,512),[[x,K.title]]),i(s(`input`,{"onUpdate:modelValue":a[2]||=e=>K.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً mantle)`},null,512),[[x,K.id]]),i(s(`input`,{"onUpdate:modelValue":a[3]||=e=>K.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,512),[[x,K.subtitle]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Se},`ثبت در لیست`)])):_(``,!0),p.value.length?(t(),c(`div`,ue,[(t(!0),c(m,null,d(p.value,r=>(t(),c(`article`,{key:r.id,class:`category-row`},[u(C,{"model-value":v[r.id],"onUpdate:modelValue":e=>v[r.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,N,[s(`div`,P,[i(s(`input`,{"onUpdate:modelValue":e=>r.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,F),[[x,r.title]]),u(S,{modelValue:r.showTitle,"onUpdate:modelValue":e=>r.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,I,[i(s(`input`,{"onUpdate:modelValue":e=>r.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,8,L),[[x,r.subtitle]]),u(S,{modelValue:r.showSubtitle,"onUpdate:modelValue":e=>r.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,R,[u(w,{modelValue:r.icon,"onUpdate:modelValue":e=>r.icon=e,options:A,"aria-label":`آیکون`,block:``},{"option-leading":e(({option:e})=>[e?(t(),f(M,{key:0,name:e.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:r.showIcon,"onUpdate:modelValue":e=>r.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`p`,z,n(r.id),1)]),s(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>we(r.id)},`حذف`,8,B)]))),128))])):(t(),c(`p`,le,`هنوز دستهای ثبت نشده. با «افزودن دسته» شروع کنید.`))]),s(`section`,V,[s(`div`,H,[s(`div`,null,[a[10]||=s(`h2`,null,`بر اساس فصل`,-1),s(`p`,null,n(g.value.length)+` دسته فصلی برای فیلتر محصول`,1)]),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:a[4]||=e=>k.value=!k.value},n(k.value?`بستن فرم`:`+ افزودن دسته`),1)]),k.value?(t(),c(`div`,U,[i(s(`input`,{"onUpdate:modelValue":a[5]||=e=>q.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً بهاره)`},null,512),[[x,q.title]]),i(s(`input`,{"onUpdate:modelValue":a[6]||=e=>q.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً spring)`},null,512),[[x,q.id]]),i(s(`input`,{"onUpdate:modelValue":a[7]||=e=>q.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,512),[[x,q.description]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Ce},`ثبت در لیست`)])):_(``,!0),g.value.length?(t(),c(`div`,fe,[(t(!0),c(m,null,d(g.value,r=>(t(),c(`article`,{key:r.id,class:`category-row`},[u(C,{"model-value":v[r.id],"onUpdate:modelValue":e=>v[r.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,pe,[s(`div`,W,[i(s(`input`,{"onUpdate:modelValue":e=>r.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,me),[[x,r.title]]),u(S,{modelValue:r.showTitle,"onUpdate:modelValue":e=>r.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,he,[i(s(`input`,{"onUpdate:modelValue":e=>r.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,8,ge),[[x,r.description]]),u(S,{modelValue:r.showDescription,"onUpdate:modelValue":e=>r.showDescription=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,_e,[i(s(`input`,{"onUpdate:modelValue":e=>r.ctaLabel=e,class:`admin-input`,type:`text`,placeholder:`متن لینک (مشاهده محصولات)`},null,8,ve),[[x,r.ctaLabel]]),u(S,{modelValue:r.showCta,"onUpdate:modelValue":e=>r.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,ye,[u(w,{modelValue:r.icon,"onUpdate:modelValue":e=>r.icon=e,options:A,"aria-label":`آیکون`,block:``},{"option-leading":e(({option:e})=>[e?(t(),f(M,{key:0,name:e.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:r.showIcon,"onUpdate:modelValue":e=>r.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`p`,be,n(r.id),1)]),s(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>Te(r.id)},`حذف`,8,xe)]))),128))])):(t(),c(`p`,de,`هنوز دستهای ثبت نشده. با «افزودن دسته» شروع کنید.`))])]))]))}}),[[`__scopeId`,`data-v-092c0b6f`]]);export{G as default};
\ No newline at end of file
diff --git a/dist/assets/CategoriesView-jQSu6NG7.js b/dist/assets/CategoriesView-jQSu6NG7.js
deleted file mode 100644
index cfc0967..0000000
--- a/dist/assets/CategoriesView-jQSu6NG7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,B as t,C as n,Ct as r,G as i,J as a,N as o,Q as s,V as c,X as l,Z as u,dt as d,et as f,gt as p,ht as m,it as h,lt as g,rt as _,st as ee,tt as v,vt as y,yt as b,z as te}from"./index-B2VD3zy8.js";import{t as ne}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as x}from"./BaseSwitch-dp2xMemS.js";import{t as S}from"./AdminImagePicker-C0OGC-bB.js";import{t as C}from"./AdminSelect-BeLNl2Qz.js";var w={class:`category-icon`,"aria-hidden":`true`},T=[`width`,`height`,`stroke`,`stroke-width`],E=[`width`,`height`,`stroke`,`stroke-width`],D=[`width`,`height`,`stroke`,`stroke-width`],O=[`width`,`height`,`stroke`],k=[`width`,`height`,`stroke`],A=[`width`,`height`,`stroke`],j=c(h({__name:`CategoryIcon`,props:{name:{},size:{default:18},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(n){let r=n,i={bolt:`vuesax-linear:flash`,feather:`vuesax-linear:pen-add`,diamond:`vuesax-linear:diamonds`,grid:`vuesax-linear:element-3`,bag:`vuesax-linear:shopping-bag`,weight:`vuesax-linear:shopping-bag`,"id-card":`vuesax-linear:personalcard`,catalog:`vuesax-linear:category`,headset:`vuesax-linear:headphone`,home:`vuesax-linear:home`},a=l(()=>i[r.name]);return(r,i)=>(g(),f(`span`,w,[a.value?(g(),s(t,{key:0,icon:a.value,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`icon`,`size`,`stroke-width`,`color`])):n.name===`shirt`?(g(),f(`svg`,{key:1,width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...i[0]||=[u(`path`,{d:`M8.25 5.25 12 7.75l3.75-2.5 2.25 2.75L16 9.5V18.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V9.5L6 8l2.25-2.75Z`},null,-1),u(`path`,{d:`M12 7.75V18.5`},null,-1)]],8,T)):n.name===`suit`?(g(),f(`svg`,{key:2,width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...i[1]||=[u(`path`,{d:`M7.5 5.5h9l2 3v10.5a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V8.5l2-3Z`},null,-1),u(`path`,{d:`M12 5.5v13`},null,-1),u(`path`,{d:`M7.5 9 12 11.75 16.5 9`},null,-1),u(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`},null,-1)]],8,E)):n.name===`trousers`?(g(),f(`svg`,{key:3,width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...i[2]||=[u(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`},null,-1),u(`path`,{d:`M12 8.75v11`},null,-1),u(`path`,{d:`M8 7.25h8`},null,-1)]],8,D)):n.name===`ruler`?(g(),f(`svg`,{key:4,width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...i[3]||=[v(``,5)]],8,O)):n.name===`composition`?(g(),f(`svg`,{key:5,width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...i[4]||=[u(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,k)):n.name===`weave`?(g(),f(`svg`,{key:6,width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":`1.6`,"stroke-linecap":`round`},[...i[5]||=[v(``,7)]],8,A)):e(``,!0)]))}}),[[`__scopeId`,`data-v-76e4dc13`]]),re={class:`categories-admin`},ie={class:`admin-page-header`},ae=[`disabled`],oe={key:1,class:`categories-admin__grid`},se={class:`admin-card categories-panel`},ce={class:`categories-panel__head`},le={key:0,class:`categories-panel__add`},ue={key:1,class:`categories-panel__empty`},M={key:2,class:`categories-panel__list`},N={class:`category-row__fields`},P={class:`category-row__line`},F=[`onUpdate:modelValue`],I={class:`category-row__line`},L=[`onUpdate:modelValue`],R={class:`category-row__line`},z={class:`category-row__id`,dir:`ltr`},B=[`onClick`],V={class:`admin-card categories-panel`},H={class:`categories-panel__head`},U={key:0,class:`categories-panel__add`},W={key:1,class:`categories-panel__empty`},de={key:2,class:`categories-panel__list`},fe={class:`category-row__fields`},pe={class:`category-row__line`},me=[`onUpdate:modelValue`],he={class:`category-row__line`},ge=[`onUpdate:modelValue`],_e={class:`category-row__line`},ve=[`onUpdate:modelValue`],ye={class:`category-row__line`},be={class:`category-row__id`,dir:`ltr`},xe=[`onClick`],G=c(h({__name:`CategoriesView`,setup(t){let c=b([]),h=b([]),v=y({}),w=b(!0),T=b(!1),E=te(),D=b(!1),O=b(!1),k=[{value:`shirt`,label:`پیراهن`},{value:`suit`,label:`کتشلوار`},{value:`trousers`,label:`شلوار`},{value:`bolt`,label:`آذرخش`},{value:`feather`,label:`پر`},{value:`diamond`,label:`الماس`},{value:`grid`,label:`شبکه`},{value:`bag`,label:`کیف`},{value:`id-card`,label:`کارت`},{value:`catalog`,label:`کالیته`},{value:`headset`,label:`پشتیبانی`},{value:`home`,label:`خانه`},{value:`ruler`,label:`عرض`},{value:`composition`,label:`جنس`},{value:`weight`,label:`وزن`},{value:`weave`,label:`نوع بافت`}];function A(e){return e===`shirt`?`shirt`:e===`suit`?`suit`:e===`trousers`?`trousers`:`grid`}function G(e){return e===`summer`?`bolt`:e===`winter`?`feather`:`diamond`}let K=y({id:``,title:``,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0}),q=y({id:``,title:``,description:``,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0});function J(e){return e!==!1}let Y=l(()=>c.value.map(e=>e.id)),X=l(()=>h.value.map(e=>e.id));function Z(e){return e.trim().toLowerCase().replace(/\s+/g,`_`).replace(/[^a-z0-9_\u0600-\u06ff-]/gi,``).slice(0,48)}function Q(){let e=[...Y.value,...X.value];for(let t of e)t in v||(v[t]=null);for(let t of Object.keys(v))e.includes(t)||delete v[t]}async function $(){w.value=!0;try{let e=await n.get();c.value=e.categoryDefsJson?.usage?.length?e.categoryDefsJson.usage.map(e=>({id:e.id,title:e.title,subtitle:e.subtitle||`مشاهده محصولات`,icon:e.icon||A(e.id),showTitle:J(e.showTitle),showSubtitle:J(e.showSubtitle),showIcon:J(e.showIcon)})):[{id:`trousers`,title:`پارچههای شلواری`,subtitle:`مشاهده محصولات`,icon:`trousers`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`suit`,title:`پارچههای کتشلواری`,subtitle:`مشاهده محصولات`,icon:`suit`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`shirt`,title:`پارچههای پیراهنی`,subtitle:`مشاهده محصولات`,icon:`shirt`,showTitle:!0,showSubtitle:!0,showIcon:!0}],h.value=e.categoryDefsJson?.seasons?.length?e.categoryDefsJson.seasons.map(e=>({id:e.id,title:e.title,description:e.description||``,ctaLabel:e.ctaLabel||`مشاهده محصولات`,icon:e.icon||G(e.id),showTitle:J(e.showTitle),showDescription:J(e.showDescription),showCta:J(e.showCta),showIcon:J(e.showIcon)})):[{id:`summer`,title:`تابستانه`,description:`سبک، خنک و مناسب فصل گرم`,ctaLabel:`مشاهده محصولات`,icon:`bolt`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`winter`,title:`زمستانه`,description:`گرم و مناسب فصل سرد`,ctaLabel:`مشاهده محصولات`,icon:`feather`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`all_season`,title:`چهارفصل`,description:`مناسب استفاده در بیشتر فصلهای سال`,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0}],Q();let t=e.categoryImagesJson??{};for(let e of Object.keys(v))v[e]=t[e]??null}catch(e){E.error(e instanceof o?e.message:`بارگذاری دستهها ناموفق بود.`),c.value.length||(c.value=[{id:`trousers`,title:`پارچههای شلواری`,subtitle:`مشاهده محصولات`,icon:`trousers`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`suit`,title:`پارچههای کتشلواری`,subtitle:`مشاهده محصولات`,icon:`suit`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`shirt`,title:`پارچههای پیراهنی`,subtitle:`مشاهده محصولات`,icon:`shirt`,showTitle:!0,showSubtitle:!0,showIcon:!0}]),h.value.length||(h.value=[{id:`summer`,title:`تابستانه`,description:`سبک، خنک و مناسب فصل گرم`,ctaLabel:`مشاهده محصولات`,icon:`bolt`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`winter`,title:`زمستانه`,description:`گرم و مناسب فصل سرد`,ctaLabel:`مشاهده محصولات`,icon:`feather`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`all_season`,title:`چهارفصل`,description:`مناسب استفاده در بیشتر فصلهای سال`,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0}]),Q()}finally{w.value=!1}}function Se(){let e=Z(K.id||K.title),t=K.title.trim();if(!e||!t){E.error(`شناسه و عنوان دسته کاربرد الزامی است.`);return}if(Y.value.includes(e)||X.value.includes(e)){E.error(`این شناسه از قبل وجود دارد.`);return}c.value.push({id:e,title:t,subtitle:K.subtitle.trim()||`مشاهده محصولات`,icon:K.icon,showTitle:K.showTitle,showSubtitle:K.showSubtitle,showIcon:K.showIcon}),v[e]=null,K.id=``,K.title=``,K.subtitle=`مشاهده محصولات`,K.icon=`grid`,K.showTitle=!0,K.showSubtitle=!0,K.showIcon=!0,D.value=!1}function Ce(){let e=Z(q.id||q.title),t=q.title.trim();if(!e||!t){E.error(`شناسه و عنوان دسته فصل الزامی است.`);return}if(Y.value.includes(e)||X.value.includes(e)){E.error(`این شناسه از قبل وجود دارد.`);return}h.value.push({id:e,title:t,description:q.description.trim(),ctaLabel:q.ctaLabel.trim()||`مشاهده محصولات`,icon:q.icon,showTitle:q.showTitle,showDescription:q.showDescription,showCta:q.showCta,showIcon:q.showIcon}),v[e]=null,q.id=``,q.title=``,q.description=``,q.ctaLabel=`مشاهده محصولات`,q.icon=`diamond`,q.showTitle=!0,q.showDescription=!0,q.showCta=!0,q.showIcon=!0,O.value=!1}function we(e){if(c.value.length<=1){E.error(`حداقل یک دسته کاربرد لازم است.`);return}c.value=c.value.filter(t=>t.id!==e),delete v[e]}function Te(e){if(h.value.length<=1){E.error(`حداقل یک دسته فصل لازم است.`);return}h.value=h.value.filter(t=>t.id!==e),delete v[e]}async function Ee(){T.value=!0;try{let e={};for(let[t,n]of Object.entries(v))n&&(e[t]=n);await n.update({categoryDefsJson:{usage:c.value,seasons:h.value},categoryImagesJson:e}),E.success(`دستهبندیها ذخیره شد.`),await $()}catch(e){E.error(e instanceof o?e.message:`ذخیره دستهبندیها ناموفق بود.`)}finally{T.value=!1}}return ee(()=>{$()}),(t,n)=>(g(),f(`div`,re,[u(`div`,ie,[n[8]||=u(`div`,null,[u(`h1`,{class:`admin-page-header__title`},`دستهبندیها`),u(`p`,{class:`admin-page-header__sub`},` دستههای کاربرد و فصل را اضافه کنید. با کلید «نمایش / مخفی» مشخص کنید عنوان و توضیح در اپ کاربر دیده شود. `)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:T.value||w.value,onClick:Ee},r(T.value?`در حال ذخیره...`:`ذخیره تغییرات`),9,ae)]),w.value?(g(),s(ne,{key:0,variant:`cards`})):(g(),f(`div`,oe,[u(`section`,se,[u(`div`,ce,[u(`div`,null,[n[9]||=u(`h2`,null,`بر اساس کاربرد`,-1),u(`p`,null,r(c.value.length)+` دسته برای فیلتر محصول در اپ کاربر`,1)]),u(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[0]||=e=>D.value=!D.value},r(D.value?`بستن فرم`:`+ افزودن دسته`),1)]),D.value?(g(),f(`div`,le,[p(u(`input`,{"onUpdate:modelValue":n[1]||=e=>K.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً پارچههای مانتویی)`},null,512),[[i,K.title]]),p(u(`input`,{"onUpdate:modelValue":n[2]||=e=>K.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً mantle)`},null,512),[[i,K.id]]),p(u(`input`,{"onUpdate:modelValue":n[3]||=e=>K.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,512),[[i,K.subtitle]]),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Se},`ثبت در لیست`)])):e(``,!0),c.value.length?(g(),f(`div`,M,[(g(!0),f(a,null,d(c.value,t=>(g(),f(`article`,{key:t.id,class:`category-row`},[_(S,{"model-value":v[t.id],"onUpdate:modelValue":e=>v[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),u(`div`,N,[u(`div`,P,[p(u(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,F),[[i,t.title]]),_(x,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`div`,I,[p(u(`input`,{"onUpdate:modelValue":e=>t.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,8,L),[[i,t.subtitle]]),_(x,{modelValue:t.showSubtitle,"onUpdate:modelValue":e=>t.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`div`,R,[_(C,{modelValue:t.icon,"onUpdate:modelValue":e=>t.icon=e,options:k,"aria-label":`آیکون`,block:``},{"option-leading":m(({option:t})=>[t?(g(),s(j,{key:0,name:t.value,size:18},null,8,[`name`])):e(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),_(x,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`p`,z,r(t.id),1)]),u(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>we(t.id)},`حذف`,8,B)]))),128))])):(g(),f(`p`,ue,`هنوز دستهای ثبت نشده. با «افزودن دسته» شروع کنید.`))]),u(`section`,V,[u(`div`,H,[u(`div`,null,[n[10]||=u(`h2`,null,`بر اساس فصل`,-1),u(`p`,null,r(h.value.length)+` دسته فصلی برای فیلتر محصول`,1)]),u(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[4]||=e=>O.value=!O.value},r(O.value?`بستن فرم`:`+ افزودن دسته`),1)]),O.value?(g(),f(`div`,U,[p(u(`input`,{"onUpdate:modelValue":n[5]||=e=>q.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً بهاره)`},null,512),[[i,q.title]]),p(u(`input`,{"onUpdate:modelValue":n[6]||=e=>q.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً spring)`},null,512),[[i,q.id]]),p(u(`input`,{"onUpdate:modelValue":n[7]||=e=>q.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,512),[[i,q.description]]),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Ce},`ثبت در لیست`)])):e(``,!0),h.value.length?(g(),f(`div`,de,[(g(!0),f(a,null,d(h.value,t=>(g(),f(`article`,{key:t.id,class:`category-row`},[_(S,{"model-value":v[t.id],"onUpdate:modelValue":e=>v[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),u(`div`,fe,[u(`div`,pe,[p(u(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,me),[[i,t.title]]),_(x,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`div`,he,[p(u(`input`,{"onUpdate:modelValue":e=>t.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,8,ge),[[i,t.description]]),_(x,{modelValue:t.showDescription,"onUpdate:modelValue":e=>t.showDescription=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`div`,_e,[p(u(`input`,{"onUpdate:modelValue":e=>t.ctaLabel=e,class:`admin-input`,type:`text`,placeholder:`متن لینک (مشاهده محصولات)`},null,8,ve),[[i,t.ctaLabel]]),_(x,{modelValue:t.showCta,"onUpdate:modelValue":e=>t.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`div`,ye,[_(C,{modelValue:t.icon,"onUpdate:modelValue":e=>t.icon=e,options:k,"aria-label":`آیکون`,block:``},{"option-leading":m(({option:t})=>[t?(g(),s(j,{key:0,name:t.value,size:18},null,8,[`name`])):e(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),_(x,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`p`,be,r(t.id),1)]),u(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>Te(t.id)},`حذف`,8,xe)]))),128))])):(g(),f(`p`,W,`هنوز دستهای ثبت نشده. با «افزودن دسته» شروع کنید.`))])]))]))}}),[[`__scopeId`,`data-v-092c0b6f`]]);export{G as default};
\ No newline at end of file
diff --git a/dist/assets/CheckManagementView-D9Dy0r7I.js b/dist/assets/CheckManagementView-D9Dy0r7I.js
new file mode 100644
index 0000000..c7dc1c9
--- /dev/null
+++ b/dist/assets/CheckManagementView-D9Dy0r7I.js
@@ -0,0 +1 @@
+import{O as e,Ot as t,T as n,Tt as r,Z as i,a as ee,at as a,c as o,d as s,g as te,h as c,j as l,l as ne,m as u,r as d,s as f,t as p,u as m}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{F as re,I as ie,K as h,L as g,N as _,i as ae,m as v,n as y,r as b,x,y as oe,z as se}from"./index-CXa4EMLW.js";import{c as S}from"./orderStatus-CYVblRJB.js";import{t as C}from"./StatusBadge-Cg2zTE2k.js";var ce={class:`checks-page`},le={class:`admin-page-header`},ue={key:0,class:`checks-page__order-meta`},de={class:`checks-page__stats`},fe={class:`checks-page__stat`},pe={class:`checks-page__stat`},me={class:`checks-page__stat`},he={class:`checks-page__stat`},ge={class:`admin-tabs`},_e={key:0,class:`admin-empty-placeholder admin-card`},ve={key:1,class:`checks-page__list admin-card`},ye=[`onClick`],be={class:`check-row__chevron`,"aria-hidden":`true`},w=[`onClick`],T=[`src`],E={key:1,class:`check-row__thumb check-row__thumb--empty`},D={class:`check-row__meta`},O=[`disabled`,`onClick`],k=[`disabled`,`onClick`],A={key:0,class:`check-row__panel`},j={key:0,class:`check-row__fields`},M=[`dir`],N={key:1,class:`check-row__hint`},xe={class:`check-row__photos`},Se=[`onClick`],Ce=[`src`],we=[`onClick`],Te=[`src`],Ee={key:2,class:`check-row__hint`},De={class:`checks-page__footer`},Oe={class:`checks-page__note`},ke={class:`admin-action-group`},Ae=[`disabled`],je={key:0,class:`admin-empty-placeholder admin-card`},Me={key:1,class:`checks-page__history`},P={class:`checks-page__history-item-head`},Ne={class:`checks-page__history-meta`},Pe={key:0,class:`checks-page__history-note`},Fe={key:1,class:`checks-page__history-note`},Ie={class:`checks-page__history-item-head`},Le={class:`checks-page__history-note`},Re=[`src`],F=p(te({__name:`CheckManagementView`,setup(te){let p=re(),F=ie(),I=se(),L=i(`info`),R=i(null),z=i([]),B=i(null),V=i(null),H=i(null),U=f(()=>R.value?oe(R.value):null),ze=f(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=f(()=>z.value.filter(e=>e.status===`pending_review`)),Be=f(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=f(()=>!Be.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=i(!1),q=f(()=>{let e=R.value?.statusHistory??[],t=new Set([`check_in_progress`,`awaiting_check_review`,`check_needs_fix`,`check_rejected`,`checks_approved`]),n=e.filter(e=>t.has(e.toStatus)||e.fromStatus&&t.has(e.fromStatus)||/چک/.test(e.note||``)||/چک/.test(e.reason||``));return[...n.length?n:e].sort((e,t)=>new Date(t.changedAt).getTime()-new Date(e.changedAt).getTime())}),J=f(()=>z.value.filter(e=>e.notes?.trim()).map(e=>({id:e.id,row:e.row,status:e.status,notes:e.notes,updatedAt:e.updatedAt})));async function Ve(){let e=String(p.params.id);try{let[t,n]=await Promise.all([x.get(e),v.listByOrder(e)]);R.value=t,z.value=n,n.length===1&&(V.value=n[0].id)}catch(e){I.error(e instanceof _?e.message:`بارگذاری چکها انجام نشد.`)}}n(()=>{Ve()});function He(){F.push(`/orders`)}function Y(e){return e===`approved`?`check_approved`:e===`rejected`?`check_rejected`:`pending_check_review`}function Ue(e){return e?e===`customer`?`مشتری`:e.startsWith(`admin:`)?`ادمین`:e:`—`}function X(e){return ae(e)}function We(e){return[e.ownerFirstName,e.ownerLastName].filter(Boolean).join(` `)}function Z(e){return[{label:`بانک`,value:e.bankName},{label:`شعبه`,value:e.branchName},{label:`شناسه صیادی`,value:e.sayadId,ltr:!0},{label:`شماره چک`,value:e.checkNumber,ltr:!0},{label:`صاحب چک`,value:We(e)},{label:`کد ملی`,value:e.ownerNationalId,ltr:!0},{label:`یادداشت`,value:e.notes}].filter(e=>!!e.value?.trim())}function Ge(e){V.value=V.value===e.id?null:e.id}async function Q(e,t){B.value=e.id;try{let n=await v.updateStatus(e.id,{status:t}),r=z.value.findIndex(t=>t.id===e.id);return r!==-1&&(z.value[r]=n),R.value=await x.get(String(p.params.id)),!0}catch(e){return I.error(e instanceof _?e.message:`بهروزرسانی وضعیت چک انجام نشد.`),!1}finally{B.value=null}}async function $(e,t){if(t!==`approved`&&t!==`rejected`)return;let n=y(e.amount);await g(t===`approved`?{title:`تأیید چک`,message:`آیا از تأیید چک ردیف ${e.row} به مبلغ ${n} مطمئن هستید؟`,tone:`primary`,confirmLabel:`تأیید چک`,cancelLabel:`انصراف`}:{title:`رد چک`,message:`آیا از رد چک ردیف ${e.row} به مبلغ ${n} مطمئن هستید؟`,tone:`danger`,confirmLabel:`رد چک`,cancelLabel:`انصراف`})&&await Q(e,t)&&I.success(t===`approved`?`چک تأیید شد.`:`چک رد شد.`)}async function Ke(){let e=W.value;if(!e.length){I.error(`چکی برای تأیید وجود ندارد.`);return}if(await g({title:`تأیید همه چکها`,message:`آیا از تأیید ${e.length} چک در انتظار بررسی مطمئن هستید؟`,tone:`primary`,confirmLabel:`تأیید همه`,cancelLabel:`انصراف`})){for(let t of e)if(!await Q(t,`approved`))return;I.success(`همه چکهای در انتظار تأیید شدند.`)}}async function qe(){if(!(!R.value||K.value)&&await g({title:`تأیید نهایی سفارش`,message:`با تأیید نهایی، سفارش از مرحله بررسی چک خارج میشود و وارد آمادهسازی میگردد. ادامه میدهید؟`,tone:`primary`,confirmLabel:`تأیید نهایی`,cancelLabel:`انصراف`})){K.value=!0;try{let e=await x.updateStatus(R.value.id,{status:`final_approved`,note:`تأیید نهایی پس از تأیید همه چکها`});R.value=e,I.success(`سفارش تأیید نهایی شد.`)}catch(e){I.error(e instanceof _?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=!1}}}return(n,i)=>(e(),s(`div`,ce,[o(`div`,le,[i[5]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`مدیریت چکهای سفارش`)],-1),U.value?(e(),s(`div`,ue,[c(C,{status:U.value.status},null,8,[`status`])])):m(``,!0)]),o(`div`,de,[o(`div`,fe,[i[6]||=o(`span`,null,`تعداد`,-1),o(`strong`,null,t(z.value.length),1)]),o(`div`,pe,[i[7]||=o(`span`,null,`راس`,-1),o(`strong`,null,t(R.value?.checkRassDays??`—`)+` روز`,1)]),o(`div`,me,[i[8]||=o(`span`,null,`مجموع چک`,-1),o(`strong`,null,t(a(y)(ze.value)),1)]),o(`div`,he,[i[9]||=o(`span`,null,`مبلغ سفارش`,-1),o(`strong`,null,t(U.value?.totalAmount?a(y)(U.value.totalAmount):`—`),1)])]),o(`div`,ge,[o(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`info`}]),onClick:i[0]||=e=>L.value=`info`},` چکها (`+t(z.value.length)+`) `,3),o(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`history`}]),onClick:i[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(e(),s(d,{key:0},[z.value.length?(e(),s(`div`,ve,[(e(!0),s(d,null,l(z.value,n=>(e(),s(`div`,{key:n.id,class:r([`check-row`,{open:V.value===n.id}])},[o(`button`,{type:`button`,class:`check-row__main`,onClick:e=>Ge(n)},[o(`span`,be,t(V.value===n.id?`▾`:`◂`),1),n.frontImage||n.backImage?(e(),s(`span`,{key:0,class:`check-row__thumb`,onClick:h(e=>H.value=n.frontImage||n.backImage,[`stop`])},[o(`img`,{src:n.frontImage||n.backImage,alt:``},null,8,T)],8,w)):(e(),s(`span`,E,`بدون عکس`)),o(`span`,D,[o(`strong`,null,`چک `+t(n.row),1),o(`small`,null,[u(t(a(y)(n.amount))+` `,1),n.bankName?(e(),s(d,{key:0},[u(` · `+t(n.bankName),1)],64)):m(``,!0),u(` · `+t(a(b)(n.dueDate)),1)])]),c(C,{status:Y(n.status)},null,8,[`status`])],8,ye),o(`div`,{class:`check-row__actions`,onClick:i[2]||=h(()=>{},[`stop`])},[n.status===`pending_review`?(e(),s(d,{key:0},[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===n.id,onClick:e=>$(n,`approved`)},` تأیید `,8,O),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===n.id,onClick:e=>$(n,`rejected`)},` رد `,8,k)],64)):m(``,!0)]),V.value===n.id?(e(),s(`div`,A,[Z(n).length?(e(),s(`div`,j,[(e(!0),s(d,null,l(Z(n),n=>(e(),s(`div`,{key:n.label,class:`check-row__field`},[o(`span`,null,t(n.label),1),o(`strong`,{dir:n.ltr?`ltr`:void 0},t(n.value),9,M)]))),128))])):(e(),s(`p`,N,`جزئیات متنی بیشتری ثبت نشده است.`)),o(`div`,xe,[n.frontImage?(e(),s(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:e=>H.value=n.frontImage},[o(`img`,{src:n.frontImage,alt:`روی چک`},null,8,Ce),i[10]||=o(`span`,null,`روی`,-1)],8,Se)):m(``,!0),n.backImage?(e(),s(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:e=>H.value=n.backImage},[o(`img`,{src:n.backImage,alt:`پشت چک`},null,8,Te),i[11]||=o(`span`,null,`پشت`,-1)],8,we)):m(``,!0),!n.frontImage&&!n.backImage?(e(),s(`p`,Ee,` تصویری ثبت نشده. `)):m(``,!0)])])):m(``,!0)],2))),128))])):(e(),s(`div`,_e,` چکی برای این سفارش ثبت نشده است. `)),o(`div`,De,[o(`p`,Oe,[G.value?(e(),s(d,{key:0},[u(` همه چکها تأیید شدهاند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(e(),s(d,{key:1},[u(` راس: `+t(a(b)(R.value.checkRassDate)),1)],64)):(e(),s(d,{key:2},[u(`راس بر اساس تاریخ ثبت سفارش محاسبه میشود.`)],64))]),o(`div`,ke,[G.value?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:K.value,onClick:qe},t(K.value?`در حال ثبت…`:`تأیید نهایی سفارش`),9,Ae)):m(``,!0),W.value.length?(e(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ke},` تأیید همه چکها `)):m(``,!0),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:He},` بازگشت `)])])],64)):(e(),s(d,{key:1},[!q.value.length&&!J.value.length?(e(),s(`div`,je,` هنوز تاریخچهای ثبت نشده است. `)):(e(),s(`div`,Me,[(e(!0),s(d,null,l(q.value,n=>(e(),s(`article`,{key:n.id,class:`admin-card checks-page__history-item`},[o(`div`,P,[o(`strong`,null,t(n.fromStatus?a(S)(n.fromStatus):`—`)+` → `+t(a(S)(n.toStatus)),1),o(`span`,null,t(X(n.changedAt)),1)]),o(`p`,Ne,`توسط `+t(Ue(n.changedBy)),1),n.note?(e(),s(`p`,Pe,t(n.note),1)):m(``,!0),n.reason?(e(),s(`p`,Fe,`دلیل: `+t(n.reason),1)):m(``,!0)]))),128)),(e(!0),s(d,null,l(J.value,n=>(e(),s(`article`,{key:`note-${n.id}`,class:`admin-card checks-page__history-item`},[o(`div`,Ie,[o(`strong`,null,`یادداشت چک `+t(n.row),1),o(`span`,null,t(X(n.updatedAt)),1)]),c(C,{status:Y(n.status)},null,8,[`status`]),o(`p`,Le,t(n.notes),1)]))),128))]))],64)),(e(),ne(ee,{to:`body`},[H.value?(e(),s(`div`,{key:0,class:`checks-page__lightbox`,onClick:i[4]||=h(e=>H.value=null,[`self`])},[o(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:i[3]||=e=>H.value=null},` بستن `),o(`img`,{src:H.value,alt:`پیشنمایش`},null,8,Re)])):m(``,!0)]))]))}}),[[`__scopeId`,`data-v-af5e25db`]]);export{F as default};
\ No newline at end of file
diff --git a/dist/assets/CheckManagementView-DFrKKIXW.js b/dist/assets/CheckManagementView-DFrKKIXW.js
deleted file mode 100644
index 9ec0de0..0000000
--- a/dist/assets/CheckManagementView-DFrKKIXW.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,F as n,I as r,J as i,L as a,N as o,Q as ee,V as te,X as s,Y as ne,Z as c,bt as l,dt as u,et as d,i as re,it as f,lt as p,m,n as h,nt as g,q as _,r as v,rt as y,st as ie,x as b,xt as x,y as ae,yt as S,z as oe}from"./index-B2VD3zy8.js";import{c as C}from"./orderStatus-CYVblRJB.js";import{t as w}from"./StatusBadge-D3ThrLrU.js";var se={class:`checks-page`},ce={class:`admin-page-header`},le={key:0,class:`checks-page__order-meta`},ue={class:`checks-page__stats`},de={class:`checks-page__stat`},fe={class:`checks-page__stat`},pe={class:`checks-page__stat`},me={class:`checks-page__stat`},he={class:`admin-tabs`},ge={key:0,class:`admin-empty-placeholder admin-card`},_e={key:1,class:`checks-page__list admin-card`},ve=[`onClick`],ye={class:`check-row__chevron`,"aria-hidden":`true`},be=[`onClick`],T=[`src`],E={key:1,class:`check-row__thumb check-row__thumb--empty`},D={class:`check-row__meta`},O=[`disabled`,`onClick`],k=[`disabled`,`onClick`],A={key:0,class:`check-row__panel`},j={key:0,class:`check-row__fields`},M=[`dir`],N={key:1,class:`check-row__hint`},xe={class:`check-row__photos`},Se=[`onClick`],Ce=[`src`],we=[`onClick`],Te=[`src`],Ee={key:2,class:`check-row__hint`},De={class:`checks-page__footer`},Oe={class:`checks-page__note`},ke={class:`admin-action-group`},Ae=[`disabled`],je={key:0,class:`admin-empty-placeholder admin-card`},Me={key:1,class:`checks-page__history`},Ne={class:`checks-page__history-item-head`},P={class:`checks-page__history-meta`},Pe={key:0,class:`checks-page__history-note`},Fe={key:1,class:`checks-page__history-note`},Ie={class:`checks-page__history-item-head`},Le={class:`checks-page__history-note`},Re=[`src`],F=te(f({__name:`CheckManagementView`,setup(te){let f=n(),F=r(),I=oe(),L=S(`info`),R=S(null),z=S([]),B=S(null),V=S(null),H=S(null),U=s(()=>R.value?ae(R.value):null),ze=s(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=s(()=>z.value.filter(e=>e.status===`pending_review`)),Be=s(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=s(()=>!Be.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=S(!1),q=s(()=>{let e=R.value?.statusHistory??[],t=new Set([`check_in_progress`,`awaiting_check_review`,`check_needs_fix`,`check_rejected`,`checks_approved`]),n=e.filter(e=>t.has(e.toStatus)||e.fromStatus&&t.has(e.fromStatus)||/چک/.test(e.note||``)||/چک/.test(e.reason||``));return[...n.length?n:e].sort((e,t)=>new Date(t.changedAt).getTime()-new Date(e.changedAt).getTime())}),J=s(()=>z.value.filter(e=>e.notes?.trim()).map(e=>({id:e.id,row:e.row,status:e.status,notes:e.notes,updatedAt:e.updatedAt})));async function Ve(){let e=String(f.params.id);try{let[t,n]=await Promise.all([b.get(e),m.listByOrder(e)]);R.value=t,z.value=n,n.length===1&&(V.value=n[0].id)}catch(e){I.error(e instanceof o?e.message:`بارگذاری چکها انجام نشد.`)}}ie(()=>{Ve()});function He(){F.push(`/orders`)}function Y(e){return e===`approved`?`check_approved`:e===`rejected`?`check_rejected`:`pending_check_review`}function Ue(e){return e?e===`customer`?`مشتری`:e.startsWith(`admin:`)?`ادمین`:e:`—`}function X(e){return re(e)}function We(e){return[e.ownerFirstName,e.ownerLastName].filter(Boolean).join(` `)}function Z(e){return[{label:`بانک`,value:e.bankName},{label:`شعبه`,value:e.branchName},{label:`شناسه صیادی`,value:e.sayadId,ltr:!0},{label:`شماره چک`,value:e.checkNumber,ltr:!0},{label:`صاحب چک`,value:We(e)},{label:`کد ملی`,value:e.ownerNationalId,ltr:!0},{label:`یادداشت`,value:e.notes}].filter(e=>!!e.value?.trim())}function Ge(e){V.value=V.value===e.id?null:e.id}async function Q(e,t){B.value=e.id;try{let n=await m.updateStatus(e.id,{status:t}),r=z.value.findIndex(t=>t.id===e.id);return r!==-1&&(z.value[r]=n),R.value=await b.get(String(f.params.id)),!0}catch(e){return I.error(e instanceof o?e.message:`بهروزرسانی وضعیت چک انجام نشد.`),!1}finally{B.value=null}}async function $(e,t){if(t!==`approved`&&t!==`rejected`)return;let n=h(e.amount);await a(t===`approved`?{title:`تأیید چک`,message:`آیا از تأیید چک ردیف ${e.row} به مبلغ ${n} مطمئن هستید؟`,tone:`primary`,confirmLabel:`تأیید چک`,cancelLabel:`انصراف`}:{title:`رد چک`,message:`آیا از رد چک ردیف ${e.row} به مبلغ ${n} مطمئن هستید؟`,tone:`danger`,confirmLabel:`رد چک`,cancelLabel:`انصراف`})&&await Q(e,t)&&I.success(t===`approved`?`چک تأیید شد.`:`چک رد شد.`)}async function Ke(){let e=W.value;if(!e.length){I.error(`چکی برای تأیید وجود ندارد.`);return}if(await a({title:`تأیید همه چکها`,message:`آیا از تأیید ${e.length} چک در انتظار بررسی مطمئن هستید؟`,tone:`primary`,confirmLabel:`تأیید همه`,cancelLabel:`انصراف`})){for(let t of e)if(!await Q(t,`approved`))return;I.success(`همه چکهای در انتظار تأیید شدند.`)}}async function qe(){if(!(!R.value||K.value)&&await a({title:`تأیید نهایی سفارش`,message:`با تأیید نهایی، سفارش از مرحله بررسی چک خارج میشود و وارد آمادهسازی میگردد. ادامه میدهید؟`,tone:`primary`,confirmLabel:`تأیید نهایی`,cancelLabel:`انصراف`})){K.value=!0;try{let e=await b.updateStatus(R.value.id,{status:`final_approved`,note:`تأیید نهایی پس از تأیید همه چکها`});R.value=e,I.success(`سفارش تأیید نهایی شد.`)}catch(e){I.error(e instanceof o?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=!1}}}return(n,r)=>(p(),d(`div`,se,[c(`div`,ce,[r[5]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`مدیریت چکهای سفارش`)],-1),U.value?(p(),d(`div`,le,[y(w,{status:U.value.status},null,8,[`status`])])):e(``,!0)]),c(`div`,ue,[c(`div`,de,[r[6]||=c(`span`,null,`تعداد`,-1),c(`strong`,null,t(z.value.length),1)]),c(`div`,fe,[r[7]||=c(`span`,null,`راس`,-1),c(`strong`,null,t(R.value?.checkRassDays??`—`)+` روز`,1)]),c(`div`,pe,[r[8]||=c(`span`,null,`مجموع چک`,-1),c(`strong`,null,t(l(h)(ze.value)),1)]),c(`div`,me,[r[9]||=c(`span`,null,`مبلغ سفارش`,-1),c(`strong`,null,t(U.value?.totalAmount?l(h)(U.value.totalAmount):`—`),1)])]),c(`div`,he,[c(`button`,{type:`button`,class:x([`admin-tab`,{active:L.value===`info`}]),onClick:r[0]||=e=>L.value=`info`},` چکها (`+t(z.value.length)+`) `,3),c(`button`,{type:`button`,class:x([`admin-tab`,{active:L.value===`history`}]),onClick:r[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(p(),d(i,{key:0},[z.value.length?(p(),d(`div`,_e,[(p(!0),d(i,null,u(z.value,n=>(p(),d(`div`,{key:n.id,class:x([`check-row`,{open:V.value===n.id}])},[c(`button`,{type:`button`,class:`check-row__main`,onClick:e=>Ge(n)},[c(`span`,ye,t(V.value===n.id?`▾`:`◂`),1),n.frontImage||n.backImage?(p(),d(`span`,{key:0,class:`check-row__thumb`,onClick:_(e=>H.value=n.frontImage||n.backImage,[`stop`])},[c(`img`,{src:n.frontImage||n.backImage,alt:``},null,8,T)],8,be)):(p(),d(`span`,E,`بدون عکس`)),c(`span`,D,[c(`strong`,null,`چک `+t(n.row),1),c(`small`,null,[g(t(l(h)(n.amount))+` `,1),n.bankName?(p(),d(i,{key:0},[g(` · `+t(n.bankName),1)],64)):e(``,!0),g(` · `+t(l(v)(n.dueDate)),1)])]),y(w,{status:Y(n.status)},null,8,[`status`])],8,ve),c(`div`,{class:`check-row__actions`,onClick:r[2]||=_(()=>{},[`stop`])},[n.status===`pending_review`?(p(),d(i,{key:0},[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===n.id,onClick:e=>$(n,`approved`)},` تأیید `,8,O),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===n.id,onClick:e=>$(n,`rejected`)},` رد `,8,k)],64)):e(``,!0)]),V.value===n.id?(p(),d(`div`,A,[Z(n).length?(p(),d(`div`,j,[(p(!0),d(i,null,u(Z(n),e=>(p(),d(`div`,{key:e.label,class:`check-row__field`},[c(`span`,null,t(e.label),1),c(`strong`,{dir:e.ltr?`ltr`:void 0},t(e.value),9,M)]))),128))])):(p(),d(`p`,N,`جزئیات متنی بیشتری ثبت نشده است.`)),c(`div`,xe,[n.frontImage?(p(),d(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:e=>H.value=n.frontImage},[c(`img`,{src:n.frontImage,alt:`روی چک`},null,8,Ce),r[10]||=c(`span`,null,`روی`,-1)],8,Se)):e(``,!0),n.backImage?(p(),d(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:e=>H.value=n.backImage},[c(`img`,{src:n.backImage,alt:`پشت چک`},null,8,Te),r[11]||=c(`span`,null,`پشت`,-1)],8,we)):e(``,!0),!n.frontImage&&!n.backImage?(p(),d(`p`,Ee,` تصویری ثبت نشده. `)):e(``,!0)])])):e(``,!0)],2))),128))])):(p(),d(`div`,ge,` چکی برای این سفارش ثبت نشده است. `)),c(`div`,De,[c(`p`,Oe,[G.value?(p(),d(i,{key:0},[g(` همه چکها تأیید شدهاند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(p(),d(i,{key:1},[g(` راس: `+t(l(v)(R.value.checkRassDate)),1)],64)):(p(),d(i,{key:2},[g(`راس بر اساس تاریخ ثبت سفارش محاسبه میشود.`)],64))]),c(`div`,ke,[G.value?(p(),d(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:K.value,onClick:qe},t(K.value?`در حال ثبت…`:`تأیید نهایی سفارش`),9,Ae)):e(``,!0),W.value.length?(p(),d(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ke},` تأیید همه چکها `)):e(``,!0),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:He},` بازگشت `)])])],64)):(p(),d(i,{key:1},[!q.value.length&&!J.value.length?(p(),d(`div`,je,` هنوز تاریخچهای ثبت نشده است. `)):(p(),d(`div`,Me,[(p(!0),d(i,null,u(q.value,n=>(p(),d(`article`,{key:n.id,class:`admin-card checks-page__history-item`},[c(`div`,Ne,[c(`strong`,null,t(n.fromStatus?l(C)(n.fromStatus):`—`)+` → `+t(l(C)(n.toStatus)),1),c(`span`,null,t(X(n.changedAt)),1)]),c(`p`,P,`توسط `+t(Ue(n.changedBy)),1),n.note?(p(),d(`p`,Pe,t(n.note),1)):e(``,!0),n.reason?(p(),d(`p`,Fe,`دلیل: `+t(n.reason),1)):e(``,!0)]))),128)),(p(!0),d(i,null,u(J.value,e=>(p(),d(`article`,{key:`note-${e.id}`,class:`admin-card checks-page__history-item`},[c(`div`,Ie,[c(`strong`,null,`یادداشت چک `+t(e.row),1),c(`span`,null,t(X(e.updatedAt)),1)]),y(w,{status:Y(e.status)},null,8,[`status`]),c(`p`,Le,t(e.notes),1)]))),128))]))],64)),(p(),ee(ne,{to:`body`},[H.value?(p(),d(`div`,{key:0,class:`checks-page__lightbox`,onClick:r[4]||=_(e=>H.value=null,[`self`])},[c(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:r[3]||=e=>H.value=null},` بستن `),c(`img`,{src:H.value,alt:`پیشنمایش`},null,8,Re)])):e(``,!0)]))]))}}),[[`__scopeId`,`data-v-af5e25db`]]);export{F as default};
\ No newline at end of file
diff --git a/dist/assets/ChecksListView-BQ_mFtUm.js b/dist/assets/ChecksListView-BQ_mFtUm.js
deleted file mode 100644
index 31a5454..0000000
--- a/dist/assets/ChecksListView-BQ_mFtUm.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,G as n,I as r,J as i,N as a,P as ee,Q as o,V as te,X as s,Z as c,bt as l,dt as u,et as d,gt as ne,i as re,it as f,lt as p,m,n as h,rt as g,st as ie,x as _,yt as v,z as ae}from"./index-B2VD3zy8.js";import{t as y}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as oe}from"./AdminSelect-BeLNl2Qz.js";import{t as b}from"./StatusBadge-D3ThrLrU.js";var se={class:`checks-list-page`},ce={class:`admin-page-header`},le={class:`checks-list-page__summary`},x={key:0},S={class:`checks-list-page__filters admin-card`},C={class:`checks-list-page__search`},w={class:`checks-list-page__table admin-card desktop-only`},T={class:`admin-table-wrap`},E={class:`admin-table`},D=[`onClick`],O={dir:`ltr`},k={class:`admin-action-group`},A=[`disabled`,`onClick`],j=[`disabled`,`onClick`],M=[`onClick`],N={key:0,class:`checks-list-page__empty`},P={class:`compact-only admin-card-list`},F={class:`admin-card-item__header`},ue={class:`admin-card-item__title`},I={class:`admin-card-item__meta`},L={key:0},R={class:`admin-card-item__actions`},z=[`disabled`,`onClick`],B=[`disabled`,`onClick`],V=[`onClick`],H={key:0,class:`checks-list-page__empty`},U=te(f({__name:`ChecksListView`,setup(te){let f=r(),U=ae(),W=v([]),G=v(!0),K=v(``),q=v(`all`),J=v(null),de=[{value:`all`,label:`همه وضعیتها`},{value:`pending_review`,label:`در انتظار بررسی`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`}],Y=s(()=>{let e=W.value;q.value!==`all`&&(e=e.filter(e=>e.status===q.value));let t=K.value.trim();return t&&(e=e.filter(e=>(e.orderNumber??``).includes(t)||(e.customerName??``).includes(t)||(e.bankName??``).includes(t)||(e.sayadId??``).includes(t))),e}),X=s(()=>W.value.filter(e=>e.status===`pending_review`).length);function Z(e){return e===`approved`?`final_approval`:e===`rejected`?`needs_correction`:`pending_check_review`}async function fe(){let e=await _.list();W.value=e.flatMap(e=>(e.checks??[]).map(t=>({...t,orderNumber:e.orderNumber,customerName:e.customerName,orderStatus:e.status,settlementType:e.settlementMethod??e.settlementType??null})))}async function pe(){G.value=!0;try{W.value=await m.list()}catch{try{await fe()}catch(e){U.error(e instanceof a?e.message:`بارگذاری چکها انجام نشد.`)}}finally{G.value=!1}}ie(()=>{pe()});function Q(e){f.push(`/orders/${e.orderId}/checks`)}async function $(e,t){J.value=e.id;try{let n=await m.updateStatus(e.id,{status:t}),r=W.value.findIndex(t=>t.id===e.id);r!==-1&&(W.value[r]={...W.value[r],...n,orderNumber:e.orderNumber,customerName:e.customerName,orderStatus:e.orderStatus,settlementType:e.settlementType}),U.success(t===`approved`?`چک تأیید شد.`:`چک رد شد.`)}catch(e){U.error(e instanceof a?e.message:`بهروزرسانی وضعیت چک انجام نشد.`)}finally{J.value=null}}return(r,a)=>(p(),d(`div`,se,[c(`div`,ce,[a[2]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`چکها`)],-1),c(`div`,le,[c(`span`,null,t(W.value.length)+` چک`,1),X.value?(p(),d(`span`,x,t(X.value)+` در انتظار بررسی`,1)):e(``,!0)])]),c(`div`,S,[c(`div`,C,[g(ee,{name:`search`,size:18}),ne(c(`input`,{"onUpdate:modelValue":a[0]||=e=>K.value=e,type:`search`,class:`checks-list-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، بانک، صیاد...`},null,512),[[n,K.value]])]),g(oe,{modelValue:q.value,"onUpdate:modelValue":a[1]||=e=>q.value=e,class:`checks-list-page__status-select`,"aria-label":`فیلتر وضعیت چک`,options:de},null,8,[`modelValue`])]),G.value?(p(),o(y,{key:0,variant:`table`})):(p(),d(i,{key:1},[c(`div`,w,[c(`div`,T,[c(`table`,E,[a[3]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`شماره سفارش`),c(`th`,null,`مشتری`),c(`th`,null,`ردیف`),c(`th`,null,`مبلغ`),c(`th`,null,`بانک`),c(`th`,null,`شناسه صیادی`),c(`th`,null,`سررسید`),c(`th`,null,`وضعیت`),c(`th`,null,`عملیات`)])],-1),c(`tbody`,null,[(p(!0),d(i,null,u(Y.value,n=>(p(),d(`tr`,{key:n.id},[c(`td`,null,[c(`button`,{type:`button`,class:`checks-list-page__order-link`,onClick:e=>Q(n)},t(n.orderNumber||n.orderId),9,D)]),c(`td`,null,t(n.customerName||`—`),1),c(`td`,null,t(n.row),1),c(`td`,null,t(l(h)(n.amount)),1),c(`td`,null,t(n.bankName||`—`),1),c(`td`,O,t(n.sayadId||`—`),1),c(`td`,null,t(n.dueDate.slice(0,10)),1),c(`td`,null,[g(b,{status:Z(n.status)},null,8,[`status`])]),c(`td`,null,[c(`div`,k,[n.status===`pending_review`?(p(),d(i,{key:0},[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`approved`)},` تأیید `,8,A),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`rejected`)},` رد `,8,j)],64)):e(``,!0),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(n)},` جزئیات سفارش `,8,M)])])]))),128))])])]),Y.value.length?e(``,!0):(p(),d(`p`,N,` چکی با این فیلتر یافت نشد. `))]),c(`div`,P,[(p(!0),d(i,null,u(Y.value,n=>(p(),d(`article`,{key:n.id,class:`admin-card-item`},[c(`div`,F,[c(`p`,ue,t(n.orderNumber||n.orderId)+` — چک `+t(n.row),1),g(b,{status:Z(n.status)},null,8,[`status`])]),c(`div`,I,[c(`span`,null,t(n.customerName||`—`),1),c(`span`,null,t(l(h)(n.amount)),1),c(`span`,null,t(n.bankName||`—`),1),c(`span`,null,`سررسید `+t(n.dueDate.slice(0,10)),1),n.createdAt?(p(),d(`span`,L,`ثبت `+t(l(re)(n.createdAt)),1)):e(``,!0)]),c(`div`,R,[n.status===`pending_review`?(p(),d(i,{key:0},[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`approved`)},` تأیید `,8,z),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`rejected`)},` رد `,8,B)],64)):e(``,!0),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(n)},` جزئیات سفارش `,8,V)])]))),128)),Y.value.length?e(``,!0):(p(),d(`p`,H,` چکی با این فیلتر یافت نشد. `))])],64))]))}}),[[`__scopeId`,`data-v-09633f1f`]]);export{U as default};
\ No newline at end of file
diff --git a/dist/assets/ChecksListView-DgtZLWw5.js b/dist/assets/ChecksListView-DgtZLWw5.js
new file mode 100644
index 0000000..3e64e1f
--- /dev/null
+++ b/dist/assets/ChecksListView-DgtZLWw5.js
@@ -0,0 +1 @@
+import{O as e,Ot as t,T as n,V as r,Z as i,at as a,c as o,d as s,g as ee,h as c,j as l,l as u,r as d,s as f,t as p,u as m}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{I as te,N as h,P as ne,W as re,i as ie,m as g,n as _,x as ae,z as oe}from"./index-CXa4EMLW.js";import{t as se}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as ce}from"./AdminSelect-9UfEJQzN.js";import{t as v}from"./StatusBadge-Cg2zTE2k.js";var le={class:`checks-list-page`},y={class:`admin-page-header`},b={class:`checks-list-page__summary`},x={key:0},S={class:`checks-list-page__filters admin-card`},C={class:`checks-list-page__search`},w={class:`checks-list-page__table admin-card desktop-only`},T={class:`admin-table-wrap`},E={class:`admin-table`},D=[`onClick`],O={dir:`ltr`},k={class:`admin-action-group`},A=[`disabled`,`onClick`],j=[`disabled`,`onClick`],M=[`onClick`],N={key:0,class:`checks-list-page__empty`},P={class:`compact-only admin-card-list`},F={class:`admin-card-item__header`},ue={class:`admin-card-item__title`},I={class:`admin-card-item__meta`},L={key:0},R={class:`admin-card-item__actions`},z=[`disabled`,`onClick`],B=[`disabled`,`onClick`],V=[`onClick`],H={key:0,class:`checks-list-page__empty`},U=p(ee({__name:`ChecksListView`,setup(ee){let p=te(),U=oe(),W=i([]),G=i(!0),K=i(``),q=i(`all`),J=i(null),de=[{value:`all`,label:`همه وضعیتها`},{value:`pending_review`,label:`در انتظار بررسی`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`}],Y=f(()=>{let e=W.value;q.value!==`all`&&(e=e.filter(e=>e.status===q.value));let t=K.value.trim();return t&&(e=e.filter(e=>(e.orderNumber??``).includes(t)||(e.customerName??``).includes(t)||(e.bankName??``).includes(t)||(e.sayadId??``).includes(t))),e}),X=f(()=>W.value.filter(e=>e.status===`pending_review`).length);function Z(e){return e===`approved`?`final_approval`:e===`rejected`?`needs_correction`:`pending_check_review`}async function fe(){let e=await ae.list();W.value=e.flatMap(e=>(e.checks??[]).map(t=>({...t,orderNumber:e.orderNumber,customerName:e.customerName,orderStatus:e.status,settlementType:e.settlementMethod??e.settlementType??null})))}async function pe(){G.value=!0;try{W.value=await g.list()}catch{try{await fe()}catch(e){U.error(e instanceof h?e.message:`بارگذاری چکها انجام نشد.`)}}finally{G.value=!1}}n(()=>{pe()});function Q(e){p.push(`/orders/${e.orderId}/checks`)}async function $(e,t){J.value=e.id;try{let n=await g.updateStatus(e.id,{status:t}),r=W.value.findIndex(t=>t.id===e.id);r!==-1&&(W.value[r]={...W.value[r],...n,orderNumber:e.orderNumber,customerName:e.customerName,orderStatus:e.orderStatus,settlementType:e.settlementType}),U.success(t===`approved`?`چک تأیید شد.`:`چک رد شد.`)}catch(e){U.error(e instanceof h?e.message:`بهروزرسانی وضعیت چک انجام نشد.`)}finally{J.value=null}}return(n,i)=>(e(),s(`div`,le,[o(`div`,y,[i[2]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`چکها`)],-1),o(`div`,b,[o(`span`,null,t(W.value.length)+` چک`,1),X.value?(e(),s(`span`,x,t(X.value)+` در انتظار بررسی`,1)):m(``,!0)])]),o(`div`,S,[o(`div`,C,[c(ne,{name:`search`,size:18}),r(o(`input`,{"onUpdate:modelValue":i[0]||=e=>K.value=e,type:`search`,class:`checks-list-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، بانک، صیاد...`},null,512),[[re,K.value]])]),c(ce,{modelValue:q.value,"onUpdate:modelValue":i[1]||=e=>q.value=e,class:`checks-list-page__status-select`,"aria-label":`فیلتر وضعیت چک`,options:de},null,8,[`modelValue`])]),G.value?(e(),u(se,{key:0,variant:`table`})):(e(),s(d,{key:1},[o(`div`,w,[o(`div`,T,[o(`table`,E,[i[3]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`شماره سفارش`),o(`th`,null,`مشتری`),o(`th`,null,`ردیف`),o(`th`,null,`مبلغ`),o(`th`,null,`بانک`),o(`th`,null,`شناسه صیادی`),o(`th`,null,`سررسید`),o(`th`,null,`وضعیت`),o(`th`,null,`عملیات`)])],-1),o(`tbody`,null,[(e(!0),s(d,null,l(Y.value,n=>(e(),s(`tr`,{key:n.id},[o(`td`,null,[o(`button`,{type:`button`,class:`checks-list-page__order-link`,onClick:e=>Q(n)},t(n.orderNumber||n.orderId),9,D)]),o(`td`,null,t(n.customerName||`—`),1),o(`td`,null,t(n.row),1),o(`td`,null,t(a(_)(n.amount)),1),o(`td`,null,t(n.bankName||`—`),1),o(`td`,O,t(n.sayadId||`—`),1),o(`td`,null,t(n.dueDate.slice(0,10)),1),o(`td`,null,[c(v,{status:Z(n.status)},null,8,[`status`])]),o(`td`,null,[o(`div`,k,[n.status===`pending_review`?(e(),s(d,{key:0},[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`approved`)},` تأیید `,8,A),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`rejected`)},` رد `,8,j)],64)):m(``,!0),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(n)},` جزئیات سفارش `,8,M)])])]))),128))])])]),Y.value.length?m(``,!0):(e(),s(`p`,N,` چکی با این فیلتر یافت نشد. `))]),o(`div`,P,[(e(!0),s(d,null,l(Y.value,n=>(e(),s(`article`,{key:n.id,class:`admin-card-item`},[o(`div`,F,[o(`p`,ue,t(n.orderNumber||n.orderId)+` — چک `+t(n.row),1),c(v,{status:Z(n.status)},null,8,[`status`])]),o(`div`,I,[o(`span`,null,t(n.customerName||`—`),1),o(`span`,null,t(a(_)(n.amount)),1),o(`span`,null,t(n.bankName||`—`),1),o(`span`,null,`سررسید `+t(n.dueDate.slice(0,10)),1),n.createdAt?(e(),s(`span`,L,`ثبت `+t(a(ie)(n.createdAt)),1)):m(``,!0)]),o(`div`,R,[n.status===`pending_review`?(e(),s(d,{key:0},[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`approved`)},` تأیید `,8,z),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===n.id,onClick:e=>$(n,`rejected`)},` رد `,8,B)],64)):m(``,!0),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(n)},` جزئیات سفارش `,8,V)])]))),128)),Y.value.length?m(``,!0):(e(),s(`p`,H,` چکی با این فیلتر یافت نشد. `))])],64))]))}}),[[`__scopeId`,`data-v-09633f1f`]]);export{U as default};
\ No newline at end of file
diff --git a/dist/assets/CompaniesView-C28l_bkY.js b/dist/assets/CompaniesView-C28l_bkY.js
new file mode 100644
index 0000000..85ec57b
--- /dev/null
+++ b/dist/assets/CompaniesView-C28l_bkY.js
@@ -0,0 +1 @@
+import{B as e,O as t,Ot as n,T as ee,V as r,Y as i,Z as a,c as o,d as s,g as te,h as c,j as l,l as u,m as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{I as ne,K as re,L as ie,N as g,R as ae,T as oe,W as _,h as v,z as se}from"./index-CXa4EMLW.js";import{t as ce}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as le}from"./BaseSwitch-TV5Yvtf7.js";import{t as ue}from"./BaseEmptyState-BmO9aDcK.js";import{t as y}from"./ActiveSwitchCell-DJZQHZ-8.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=m(te({__name:`CompaniesView`,setup(te){let m=[`image/png`,`image/jpeg`,`image/webp`,`image/svg+xml`],P=ne(),F=se(),I=a([]),L=a(!0),R=a(null),z=a(null),B=a(null),V=a(null),H=a(!1);async function Ne(){L.value=!0;try{I.value=await v.list()}catch(e){F.error(e instanceof g?e.message:`بارگذاری شرکتها انجام نشد.`)}finally{L.value=!1}}ee(()=>{Ne()});let U=()=>({name:``,description:``,displayOrder:I.value.length+1,isActive:!0}),W=i(U()),G=a(``),Pe=p(()=>R.value!==null),Fe=p(()=>R.value===`edit`?`ویرایش شرکت`:`افزودن شرکت`),Ie=p(()=>R.value===`edit`?`ذخیره تغییرات`:`ثبت شرکت`),Le=p(()=>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 ie({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 v.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 v.create({name:e,slug:oe(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 g?e.message:`ذخیره شرکت انجام نشد.`)}finally{H.value=!1}}async function Z(e,t){await v.setActive(e,t)}function Q(e){P.push(`/companies/${e}/accounts`)}function $(e){return e.trim().charAt(0)||`؟`}return(ee,i)=>(t(),s(`div`,de,[o(`div`,{class:`admin-page-header`},[i[5]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`مدیریت شرکتها`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:q},` افزودن شرکت `)]),L.value?(t(),u(ce,{key:0,variant:`table`})):I.value.length?(t(),s(`div`,fe,[o(`div`,pe,[o(`table`,me,[i[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`لوگو`),o(`th`,{class:`numeric`},`ترتیب`),o(`th`,{class:`status`},`وضعیت`),o(`th`,null,`توضیحات`),o(`th`,null,`نام شرکت`),o(`th`,{class:`actions`},`عملیات`)])],-1),o(`tbody`,null,[(t(!0),s(f,null,l(I.value,e=>(t(),s(`tr`,{key:e.id},[o(`td`,null,[e.logoUrl?(t(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,he)):(t(),s(`div`,ge,n($(e.name)),1))]),o(`td`,_e,n(e.displayOrder),1),o(`td`,ve,[c(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`])]),o(`td`,null,n(e.description),1),o(`td`,null,n(e.name),1),o(`td`,ye,[o(`div`,be,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>J(e)},` ویرایش `,8,xe),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e.id)},` حسابها `,8,b)])])]))),128))])])])])):(t(),u(ue,{key:1,class:`admin-card`,icon:`companies`,title:`شرکتی ثبت نشده`,description:`برای شروع، اولین شرکت را ثبت کنید.`},{default:e(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:q},` افزودن شرکت `)]),_:1})),!L.value&&I.value.length?(t(),s(`div`,x,[(t(!0),s(f,null,l(I.value,e=>(t(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,S,[o(`div`,C,[e.logoUrl?(t(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,w)):(t(),s(`div`,T,n($(e.name)),1)),o(`div`,null,[o(`p`,E,n(e.name),1),o(`p`,D,n(e.description),1)])]),c(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`])]),o(`div`,O,[o(`span`,null,`ترتیب: `+n(e.displayOrder),1)]),o(`div`,k,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>J(e)},` ویرایش `,8,A),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e.id)},` حسابها `,8,j)])]))),128))])):h(``,!0),c(ae,{open:Pe.value,title:Fe.value,onClose:Y},{footer:e(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Y},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Le.value||H.value,onClick:X},n(Ie.value),9,je)]),default:e(()=>[o(`form`,{class:`admin-form`,onSubmit:re(X,[`prevent`])},[G.value?(t(),s(`p`,M,n(G.value),1)):h(``,!0),o(`div`,Se,[i[8]||=o(`label`,null,[d(`لوگو `),o(`span`,{class:`admin-form__required`},`*`)],-1),o(`div`,Ce,[B.value?(t(),s(`div`,we,[o(`img`,{src:B.value,alt:`پیشنمایش لوگو`,class:`logo-upload__preview`},null,8,Te),o(`button`,{type:`button`,class:`logo-upload__remove`,onClick:ze},` حذف تصویر `)])):(t(),s(`label`,Ee,[...i[7]||=[o(`span`,{class:`logo-upload__icon`},`+`,-1),o(`span`,{class:`logo-upload__text`},`انتخاب یا رها کردن تصویر لوگو`,-1),o(`span`,{class:`logo-upload__hint`},`PNG، JPG، WEBP یا SVG — حداکثر ۲ مگابایت`,-1)]])),o(`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?(t(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm logo-upload__change`,onClick:i[0]||=e=>V.value?.click()},` تغییر تصویر `)):h(``,!0)])]),o(`div`,De,[i[9]||=o(`label`,{for:`company-name`},[d(`نام شرکت `),o(`span`,{class:`admin-form__required`},`*`)],-1),r(o(`input`,{id:`company-name`,"onUpdate:modelValue":i[1]||=e=>W.name=e,type:`text`,class:`admin-input`,placeholder:`مثال: شرکت پَر`,autocomplete:`off`},null,512),[[_,W.name]])]),o(`div`,Oe,[i[10]||=o(`label`,{for:`company-description`},`توضیحات`,-1),r(o(`textarea`,{id:`company-description`,"onUpdate:modelValue":i[2]||=e=>W.description=e,class:`admin-form__textarea`,placeholder:`تولید و عرضه انواع پارچه`,rows:`3`},null,512),[[_,W.description]])]),o(`div`,N,[o(`div`,ke,[i[11]||=o(`label`,{for:`company-order`},`ترتیب نمایش`,-1),r(o(`input`,{id:`company-order`,"onUpdate:modelValue":i[3]||=e=>W.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,W.displayOrder,void 0,{number:!0}]])]),o(`div`,Ae,[c(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};
\ No newline at end of file
diff --git a/dist/assets/CompaniesView-CFgjGQke.js b/dist/assets/CompaniesView-CFgjGQke.js
deleted file mode 100644
index 52e5f67..0000000
--- a/dist/assets/CompaniesView-CFgjGQke.js
+++ /dev/null
@@ -1 +0,0 @@
-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};
\ No newline at end of file
diff --git a/dist/assets/CustomersView-2wzqQ3p0.js b/dist/assets/CustomersView-2wzqQ3p0.js
deleted file mode 100644
index 4a034f0..0000000
--- a/dist/assets/CustomersView-2wzqQ3p0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,D as n,G as r,J as i,N as a,P as ee,Q as o,R as s,S as c,V as l,X as u,Z as d,a as f,bt as p,dt as m,et as h,g,gt as _,ht as v,i as y,it as b,lt as x,mt as S,nt as C,q as w,rt as T,st as te,u as E,v as ne,vt as re,xt as D,yt as O,z as k}from"./index-B2VD3zy8.js";import{t as A}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as ie}from"./BaseSwitch-dp2xMemS.js";import{t as ae}from"./BaseEmptyState-DGu6Pfui.js";import{t as j}from"./AdminSelect-BeLNl2Qz.js";import{r as M}from"./adminLabels-Cz9ccm1Z.js";import{t as N}from"./ActiveSwitchCell-DIzTn08M.js";var P={class:`suggestions-panel`},F={key:0,class:`suggestions-panel__loading`},I={class:`suggestions-panel__add`},L={class:`field`},R={key:0,class:`suggestions-panel__picked`},z=[`onClick`],B={class:`field`},V=[`disabled`],H={key:0,class:`suggestions-panel__list`},U={class:`muted`,dir:`ltr`},W={key:0,class:`note`},G={class:`suggestions-panel__actions`},K=[`onClick`],q={key:1,class:`suggestions-panel__empty`},oe=l(b({__name:`CustomerSuggestionsPanel`,props:{customerId:{}},setup(ee){let o=ee,s=k(),l=O(!0),f=O(!1),p=O([]),g=O([]),v=O([]),y=O(``),b=u(()=>g.value.filter(e=>!p.value.some(t=>t.productId===e.id&&t.isActive)).map(e=>({value:e.id,label:`${e.name} (${e.productCode})`})));async function w(){if(o.customerId){l.value=!0;try{let[e,t]=await Promise.all([n.list(o.customerId),c.list()]);p.value=e,g.value=t}catch(e){s.error(e instanceof a?e.message:`بارگذاری پیشنهادها ناموفق بود`)}finally{l.value=!1}}}async function E(){if(v.value.length){f.value=!0;try{for(let e of v.value)await n.create({customerId:o.customerId,productId:e,note:y.value.trim()||void 0});v.value=[],y.value=``,s.success(`پیشنهادها به صفحه خانه مشتری اضافه شد`),await w()}catch(e){s.error(e instanceof a?e.message:`ثبت پیشنهاد ناموفق بود`)}finally{f.value=!1}}}async function ne(e){try{await n.setActive(e.id,!e.isActive),await w()}catch(e){s.error(e instanceof a?e.message:`بهروزرسانی ناموفق بود`)}}function re(e){e&&(v.value.includes(e)||(v.value=[...v.value,e]))}function A(e){v.value=v.value.filter(t=>t!==e)}return S(()=>o.customerId,()=>{w()}),te(()=>{w()}),(n,a)=>(x(),h(`section`,P,[a[4]||=d(`header`,{class:`suggestions-panel__head`},[d(`div`,null,[d(`h3`,{class:`suggestions-panel__title`},`پیشنهاد اختصاصی در اپ`),d(`p`,{class:`suggestions-panel__hint`},` محصولات انتخابشده در بخش «پیشنهاد اختصاصی ما برای شما» در صفحه خانه مشتری نمایش داده میشوند. `)])],-1),l.value?(x(),h(`div`,F,`در حال بارگذاری...`)):(x(),h(i,{key:1},[d(`div`,I,[d(`label`,L,[a[1]||=C(` افزودن محصول (کد کالیته) `,-1),T(j,{"model-value":``,options:[{value:``,label:`انتخاب محصول...`},...b.value],"onUpdate:modelValue":re},null,8,[`options`])]),v.value.length?(x(),h(`div`,R,[(x(!0),h(i,null,m(v.value,e=>(x(),h(`span`,{key:e,class:`suggestions-panel__chip`},[C(t(g.value.find(t=>t.id===e)?.productCode||e)+` `,1),d(`button`,{type:`button`,"aria-label":`حذف`,onClick:t=>A(e)},`×`,8,z)]))),128))])):e(``,!0),d(`label`,B,[a[2]||=C(` یادداشت (اختیاری) `,-1),_(d(`textarea`,{"onUpdate:modelValue":a[0]||=e=>y.value=e,class:`admin-input`,rows:`2`,placeholder:`دلیل پیشنهاد برای مشتری`},null,512),[[r,y.value]])]),d(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!v.value.length||f.value,onClick:E},` افزودن به صفحه خانه مشتری `,8,V)]),p.value.length?(x(),h(`div`,H,[a[3]||=d(`h4`,{class:`suggestions-panel__sub`},`پیشنهادهای ثبتشده`,-1),d(`ul`,null,[(x(!0),h(i,null,m(p.value,n=>(x(),h(`li`,{key:n.id,class:`suggestions-panel__row`},[d(`div`,null,[d(`strong`,null,t(n.productName),1),d(`span`,U,`(`+t(n.productCode)+`)`,1),n.note?(x(),h(`p`,W,t(n.note),1)):e(``,!0)]),d(`div`,G,[d(`span`,{class:D(n.isActive?`on`:`off`)},t(n.isActive?`فعال`:`غیرفعال`),3),d(`button`,{type:`button`,class:`link`,onClick:e=>ne(n)},t(n.isActive?`حذف از خانه`:`فعالسازی`),9,K)])]))),128))])])):(x(),h(`p`,q,`هنوز پیشنهادی برای این مشتری ثبت نشده است.`))],64))]))}}),[[`__scopeId`,`data-v-4182e847`]]),se={class:`customers-page`},ce={class:`admin-page-header`},le={class:`customers-page__tabs`,role:`tablist`,"aria-label":`نوع کاربر`},ue=[`aria-selected`],de=[`aria-selected`],fe={class:`customers-page__search admin-card`},pe={key:2,class:`customers-page__table admin-card desktop-only`},me={class:`admin-table-wrap`},he={class:`admin-table`},ge={key:0},_e={key:1},ve={key:2},ye={key:3},be={key:4},xe={key:0},Se={key:1},Ce={key:2},we={key:3},Te={key:4},Ee={class:`numeric`},De={class:`numeric`},Oe={class:`status`},ke={class:`actions`},Ae=[`onClick`],je={key:3,class:`compact-only admin-card-list`},Me={class:`admin-card-item__header`},Ne={class:`admin-card-item__title`},Pe={class:`admin-card-item__header-actions`},Fe=[`onClick`],Ie={class:`admin-card-item__meta`},Le={key:0},Re={key:1},ze={key:2},Be={key:3},Ve={key:4},He={key:0,class:`admin-form__error`,role:`alert`},Ue={class:`admin-form__field`},We={class:`admin-form__row`},Ge={class:`admin-form__field`},Ke={class:`admin-form__field`},qe={class:`admin-form__row`},Je={class:`admin-form__field`},Ye={class:`admin-form__field`},Xe={class:`admin-form__row`},Ze={class:`admin-form__field`},Qe={class:`admin-form__field`},$e={class:`admin-form__row`},et={class:`admin-form__field`},tt={key:0,class:`admin-form__field`},nt={key:1,class:`admin-form__field`},rt={class:`customers-page__brands`},it=[`checked`,`onChange`],at={class:`admin-form__field`},ot=[`disabled`],st={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},J=l(b({__name:`CustomersView`,setup(n){let c=O([]),l=O([]),b=O([]),S=O([]),P=O(``),F=O(`customer`),I=O(!0),L=O(null),R=O(null),z=O(``),B=O(!1),V=k();function H(e){if(e==null)return`-`;if(typeof e==`number`)return Number.isFinite(e)?String(e):`-`;let t=e.trim();return!t||t===`—`?`-`:t}function U(e){return e==null||!Number.isFinite(e)?`-`:f(e)}let W=[{value:`wholesale`,label:`عمدهفروش`},{value:`retail`,label:`خردهفروش`}],G=[{value:`customer`,label:`مشتری`},{value:`agent`,label:`واسطه`}],K={customer:`مشتری`,agent:`واسطه`};function q(e){return K[e===`agent`?`agent`:`customer`]}let J=u(()=>[{value:``,label:`بدون سطح`},...l.value.map(e=>({value:e.id,label:e.label}))]),ct=u(()=>[{value:``,label:`بدون واسطه`},...b.value.filter(e=>e.id!==R.value).map(e=>({value:e.id,label:e.name+(e.agentCode?` (${e.agentCode})`:``)}))]),Y=()=>({name:``,phone:``,nationalId:``,customerType:`wholesale`,companyName:``,isActive:!0,levelDefId:``,assignedAgentId:``,brandIds:[],appRole:`customer`,agentCode:``}),X=re(Y()),lt=u(()=>L.value!==null),ut=u(()=>L.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),dt=u(()=>X.name.trim()&&X.phone.trim()&&X.nationalId.trim()),Z=u(()=>{let e=P.value.trim();return e?c.value.filter(t=>t.name.includes(e)||t.phone.includes(e)||t.nationalId.includes(e)||t.companyName.includes(e)):c.value});function ft(e,t){t?X.brandIds.includes(e)||X.brandIds.push(e):X.brandIds=X.brandIds.filter(t=>t!==e)}async function pt(){I.value=!0;try{c.value=await g.list(void 0,F.value)}catch(e){V.error(e instanceof a?e.message:F.value===`agent`?`بارگذاری واسطهها انجام نشد.`:`بارگذاری مشتریان انجام نشد.`)}finally{I.value=!1}}function Q(e){F.value!==e&&(F.value=e,P.value=``,pt())}async function mt(){try{let[e,t,n]=await Promise.all([ne.list(),g.list(void 0,`agent`),E.list()]);l.value=e,b.value=t,S.value=n}catch(e){V.error(e instanceof a?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}te(()=>{pt(),mt()});function ht(){L.value=`add`,R.value=null,Object.assign(X,Y()),X.appRole=F.value,z.value=``}function gt(e){L.value=`edit`,R.value=e.id,X.name=e.name,X.phone=e.phone,X.nationalId=e.nationalId,X.customerType=e.customerType,X.companyName=e.companyName,X.isActive=e.isActive,X.levelDefId=e.levelDefId??``,X.assignedAgentId=e.assignedAgentId??``,X.brandIds=[...e.brandIds??[]],X.appRole=e.appRole===`agent`?`agent`:`customer`,X.agentCode=e.agentCode??``,z.value=``}function $(){L.value=null,R.value=null,z.value=``}async function _t(){if(!dt.value){z.value=`نام، تلفن و شناسه ملی الزامی هستند.`;return}B.value=!0;let e={name:X.name.trim(),phone:X.phone.trim(),nationalId:X.nationalId.trim(),customerType:X.customerType,isActive:X.isActive,levelDefId:X.levelDefId||null,assignedAgentId:X.assignedAgentId||null,brandIds:[...X.brandIds],appRole:X.appRole,agentCode:X.appRole===`agent`&&X.agentCode.trim()||null};try{if(L.value===`edit`&&R.value){let t=await g.update(R.value,e),n=c.value.findIndex(e=>e.id===R.value);n!==-1&&(c.value[n]={...c.value[n],...t})}else{let t=await g.create(e);c.value.unshift(t)}V.success(L.value===`edit`?`اطلاعات مشتری بهروزرسانی شد.`:`مشتری جدید ثبت شد.`),$(),e.appRole===`agent`&&mt()}catch(e){V.error(e instanceof a?e.message:`ذخیره مشتری انجام نشد.`)}finally{B.value=!1}}async function vt(e,t){await g.setActive(e,t)}function yt(){P.value=``}return(n,a)=>(x(),h(`div`,se,[d(`div`,ce,[a[13]||=d(`div`,null,[d(`h1`,{class:`admin-page-header__title`},`مشتریان و واسطهها`)],-1),d(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:ht},t(F.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1)]),d(`div`,le,[d(`button`,{type:`button`,role:`tab`,class:D([`customers-page__tab`,{"is-active":F.value===`customer`}]),"aria-selected":F.value===`customer`,onClick:a[0]||=e=>Q(`customer`)},` مشتریان `,10,ue),d(`button`,{type:`button`,role:`tab`,class:D([`customers-page__tab`,{"is-active":F.value===`agent`}]),"aria-selected":F.value===`agent`,onClick:a[1]||=e=>Q(`agent`)},` واسطهها `,10,de)]),d(`div`,fe,[T(ee,{name:`search`,size:18}),_(d(`input`,{"onUpdate:modelValue":a[2]||=e=>P.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[r,P.value]])]),I.value?(x(),o(A,{key:0,variant:`table`})):Z.value.length?(x(),h(`div`,pe,[d(`div`,me,[d(`table`,he,[d(`thead`,null,[d(`tr`,null,[d(`th`,null,t(F.value===`agent`?`نام واسطه`:`نام مشتری`),1),a[14]||=d(`th`,null,`تلفن`,-1),a[15]||=d(`th`,null,`نقش`,-1),F.value===`agent`?(x(),h(`th`,ge,`کد واسطه`)):e(``,!0),F.value===`customer`?(x(),h(`th`,_e,`نوع`)):e(``,!0),F.value===`customer`?(x(),h(`th`,ve,`سطح`)):e(``,!0),F.value===`customer`?(x(),h(`th`,ye,`واسطه`)):e(``,!0),F.value===`customer`?(x(),h(`th`,be,`شرکت`)):e(``,!0),a[16]||=d(`th`,{class:`numeric`},`تعداد سفارش`,-1),a[17]||=d(`th`,{class:`numeric`},`مجموع متراژ`,-1),a[18]||=d(`th`,{class:`status`},`وضعیت`,-1),a[19]||=d(`th`,null,`تاریخ ثبت`,-1),a[20]||=d(`th`,{class:`actions`},`عملیات`,-1)])]),d(`tbody`,null,[(x(!0),h(i,null,m(Z.value,n=>(x(),h(`tr`,{key:n.id},[d(`td`,null,t(H(n.name)),1),d(`td`,null,t(H(n.phone)),1),d(`td`,null,t(q(n.appRole)),1),F.value===`agent`?(x(),h(`td`,xe,t(H(n.agentCode)),1)):e(``,!0),F.value===`customer`?(x(),h(`td`,Se,t(H(p(M)[n.customerType])),1)):e(``,!0),F.value===`customer`?(x(),h(`td`,Ce,t(H(n.levelLabel)),1)):e(``,!0),F.value===`customer`?(x(),h(`td`,we,t(H(n.assignedAgentName)),1)):e(``,!0),F.value===`customer`?(x(),h(`td`,Te,t(H(n.companyName)),1)):e(``,!0),d(`td`,Ee,t(H(n.orderCount)),1),d(`td`,De,t(U(n.totalMeterage)),1),d(`td`,Oe,[T(N,{id:n.id,modelValue:n.isActive,"onUpdate:modelValue":e=>n.isActive=e,"entity-name":n.name,"entity-type":`مشتری`,persist:vt},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),d(`td`,null,t(H(p(y)(n.registeredAt))),1),d(`td`,ke,[d(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>gt(n)},` ویرایش `,8,Ae)])]))),128))])])])])):(x(),o(ae,{key:1,class:`admin-card`,icon:`customers`,title:P.value.trim()?`نتیجهای یافت نشد`:F.value===`agent`?`واسطهای ثبت نشده`:`مشتریان ثبت شده`,description:P.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:F.value===`agent`?`برای شروع، اولین واسطه را ثبت کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:v(()=>[P.value.trim()?(x(),h(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:yt},` پاک کردن جستجو `)):(x(),h(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:ht},t(F.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1))]),_:1},8,[`title`,`description`])),!I.value&&Z.value.length?(x(),h(`div`,je,[(x(!0),h(i,null,m(Z.value,n=>(x(),h(`article`,{key:n.id,class:`admin-card-item`},[d(`div`,Me,[d(`p`,Ne,t(H(n.name)),1),d(`div`,Pe,[T(N,{id:n.id,modelValue:n.isActive,"onUpdate:modelValue":e=>n.isActive=e,"entity-name":n.name,"entity-type":`مشتری`,persist:vt},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),d(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>gt(n)},` ویرایش `,8,Fe)])]),d(`div`,Ie,[d(`span`,null,t(H(n.phone)),1),F.value===`agent`?(x(),h(`span`,Le,`کد: `+t(H(n.agentCode)),1)):e(``,!0),F.value===`customer`?(x(),h(`span`,Re,t(H(p(M)[n.customerType])),1)):e(``,!0),F.value===`customer`?(x(),h(`span`,ze,t(H(n.levelLabel)),1)):e(``,!0),F.value===`customer`?(x(),h(`span`,Be,`واسطه: `+t(H(n.assignedAgentName)),1)):e(``,!0),F.value===`customer`?(x(),h(`span`,Ve,t(H(n.companyName)),1)):e(``,!0),d(`span`,null,t(H(n.orderCount))+` سفارش · `+t(U(n.totalMeterage)),1)])]))),128))])):e(``,!0),T(s,{open:lt.value,title:ut.value,size:`lg`,onClose:$},{footer:v(()=>[d(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:$},`انصراف`),d(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!dt.value||B.value,onClick:_t},[B.value?(x(),h(`span`,st)):e(``,!0),C(` `+t(L.value===`edit`?`ذخیره تغییرات`:X.appRole===`agent`?`ثبت واسطه`:`ثبت مشتری`),1)],8,ot)]),default:v(()=>[d(`form`,{class:`admin-form`,onSubmit:w(_t,[`prevent`])},[z.value?(x(),h(`p`,He,t(z.value),1)):e(``,!0),d(`div`,Ue,[a[21]||=d(`label`,{for:`customer-name`},[C(`نام مشتری `),d(`span`,{class:`admin-form__required`},`*`)],-1),_(d(`input`,{id:`customer-name`,"onUpdate:modelValue":a[3]||=e=>X.name=e,type:`text`,class:`admin-input`},null,512),[[r,X.name]])]),d(`div`,We,[d(`div`,Ge,[a[22]||=d(`label`,{for:`customer-phone`},[C(`تلفن `),d(`span`,{class:`admin-form__required`},`*`)],-1),_(d(`input`,{id:`customer-phone`,"onUpdate:modelValue":a[4]||=e=>X.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[r,X.phone]])]),d(`div`,Ke,[a[23]||=d(`label`,{for:`customer-national-id`},[C(`شناسه ملی `),d(`span`,{class:`admin-form__required`},`*`)],-1),_(d(`input`,{id:`customer-national-id`,"onUpdate:modelValue":a[5]||=e=>X.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[r,X.nationalId]])])]),d(`div`,qe,[d(`div`,Je,[a[24]||=d(`label`,null,`نوع مشتری`,-1),T(j,{modelValue:X.customerType,"onUpdate:modelValue":a[6]||=e=>X.customerType=e,block:``,"aria-label":`نوع مشتری`,options:W},null,8,[`modelValue`])]),d(`div`,Ye,[a[25]||=d(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),_(d(`input`,{id:`customer-company`,"onUpdate:modelValue":a[7]||=e=>X.companyName=e,type:`text`,class:`admin-input`},null,512),[[r,X.companyName]])])]),d(`div`,Xe,[d(`div`,Ze,[a[26]||=d(`label`,null,`سطح`,-1),T(j,{modelValue:X.levelDefId,"onUpdate:modelValue":a[8]||=e=>X.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:J.value},null,8,[`modelValue`,`options`])]),d(`div`,Qe,[a[27]||=d(`label`,null,`واسطه`,-1),T(j,{modelValue:X.assignedAgentId,"onUpdate:modelValue":a[9]||=e=>X.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاصیافته`,options:ct.value},null,8,[`modelValue`,`options`])])]),d(`div`,$e,[d(`div`,et,[a[28]||=d(`label`,null,`نقش در اپ`,-1),T(j,{modelValue:X.appRole,"onUpdate:modelValue":a[10]||=e=>X.appRole=e,block:``,"aria-label":`نقش در اپ`,options:G},null,8,[`modelValue`])]),X.appRole===`agent`?(x(),h(`div`,tt,[a[29]||=d(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),_(d(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":a[11]||=e=>X.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[r,X.agentCode]])])):e(``,!0)]),S.value.length?(x(),h(`div`,nt,[a[30]||=d(`label`,null,`برندها`,-1),d(`div`,rt,[(x(!0),h(i,null,m(S.value,e=>(x(),h(`label`,{key:e.id,class:`customers-page__brand`},[d(`input`,{type:`checkbox`,checked:X.brandIds.includes(e.id),onChange:t=>ft(e.id,t.target.checked)},null,40,it),d(`span`,null,t(e.name),1)]))),128))])])):e(``,!0),d(`div`,at,[T(ie,{modelValue:X.isActive,"onUpdate:modelValue":a[12]||=e=>X.isActive=e,label:`وضعیت`},null,8,[`modelValue`])]),L.value===`edit`&&R.value&&X.appRole===`customer`?(x(),o(oe,{key:2,"customer-id":R.value},null,8,[`customer-id`])):e(``,!0)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-db05c8d1`]]);export{J as default};
\ No newline at end of file
diff --git a/dist/assets/CustomersView-D2DfLX0j.js b/dist/assets/CustomersView-D2DfLX0j.js
new file mode 100644
index 0000000..18f3608
--- /dev/null
+++ b/dist/assets/CustomersView-D2DfLX0j.js
@@ -0,0 +1 @@
+import{B as e,O as t,Ot as n,R as r,T as i,Tt as a,V as o,Y as s,Z as c,at as l,c as u,d,g as f,h as p,j as m,l as h,m as g,r as _,s as v,t as y,u as b}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{D as x,K as S,N as C,P as w,R as T,S as E,W as D,a as O,g as k,i as ee,u as te,v as ne,z as re}from"./index-CXa4EMLW.js";import{t as ie}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as ae}from"./BaseSwitch-TV5Yvtf7.js";import{t as oe}from"./BaseEmptyState-BmO9aDcK.js";import{t as A}from"./AdminSelect-9UfEJQzN.js";import{r as j}from"./adminLabels-Cz9ccm1Z.js";import{t as M}from"./ActiveSwitchCell-DJZQHZ-8.js";var N={class:`suggestions-panel`},P={key:0,class:`suggestions-panel__loading`},F={class:`suggestions-panel__add`},I={class:`field`},L={key:0,class:`suggestions-panel__picked`},R=[`onClick`],z={class:`field`},B=[`disabled`],V={key:0,class:`suggestions-panel__list`},H={class:`muted`,dir:`ltr`},U={key:0,class:`note`},W={class:`suggestions-panel__actions`},G=[`onClick`],K={key:1,class:`suggestions-panel__empty`},se=y(f({__name:`CustomerSuggestionsPanel`,props:{customerId:{}},setup(e){let s=e,l=re(),f=c(!0),h=c(!1),y=c([]),S=c([]),w=c([]),T=c(``),O=v(()=>S.value.filter(e=>!y.value.some(t=>t.productId===e.id&&t.isActive)).map(e=>({value:e.id,label:`${e.name} (${e.productCode})`})));async function k(){if(s.customerId){f.value=!0;try{let[e,t]=await Promise.all([x.list(s.customerId),E.list()]);y.value=e,S.value=t}catch(e){l.error(e instanceof C?e.message:`بارگذاری پیشنهادها ناموفق بود`)}finally{f.value=!1}}}async function ee(){if(w.value.length){h.value=!0;try{for(let e of w.value)await x.create({customerId:s.customerId,productId:e,note:T.value.trim()||void 0});w.value=[],T.value=``,l.success(`پیشنهادها به صفحه خانه مشتری اضافه شد`),await k()}catch(e){l.error(e instanceof C?e.message:`ثبت پیشنهاد ناموفق بود`)}finally{h.value=!1}}}async function te(e){try{await x.setActive(e.id,!e.isActive),await k()}catch(e){l.error(e instanceof C?e.message:`بهروزرسانی ناموفق بود`)}}function ne(e){e&&(w.value.includes(e)||(w.value=[...w.value,e]))}function ie(e){w.value=w.value.filter(t=>t!==e)}return r(()=>s.customerId,()=>{k()}),i(()=>{k()}),(e,r)=>(t(),d(`section`,N,[r[4]||=u(`header`,{class:`suggestions-panel__head`},[u(`div`,null,[u(`h3`,{class:`suggestions-panel__title`},`پیشنهاد اختصاصی در اپ`),u(`p`,{class:`suggestions-panel__hint`},` محصولات انتخابشده در بخش «پیشنهاد اختصاصی ما برای شما» در صفحه خانه مشتری نمایش داده میشوند. `)])],-1),f.value?(t(),d(`div`,P,`در حال بارگذاری...`)):(t(),d(_,{key:1},[u(`div`,F,[u(`label`,I,[r[1]||=g(` افزودن محصول (کد کالیته) `,-1),p(A,{"model-value":``,options:[{value:``,label:`انتخاب محصول...`},...O.value],"onUpdate:modelValue":ne},null,8,[`options`])]),w.value.length?(t(),d(`div`,L,[(t(!0),d(_,null,m(w.value,e=>(t(),d(`span`,{key:e,class:`suggestions-panel__chip`},[g(n(S.value.find(t=>t.id===e)?.productCode||e)+` `,1),u(`button`,{type:`button`,"aria-label":`حذف`,onClick:t=>ie(e)},`×`,8,R)]))),128))])):b(``,!0),u(`label`,z,[r[2]||=g(` یادداشت (اختیاری) `,-1),o(u(`textarea`,{"onUpdate:modelValue":r[0]||=e=>T.value=e,class:`admin-input`,rows:`2`,placeholder:`دلیل پیشنهاد برای مشتری`},null,512),[[D,T.value]])]),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!w.value.length||h.value,onClick:ee},` افزودن به صفحه خانه مشتری `,8,B)]),y.value.length?(t(),d(`div`,V,[r[3]||=u(`h4`,{class:`suggestions-panel__sub`},`پیشنهادهای ثبتشده`,-1),u(`ul`,null,[(t(!0),d(_,null,m(y.value,e=>(t(),d(`li`,{key:e.id,class:`suggestions-panel__row`},[u(`div`,null,[u(`strong`,null,n(e.productName),1),u(`span`,H,`(`+n(e.productCode)+`)`,1),e.note?(t(),d(`p`,U,n(e.note),1)):b(``,!0)]),u(`div`,W,[u(`span`,{class:a(e.isActive?`on`:`off`)},n(e.isActive?`فعال`:`غیرفعال`),3),u(`button`,{type:`button`,class:`link`,onClick:t=>te(e)},n(e.isActive?`حذف از خانه`:`فعالسازی`),9,G)])]))),128))])])):(t(),d(`p`,K,`هنوز پیشنهادی برای این مشتری ثبت نشده است.`))],64))]))}}),[[`__scopeId`,`data-v-4182e847`]]),ce={class:`customers-page`},le={class:`admin-page-header`},ue={class:`customers-page__tabs`,role:`tablist`,"aria-label":`نوع کاربر`},de=[`aria-selected`],fe=[`aria-selected`],pe={class:`customers-page__search admin-card`},me={key:2,class:`customers-page__table admin-card desktop-only`},he={class:`admin-table-wrap`},ge={class:`admin-table`},_e={key:0},ve={key:1},ye={key:2},be={key:3},xe={key:4},Se={key:0},Ce={key:1},we={key:2},Te={key:3},Ee={key:4},De={class:`numeric`},Oe={class:`numeric`},ke={class:`status`},Ae={class:`actions`},je=[`onClick`],Me={key:3,class:`compact-only admin-card-list`},Ne={class:`admin-card-item__header`},Pe={class:`admin-card-item__title`},Fe={class:`admin-card-item__header-actions`},Ie=[`onClick`],Le={class:`admin-card-item__meta`},Re={key:0},ze={key:1},Be={key:2},Ve={key:3},He={key:4},Ue={key:0,class:`admin-form__error`,role:`alert`},We={class:`admin-form__field`},Ge={class:`admin-form__row`},Ke={class:`admin-form__field`},qe={class:`admin-form__field`},Je={class:`admin-form__row`},Ye={class:`admin-form__field`},Xe={class:`admin-form__field`},Ze={class:`admin-form__row`},Qe={class:`admin-form__field`},$e={class:`admin-form__field`},et={class:`admin-form__row`},tt={class:`admin-form__field`},nt={key:0,class:`admin-form__field`},rt={key:1,class:`admin-form__field`},it={class:`customers-page__brands`},at=[`checked`,`onChange`],ot={class:`admin-form__field`},st=[`disabled`],ct={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},q=y(f({__name:`CustomersView`,setup(r){let f=c([]),y=c([]),x=c([]),E=c([]),N=c(``),P=c(`customer`),F=c(!0),I=c(null),L=c(null),R=c(``),z=c(!1),B=re();function V(e){if(e==null)return`-`;if(typeof e==`number`)return Number.isFinite(e)?String(e):`-`;let t=e.trim();return!t||t===`—`?`-`:t}function H(e){return e==null||!Number.isFinite(e)?`-`:O(e)}let U=[{value:`wholesale`,label:`عمدهفروش`},{value:`retail`,label:`خردهفروش`}],W=[{value:`customer`,label:`مشتری`},{value:`agent`,label:`واسطه`}],G={customer:`مشتری`,agent:`واسطه`};function K(e){return G[e===`agent`?`agent`:`customer`]}let q=v(()=>[{value:``,label:`بدون سطح`},...y.value.map(e=>({value:e.id,label:e.label}))]),lt=v(()=>[{value:``,label:`بدون واسطه`},...x.value.filter(e=>e.id!==L.value).map(e=>({value:e.id,label:e.name+(e.agentCode?` (${e.agentCode})`:``)}))]),J=()=>({name:``,phone:``,nationalId:``,customerType:`wholesale`,companyName:``,isActive:!0,levelDefId:``,assignedAgentId:``,brandIds:[],appRole:`customer`,agentCode:``}),Y=s(J()),ut=v(()=>I.value!==null),dt=v(()=>I.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),ft=v(()=>Y.name.trim()&&Y.phone.trim()&&Y.nationalId.trim()),X=v(()=>{let e=N.value.trim();return e?f.value.filter(t=>t.name.includes(e)||t.phone.includes(e)||t.nationalId.includes(e)||t.companyName.includes(e)):f.value});function pt(e,t){t?Y.brandIds.includes(e)||Y.brandIds.push(e):Y.brandIds=Y.brandIds.filter(t=>t!==e)}async function mt(){F.value=!0;try{f.value=await k.list(void 0,P.value)}catch(e){B.error(e instanceof C?e.message:P.value===`agent`?`بارگذاری واسطهها انجام نشد.`:`بارگذاری مشتریان انجام نشد.`)}finally{F.value=!1}}function Z(e){P.value!==e&&(P.value=e,N.value=``,mt())}async function ht(){try{let[e,t,n]=await Promise.all([ne.list(),k.list(void 0,`agent`),te.list()]);y.value=e,x.value=t,E.value=n}catch(e){B.error(e instanceof C?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}i(()=>{mt(),ht()});function gt(){I.value=`add`,L.value=null,Object.assign(Y,J()),Y.appRole=P.value,R.value=``}function _t(e){I.value=`edit`,L.value=e.id,Y.name=e.name,Y.phone=e.phone,Y.nationalId=e.nationalId,Y.customerType=e.customerType,Y.companyName=e.companyName,Y.isActive=e.isActive,Y.levelDefId=e.levelDefId??``,Y.assignedAgentId=e.assignedAgentId??``,Y.brandIds=[...e.brandIds??[]],Y.appRole=e.appRole===`agent`?`agent`:`customer`,Y.agentCode=e.agentCode??``,R.value=``}function Q(){I.value=null,L.value=null,R.value=``}async function vt(){if(!ft.value){R.value=`نام، تلفن و شناسه ملی الزامی هستند.`;return}z.value=!0;let e={name:Y.name.trim(),phone:Y.phone.trim(),nationalId:Y.nationalId.trim(),customerType:Y.customerType,isActive:Y.isActive,levelDefId:Y.levelDefId||null,assignedAgentId:Y.assignedAgentId||null,brandIds:[...Y.brandIds],appRole:Y.appRole,agentCode:Y.appRole===`agent`&&Y.agentCode.trim()||null};try{if(I.value===`edit`&&L.value){let t=await k.update(L.value,e),n=f.value.findIndex(e=>e.id===L.value);n!==-1&&(f.value[n]={...f.value[n],...t})}else{let t=await k.create(e);f.value.unshift(t)}B.success(I.value===`edit`?`اطلاعات مشتری بهروزرسانی شد.`:`مشتری جدید ثبت شد.`),Q(),e.appRole===`agent`&&ht()}catch(e){B.error(e instanceof C?e.message:`ذخیره مشتری انجام نشد.`)}finally{z.value=!1}}async function $(e,t){await k.setActive(e,t)}function yt(){N.value=``}return(r,i)=>(t(),d(`div`,ce,[u(`div`,le,[i[13]||=u(`div`,null,[u(`h1`,{class:`admin-page-header__title`},`مشتریان و واسطهها`)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:gt},n(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1)]),u(`div`,ue,[u(`button`,{type:`button`,role:`tab`,class:a([`customers-page__tab`,{"is-active":P.value===`customer`}]),"aria-selected":P.value===`customer`,onClick:i[0]||=e=>Z(`customer`)},` مشتریان `,10,de),u(`button`,{type:`button`,role:`tab`,class:a([`customers-page__tab`,{"is-active":P.value===`agent`}]),"aria-selected":P.value===`agent`,onClick:i[1]||=e=>Z(`agent`)},` واسطهها `,10,fe)]),u(`div`,pe,[p(w,{name:`search`,size:18}),o(u(`input`,{"onUpdate:modelValue":i[2]||=e=>N.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[D,N.value]])]),F.value?(t(),h(ie,{key:0,variant:`table`})):X.value.length?(t(),d(`div`,me,[u(`div`,he,[u(`table`,ge,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,n(P.value===`agent`?`نام واسطه`:`نام مشتری`),1),i[14]||=u(`th`,null,`تلفن`,-1),i[15]||=u(`th`,null,`نقش`,-1),P.value===`agent`?(t(),d(`th`,_e,`کد واسطه`)):b(``,!0),P.value===`customer`?(t(),d(`th`,ve,`نوع`)):b(``,!0),P.value===`customer`?(t(),d(`th`,ye,`سطح`)):b(``,!0),P.value===`customer`?(t(),d(`th`,be,`واسطه`)):b(``,!0),P.value===`customer`?(t(),d(`th`,xe,`شرکت`)):b(``,!0),i[16]||=u(`th`,{class:`numeric`},`تعداد سفارش`,-1),i[17]||=u(`th`,{class:`numeric`},`مجموع متراژ`,-1),i[18]||=u(`th`,{class:`status`},`وضعیت`,-1),i[19]||=u(`th`,null,`تاریخ ثبت`,-1),i[20]||=u(`th`,{class:`actions`},`عملیات`,-1)])]),u(`tbody`,null,[(t(!0),d(_,null,m(X.value,e=>(t(),d(`tr`,{key:e.id},[u(`td`,null,n(V(e.name)),1),u(`td`,null,n(V(e.phone)),1),u(`td`,null,n(K(e.appRole)),1),P.value===`agent`?(t(),d(`td`,Se,n(V(e.agentCode)),1)):b(``,!0),P.value===`customer`?(t(),d(`td`,Ce,n(V(l(j)[e.customerType])),1)):b(``,!0),P.value===`customer`?(t(),d(`td`,we,n(V(e.levelLabel)),1)):b(``,!0),P.value===`customer`?(t(),d(`td`,Te,n(V(e.assignedAgentName)),1)):b(``,!0),P.value===`customer`?(t(),d(`td`,Ee,n(V(e.companyName)),1)):b(``,!0),u(`td`,De,n(V(e.orderCount)),1),u(`td`,Oe,n(H(e.totalMeterage)),1),u(`td`,ke,[p(M,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),u(`td`,null,n(V(l(ee)(e.registeredAt))),1),u(`td`,Ae,[u(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>_t(e)},` ویرایش `,8,je)])]))),128))])])])])):(t(),h(oe,{key:1,class:`admin-card`,icon:`customers`,title:N.value.trim()?`نتیجهای یافت نشد`:P.value===`agent`?`واسطهای ثبت نشده`:`مشتریان ثبت شده`,description:N.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:P.value===`agent`?`برای شروع، اولین واسطه را ثبت کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:e(()=>[N.value.trim()?(t(),d(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:yt},` پاک کردن جستجو `)):(t(),d(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:gt},n(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1))]),_:1},8,[`title`,`description`])),!F.value&&X.value.length?(t(),d(`div`,Me,[(t(!0),d(_,null,m(X.value,e=>(t(),d(`article`,{key:e.id,class:`admin-card-item`},[u(`div`,Ne,[u(`p`,Pe,n(V(e.name)),1),u(`div`,Fe,[p(M,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),u(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>_t(e)},` ویرایش `,8,Ie)])]),u(`div`,Le,[u(`span`,null,n(V(e.phone)),1),P.value===`agent`?(t(),d(`span`,Re,`کد: `+n(V(e.agentCode)),1)):b(``,!0),P.value===`customer`?(t(),d(`span`,ze,n(V(l(j)[e.customerType])),1)):b(``,!0),P.value===`customer`?(t(),d(`span`,Be,n(V(e.levelLabel)),1)):b(``,!0),P.value===`customer`?(t(),d(`span`,Ve,`واسطه: `+n(V(e.assignedAgentName)),1)):b(``,!0),P.value===`customer`?(t(),d(`span`,He,n(V(e.companyName)),1)):b(``,!0),u(`span`,null,n(V(e.orderCount))+` سفارش · `+n(H(e.totalMeterage)),1)])]))),128))])):b(``,!0),p(T,{open:ut.value,title:dt.value,size:`lg`,onClose:Q},{footer:e(()=>[u(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Q},`انصراف`),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!ft.value||z.value,onClick:vt},[z.value?(t(),d(`span`,ct)):b(``,!0),g(` `+n(I.value===`edit`?`ذخیره تغییرات`:Y.appRole===`agent`?`ثبت واسطه`:`ثبت مشتری`),1)],8,st)]),default:e(()=>[u(`form`,{class:`admin-form`,onSubmit:S(vt,[`prevent`])},[R.value?(t(),d(`p`,Ue,n(R.value),1)):b(``,!0),u(`div`,We,[i[21]||=u(`label`,{for:`customer-name`},[g(`نام مشتری `),u(`span`,{class:`admin-form__required`},`*`)],-1),o(u(`input`,{id:`customer-name`,"onUpdate:modelValue":i[3]||=e=>Y.name=e,type:`text`,class:`admin-input`},null,512),[[D,Y.name]])]),u(`div`,Ge,[u(`div`,Ke,[i[22]||=u(`label`,{for:`customer-phone`},[g(`تلفن `),u(`span`,{class:`admin-form__required`},`*`)],-1),o(u(`input`,{id:`customer-phone`,"onUpdate:modelValue":i[4]||=e=>Y.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[D,Y.phone]])]),u(`div`,qe,[i[23]||=u(`label`,{for:`customer-national-id`},[g(`شناسه ملی `),u(`span`,{class:`admin-form__required`},`*`)],-1),o(u(`input`,{id:`customer-national-id`,"onUpdate:modelValue":i[5]||=e=>Y.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[D,Y.nationalId]])])]),u(`div`,Je,[u(`div`,Ye,[i[24]||=u(`label`,null,`نوع مشتری`,-1),p(A,{modelValue:Y.customerType,"onUpdate:modelValue":i[6]||=e=>Y.customerType=e,block:``,"aria-label":`نوع مشتری`,options:U},null,8,[`modelValue`])]),u(`div`,Xe,[i[25]||=u(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),o(u(`input`,{id:`customer-company`,"onUpdate:modelValue":i[7]||=e=>Y.companyName=e,type:`text`,class:`admin-input`},null,512),[[D,Y.companyName]])])]),u(`div`,Ze,[u(`div`,Qe,[i[26]||=u(`label`,null,`سطح`,-1),p(A,{modelValue:Y.levelDefId,"onUpdate:modelValue":i[8]||=e=>Y.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:q.value},null,8,[`modelValue`,`options`])]),u(`div`,$e,[i[27]||=u(`label`,null,`واسطه`,-1),p(A,{modelValue:Y.assignedAgentId,"onUpdate:modelValue":i[9]||=e=>Y.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاصیافته`,options:lt.value},null,8,[`modelValue`,`options`])])]),u(`div`,et,[u(`div`,tt,[i[28]||=u(`label`,null,`نقش در اپ`,-1),p(A,{modelValue:Y.appRole,"onUpdate:modelValue":i[10]||=e=>Y.appRole=e,block:``,"aria-label":`نقش در اپ`,options:W},null,8,[`modelValue`])]),Y.appRole===`agent`?(t(),d(`div`,nt,[i[29]||=u(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),o(u(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":i[11]||=e=>Y.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[D,Y.agentCode]])])):b(``,!0)]),E.value.length?(t(),d(`div`,rt,[i[30]||=u(`label`,null,`برندها`,-1),u(`div`,it,[(t(!0),d(_,null,m(E.value,e=>(t(),d(`label`,{key:e.id,class:`customers-page__brand`},[u(`input`,{type:`checkbox`,checked:Y.brandIds.includes(e.id),onChange:t=>pt(e.id,t.target.checked)},null,40,at),u(`span`,null,n(e.name),1)]))),128))])])):b(``,!0),u(`div`,ot,[p(ae,{modelValue:Y.isActive,"onUpdate:modelValue":i[12]||=e=>Y.isActive=e,label:`وضعیت`},null,8,[`modelValue`])]),I.value===`edit`&&L.value&&Y.appRole===`customer`?(t(),h(se,{key:2,"customer-id":L.value},null,8,[`customer-id`])):b(``,!0)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-db05c8d1`]]);export{q as default};
\ No newline at end of file
diff --git a/dist/assets/DashboardView-BXkuwSW-.js b/dist/assets/DashboardView-BXkuwSW-.js
deleted file mode 100644
index 6b26c83..0000000
--- a/dist/assets/DashboardView-BXkuwSW-.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,I as n,J as r,N as i,P as a,Q as o,St as s,V as c,X as l,Z as u,_ as d,bt as f,dt as p,et as m,ht as h,i as g,it as _,lt as v,n as y,nt as b,o as x,pt as S,rt as C,st as w,xt as T,y as E,yt as D,z as O}from"./index-B2VD3zy8.js";import{t as k}from"./StatusBadge-D3ThrLrU.js";var ee={class:`sales-chart`},te={key:0,class:`sales-chart__header`},A={key:0,class:`sales-chart__title`},j={key:1,class:`sales-chart__subtitle`},M=[`viewBox`,`aria-label`],N=[`x1`,`x2`,`y1`,`y2`],P=[`points`],F=[`points`],I=[`x1`,`x2`,`y1`,`y2`],L=[`cx`,`cy`],R={class:`sales-chart__tooltip-label`},z={key:1,class:`sales-chart__axis`},B=320,V=120,H=c(_({__name:`SalesAreaChart`,props:{data:{},title:{},subtitle:{},height:{default:160},color:{default:`#0a353c`},unit:{default:`میلیارد تومان`},labels:{}},setup(n){let i=n,a=D(null),o={top:12,right:8,bottom:8,left:8},c=l(()=>Math.max(...i.data,.001)),d=l(()=>{let e=B-o.left-o.right,t=V-o.top-o.bottom,n=e/Math.max(i.data.length-1,1);return i.data.map((e,r)=>({x:o.left+r*n,y:o.top+t-e/c.value*t,value:e,index:r}))}),h=l(()=>d.value.map(e=>`${e.x},${e.y}`).join(` `)),g=l(()=>{let e=V-o.bottom,t=d.value[0],n=d.value[d.value.length-1];return!t||!n?``:`${t.x},${e} ${h.value} ${n.x},${e}`}),_=l(()=>{let e=V-o.top-o.bottom;return[0,.5,1].map(t=>o.top+e*t)}),y=l(()=>a.value===null?null:d.value[a.value]??null);function b(e){let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*B,r=0,i=1/0;d.value.forEach(e=>{let t=Math.abs(e.x-n);t(v(),m(`div`,ee,[n.title||n.subtitle?(v(),m(`div`,te,[u(`div`,null,[n.title?(v(),m(`h3`,A,t(n.title),1)):e(``,!0),n.subtitle?(v(),m(`p`,j,t(n.subtitle),1)):e(``,!0)])])):e(``,!0),u(`div`,{class:`sales-chart__body`,style:s({height:`${n.height}px`})},[(v(),m(`svg`,{class:`sales-chart__svg`,viewBox:`0 0 ${B} ${V}`,preserveAspectRatio:`none`,role:`img`,"aria-label":n.title||`نمودار فروش`,onMousemove:b,onMouseleave:S},[(v(!0),m(r,null,p(_.value,(e,t)=>(v(),m(`line`,{key:t,x1:o.left,x2:B-o.right,y1:e,y2:e,class:`sales-chart__grid`},null,8,N))),128)),g.value?(v(),m(`polygon`,{key:0,points:g.value,class:`sales-chart__area`,style:s({fill:`${n.color}22`})},null,12,P)):e(``,!0),u(`polyline`,{points:h.value,class:`sales-chart__line`,style:s({stroke:n.color})},null,12,F),y.value?(v(),m(r,{key:1},[u(`line`,{x1:y.value.x,x2:y.value.x,y1:o.top,y2:V-o.bottom,class:`sales-chart__cursor`},null,8,I),u(`circle`,{cx:y.value.x,cy:y.value.y,r:`4`,class:`sales-chart__dot`,style:s({fill:n.color})},null,12,L)],64)):e(``,!0)],40,M)),y.value?(v(),m(`div`,{key:0,class:`sales-chart__tooltip`,style:s({left:`${y.value.x/B*100}%`})},[u(`span`,R,t(n.labels?.[y.value.index]??`روز ${y.value.index+1}`),1),u(`strong`,null,t(f(x)(y.value.value))+` `+t(n.unit),1)],4)):e(``,!0)],4),n.labels?.length?(v(),m(`div`,z,[(v(!0),m(r,null,p(n.labels,(e,n)=>(v(),m(`span`,{key:n},t(e),1))),128))])):e(``,!0)]))}}),[[`__scopeId`,`data-v-85c70c78`]]),U={info:`var(--color-info-light)`,warning:`var(--color-warning-light)`,purple:`var(--color-purple-light)`,success:`var(--color-success-light)`},W={info:`var(--color-info)`,warning:`var(--color-warning-dark)`,purple:`var(--color-purple)`,success:`var(--color-success)`},G=()=>({newOrders:0,pendingReview:0,pendingCheck:0,finalApproval:0,todaySales:0,todaySalesGrowth:0,monthSales:0});function K(){let e=n(),t=O(),r=D(G()),a=D([]),o=D(Array.from({length:28},()=>0)),s=D([`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`]),c=D([]),u=D(!1),f=l(()=>[{label:`سفارشهای جدید`,value:r.value.newOrders,icon:`cart`,tone:`info`,link:`/orders`},{label:`در انتظار بررسی`,value:r.value.pendingReview,icon:`file`,tone:`warning`,link:`/orders?tab=pending_review`},{label:`بررسی چک`,value:r.value.pendingCheck,icon:`wallet`,tone:`purple`,link:`/orders?tab=pending_check`},{label:`تأیید نهایی شده`,value:r.value.finalApproval,icon:`check-circle`,tone:`success`,link:`/orders?tab=final_approval`}]),p=l(()=>{let e=o.value;if(!e.length)return``;let t=Math.max(...e,.001),n=e.length>1?280/(e.length-1):280;return e.map((e,r)=>`${r*n},${120-e/t*110-5}`).join(` `)});async function m(){u.value=!0;try{let e=await d.get();r.value=e.stats,a.value=(e.recentOrders??[]).map(e=>E(e)),o.value=e.salesChartData?.length?e.salesChartData:Array.from({length:28},()=>0),s.value=e.chartAxisLabels?.length?e.chartAxisLabels:[`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`],c.value=e.checkDeadlines??[]}catch(e){t.error(e instanceof i?e.message:`بارگذاری داشبورد انجام نشد.`)}finally{u.value=!1}}w(()=>{m()});function h(){e.push(`/orders`)}return{checkDeadlines:c,dashboardStats:r,recentOrders:a,chartPoints:p,salesChartData:o,chartAxisLabels:s,statCards:f,loading:u,goOrders:h,loadDashboard:m}}var q={class:`dashboard`},J={class:`dashboard__toolbar`},Y={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},X={class:`dashboard__stats`},Z={class:`admin-stat-card__label`},Q={class:`admin-stat-card__value`},ne={class:`dashboard__sales-card admin-stat-card`},re={class:`dashboard__sales-header`},ie={class:`admin-stat-card__value dashboard__sales-value`},$={class:`dashboard__sales-growth`},ae={class:`dashboard__grid`},oe={class:`dashboard__chart-card admin-card`},se={class:`dashboard__orders-card admin-card`},ce={class:`admin-table-wrap`},le={class:`admin-table admin-table--compact`},ue={class:`dashboard__card-footer`},de={class:`dashboard__checks-card admin-card`},fe={class:`dashboard__deadline-list`},pe={class:`dashboard__deadline-count`},me={class:`dashboard__deadline-amount`},he={class:`dashboard__card-footer`},ge=c(_({__name:`DesktopDashboard`,setup(e){let{checkDeadlines:n,dashboardStats:i,recentOrders:o,salesChartData:c,chartAxisLabels:l,goOrders:d,statCards:_}=K();return(e,x)=>{let w=S(`RouterLink`);return v(),m(`div`,q,[u(`div`,J,[u(`button`,Y,[C(a,{name:`calendar`,size:16}),x[1]||=b(` امروز `,-1)])]),u(`div`,X,[(v(!0),m(r,null,p(f(_),e=>(v(),m(`div`,{key:e.label,class:`admin-stat-card`},[u(`div`,{class:`admin-stat-card__icon`,style:s({background:f(U)[e.tone],color:f(W)[e.tone]})},[C(a,{name:e.icon,size:20},null,8,[`name`])],4),u(`p`,Z,t(e.label),1),u(`p`,Q,t(e.value),1),C(w,{to:e.link,class:`admin-stat-card__link`},{default:h(()=>[...x[2]||=[b(`مشاهده سفارشها`,-1)]]),_:1},8,[`to`])]))),128)),u(`div`,ne,[u(`div`,re,[u(`div`,null,[x[3]||=u(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),u(`p`,ie,t(f(y)(f(i).todaySales)),1),u(`span`,$,` +`+t(f(i).todaySalesGrowth)+`% نسبت به دیروز `,1)]),C(a,{name:`calendar`,size:20,class:`dashboard__sales-icon`})]),x[4]||=u(`svg`,{class:`dashboard__sparkline`,viewBox:`0 0 120 32`,preserveAspectRatio:`none`},[u(`polyline`,{fill:`none`,stroke:`#159660`,"stroke-width":`2`,points:`0,24 20,18 40,22 60,12 80,16 100,8 120,14`})],-1)])]),u(`div`,ae,[u(`div`,oe,[C(H,{title:`فروش ماه جاری`,subtitle:f(y)(f(i).monthSales),data:f(c),labels:f(l),unit:`میلیارد`,height:168},null,8,[`subtitle`,`data`,`labels`])]),u(`div`,se,[x[7]||=u(`div`,{class:`dashboard__card-header`},[u(`h2`,{class:`dashboard__card-title`},`سفارشهای اخیر`)],-1),u(`div`,ce,[u(`table`,le,[x[5]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`شماره سفارش`),u(`th`,null,`مشتری`),u(`th`,null,`شرکت`),u(`th`,null,`وضعیت`),u(`th`,null,`تاریخ ثبت`)])],-1),u(`tbody`,null,[(v(!0),m(r,null,p(f(o),e=>(v(),m(`tr`,{key:e.id},[u(`td`,null,t(e.orderNumber),1),u(`td`,null,t(e.customerName),1),u(`td`,null,t(e.companyName),1),u(`td`,null,[C(k,{status:e.status},null,8,[`status`])]),u(`td`,null,t(f(g)(e.createdAt)),1)]))),128))])])]),u(`div`,ue,[u(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>f(d)&&f(d)(...e)},[x[6]||=b(` مشاهده همه سفارشها `,-1),C(a,{name:`chevron-left`,size:16})])])]),u(`div`,de,[x[9]||=u(`div`,{class:`dashboard__card-header`},[u(`h2`,{class:`dashboard__card-title`},`سررسید چکها`)],-1),u(`ul`,fe,[(v(!0),m(r,null,p(f(n),e=>(v(),m(`li`,{key:e.id,class:`dashboard__deadline-item`},[u(`span`,{class:T([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},t(e.label),3),u(`span`,pe,t(e.count)+` فقره`,1),u(`span`,me,t(f(y)(e.amount)),1)]))),128))]),u(`div`,he,[C(w,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm`},{default:h(()=>[x[8]||=b(` مشاهده همه `,-1),C(a,{name:`chevron-left`,size:16})]),_:1})])])])])}}}),[[`__scopeId`,`data-v-bf2ebdae`]]),_e={class:`compact-dashboard page-shell`},ve={class:`flex justify-end mb-3`},ye={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},be={class:`compact-stats-grid`},xe={class:`admin-stat-card__label`},Se={class:`admin-stat-card__value`},Ce={class:`admin-stat-card col-span-full`},we={class:`admin-stat-card__value`},Te={class:`text-xs font-semibold text-success`},Ee={class:`compact-section-grid`},De={class:`compact-section-card admin-panel`},Oe={class:`compact-section-card admin-panel`},ke={class:`admin-card-list`},Ae={class:`admin-card-item__header`},je={class:`admin-card-item__title`},Me={class:`admin-card-item__meta`},Ne={class:`compact-section-card admin-panel`},Pe={class:`m-0 p-0 list-none flex flex-col gap-2.5`},Fe={class:`mr-auto text-xs`},Ie=_({__name:`CompactDashboard`,setup(e){let{checkDeadlines:n,dashboardStats:i,recentOrders:c,salesChartData:l,chartAxisLabels:d,goOrders:_,statCards:x}=K();return(e,w)=>{let E=S(`RouterLink`);return v(),m(`div`,_e,[u(`div`,ve,[u(`button`,ye,[C(a,{name:`calendar`,size:16}),w[1]||=b(` امروز `,-1)])]),u(`div`,be,[(v(!0),m(r,null,p(f(x),e=>(v(),m(`div`,{key:e.label,class:`admin-stat-card`},[u(`div`,{class:`admin-stat-card__icon`,style:s({background:f(U)[e.tone],color:f(W)[e.tone]})},[C(a,{name:e.icon,size:20},null,8,[`name`])],4),u(`p`,xe,t(e.label),1),u(`p`,Se,t(e.value),1),C(E,{to:e.link,class:`admin-stat-card__link`},{default:h(()=>[...w[2]||=[b(`مشاهده`,-1)]]),_:1},8,[`to`])]))),128)),u(`div`,Ce,[w[3]||=u(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),u(`p`,we,t(f(y)(f(i).todaySales)),1),u(`span`,Te,` +`+t(f(i).todaySalesGrowth)+`% نسبت به دیروز `,1)])]),u(`div`,Ee,[u(`section`,De,[C(H,{title:`فروش ماه جاری`,subtitle:f(y)(f(i).monthSales),data:f(l),labels:f(d),unit:`میلیارد`,height:140},null,8,[`subtitle`,`data`,`labels`])]),u(`section`,Oe,[w[5]||=u(`h2`,{class:`compact-section-card__title`},`سفارشهای اخیر`,-1),u(`div`,ke,[(v(!0),m(r,null,p(f(c),e=>(v(),o(E,{key:e.id,to:`/orders`,class:`admin-card-item block no-underline text-inherit`},{default:h(()=>[u(`div`,Ae,[u(`p`,je,t(e.orderNumber),1),C(k,{status:e.status},null,8,[`status`])]),u(`div`,Me,[u(`span`,null,t(e.customerName),1),u(`span`,null,t(f(g)(e.createdAt)),1)])]),_:2},1024))),128))]),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm inline-flex mt-3`,onClick:w[0]||=(...e)=>f(_)&&f(_)(...e)},[w[4]||=b(` مشاهده همه سفارشها `,-1),C(a,{name:`chevron-left`,size:16})])]),u(`section`,Ne,[w[7]||=u(`h2`,{class:`compact-section-card__title`},`سررسید چکها`,-1),u(`ul`,Pe,[(v(!0),m(r,null,p(f(n),e=>(v(),m(`li`,{key:e.id,class:`flex flex-wrap items-center gap-2 text-sm`},[u(`span`,{class:T([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},t(e.label),3),u(`span`,null,t(e.count)+` فقره`,1),u(`strong`,Fe,t(f(y)(e.amount)),1)]))),128))]),C(E,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm inline-flex mt-3 no-underline`},{default:h(()=>[w[6]||=b(` مشاهده همه `,-1),C(a,{name:`chevron-left`,size:16})]),_:1})])])])}}}),Le=_({__name:`DashboardView`,setup(e){return(e,t)=>(v(),m(r,null,[C(ge,{class:`desktop-only`}),C(Ie,{class:`compact-only`})],64))}});export{Le as default};
\ No newline at end of file
diff --git a/dist/assets/DashboardView-cyaZFrOQ.js b/dist/assets/DashboardView-cyaZFrOQ.js
new file mode 100644
index 0000000..44fc2ee
--- /dev/null
+++ b/dist/assets/DashboardView-cyaZFrOQ.js
@@ -0,0 +1 @@
+import{B as e,Dt as t,N as n,O as r,Ot as i,T as a,Tt as o,Z as s,at as c,c as l,d as u,g as d,h as f,j as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{I as b,N as x,P as S,_ as C,i as w,n as T,o as E,y as D,z as O}from"./index-CXa4EMLW.js";import{t as k}from"./StatusBadge-Cg2zTE2k.js";var ee={class:`sales-chart`},A={key:0,class:`sales-chart__header`},j={key:0,class:`sales-chart__title`},M={key:1,class:`sales-chart__subtitle`},N=[`viewBox`,`aria-label`],te=[`x1`,`x2`,`y1`,`y2`],P=[`points`],F=[`points`],I=[`x1`,`x2`,`y1`,`y2`],L=[`cx`,`cy`],R={class:`sales-chart__tooltip-label`},z={key:1,class:`sales-chart__axis`},B=320,V=120,H=v(d({__name:`SalesAreaChart`,props:{data:{},title:{},subtitle:{},height:{default:160},color:{default:`#0a353c`},unit:{default:`میلیارد تومان`},labels:{}},setup(e){let n=e,a=s(null),o={top:12,right:8,bottom:8,left:8},d=_(()=>Math.max(...n.data,.001)),f=_(()=>{let e=B-o.left-o.right,t=V-o.top-o.bottom,r=e/Math.max(n.data.length-1,1);return n.data.map((e,n)=>({x:o.left+n*r,y:o.top+t-e/d.value*t,value:e,index:n}))}),m=_(()=>f.value.map(e=>`${e.x},${e.y}`).join(` `)),h=_(()=>{let e=V-o.bottom,t=f.value[0],n=f.value[f.value.length-1];return!t||!n?``:`${t.x},${e} ${m.value} ${n.x},${e}`}),v=_(()=>{let e=V-o.top-o.bottom;return[0,.5,1].map(t=>o.top+e*t)}),b=_(()=>a.value===null?null:f.value[a.value]??null);function x(e){let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*B,r=0,i=1/0;f.value.forEach(e=>{let t=Math.abs(e.x-n);t(r(),u(`div`,ee,[e.title||e.subtitle?(r(),u(`div`,A,[l(`div`,null,[e.title?(r(),u(`h3`,j,i(e.title),1)):y(``,!0),e.subtitle?(r(),u(`p`,M,i(e.subtitle),1)):y(``,!0)])])):y(``,!0),l(`div`,{class:`sales-chart__body`,style:t({height:`${e.height}px`})},[(r(),u(`svg`,{class:`sales-chart__svg`,viewBox:`0 0 ${B} ${V}`,preserveAspectRatio:`none`,role:`img`,"aria-label":e.title||`نمودار فروش`,onMousemove:x,onMouseleave:S},[(r(!0),u(g,null,p(v.value,(e,t)=>(r(),u(`line`,{key:t,x1:o.left,x2:B-o.right,y1:e,y2:e,class:`sales-chart__grid`},null,8,te))),128)),h.value?(r(),u(`polygon`,{key:0,points:h.value,class:`sales-chart__area`,style:t({fill:`${e.color}22`})},null,12,P)):y(``,!0),l(`polyline`,{points:m.value,class:`sales-chart__line`,style:t({stroke:e.color})},null,12,F),b.value?(r(),u(g,{key:1},[l(`line`,{x1:b.value.x,x2:b.value.x,y1:o.top,y2:V-o.bottom,class:`sales-chart__cursor`},null,8,I),l(`circle`,{cx:b.value.x,cy:b.value.y,r:`4`,class:`sales-chart__dot`,style:t({fill:e.color})},null,12,L)],64)):y(``,!0)],40,N)),b.value?(r(),u(`div`,{key:0,class:`sales-chart__tooltip`,style:t({left:`${b.value.x/B*100}%`})},[l(`span`,R,i(e.labels?.[b.value.index]??`روز ${b.value.index+1}`),1),l(`strong`,null,i(c(E)(b.value.value))+` `+i(e.unit),1)],4)):y(``,!0)],4),e.labels?.length?(r(),u(`div`,z,[(r(!0),u(g,null,p(e.labels,(e,t)=>(r(),u(`span`,{key:t},i(e),1))),128))])):y(``,!0)]))}}),[[`__scopeId`,`data-v-85c70c78`]]),U={info:`var(--color-info-light)`,warning:`var(--color-warning-light)`,purple:`var(--color-purple-light)`,success:`var(--color-success-light)`},W={info:`var(--color-info)`,warning:`var(--color-warning-dark)`,purple:`var(--color-purple)`,success:`var(--color-success)`},G=()=>({newOrders:0,pendingReview:0,pendingCheck:0,finalApproval:0,todaySales:0,todaySalesGrowth:0,monthSales:0});function K(){let e=b(),t=O(),n=s(G()),r=s([]),i=s(Array.from({length:28},()=>0)),o=s([`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`]),c=s([]),l=s(!1),u=_(()=>[{label:`سفارشهای جدید`,value:n.value.newOrders,icon:`cart`,tone:`info`,link:`/orders`},{label:`در انتظار بررسی`,value:n.value.pendingReview,icon:`file`,tone:`warning`,link:`/orders?tab=pending_review`},{label:`بررسی چک`,value:n.value.pendingCheck,icon:`wallet`,tone:`purple`,link:`/orders?tab=pending_check`},{label:`تأیید نهایی شده`,value:n.value.finalApproval,icon:`check-circle`,tone:`success`,link:`/orders?tab=final_approval`}]),d=_(()=>{let e=i.value;if(!e.length)return``;let t=Math.max(...e,.001),n=e.length>1?280/(e.length-1):280;return e.map((e,r)=>`${r*n},${120-e/t*110-5}`).join(` `)});async function f(){l.value=!0;try{let e=await C.get();n.value=e.stats,r.value=(e.recentOrders??[]).map(e=>D(e)),i.value=e.salesChartData?.length?e.salesChartData:Array.from({length:28},()=>0),o.value=e.chartAxisLabels?.length?e.chartAxisLabels:[`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`],c.value=e.checkDeadlines??[]}catch(e){t.error(e instanceof x?e.message:`بارگذاری داشبورد انجام نشد.`)}finally{l.value=!1}}a(()=>{f()});function p(){e.push(`/orders`)}return{checkDeadlines:c,dashboardStats:n,recentOrders:r,chartPoints:d,salesChartData:i,chartAxisLabels:o,statCards:u,loading:l,goOrders:p,loadDashboard:f}}var q={class:`dashboard`},J={class:`dashboard__toolbar`},Y={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},X={class:`dashboard__stats`},Z={class:`admin-stat-card__label`},Q={class:`admin-stat-card__value`},ne={class:`dashboard__sales-card admin-stat-card`},re={class:`dashboard__sales-header`},ie={class:`admin-stat-card__value dashboard__sales-value`},ae={class:`dashboard__sales-growth`},oe={class:`dashboard__grid`},se={class:`dashboard__chart-card admin-card`},ce={class:`dashboard__orders-card admin-card`},le={class:`admin-table-wrap`},ue={class:`admin-table admin-table--compact`},de={class:`dashboard__card-footer`},fe={class:`dashboard__checks-card admin-card`},pe={class:`dashboard__deadline-list`},me={class:`dashboard__deadline-count`},he={class:`dashboard__deadline-amount`},ge={class:`dashboard__card-footer`},_e=v(d({__name:`DesktopDashboard`,setup(a){let{checkDeadlines:s,dashboardStats:d,recentOrders:m,salesChartData:_,chartAxisLabels:v,goOrders:y,statCards:b}=K();return(a,x)=>{let C=n(`RouterLink`);return r(),u(`div`,q,[l(`div`,J,[l(`button`,Y,[f(S,{name:`calendar`,size:16}),x[1]||=h(` امروز `,-1)])]),l(`div`,X,[(r(!0),u(g,null,p(c(b),n=>(r(),u(`div`,{key:n.label,class:`admin-stat-card`},[l(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(S,{name:n.icon,size:20},null,8,[`name`])],4),l(`p`,Z,i(n.label),1),l(`p`,Q,i(n.value),1),f(C,{to:n.link,class:`admin-stat-card__link`},{default:e(()=>[...x[2]||=[h(`مشاهده سفارشها`,-1)]]),_:1},8,[`to`])]))),128)),l(`div`,ne,[l(`div`,re,[l(`div`,null,[x[3]||=l(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),l(`p`,ie,i(c(T)(c(d).todaySales)),1),l(`span`,ae,` +`+i(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)]),f(S,{name:`calendar`,size:20,class:`dashboard__sales-icon`})]),x[4]||=l(`svg`,{class:`dashboard__sparkline`,viewBox:`0 0 120 32`,preserveAspectRatio:`none`},[l(`polyline`,{fill:`none`,stroke:`#159660`,"stroke-width":`2`,points:`0,24 20,18 40,22 60,12 80,16 100,8 120,14`})],-1)])]),l(`div`,oe,[l(`div`,se,[f(H,{title:`فروش ماه جاری`,subtitle:c(T)(c(d).monthSales),data:c(_),labels:c(v),unit:`میلیارد`,height:168},null,8,[`subtitle`,`data`,`labels`])]),l(`div`,ce,[x[7]||=l(`div`,{class:`dashboard__card-header`},[l(`h2`,{class:`dashboard__card-title`},`سفارشهای اخیر`)],-1),l(`div`,le,[l(`table`,ue,[x[5]||=l(`thead`,null,[l(`tr`,null,[l(`th`,null,`شماره سفارش`),l(`th`,null,`مشتری`),l(`th`,null,`شرکت`),l(`th`,null,`وضعیت`),l(`th`,null,`تاریخ ثبت`)])],-1),l(`tbody`,null,[(r(!0),u(g,null,p(c(m),e=>(r(),u(`tr`,{key:e.id},[l(`td`,null,i(e.orderNumber),1),l(`td`,null,i(e.customerName),1),l(`td`,null,i(e.companyName),1),l(`td`,null,[f(k,{status:e.status},null,8,[`status`])]),l(`td`,null,i(c(w)(e.createdAt)),1)]))),128))])])]),l(`div`,de,[l(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>c(y)&&c(y)(...e)},[x[6]||=h(` مشاهده همه سفارشها `,-1),f(S,{name:`chevron-left`,size:16})])])]),l(`div`,fe,[x[9]||=l(`div`,{class:`dashboard__card-header`},[l(`h2`,{class:`dashboard__card-title`},`سررسید چکها`)],-1),l(`ul`,pe,[(r(!0),u(g,null,p(c(s),e=>(r(),u(`li`,{key:e.id,class:`dashboard__deadline-item`},[l(`span`,{class:o([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},i(e.label),3),l(`span`,me,i(e.count)+` فقره`,1),l(`span`,he,i(c(T)(e.amount)),1)]))),128))]),l(`div`,ge,[f(C,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm`},{default:e(()=>[x[8]||=h(` مشاهده همه `,-1),f(S,{name:`chevron-left`,size:16})]),_:1})])])])])}}}),[[`__scopeId`,`data-v-bf2ebdae`]]),ve={class:`compact-dashboard page-shell`},ye={class:`flex justify-end mb-3`},be={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},xe={class:`compact-stats-grid`},Se={class:`admin-stat-card__label`},Ce={class:`admin-stat-card__value`},we={class:`admin-stat-card col-span-full`},$={class:`admin-stat-card__value`},Te={class:`text-xs font-semibold text-success`},Ee={class:`compact-section-grid`},De={class:`compact-section-card admin-panel`},Oe={class:`compact-section-card admin-panel`},ke={class:`admin-card-list`},Ae={class:`admin-card-item__header`},je={class:`admin-card-item__title`},Me={class:`admin-card-item__meta`},Ne={class:`compact-section-card admin-panel`},Pe={class:`m-0 p-0 list-none flex flex-col gap-2.5`},Fe={class:`mr-auto text-xs`},Ie=d({__name:`CompactDashboard`,setup(a){let{checkDeadlines:s,dashboardStats:d,recentOrders:_,salesChartData:v,chartAxisLabels:y,goOrders:b,statCards:x}=K();return(a,C)=>{let E=n(`RouterLink`);return r(),u(`div`,ve,[l(`div`,ye,[l(`button`,be,[f(S,{name:`calendar`,size:16}),C[1]||=h(` امروز `,-1)])]),l(`div`,xe,[(r(!0),u(g,null,p(c(x),n=>(r(),u(`div`,{key:n.label,class:`admin-stat-card`},[l(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(S,{name:n.icon,size:20},null,8,[`name`])],4),l(`p`,Se,i(n.label),1),l(`p`,Ce,i(n.value),1),f(E,{to:n.link,class:`admin-stat-card__link`},{default:e(()=>[...C[2]||=[h(`مشاهده`,-1)]]),_:1},8,[`to`])]))),128)),l(`div`,we,[C[3]||=l(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),l(`p`,$,i(c(T)(c(d).todaySales)),1),l(`span`,Te,` +`+i(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)])]),l(`div`,Ee,[l(`section`,De,[f(H,{title:`فروش ماه جاری`,subtitle:c(T)(c(d).monthSales),data:c(v),labels:c(y),unit:`میلیارد`,height:140},null,8,[`subtitle`,`data`,`labels`])]),l(`section`,Oe,[C[5]||=l(`h2`,{class:`compact-section-card__title`},`سفارشهای اخیر`,-1),l(`div`,ke,[(r(!0),u(g,null,p(c(_),t=>(r(),m(E,{key:t.id,to:`/orders`,class:`admin-card-item block no-underline text-inherit`},{default:e(()=>[l(`div`,Ae,[l(`p`,je,i(t.orderNumber),1),f(k,{status:t.status},null,8,[`status`])]),l(`div`,Me,[l(`span`,null,i(t.customerName),1),l(`span`,null,i(c(w)(t.createdAt)),1)])]),_:2},1024))),128))]),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm inline-flex mt-3`,onClick:C[0]||=(...e)=>c(b)&&c(b)(...e)},[C[4]||=h(` مشاهده همه سفارشها `,-1),f(S,{name:`chevron-left`,size:16})])]),l(`section`,Ne,[C[7]||=l(`h2`,{class:`compact-section-card__title`},`سررسید چکها`,-1),l(`ul`,Pe,[(r(!0),u(g,null,p(c(s),e=>(r(),u(`li`,{key:e.id,class:`flex flex-wrap items-center gap-2 text-sm`},[l(`span`,{class:o([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},i(e.label),3),l(`span`,null,i(e.count)+` فقره`,1),l(`strong`,Fe,i(c(T)(e.amount)),1)]))),128))]),f(E,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm inline-flex mt-3 no-underline`},{default:e(()=>[C[6]||=h(` مشاهده همه `,-1),f(S,{name:`chevron-left`,size:16})]),_:1})])])])}}}),Le=d({__name:`DashboardView`,setup(e){return(e,t)=>(r(),u(g,null,[f(_e,{class:`desktop-only`}),f(Ie,{class:`compact-only`})],64))}});export{Le as default};
\ No newline at end of file
diff --git a/dist/assets/LevelsView-Cos5Q_ra.js b/dist/assets/LevelsView-Cos5Q_ra.js
new file mode 100644
index 0000000..66fa97e
--- /dev/null
+++ b/dist/assets/LevelsView-Cos5Q_ra.js
@@ -0,0 +1,3 @@
+import{B as e,O as t,Ot as n,T as r,V as i,Y as a,Z as o,c as s,d as c,g as l,h as u,j as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{N as _,R as v,W as y,v as b,z as x}from"./index-CXa4EMLW.js";import{t as S}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as C}from"./BaseEmptyState-BmO9aDcK.js";var w={class:`admin-page`},T={key:2,class:`admin-table`},E={dir:`ltr`},D=[`onClick`],O={class:`field`},k={class:`field`},A={class:`field`},j={class:`field`},M=[`disabled`],N=g(l({__name:`LevelsView`,setup(l){let g=o([]),N=o(!0),P=o(!1),F=o(null),I=x(),L=a({code:``,label:``,sortOrder:0,benefitsText:``}),R=h(()=>F.value?`ویرایش سطح`:`سطح جدید`);function z(e){return e.split(`
+`).map(e=>e.trim()).filter(Boolean).map(e=>({title:e}))}async function B(){N.value=!0;try{g.value=await b.list()}catch(e){I.error(e instanceof _?e.message:`بارگذاری سطوح ناموفق بود`)}finally{N.value=!1}}function V(){F.value=null,Object.assign(L,{code:``,label:``,sortOrder:g.value.length+1,benefitsText:``}),P.value=!0}function H(e){F.value=e.id,Object.assign(L,{code:e.code,label:e.label,sortOrder:e.sortOrder,benefitsText:e.benefits.map(e=>e.title).join(`
+`)}),P.value=!0}async function U(){try{let e={code:L.code.trim(),label:L.label.trim(),sortOrder:L.sortOrder,benefits:z(L.benefitsText)};F.value?await b.update(F.value,e):await b.create(e),P.value=!1,I.success(`ذخیره شد`),await B()}catch(e){I.error(e instanceof _?e.message:`ذخیره ناموفق بود`)}}return r(()=>{B()}),(r,a)=>(t(),c(`div`,w,[s(`header`,{class:`admin-page__head`},[a[5]||=s(`div`,null,[s(`h1`,null,`سطوح و مزایای مشتری`),s(`p`,null,`تعریف Level داخلی CRM و مزایای هر سطح (نمایش فقط در ادمین)`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:V},`سطح جدید`)]),N.value?(t(),f(S,{key:0,variant:`table`})):g.value.length?(t(),c(`table`,T,[a[6]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`کد`),s(`th`,null,`عنوان`),s(`th`,null,`مزایا`),s(`th`,null,`مشتریان`),s(`th`)])],-1),s(`tbody`,null,[(t(!0),c(m,null,d(g.value,e=>(t(),c(`tr`,{key:e.id},[s(`td`,E,n(e.code),1),s(`td`,null,n(e.label),1),s(`td`,null,n(e.benefits.map(e=>e.title).join(`، `)||`—`),1),s(`td`,null,n(e.customersCount),1),s(`td`,null,[s(`button`,{type:`button`,class:`link`,onClick:t=>H(e)},`ویرایش`,8,D)])]))),128))])])):(t(),f(C,{key:1,title:`سطحی تعریف نشده`})),u(v,{open:P.value,title:R.value,onClose:a[4]||=e=>P.value=!1},{footer:e(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!L.code.trim()||!L.label.trim(),onClick:U},` ذخیره `,8,M)]),default:e(()=>[s(`label`,O,[a[7]||=p(`کد`,-1),i(s(`input`,{"onUpdate:modelValue":a[0]||=e=>L.code=e,class:`admin-input`,dir:`ltr`},null,512),[[y,L.code]])]),s(`label`,k,[a[8]||=p(`عنوان`,-1),i(s(`input`,{"onUpdate:modelValue":a[1]||=e=>L.label=e,class:`admin-input`},null,512),[[y,L.label]])]),s(`label`,A,[a[9]||=p(`ترتیب`,-1),i(s(`input`,{"onUpdate:modelValue":a[2]||=e=>L.sortOrder=e,type:`number`,class:`admin-input`},null,512),[[y,L.sortOrder,void 0,{number:!0}]])]),s(`label`,j,[a[10]||=p(` مزایا (هر خط یک مورد) `,-1),i(s(`textarea`,{"onUpdate:modelValue":a[3]||=e=>L.benefitsText=e,class:`admin-input`,rows:`4`},null,512),[[y,L.benefitsText]])])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-44c7f808`]]);export{N as default};
\ No newline at end of file
diff --git a/dist/assets/LevelsView-rP_u9G1_.js b/dist/assets/LevelsView-rP_u9G1_.js
deleted file mode 100644
index 128962b..0000000
--- a/dist/assets/LevelsView-rP_u9G1_.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import{Ct as e,G as t,J as n,N as r,Q as i,R as a,V as o,X as s,Z as c,dt as l,et as u,gt as d,ht as f,it as p,lt as m,nt as h,rt as g,st as _,v,vt as y,yt as b,z as x}from"./index-B2VD3zy8.js";import{t as S}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as C}from"./BaseEmptyState-DGu6Pfui.js";var w={class:`admin-page`},T={key:2,class:`admin-table`},E={dir:`ltr`},D=[`onClick`],O={class:`field`},k={class:`field`},A={class:`field`},j={class:`field`},M=[`disabled`],N=o(p({__name:`LevelsView`,setup(o){let p=b([]),N=b(!0),P=b(!1),F=b(null),I=x(),L=y({code:``,label:``,sortOrder:0,benefitsText:``}),R=s(()=>F.value?`ویرایش سطح`:`سطح جدید`);function z(e){return e.split(`
-`).map(e=>e.trim()).filter(Boolean).map(e=>({title:e}))}async function B(){N.value=!0;try{p.value=await v.list()}catch(e){I.error(e instanceof r?e.message:`بارگذاری سطوح ناموفق بود`)}finally{N.value=!1}}function V(){F.value=null,Object.assign(L,{code:``,label:``,sortOrder:p.value.length+1,benefitsText:``}),P.value=!0}function H(e){F.value=e.id,Object.assign(L,{code:e.code,label:e.label,sortOrder:e.sortOrder,benefitsText:e.benefits.map(e=>e.title).join(`
-`)}),P.value=!0}async function U(){try{let e={code:L.code.trim(),label:L.label.trim(),sortOrder:L.sortOrder,benefits:z(L.benefitsText)};F.value?await v.update(F.value,e):await v.create(e),P.value=!1,I.success(`ذخیره شد`),await B()}catch(e){I.error(e instanceof r?e.message:`ذخیره ناموفق بود`)}}return _(()=>{B()}),(r,o)=>(m(),u(`div`,w,[c(`header`,{class:`admin-page__head`},[o[5]||=c(`div`,null,[c(`h1`,null,`سطوح و مزایای مشتری`),c(`p`,null,`تعریف Level داخلی CRM و مزایای هر سطح (نمایش فقط در ادمین)`)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:V},`سطح جدید`)]),N.value?(m(),i(S,{key:0,variant:`table`})):p.value.length?(m(),u(`table`,T,[o[6]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`کد`),c(`th`,null,`عنوان`),c(`th`,null,`مزایا`),c(`th`,null,`مشتریان`),c(`th`)])],-1),c(`tbody`,null,[(m(!0),u(n,null,l(p.value,t=>(m(),u(`tr`,{key:t.id},[c(`td`,E,e(t.code),1),c(`td`,null,e(t.label),1),c(`td`,null,e(t.benefits.map(e=>e.title).join(`، `)||`—`),1),c(`td`,null,e(t.customersCount),1),c(`td`,null,[c(`button`,{type:`button`,class:`link`,onClick:e=>H(t)},`ویرایش`,8,D)])]))),128))])])):(m(),i(C,{key:1,title:`سطحی تعریف نشده`})),g(a,{open:P.value,title:R.value,onClose:o[4]||=e=>P.value=!1},{footer:f(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!L.code.trim()||!L.label.trim(),onClick:U},` ذخیره `,8,M)]),default:f(()=>[c(`label`,O,[o[7]||=h(`کد`,-1),d(c(`input`,{"onUpdate:modelValue":o[0]||=e=>L.code=e,class:`admin-input`,dir:`ltr`},null,512),[[t,L.code]])]),c(`label`,k,[o[8]||=h(`عنوان`,-1),d(c(`input`,{"onUpdate:modelValue":o[1]||=e=>L.label=e,class:`admin-input`},null,512),[[t,L.label]])]),c(`label`,A,[o[9]||=h(`ترتیب`,-1),d(c(`input`,{"onUpdate:modelValue":o[2]||=e=>L.sortOrder=e,type:`number`,class:`admin-input`},null,512),[[t,L.sortOrder,void 0,{number:!0}]])]),c(`label`,j,[o[10]||=h(` مزایا (هر خط یک مورد) `,-1),d(c(`textarea`,{"onUpdate:modelValue":o[3]||=e=>L.benefitsText=e,class:`admin-input`,rows:`4`},null,512),[[t,L.benefitsText]])])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-44c7f808`]]);export{N as default};
\ No newline at end of file
diff --git a/dist/assets/LoginView-BIWJ8gRk.css b/dist/assets/LoginView-BIWJ8gRk.css
deleted file mode 100644
index 418c5a8..0000000
--- a/dist/assets/LoginView-BIWJ8gRk.css
+++ /dev/null
@@ -1 +0,0 @@
-.login-page[data-v-3c4fbd85]{background:var(--color-bg);grid-template-columns:1.05fr 1fr;min-height:100dvh;display:grid}.login-page__brand[data-v-3c4fbd85]{color:#fff;background:linear-gradient(160deg,#062428 0%,#0a353c 55%,#0e454e 100%);justify-content:center;align-items:center;padding:48px 40px;display:flex}.login-page__brand-inner[data-v-3c4fbd85]{max-width:420px}.login-page__brand-badge[data-v-3c4fbd85]{background:#ffffff1f;border-radius:999px;margin:0 0 16px;padding:6px 12px;font-size:.8125rem;font-weight:700;display:inline-flex}.login-page__brand-title[data-v-3c4fbd85]{margin:0 0 12px;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.35}.login-page__brand-text[data-v-3c4fbd85]{color:#ffffffc7;margin:0;font-size:.9375rem;line-height:1.8}.login-page__form-wrap[data-v-3c4fbd85]{justify-content:center;align-items:center;padding:32px 24px;display:flex}.login-page__card[data-v-3c4fbd85]{width:min(100%,420px);padding:28px 24px}.login-page__header[data-v-3c4fbd85]{margin-bottom:20px}.login-page__title[data-v-3c4fbd85]{margin:0 0 6px;font-size:1.25rem;font-weight:700}.login-page__subtitle[data-v-3c4fbd85]{color:var(--color-text-muted);margin:0;font-size:.875rem;line-height:1.6}.login-page__mock-hint[data-v-3c4fbd85]{background:color-mix(in srgb, var(--color-primary) 12%, transparent);color:var(--color-primary);border-radius:8px;margin:10px 0 0;padding:8px 10px;font-size:.8125rem;line-height:1.5}.login-page__input-wrap[data-v-3c4fbd85]{color:var(--color-text-muted);position:relative}.login-page__field-icon[data-v-3c4fbd85]{pointer-events:none;z-index:1;display:inline-flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.login-page__input[data-v-3c4fbd85]{padding-right:42px}.login-page__input--with-toggle[data-v-3c4fbd85]{padding-left:44px}.login-page__toggle-password[data-v-3c4fbd85]{z-index:1;width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;transition:color .15s,background-color .15s;display:inline-flex;position:absolute;top:50%;left:6px;transform:translateY(-50%)}.login-page__toggle-password[data-v-3c4fbd85]:hover{color:var(--color-primary);background:var(--color-bg-muted,#0000000a)}.login-page__remember[data-v-3c4fbd85]{color:var(--color-text-muted);align-items:center;gap:8px;font-size:.8125rem;display:flex}.login-page__remember input[data-v-3c4fbd85]{width:16px;height:16px;accent-color:var(--color-primary)}.login-page__submit[data-v-3c4fbd85]{width:100%;margin-top:4px}@media (width<=900px){.login-page[data-v-3c4fbd85]{grid-template-columns:1fr}.login-page__form-wrap[data-v-3c4fbd85]{order:2}.login-page__brand[data-v-3c4fbd85]{order:1;min-height:auto;padding:28px 20px}.login-page__brand-text[data-v-3c4fbd85]{font-size:.875rem}}
diff --git a/dist/assets/LoginView-D1CCMfxr.js b/dist/assets/LoginView-D1CCMfxr.js
deleted file mode 100644
index d959b0e..0000000
--- a/dist/assets/LoginView-D1CCMfxr.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,A as t,Ct as n,F as r,G as i,H as a,I as o,M as s,P as c,U as l,V as u,X as d,Z as f,bt as p,et as m,gt as h,it as g,j as _,lt as v,nt as y,q as b,rt as x,tt as S,yt as C,z as w}from"./index-B2VD3zy8.js";var T={class:`login-page`},E={class:`login-page__form-wrap`},D={class:`login-page__card admin-card`},O={class:`login-page__header`},k={key:0,class:`login-page__mock-hint`},A={dir:`ltr`},j={dir:`ltr`},M={key:0,class:`admin-form__error`,role:`alert`},N={class:`admin-form__field`},P={class:`login-page__input-wrap`},F={class:`login-page__field-icon`,"aria-hidden":`true`},I={class:`admin-form__field`},L={class:`login-page__input-wrap login-page__input-wrap--password`},R={class:`login-page__field-icon`,"aria-hidden":`true`},z=[`type`],B=[`aria-label`],V={class:`login-page__remember`},H=[`disabled`],U={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},W=u(g({__name:`LoginView`,setup(u){let g=o(),W=r(),G=t(),K=w(),q=C(s()?_.phone:``),J=C(s()?_.password:``),Y=C(!0),X=C(!1),Z=s(),Q=d(()=>q.value.trim().length>0&&J.value.length>0);function $(e){return e.replace(/[۰-۹]/g,e=>String(`۰۱۲۳۴۵۶۷۸۹`.indexOf(e))).replace(/[٠-٩]/g,e=>String(`٠١٢٣٤٥٦٧٨٩`.indexOf(e)))}async function ee(){if(!Q.value){G.error=`لطفاً شماره موبایل و رمز عبور را وارد کنید.`;return}if(!await G.login($(q.value.trim()),J.value,Y.value))return;K.success(`خوش آمدید، ${G.fullName}`);let e=typeof W.query.redirect==`string`?W.query.redirect:`/`;g.replace(e)}return(t,r)=>(v(),m(`div`,T,[f(`div`,E,[f(`div`,D,[f(`div`,O,[r[8]||=f(`h2`,{class:`login-page__title`},`ورود به پنل مدیریت`,-1),r[9]||=f(`p`,{class:`login-page__subtitle`},`برای ادامه، اطلاعات حساب کاربری خود را وارد کنید.`,-1),p(Z)?(v(),m(`p`,k,[r[6]||=y(` حالت موک فعال است — `,-1),f(`span`,A,n(p(_).phone),1),r[7]||=y(` / `,-1),f(`span`,j,n(p(_).password),1)])):e(``,!0)]),f(`form`,{class:`admin-form login-page__form`,onSubmit:b(ee,[`prevent`])},[p(G).error?(v(),m(`p`,M,n(p(G).error),1)):e(``,!0),f(`div`,N,[r[10]||=f(`label`,{for:`login-phone`},`شماره موبایل`,-1),f(`div`,P,[f(`span`,F,[x(c,{name:`phone`,size:18})]),h(f(`input`,{id:`login-phone`,"onUpdate:modelValue":r[0]||=e=>q.value=e,type:`tel`,class:`admin-input login-page__input`,placeholder:`۰۹۱۲۱۱۱۱۲۲۲۲`,autocomplete:`username`,inputmode:`tel`,dir:`ltr`,onInput:r[1]||=e=>p(G).clearError()},null,544),[[i,q.value]])])]),f(`div`,I,[r[11]||=f(`label`,{for:`login-password`},`رمز عبور`,-1),f(`div`,L,[f(`span`,R,[x(c,{name:`lock`,size:18})]),h(f(`input`,{id:`login-password`,"onUpdate:modelValue":r[2]||=e=>J.value=e,type:X.value?`text`:`password`,class:`admin-input login-page__input login-page__input--with-toggle`,placeholder:`رمز عبور`,autocomplete:`current-password`,onInput:r[3]||=e=>p(G).clearError()},null,40,z),[[l,J.value]]),f(`button`,{type:`button`,class:`login-page__toggle-password`,"aria-label":X.value?`پنهان کردن رمز`:`نمایش رمز`,onClick:r[4]||=e=>X.value=!X.value},[x(c,{name:X.value?`eye-off`:`eye`,size:18},null,8,[`name`])],8,B)])]),f(`label`,V,[h(f(`input`,{"onUpdate:modelValue":r[5]||=e=>Y.value=e,type:`checkbox`},null,512),[[a,Y.value]]),r[12]||=f(`span`,null,`مرا به خاطر بسپار`,-1)]),f(`button`,{type:`submit`,class:`admin-btn admin-btn--primary login-page__submit`,disabled:!Q.value||p(G).loading},[p(G).loading?(v(),m(`span`,U)):e(``,!0),r[13]||=y(` ورود به پنل `,-1)],8,H)],32)])]),r[14]||=S(`
پارچه
پنل مدیریت سفارشهای عمده
مدیریت سفارشها، مشتریان، قیمتگذاری، چکها و گزارشهای فروش در یک محیط یکپارچه.
`,1)]))}}),[[`__scopeId`,`data-v-3c4fbd85`]]);export{W as default};
\ No newline at end of file
diff --git a/dist/assets/LoginView-IFH_z0sG.css b/dist/assets/LoginView-IFH_z0sG.css
new file mode 100644
index 0000000..7291e07
--- /dev/null
+++ b/dist/assets/LoginView-IFH_z0sG.css
@@ -0,0 +1 @@
+.login-page[data-v-9aef901d]{background:var(--color-bg);grid-template-columns:1.05fr 1fr;min-height:100dvh;display:grid}.login-page__brand[data-v-9aef901d]{color:#fff;background:linear-gradient(160deg,#062428 0%,#0a353c 55%,#0e454e 100%);justify-content:center;align-items:center;padding:48px 40px;display:flex}.login-page__brand-inner[data-v-9aef901d]{max-width:420px}.login-page__brand-badge[data-v-9aef901d]{background:#ffffff1f;border-radius:999px;margin:0 0 16px;padding:6px 12px;font-size:.8125rem;font-weight:700;display:inline-flex}.login-page__brand-title[data-v-9aef901d]{margin:0 0 12px;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.35}.login-page__brand-text[data-v-9aef901d]{color:#ffffffc7;margin:0;font-size:.9375rem;line-height:1.8}.login-page__form-wrap[data-v-9aef901d]{justify-content:center;align-items:center;padding:32px 24px;display:flex}.login-page__card[data-v-9aef901d]{width:min(100%,420px);padding:28px 24px}.login-page__header[data-v-9aef901d]{margin-bottom:20px}.login-page__title[data-v-9aef901d]{margin:0 0 6px;font-size:1.25rem;font-weight:700}.login-page__subtitle[data-v-9aef901d]{color:var(--color-text-muted);margin:0;font-size:.875rem;line-height:1.6}.login-page__mock-hint[data-v-9aef901d]{background:color-mix(in srgb, var(--color-primary) 12%, transparent);color:var(--color-primary);border-radius:8px;margin:10px 0 0;padding:8px 10px;font-size:.8125rem;line-height:1.5}.login-page__input-wrap[data-v-9aef901d]{color:var(--color-text-muted);position:relative}.login-page__field-icon[data-v-9aef901d]{pointer-events:none;z-index:1;display:inline-flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.login-page__input[data-v-9aef901d]{padding-right:42px}.login-page__input--with-toggle[data-v-9aef901d]{padding-left:44px}.login-page__toggle-password[data-v-9aef901d]{z-index:1;width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;transition:color .15s,background-color .15s;display:inline-flex;position:absolute;top:50%;left:6px;transform:translateY(-50%)}.login-page__toggle-password[data-v-9aef901d]:hover{color:var(--color-primary);background:var(--color-bg-muted,#0000000a)}.login-page__remember[data-v-9aef901d]{color:var(--color-text-muted);align-items:center;gap:8px;font-size:.8125rem;display:flex}.login-page__remember input[data-v-9aef901d]{width:16px;height:16px;accent-color:var(--color-primary)}.login-page__submit[data-v-9aef901d]{width:100%;margin-top:4px}@media (width<=900px){.login-page[data-v-9aef901d]{grid-template-columns:1fr}.login-page__form-wrap[data-v-9aef901d]{order:2}.login-page__brand[data-v-9aef901d]{order:1;min-height:auto;padding:28px 20px}.login-page__brand-text[data-v-9aef901d]{font-size:.875rem}}
diff --git a/dist/assets/LoginView-w-SE2utd.js b/dist/assets/LoginView-w-SE2utd.js
new file mode 100644
index 0000000..dd262cc
--- /dev/null
+++ b/dist/assets/LoginView-w-SE2utd.js
@@ -0,0 +1 @@
+import{O as e,Ot as t,V as n,Z as r,at as i,c as a,d as o,g as s,h as c,m as l,p as u,s as d,t as f,u as p}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{A as m,F as h,H as g,I as _,K as v,M as y,P as b,V as x,W as S,j as C,z as w}from"./index-CXa4EMLW.js";var T={class:`login-page`},E={class:`login-page__form-wrap`},D={class:`login-page__card admin-card`},O={class:`login-page__header`},k={key:0,class:`login-page__mock-hint`},A={dir:`ltr`},j={dir:`ltr`},M={key:0,class:`admin-form__error`,role:`alert`},N={class:`admin-form__field`},P={class:`login-page__input-wrap`},F={class:`login-page__field-icon`,"aria-hidden":`true`},I={class:`admin-form__field`},L={class:`login-page__input-wrap login-page__input-wrap--password`},R={class:`login-page__field-icon`,"aria-hidden":`true`},z=[`type`],B=[`aria-label`],V={class:`login-page__remember`},H=[`disabled`],U={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},W=f(s({__name:`LoginView`,setup(s){let f=_(),W=h(),G=m(),K=w(),q=r(y()?C.phone:``),J=r(y()?C.password:``),Y=r(!0),X=r(!1),Z=y(),Q=d(()=>q.value.trim().length>0&&J.value.length>0);function $(e){return e.replace(/[۰-۹]/g,e=>String(`۰۱۲۳۴۵۶۷۸۹`.indexOf(e))).replace(/[٠-٩]/g,e=>String(`٠١٢٣٤٥٦٧٨٩`.indexOf(e)))}async function ee(){if(!Q.value){G.error=`لطفاً شماره موبایل و رمز عبور را وارد کنید.`;return}if(!await G.login($(q.value.trim()),J.value,Y.value))return;K.success(`خوش آمدید، ${G.fullName}`);let e=typeof W.query.redirect==`string`?W.query.redirect:`/`,t=`/admin/`.replace(/\/$/,``),n=e.startsWith(t)?e.slice(t.length)||`/`:e;await f.replace(n)}return(r,s)=>(e(),o(`div`,T,[a(`div`,E,[a(`div`,D,[a(`div`,O,[s[8]||=a(`h2`,{class:`login-page__title`},`ورود به پنل مدیریت`,-1),s[9]||=a(`p`,{class:`login-page__subtitle`},`برای ادامه، اطلاعات حساب کاربری خود را وارد کنید.`,-1),i(Z)?(e(),o(`p`,k,[s[6]||=l(` حالت موک فعال است — `,-1),a(`span`,A,t(i(C).phone),1),s[7]||=l(` / `,-1),a(`span`,j,t(i(C).password),1)])):p(``,!0)]),a(`form`,{class:`admin-form login-page__form`,onSubmit:v(ee,[`prevent`])},[i(G).error?(e(),o(`p`,M,t(i(G).error),1)):p(``,!0),a(`div`,N,[s[10]||=a(`label`,{for:`login-phone`},`شماره موبایل`,-1),a(`div`,P,[a(`span`,F,[c(b,{name:`phone`,size:18})]),n(a(`input`,{id:`login-phone`,"onUpdate:modelValue":s[0]||=e=>q.value=e,type:`tel`,class:`admin-input login-page__input`,placeholder:`۰۹۱۲۱۱۱۱۲۲۲۲`,autocomplete:`username`,inputmode:`tel`,dir:`ltr`,onInput:s[1]||=e=>i(G).clearError()},null,544),[[S,q.value]])])]),a(`div`,I,[s[11]||=a(`label`,{for:`login-password`},`رمز عبور`,-1),a(`div`,L,[a(`span`,R,[c(b,{name:`lock`,size:18})]),n(a(`input`,{id:`login-password`,"onUpdate:modelValue":s[2]||=e=>J.value=e,type:X.value?`text`:`password`,class:`admin-input login-page__input login-page__input--with-toggle`,placeholder:`رمز عبور`,autocomplete:`current-password`,onInput:s[3]||=e=>i(G).clearError()},null,40,z),[[g,J.value]]),a(`button`,{type:`button`,class:`login-page__toggle-password`,"aria-label":X.value?`پنهان کردن رمز`:`نمایش رمز`,onClick:s[4]||=e=>X.value=!X.value},[c(b,{name:X.value?`eye-off`:`eye`,size:18},null,8,[`name`])],8,B)])]),a(`label`,V,[n(a(`input`,{"onUpdate:modelValue":s[5]||=e=>Y.value=e,type:`checkbox`},null,512),[[x,Y.value]]),s[12]||=a(`span`,null,`مرا به خاطر بسپار`,-1)]),a(`button`,{type:`submit`,class:`admin-btn admin-btn--primary login-page__submit`,disabled:!Q.value||i(G).loading},[i(G).loading?(e(),o(`span`,U)):p(``,!0),s[13]||=l(` ورود به پنل `,-1)],8,H)],32)])]),s[14]||=u(`
پارچه
پنل مدیریت سفارشهای عمده
مدیریت سفارشها، مشتریان، قیمتگذاری، چکها و گزارشهای فروش در یک محیط یکپارچه.
`,1)]))}}),[[`__scopeId`,`data-v-9aef901d`]]);export{W as default};
\ No newline at end of file
diff --git a/dist/assets/NotFoundView-BAomeX7E.js b/dist/assets/NotFoundView-BAomeX7E.js
new file mode 100644
index 0000000..b124f13
--- /dev/null
+++ b/dist/assets/NotFoundView-BAomeX7E.js
@@ -0,0 +1 @@
+import{B as e,N as t,O as n,c as r,d as i,h as a,m as o,t as s}from"./_plugin-vue_export-helper-OaxA6A2f.js";var c={},l={class:`not-found`};function u(s,c){let u=t(`RouterLink`);return n(),i(`main`,l,[c[1]||=r(`p`,{class:`not-found__code`},`404`,-1),c[2]||=r(`h1`,null,`صفحه پیدا نشد`,-1),c[3]||=r(`p`,null,`آدرسی که وارد کردهاید وجود ندارد.`,-1),a(u,{to:`/`},{default:e(()=>[...c[0]||=[o(`بازگشت به داشبورد`,-1)]]),_:1})])}var d=s(c,[[`render`,u],[`__scopeId`,`data-v-1c91077f`]]);export{d as default};
\ No newline at end of file
diff --git a/dist/assets/NotFoundView-CY2m4474.css b/dist/assets/NotFoundView-CY2m4474.css
new file mode 100644
index 0000000..5cea43c
--- /dev/null
+++ b/dist/assets/NotFoundView-CY2m4474.css
@@ -0,0 +1 @@
+.not-found[data-v-1c91077f]{text-align:center;place-content:center;gap:12px;min-height:60vh;display:grid}.not-found__code[data-v-1c91077f]{color:var(--color-primary,#c89b3c);margin:0;font-size:72px;font-weight:800}h1[data-v-1c91077f],p[data-v-1c91077f]{margin:0}a[data-v-1c91077f]{color:var(--color-primary,#c89b3c);font-weight:700}
diff --git a/dist/assets/OrderPricingView-CvBkBKTY.js b/dist/assets/OrderPricingView-CvBkBKTY.js
deleted file mode 100644
index 3723b23..0000000
--- a/dist/assets/OrderPricingView-CvBkBKTY.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,Ct as t,F as n,G as r,I as i,J as a,L as o,N as s,P as c,Q as ee,R as te,S as ne,V as re,X as l,Z as u,bt as d,dt as f,et as p,gt as m,ht as h,it as g,lt as _,mt as ie,n as v,nt as y,o as b,q as ae,rt as x,st as oe,vt as se,x as S,y as ce,yt as C,z as le}from"./index-B2VD3zy8.js";import{t as ue}from"./AdminPageSkeleton-BJpm6oxf.js";import{t as de}from"./AdminSelect-BeLNl2Qz.js";import{r as fe}from"./orderStatus-CYVblRJB.js";import{t as pe}from"./StatusBadge-D3ThrLrU.js";import{t as w}from"./AdminCurrencyInput-DxQX_Gwe.js";var me={class:`pricing-page`},he={class:`admin-page-header`},ge={class:`admin-action-group`},_e=[`disabled`],ve=[`disabled`],ye={class:`pricing-page__summary admin-card`},be={class:`pricing-page__order-meta`},xe={class:`pricing-page__order-id`},Se={class:`pricing-page__customer`},Ce={class:`admin-summary-grid`},we={class:`admin-summary-item`},Te={class:`admin-summary-item__value`},Ee={class:`admin-summary-item`},De={class:`admin-summary-item__value`},T={class:`admin-summary-item`},E={class:`admin-summary-item__value`},Oe={class:`pricing-page__table admin-card desktop-only`},ke={class:`admin-table-wrap`},Ae={class:`admin-table`},je=[`onUpdate:modelValue`],Me=[`onClick`],Ne={class:`compact-only admin-card-list pricing-page__compact-items`},Pe={class:`admin-card-item__header`},Fe={class:`admin-card-item__title`},Ie={class:`pricing-page__item-index`},Le={class:`admin-card-item__meta`},Re={key:0},ze={class:`pricing-page__compact-fields`},Be=[`onUpdate:modelValue`],Ve={key:0,class:`pricing-page__line-total`},He={class:`admin-card-item__actions`},Ue=[`onClick`],We={class:`admin-form-grid`},Ge={class:`admin-form-field`},Ke={class:`admin-form-field`},qe={class:`admin-footer-actions`},Je=[`disabled`],D=[`disabled`],Ye={class:`pricing-page__invoice-hint`},Xe={key:0,class:`admin-form__error`,role:`alert`},Ze={class:`admin-form__field`},Qe={class:`admin-form__row`},$e={class:`admin-form__field`},et={class:`admin-form__field`},tt=[`disabled`],O=re(g({__name:`OrderPricingView`,setup(re){let g=n(),O=i(),k=le(),A=C(null),j=C([]),M=C(0),N=C(``),P=C(!1),F=C(``),I=C(!1),L=C(!1),R=C(!0),z=C([]),B=C([]),V=()=>({productId:``,requestedMeterage:50,confirmedMeterage:50}),H=se(V()),nt=l(()=>z.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=l(()=>H.productId.length>0&&H.requestedMeterage>0),W=l(()=>A.value?ce(A.value):null),G=l(()=>A.value?!fe.includes(A.value.status):!1),K=l(()=>!!A.value?.finalAmount&&!G.value);async function rt(){R.value=!0;try{let e=await S.get(String(g.params.id));A.value=e,j.value=(e.items??[]).map(q),M.value=e.shippingCost??0,B.value=[],z.value=await ne.list({activeOnly:!0})}catch(e){k.error(e instanceof s?e.message:`بارگذاری سفارش انجام نشد.`)}finally{R.value=!1}}oe(()=>{rt()});function q(e){return{id:e.id,productId:e.productId,catalogCode:e.catalogCode,productName:e.productName,color:e.color,requestedMeterage:e.requestedMeterage,confirmedMeterage:e.confirmedMeterage,supplyPrice:e.supplyPrice,totalAmount:e.totalAmount,companyId:e.companyId,companyName:e.companyName}}function it(){O.push(`/orders`)}async function J(e){let t=j.value.find(t=>t.id===e);await o({title:`حذف محصول`,message:t?`آیا از حذف «${t.productName}» از سفارش مطمئن هستید؟`:`آیا از حذف این محصول از سفارش مطمئن هستید؟`,confirmLabel:`حذف`,cancelLabel:`انصراف`,tone:`danger`})&&(e.startsWith(`new-`)||B.value.push(e),j.value=j.value.filter(t=>t.id!==e))}ie(()=>H.productId,e=>{let t=z.value.find(t=>t.id===e);if(!t)return;let n=t.rollMeters||t.minMeterage||t.orderStep||50;H.requestedMeterage=n,H.confirmedMeterage=n});function Y(){Object.assign(H,V()),F.value=``,P.value=!0}function X(){P.value=!1,F.value=``}function Z(){if(!U.value){F.value=`محصول و متراژ الزامی هستند.`;return}let e=z.value.find(e=>e.id===H.productId);if(!e){F.value=`محصول انتخابشده یافت نشد.`;return}if(j.value.some(t=>t.productId===e.id||t.catalogCode===e.catalogCode&&t.productName===e.name)){F.value=`این محصول در سفارش هست.`;return}j.value.push({id:`new-${crypto.randomUUID().slice(0,8)}`,productId:e.id,catalogCode:e.catalogCode,productName:e.name,color:e.color||`—`,requestedMeterage:H.requestedMeterage,confirmedMeterage:H.confirmedMeterage||H.requestedMeterage,supplyPrice:e.price,totalAmount:null,companyId:A.value?.companyId,companyName:e.companyName||A.value?.companyName}),X()}async function Q(){if(A.value){if(!j.value.length){k.error(`سفارش باید حداقل یک قلم داشته باشد.`);return}I.value=!0;try{let e=await S.updatePricing(A.value.id,{items:j.value.map(e=>e.id.startsWith(`new-`)?{productId:e.productId,requestedMeterage:e.requestedMeterage,confirmedMeterage:e.confirmedMeterage??void 0,supplyPrice:e.supplyPrice??void 0}:{id:e.id,confirmedMeterage:e.confirmedMeterage??void 0,supplyPrice:e.supplyPrice??void 0}),deletedItemIds:B.value,shippingCost:M.value,note:N.value.trim()||void 0});A.value=e,j.value=(e.items??[]).map(q),B.value=[],k.success(`قیمتگذاری ذخیره شد.`)}catch(e){k.error(e instanceof s?e.message:`ذخیره قیمتگذاری انجام نشد.`)}finally{I.value=!1}}}async function $(){if(A.value){if(!A.value.finalAmount){k.error(`ابتدا قیمتگذاری را ذخیره کنید تا مبلغ فاکتور مشخص شود.`);return}if(await o({title:`ارسال فاکتور برای مشتری`,message:`فاکتور ${v(A.value.finalAmount)} برای مشتری ارسال میشود و او روش تسویه را انتخاب میکند. ادامه میدهید؟`,confirmLabel:`ارسال فاکتور`,cancelLabel:`انصراف`})){L.value=!0;try{let e=await S.updateStatus(A.value.id,{status:`awaiting_settlement`,note:N.value.trim()||void 0});A.value=e,k.success(`فاکتور برای مشتری ارسال شد.`)}catch(e){k.error(e instanceof s?e.message:`ارسال فاکتور انجام نشد.`)}finally{L.value=!1}}}}return(n,i)=>(_(),p(`div`,me,[u(`div`,he,[i[5]||=u(`div`,null,[u(`h1`,{class:`admin-page-header__title`},`قیمتگذاری سفارش`)],-1),u(`div`,ge,[u(`button`,{type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:I.value||R.value,onClick:Q},t(I.value?`در حال ذخیره…`:`ذخیره قیمتگذاری`),9,_e),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!K.value||L.value||I.value,onClick:$},t(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,ve),u(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:it},` بازگشت `)])]),R.value?(_(),ee(ue,{key:0,variant:`detail`})):W.value?(_(),p(a,{key:1},[u(`div`,ye,[u(`div`,be,[u(`div`,null,[u(`strong`,xe,t(W.value.orderNumber),1),u(`p`,Se,t(W.value.customerName),1),x(pe,{status:W.value.status},null,8,[`status`])])]),u(`div`,Ce,[u(`div`,we,[i[6]||=u(`p`,{class:`admin-summary-item__label`},`مجموع مبلغ`,-1),u(`p`,Te,t(W.value.totalAmount?d(v)(W.value.totalAmount):`—`),1)]),u(`div`,Ee,[i[7]||=u(`p`,{class:`admin-summary-item__label`},`هزینه حمل`,-1),u(`p`,De,t(d(v)(M.value)),1)]),u(`div`,T,[i[8]||=u(`p`,{class:`admin-summary-item__label`},`مبلغ نهایی`,-1),u(`p`,E,t(A.value?.finalAmount?d(v)(A.value.finalAmount):`—`),1)])])]),u(`div`,Oe,[u(`div`,ke,[u(`table`,Ae,[i[9]||=u(`thead`,null,[u(`tr`,null,[u(`th`,null,`ردیف`),u(`th`,null,`شرکت`),u(`th`,null,`کالیته`),u(`th`,null,`محصول`),u(`th`,null,`رنگ / نوع`),u(`th`,null,`متراژ درخواستی`),u(`th`,null,`متراژ تأیید شده`),u(`th`,null,`قیمت تأمینی (واحد)`),u(`th`,null,`مبلغ کل (تومان)`),u(`th`,null,`عملیات`)])],-1),u(`tbody`,null,[(_(!0),p(a,null,f(j.value,(e,n)=>(_(),p(`tr`,{key:e.id},[u(`td`,null,t(n+1),1),u(`td`,null,t(e.companyName||A.value?.companyName||`—`),1),u(`td`,null,t(e.catalogCode),1),u(`td`,null,t(e.productName),1),u(`td`,null,t(e.color),1),u(`td`,null,t(d(b)(e.requestedMeterage)),1),u(`td`,null,[m(u(`input`,{"onUpdate:modelValue":t=>e.confirmedMeterage=t,type:`number`,class:`admin-input admin-input--sm`},null,8,je),[[r,e.confirmedMeterage,void 0,{number:!0}]])]),u(`td`,null,[x(w,{modelValue:e.supplyPrice,"onUpdate:modelValue":t=>e.supplyPrice=t,"input-class":`admin-input admin-input--sm`,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),u(`td`,null,t(e.totalAmount?d(v)(e.totalAmount):`—`),1),u(`td`,null,[u(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>J(e.id)},` حذف `,8,Me)])]))),128))])])]),u(`button`,{type:`button`,class:`admin-btn admin-btn--ghost pricing-page__add-btn`,onClick:Y},[x(c,{name:`products`,size:16}),i[10]||=y(` افزودن محصول `,-1)])]),u(`div`,Ne,[(_(!0),p(a,null,f(j.value,(n,a)=>(_(),p(`article`,{key:n.id,class:`admin-card-item`},[u(`div`,Pe,[u(`p`,Fe,t(n.productName),1),u(`span`,Ie,`#`+t(a+1),1)]),u(`div`,Le,[n.companyName||A.value?.companyName?(_(),p(`span`,Re,t(n.companyName||A.value?.companyName),1)):e(``,!0),u(`span`,null,`کالیته `+t(n.catalogCode),1),u(`span`,null,t(n.color),1),u(`span`,null,`درخواست: `+t(d(b)(n.requestedMeterage))+` متر`,1)]),u(`div`,ze,[u(`label`,null,[i[11]||=y(` متراژ تأیید شده `,-1),m(u(`input`,{"onUpdate:modelValue":e=>n.confirmedMeterage=e,type:`number`,class:`admin-input`},null,8,Be),[[r,n.confirmedMeterage,void 0,{number:!0}]])]),u(`label`,null,[i[12]||=y(` قیمت تأمینی `,-1),x(w,{modelValue:n.supplyPrice,"onUpdate:modelValue":e=>n.supplyPrice=e,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),n.totalAmount?(_(),p(`p`,Ve,` مبلغ کل: `+t(d(v)(n.totalAmount)),1)):e(``,!0)]),u(`div`,He,[u(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>J(n.id)},` حذف `,8,Ue)])]))),128)),u(`button`,{type:`button`,class:`admin-btn admin-btn--ghost`,onClick:Y},[x(c,{name:`products`,size:16}),i[13]||=y(` افزودن محصول `,-1)])]),u(`div`,We,[u(`div`,Ge,[i[14]||=u(`label`,null,`هزینه حمل (تومان)`,-1),x(w,{modelValue:M.value,"onUpdate:modelValue":i[0]||=e=>M.value=e,"allow-empty":!1},null,8,[`modelValue`])]),u(`div`,Ke,[i[15]||=u(`label`,null,`توضیحات برای مشتری`,-1),m(u(`textarea`,{"onUpdate:modelValue":i[1]||=e=>N.value=e,placeholder:`توضیحات خود را وارد کنید...`},null,512),[[r,N.value]])])]),u(`div`,qe,[u(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:I.value,onClick:Q},t(I.value?`در حال ذخیره…`:`ذخیره قیمتگذاری`),9,Je),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||L.value||I.value,onClick:$},t(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,D)]),u(`p`,Ye,[G.value?(_(),p(a,{key:0},[y(` فاکتور این سفارش برای مشتری ارسال شده است؛ انتخاب روش تسویه در اختیار اوست. `)],64)):K.value?(_(),p(a,{key:1},[y(` مبلغ نهایی آماده است. با ارسال فاکتور، مشتری برای انتخاب نقدی یا چک مطلع میشود. `)],64)):(_(),p(a,{key:2},[y(` ابتدا قیمت واحد اقلام و هزینه حمل را ذخیره کنید تا مبلغ نهایی فاکتور ساخته شود. `)],64))])],64)):e(``,!0),x(te,{open:P.value,title:`افزودن محصول`,size:`lg`,onClose:X},{footer:h(()=>[u(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` انصراف `),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!U.value,onClick:Z},` افزودن به سفارش `,8,tt)]),default:h(()=>[u(`form`,{class:`admin-form`,onSubmit:ae(Z,[`prevent`])},[F.value?(_(),p(`p`,Xe,t(F.value),1)):e(``,!0),u(`div`,Ze,[i[16]||=u(`label`,null,[y(`محصول `),u(`span`,{class:`admin-form__required`},`*`)],-1),x(de,{modelValue:H.productId,"onUpdate:modelValue":i[2]||=e=>H.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:nt.value},null,8,[`modelValue`,`options`])]),u(`div`,Qe,[u(`div`,$e,[i[17]||=u(`label`,{for:`requested-meterage`},[y(` متراژ درخواستی `),u(`span`,{class:`admin-form__required`},`*`)],-1),m(u(`input`,{id:`requested-meterage`,"onUpdate:modelValue":i[3]||=e=>H.requestedMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[r,H.requestedMeterage,void 0,{number:!0}]])]),u(`div`,et,[i[18]||=u(`label`,{for:`confirmed-meterage`},`متراژ تأیید شده`,-1),m(u(`input`,{id:`confirmed-meterage`,"onUpdate:modelValue":i[4]||=e=>H.confirmedMeterage=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[r,H.confirmedMeterage,void 0,{number:!0}]])])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-ba142b4c`]]);export{O as default};
\ No newline at end of file
diff --git a/dist/assets/OrderPricingView-vS7IKrtc.js b/dist/assets/OrderPricingView-vS7IKrtc.js
new file mode 100644
index 0000000..a63bf4c
--- /dev/null
+++ b/dist/assets/OrderPricingView-vS7IKrtc.js
@@ -0,0 +1 @@
+import{B as e,O as t,Ot as n,R as r,T as i,V as a,Y as ee,Z as o,at as s,c,d as l,g as te,h as u,j as d,l as ne,m as f,r as p,s as m,t as h,u as g}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{F as re,I as ie,K as ae,L as _,N as v,P as y,R as oe,S as se,W as b,n as x,o as S,x as C,y as ce,z as le}from"./index-CXa4EMLW.js";import{t as ue}from"./AdminPageSkeleton-CTgUqaAu.js";import{t as de}from"./AdminSelect-9UfEJQzN.js";import{r as fe}from"./orderStatus-CYVblRJB.js";import{t as pe}from"./StatusBadge-Cg2zTE2k.js";import{t as w}from"./AdminCurrencyInput-D6MsBhvR.js";var me={class:`pricing-page`},he={class:`admin-page-header`},ge={class:`admin-action-group`},_e=[`disabled`],ve=[`disabled`],ye={class:`pricing-page__summary admin-card`},be={class:`pricing-page__order-meta`},xe={class:`pricing-page__order-id`},Se={class:`pricing-page__customer`},Ce={class:`admin-summary-grid`},we={class:`admin-summary-item`},Te={class:`admin-summary-item__value`},Ee={class:`admin-summary-item`},De={class:`admin-summary-item__value`},T={class:`admin-summary-item`},E={class:`admin-summary-item__value`},Oe={class:`pricing-page__table admin-card desktop-only`},ke={class:`admin-table-wrap`},Ae={class:`admin-table`},je=[`onUpdate:modelValue`],Me=[`onClick`],Ne={class:`compact-only admin-card-list pricing-page__compact-items`},Pe={class:`admin-card-item__header`},Fe={class:`admin-card-item__title`},Ie={class:`pricing-page__item-index`},Le={class:`admin-card-item__meta`},Re={key:0},ze={class:`pricing-page__compact-fields`},Be=[`onUpdate:modelValue`],Ve={key:0,class:`pricing-page__line-total`},He={class:`admin-card-item__actions`},Ue=[`onClick`],We={class:`admin-form-grid`},Ge={class:`admin-form-field`},Ke={class:`admin-form-field`},qe={class:`admin-footer-actions`},Je=[`disabled`],Ye=[`disabled`],D={class:`pricing-page__invoice-hint`},Xe={key:0,class:`admin-form__error`,role:`alert`},Ze={class:`admin-form__field`},Qe={class:`admin-form__row`},$e={class:`admin-form__field`},et={class:`admin-form__field`},tt=[`disabled`],O=h(te({__name:`OrderPricingView`,setup(te){let h=re(),O=ie(),k=le(),A=o(null),j=o([]),M=o(0),N=o(``),P=o(!1),F=o(``),I=o(!1),L=o(!1),R=o(!0),z=o([]),B=o([]),V=()=>({productId:``,requestedMeterage:50,confirmedMeterage:50}),H=ee(V()),nt=m(()=>z.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=m(()=>H.productId.length>0&&H.requestedMeterage>0),W=m(()=>A.value?ce(A.value):null),G=m(()=>A.value?!fe.includes(A.value.status):!1),K=m(()=>!!A.value?.finalAmount&&!G.value);async function rt(){R.value=!0;try{let e=await C.get(String(h.params.id));A.value=e,j.value=(e.items??[]).map(q),M.value=e.shippingCost??0,B.value=[],z.value=await se.list({activeOnly:!0})}catch(e){k.error(e instanceof v?e.message:`بارگذاری سفارش انجام نشد.`)}finally{R.value=!1}}i(()=>{rt()});function q(e){return{id:e.id,productId:e.productId,catalogCode:e.catalogCode,productName:e.productName,color:e.color,requestedMeterage:e.requestedMeterage,confirmedMeterage:e.confirmedMeterage,supplyPrice:e.supplyPrice,totalAmount:e.totalAmount,companyId:e.companyId,companyName:e.companyName}}function it(){O.push(`/orders`)}async function J(e){let t=j.value.find(t=>t.id===e);await _({title:`حذف محصول`,message:t?`آیا از حذف «${t.productName}» از سفارش مطمئن هستید؟`:`آیا از حذف این محصول از سفارش مطمئن هستید؟`,confirmLabel:`حذف`,cancelLabel:`انصراف`,tone:`danger`})&&(e.startsWith(`new-`)||B.value.push(e),j.value=j.value.filter(t=>t.id!==e))}r(()=>H.productId,e=>{let t=z.value.find(t=>t.id===e);if(!t)return;let n=t.rollMeters||t.minMeterage||t.orderStep||50;H.requestedMeterage=n,H.confirmedMeterage=n});function Y(){Object.assign(H,V()),F.value=``,P.value=!0}function X(){P.value=!1,F.value=``}function Z(){if(!U.value){F.value=`محصول و متراژ الزامی هستند.`;return}let e=z.value.find(e=>e.id===H.productId);if(!e){F.value=`محصول انتخابشده یافت نشد.`;return}if(j.value.some(t=>t.productId===e.id||t.catalogCode===e.catalogCode&&t.productName===e.name)){F.value=`این محصول در سفارش هست.`;return}j.value.push({id:`new-${crypto.randomUUID().slice(0,8)}`,productId:e.id,catalogCode:e.catalogCode,productName:e.name,color:e.color||`—`,requestedMeterage:H.requestedMeterage,confirmedMeterage:H.confirmedMeterage||H.requestedMeterage,supplyPrice:e.price,totalAmount:null,companyId:A.value?.companyId,companyName:e.companyName||A.value?.companyName}),X()}async function Q(){if(A.value){if(!j.value.length){k.error(`سفارش باید حداقل یک قلم داشته باشد.`);return}I.value=!0;try{let e=await C.updatePricing(A.value.id,{items:j.value.map(e=>e.id.startsWith(`new-`)?{productId:e.productId,requestedMeterage:e.requestedMeterage,confirmedMeterage:e.confirmedMeterage??void 0,supplyPrice:e.supplyPrice??void 0}:{id:e.id,confirmedMeterage:e.confirmedMeterage??void 0,supplyPrice:e.supplyPrice??void 0}),deletedItemIds:B.value,shippingCost:M.value,note:N.value.trim()||void 0});A.value=e,j.value=(e.items??[]).map(q),B.value=[],k.success(`قیمتگذاری ذخیره شد.`)}catch(e){k.error(e instanceof v?e.message:`ذخیره قیمتگذاری انجام نشد.`)}finally{I.value=!1}}}async function $(){if(A.value){if(!A.value.finalAmount){k.error(`ابتدا قیمتگذاری را ذخیره کنید تا مبلغ فاکتور مشخص شود.`);return}if(await _({title:`ارسال فاکتور برای مشتری`,message:`فاکتور ${x(A.value.finalAmount)} برای مشتری ارسال میشود و او روش تسویه را انتخاب میکند. ادامه میدهید؟`,confirmLabel:`ارسال فاکتور`,cancelLabel:`انصراف`})){L.value=!0;try{let e=await C.updateStatus(A.value.id,{status:`awaiting_settlement`,note:N.value.trim()||void 0});A.value=e,k.success(`فاکتور برای مشتری ارسال شد.`)}catch(e){k.error(e instanceof v?e.message:`ارسال فاکتور انجام نشد.`)}finally{L.value=!1}}}}return(r,i)=>(t(),l(`div`,me,[c(`div`,he,[i[5]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`قیمتگذاری سفارش`)],-1),c(`div`,ge,[c(`button`,{type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:I.value||R.value,onClick:Q},n(I.value?`در حال ذخیره…`:`ذخیره قیمتگذاری`),9,_e),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!K.value||L.value||I.value,onClick:$},n(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,ve),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:it},` بازگشت `)])]),R.value?(t(),ne(ue,{key:0,variant:`detail`})):W.value?(t(),l(p,{key:1},[c(`div`,ye,[c(`div`,be,[c(`div`,null,[c(`strong`,xe,n(W.value.orderNumber),1),c(`p`,Se,n(W.value.customerName),1),u(pe,{status:W.value.status},null,8,[`status`])])]),c(`div`,Ce,[c(`div`,we,[i[6]||=c(`p`,{class:`admin-summary-item__label`},`مجموع مبلغ`,-1),c(`p`,Te,n(W.value.totalAmount?s(x)(W.value.totalAmount):`—`),1)]),c(`div`,Ee,[i[7]||=c(`p`,{class:`admin-summary-item__label`},`هزینه حمل`,-1),c(`p`,De,n(s(x)(M.value)),1)]),c(`div`,T,[i[8]||=c(`p`,{class:`admin-summary-item__label`},`مبلغ نهایی`,-1),c(`p`,E,n(A.value?.finalAmount?s(x)(A.value.finalAmount):`—`),1)])])]),c(`div`,Oe,[c(`div`,ke,[c(`table`,Ae,[i[9]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`ردیف`),c(`th`,null,`شرکت`),c(`th`,null,`کالیته`),c(`th`,null,`محصول`),c(`th`,null,`رنگ / نوع`),c(`th`,null,`متراژ درخواستی`),c(`th`,null,`متراژ تأیید شده`),c(`th`,null,`قیمت تأمینی (واحد)`),c(`th`,null,`مبلغ کل (تومان)`),c(`th`,null,`عملیات`)])],-1),c(`tbody`,null,[(t(!0),l(p,null,d(j.value,(e,r)=>(t(),l(`tr`,{key:e.id},[c(`td`,null,n(r+1),1),c(`td`,null,n(e.companyName||A.value?.companyName||`—`),1),c(`td`,null,n(e.catalogCode),1),c(`td`,null,n(e.productName),1),c(`td`,null,n(e.color),1),c(`td`,null,n(s(S)(e.requestedMeterage)),1),c(`td`,null,[a(c(`input`,{"onUpdate:modelValue":t=>e.confirmedMeterage=t,type:`number`,class:`admin-input admin-input--sm`},null,8,je),[[b,e.confirmedMeterage,void 0,{number:!0}]])]),c(`td`,null,[u(w,{modelValue:e.supplyPrice,"onUpdate:modelValue":t=>e.supplyPrice=t,"input-class":`admin-input admin-input--sm`,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`td`,null,n(e.totalAmount?s(x)(e.totalAmount):`—`),1),c(`td`,null,[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>J(e.id)},` حذف `,8,Me)])]))),128))])])]),c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost pricing-page__add-btn`,onClick:Y},[u(y,{name:`products`,size:16}),i[10]||=f(` افزودن محصول `,-1)])]),c(`div`,Ne,[(t(!0),l(p,null,d(j.value,(e,r)=>(t(),l(`article`,{key:e.id,class:`admin-card-item`},[c(`div`,Pe,[c(`p`,Fe,n(e.productName),1),c(`span`,Ie,`#`+n(r+1),1)]),c(`div`,Le,[e.companyName||A.value?.companyName?(t(),l(`span`,Re,n(e.companyName||A.value?.companyName),1)):g(``,!0),c(`span`,null,`کالیته `+n(e.catalogCode),1),c(`span`,null,n(e.color),1),c(`span`,null,`درخواست: `+n(s(S)(e.requestedMeterage))+` متر`,1)]),c(`div`,ze,[c(`label`,null,[i[11]||=f(` متراژ تأیید شده `,-1),a(c(`input`,{"onUpdate:modelValue":t=>e.confirmedMeterage=t,type:`number`,class:`admin-input`},null,8,Be),[[b,e.confirmedMeterage,void 0,{number:!0}]])]),c(`label`,null,[i[12]||=f(` قیمت تأمینی `,-1),u(w,{modelValue:e.supplyPrice,"onUpdate:modelValue":t=>e.supplyPrice=t,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),e.totalAmount?(t(),l(`p`,Ve,` مبلغ کل: `+n(s(x)(e.totalAmount)),1)):g(``,!0)]),c(`div`,He,[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>J(e.id)},` حذف `,8,Ue)])]))),128)),c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost`,onClick:Y},[u(y,{name:`products`,size:16}),i[13]||=f(` افزودن محصول `,-1)])]),c(`div`,We,[c(`div`,Ge,[i[14]||=c(`label`,null,`هزینه حمل (تومان)`,-1),u(w,{modelValue:M.value,"onUpdate:modelValue":i[0]||=e=>M.value=e,"allow-empty":!1},null,8,[`modelValue`])]),c(`div`,Ke,[i[15]||=c(`label`,null,`توضیحات برای مشتری`,-1),a(c(`textarea`,{"onUpdate:modelValue":i[1]||=e=>N.value=e,placeholder:`توضیحات خود را وارد کنید...`},null,512),[[b,N.value]])])]),c(`div`,qe,[c(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:I.value,onClick:Q},n(I.value?`در حال ذخیره…`:`ذخیره قیمتگذاری`),9,Je),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||L.value||I.value,onClick:$},n(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,Ye)]),c(`p`,D,[G.value?(t(),l(p,{key:0},[f(` فاکتور این سفارش برای مشتری ارسال شده است؛ انتخاب روش تسویه در اختیار اوست. `)],64)):K.value?(t(),l(p,{key:1},[f(` مبلغ نهایی آماده است. با ارسال فاکتور، مشتری برای انتخاب نقدی یا چک مطلع میشود. `)],64)):(t(),l(p,{key:2},[f(` ابتدا قیمت واحد اقلام و هزینه حمل را ذخیره کنید تا مبلغ نهایی فاکتور ساخته شود. `)],64))])],64)):g(``,!0),u(oe,{open:P.value,title:`افزودن محصول`,size:`lg`,onClose:X},{footer:e(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` انصراف `),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!U.value,onClick:Z},` افزودن به سفارش `,8,tt)]),default:e(()=>[c(`form`,{class:`admin-form`,onSubmit:ae(Z,[`prevent`])},[F.value?(t(),l(`p`,Xe,n(F.value),1)):g(``,!0),c(`div`,Ze,[i[16]||=c(`label`,null,[f(`محصول `),c(`span`,{class:`admin-form__required`},`*`)],-1),u(de,{modelValue:H.productId,"onUpdate:modelValue":i[2]||=e=>H.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:nt.value},null,8,[`modelValue`,`options`])]),c(`div`,Qe,[c(`div`,$e,[i[17]||=c(`label`,{for:`requested-meterage`},[f(` متراژ درخواستی `),c(`span`,{class:`admin-form__required`},`*`)],-1),a(c(`input`,{id:`requested-meterage`,"onUpdate:modelValue":i[3]||=e=>H.requestedMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[b,H.requestedMeterage,void 0,{number:!0}]])]),c(`div`,et,[i[18]||=c(`label`,{for:`confirmed-meterage`},`متراژ تأیید شده`,-1),a(c(`input`,{id:`confirmed-meterage`,"onUpdate:modelValue":i[4]||=e=>H.confirmedMeterage=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[b,H.confirmedMeterage,void 0,{number:!0}]])])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-ba142b4c`]]);export{O as default};
\ No newline at end of file
diff --git a/dist/assets/OrdersView-D-3A1wX9.js b/dist/assets/OrdersView-D-3A1wX9.js
deleted file mode 100644
index c4a6024..0000000
--- a/dist/assets/OrdersView-D-3A1wX9.js
+++ /dev/null
@@ -1 +0,0 @@
-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(`
نمایش ۱ تا ۷ از ۱۰۳ سفارش
...
`,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};
\ No newline at end of file
diff --git a/dist/assets/OrdersView-DGNYhZg3.js b/dist/assets/OrdersView-DGNYhZg3.js
new file mode 100644
index 0000000..253d74f
--- /dev/null
+++ b/dist/assets/OrdersView-DGNYhZg3.js
@@ -0,0 +1 @@
+import{B as e,C as t,Dt as n,E as r,K as i,O as a,Ot as o,R as s,T as c,Tt as l,V as u,Y as d,Z as f,a as p,at as m,c as h,d as g,g as _,h as v,j as y,k as b,l as x,m as S,p as C,r as w,s as T,t as E,u as D,x as O}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{F as k,I as A,K as j,N as M,P as N,R as P,S as F,V as I,W as L,a as R,g as z,h as B,i as ee,k as V,n as H,o as U,x as W,y as G,z as K}from"./index-CXa4EMLW.js";import{t as q}from"./AdminSelect-9UfEJQzN.js";import{r as J}from"./adminLabels-Cz9ccm1Z.js";import{c as Y,i as X,n as Z,o as Q,s as te,t as ne}from"./orderStatus-CYVblRJB.js";import{t as re}from"./StatusBadge-Cg2zTE2k.js";function ie(){let e=k(),t=A(),n=K(),r=f([]),i=f([]),a=new Set(Z.map(e=>e.key));function o(){let t=typeof e.query.tab==`string`?e.query.tab:``;return a.has(t)?t:`all`}let l=f([]),u=f(o()),p=f(``),m=f(``),h=f(!1),g=f(!1),_=f(!1),v=f(``),y=f(!1),b=()=>({customerId:``,customerName:``,customerPhone:``,items:[]}),x=d(b()),S=T(()=>x.customerId.length>0&&x.items.length>0),C=T(()=>{let e=[...i.value];return e.sort((e,t)=>Number(t.isActive)-Number(e.isActive)||e.name.localeCompare(t.name,`fa`)),e});function w(e){let t=i.value.find(t=>t.id===e);x.customerId=e,x.customerName=t?.name??``,x.customerPhone=t?.phone??``}async function E(){try{i.value=await z.list()}catch(e){n.error(e instanceof M?e.message:`بارگذاری مشتریان انجام نشد.`)}}let D=T(()=>{let e=l.value;if(u.value!==`all`&&(e=e.filter(e=>e.status===u.value)),m.value.trim()){let t=m.value.trim();e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t))}return e}),O=T(()=>l.value.find(e=>e.id===p.value)??null);function j(e){let t=e.trim();if(t)return l.value.find(e=>e.id===t||e.orderNumber.toUpperCase()===t.toUpperCase())}async function N(){let n=typeof e.query.order==`string`?e.query.order:``;if(!n||!l.value.length)return;let r=j(n);if(!r){m.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}I(r),m.value=r.orderNumber}async function P(){try{let[e,t,n]=await Promise.all([W.list(),B.list(),z.list()]);l.value=e.map(e=>G(e)),r.value=t,i.value=n,await N()}catch(e){n.error(e instanceof M?e.message:`بارگذاری سفارشها انجام نشد.`)}}c(()=>{P()}),s(()=>[e.query.order,e.query.focus],()=>{N()}),s(()=>e.query.tab,()=>{let e=o();u.value!==e&&(u.value=e)}),s(u,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 F(e,t=!1){p.value=e.id,t&&(g.value=!0)}function I(e){p.value=e.id,_.value=!0}function L(){g.value=!1}function R(){_.value=!1}function ee(e){return e?e===`check`?`چکی`:`نقدی`:`انتخابنشده`}let V=f(!1);async function H(e){if(V.value)return null;V.value=!0;try{let t=await W.updateStatus(e.orderId,{status:e.status,note:e.note,reason:e.reason,force:e.force}),r=G(t),i=l.value.findIndex(t=>t.id===e.orderId);return i>=0&&(l.value[i]={...l.value[i],...r}),n.success(`وضعیت سفارش به «${Y(e.status)}» تغییر کرد.`),r}catch(e){return n.error(e instanceof M?e.message:`تغییر وضعیت انجام نشد.`),null}finally{V.value=!1}}function U(e){t.push(`/orders/${e.id}/pricing`)}function q(e){t.push(`/orders/${e.id}/checks`)}function J(e){t.push({path:`/cash-payments`,query:{order:e.orderNumber}})}function X(){Object.assign(x,b()),v.value=``,h.value=!0,E()}function Q(){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 W.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);l.value.unshift(t),p.value=t.id,n.success(`سفارش جدید ثبت شد.`),Q()}catch(e){n.error(e instanceof M?e.message:`ثبت سفارش انجام نشد.`)}finally{y.value=!1}}return{companies:r,customers:i,activeCustomers:C,applyCustomer:w,loadCustomers:E,orderList:l,activeTab:u,selectedOrderId:p,searchQuery:m,showAddModal:h,showDetailPanel:g,showDetailModal:_,formError:v,form:x,addFormItem:te,removeFormItem:ne,isFormValid:S,filteredOrders:D,selectedOrder:O,selectOrder:F,openOrderDetail:I,closeDetailPanel:L,closeDetailModal:R,settlementLabel:ee,changeStatus:H,statusSaving:V,goPricing:U,goChecks:q,goCashReceipt:J,openAddModal:X,closeAddModal:Q,submitAddOrder:re,saving:y}}var ae=Symbol(`orders-page`);function oe(){let e=ie();return b(ae,e),e}function se(){let e=O(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=E(_({__name:`OrderDetailContent`,props:{order:{},settlementLabel:{},layout:{default:`compact`},statusSaving:{type:Boolean}},emits:[`pricing`,`checks`,`cashReceipt`,`finalApprove`,`status`],setup(e,{emit:t}){let n=e,r=t,i=f(!1),c=f(``),d=f(``),p=Object.keys(X),_=T(()=>n.order.allowedTransitions??[]),b=T(()=>i.value?p.filter(e=>e!==n.order.rawStatus):[..._.value]),x=T(()=>[{value:``,label:`انتخاب کنید…`},...b.value.map(e=>({value:e,label:Y(e)}))]),S=T(()=>i.value),C=T(()=>!!c.value&&(!S.value||d.value.trim().length>0)),E=T(()=>n.layout===`desktop`),O=T(()=>ne[n.order.status]?.label??n.order.status),k=T(()=>{let e=Y(n.order.rawStatus);return!e||e===O.value?``:e}),A=T(()=>{let e=n.order.customerType;return e?J[e]??n.order.customerType??`—`:`—`}),j=T(()=>te(n.order)),M=T(()=>Q(n.order)),P=T(()=>n.order.settlementMethod===`check`&&!j.value),F=T(()=>n.order.settlementMethod===`cash`&&!j.value&&n.order.rawStatus!==`cash_confirmed`),z=T(()=>j.value?`pricing`:M.value?`final`:P.value?`checks`:F.value?`cash`:null);s([()=>n.order.id,i],()=>{c.value=``,d.value=``});function B(){if(!c.value||!C.value)return;let e=d.value.trim()||void 0;r(`status`,{orderId:n.order.id,status:c.value,note:e,reason:i.value?e:void 0,force:i.value||void 0}),c.value=``,d.value=``}return(t,n)=>(a(),g(`div`,{class:l([`order-detail`,`order-detail--${e.layout}`])},[h(`header`,ce,[h(`div`,$,[h(`div`,le,[h(`strong`,null,o(e.order.orderNumber),1),v(re,{status:e.order.status},null,8,[`status`])]),k.value?(a(),g(`p`,ue,o(k.value),1)):D(``,!0)]),h(`div`,de,[j.value?(a(),g(`button`,{key:0,type:`button`,class:l([`admin-btn admin-btn--sm`,z.value===`pricing`?`admin-btn--primary`:`admin-btn--outline`]),onClick:n[0]||=e=>r(`pricing`)},` قیمتگذاری سفارش `,2)):D(``,!0),P.value?(a(),g(`button`,{key:1,type:`button`,class:l([`admin-btn admin-btn--sm`,z.value===`checks`?`admin-btn--primary`:`admin-btn--outline`]),onClick:n[1]||=e=>r(`checks`)},` مدیریت چکها `,2)):D(``,!0),F.value?(a(),g(`button`,{key:2,type:`button`,class:l([`admin-btn admin-btn--sm`,z.value===`cash`?`admin-btn--primary`:`admin-btn--outline`]),onClick:n[2]||=e=>r(`cashReceipt`)},` رسید پرداخت `,2)):D(``,!0),M.value?(a(),g(`button`,{key:3,type:`button`,class:l([`admin-btn admin-btn--sm`,z.value===`final`?`admin-btn--primary`:`admin-btn--outline`]),disabled:e.statusSaving,onClick:n[3]||=e=>r(`finalApprove`)},` تأیید نهایی `,10,fe)):D(``,!0)])]),h(`div`,pe,[h(`section`,me,[n[11]||=h(`h3`,{class:`order-detail__section-title`},`اطلاعات مشتری`,-1),h(`div`,he,[h(`div`,ge,[v(N,{name:`building`,size:16}),n[7]||=h(`span`,{class:`order-detail__info-label`},`مشتری`,-1),h(`span`,_e,o(e.order.customerName),1)]),h(`div`,ve,[v(N,{name:`phone`,size:16}),n[8]||=h(`span`,{class:`order-detail__info-label`},`تلفن`,-1),h(`span`,ye,o(e.order.customerPhone??`—`),1)]),h(`div`,be,[v(N,{name:`id-card`,size:16}),n[9]||=h(`span`,{class:`order-detail__info-label`},`شناسه ملی`,-1),h(`span`,xe,o(e.order.customerNationalId??`—`),1)]),h(`div`,Se,[v(N,{name:`user`,size:16}),n[10]||=h(`span`,{class:`order-detail__info-label`},`نوع مشتری`,-1),h(`span`,Ce,o(A.value),1)])])]),h(`section`,we,[n[16]||=h(`h3`,{class:`order-detail__section-title`},`اطلاعات سفارش`,-1),h(`div`,Te,[h(`div`,Ee,[n[12]||=h(`span`,{class:`order-detail__info-label`},`شرکت`,-1),h(`span`,De,o(e.order.companyName),1)]),h(`div`,Oe,[n[13]||=h(`span`,{class:`order-detail__info-label`},`روش تسویه`,-1),h(`span`,ke,o(e.settlementLabel(e.order.settlementMethod)),1)]),h(`div`,Ae,[n[14]||=h(`span`,{class:`order-detail__info-label`},`متراژ کل`,-1),h(`span`,je,o(m(R)(e.order.meterage)),1)]),h(`div`,Me,[n[15]||=h(`span`,{class:`order-detail__info-label`},`مبلغ کل`,-1),h(`span`,Ne,o(e.order.totalAmount==null?`پس از قیمتگذاری`:m(H)(e.order.totalAmount)),1)])])])]),e.order.items?.length?(a(),g(`section`,Pe,[n[18]||=h(`h3`,{class:`order-detail__section-title`},`محصولات سفارش`,-1),E.value?(a(),g(`div`,Fe,[h(`table`,Ie,[n[17]||=h(`thead`,null,[h(`tr`,null,[h(`th`,null,`شرکت`),h(`th`,null,`کالیته`),h(`th`,null,`محصول`),h(`th`,null,`رنگ`),h(`th`,null,`متراژ`),h(`th`,null,`قیمت`),h(`th`,null,`مبلغ`)])],-1),h(`tbody`,null,[(a(!0),g(w,null,y(e.order.items,t=>(a(),g(`tr`,{key:t.id},[h(`td`,null,o(t.companyName||e.order.companyName),1),h(`td`,null,o(t.catalogCode),1),h(`td`,null,o(t.productName),1),h(`td`,null,o(t.color),1),h(`td`,null,o(m(U)(t.confirmedMeterage??t.requestedMeterage)),1),h(`td`,null,o(t.supplyPrice==null?`—`:m(H)(t.supplyPrice)),1),h(`td`,null,o(t.totalAmount==null?`—`:m(H)(t.totalAmount)),1)]))),128))])])])):(a(),g(`ul`,Le,[(a(!0),g(w,null,y(e.order.items,e=>(a(),g(`li`,{key:e.id,class:`order-detail__item`},[h(`div`,Re,[h(`strong`,null,o(e.productName),1),h(`span`,null,o(e.catalogCode),1)]),h(`div`,ze,[e.companyName?(a(),g(`span`,Be,o(e.companyName),1)):D(``,!0),h(`span`,null,o(e.color),1),h(`span`,null,o(m(R)(e.confirmedMeterage??e.requestedMeterage)),1),e.supplyPrice==null?D(``,!0):(a(),g(`span`,Ve,o(m(H)(e.supplyPrice)),1)),e.totalAmount==null?D(``,!0):(a(),g(`span`,He,o(m(H)(e.totalAmount)),1))])]))),128))]))])):D(``,!0),h(`section`,Ue,[h(`div`,We,[n[20]||=h(`h3`,{class:`order-detail__section-title`},`تغییر وضعیت`,-1),h(`label`,Ge,[u(h(`input`,{"onUpdate:modelValue":n[4]||=e=>i.value=e,type:`checkbox`},null,512),[[I,i.value]]),n[19]||=h(`span`,null,`تغییر دستی`,-1)])]),i.value?(a(),g(`p`,Ke,` این گذر خارج از روال استاندارد است؛ ثبت یادداشت اجباری است. `)):b.value.length?D(``,!0):(a(),g(`p`,qe,` در این وضعیت گذر خودکاری وجود ندارد. برای تغییر، حالت دستی را فعال کنید. `)),b.value.length?(a(),g(`div`,Je,[h(`div`,Ye,[n[21]||=h(`label`,null,`وضعیت بعدی`,-1),v(q,{modelValue:c.value,"onUpdate:modelValue":n[5]||=e=>c.value=e,block:``,"aria-label":`وضعیت بعدی`,placeholder:`انتخاب کنید…`,options:x.value},null,8,[`modelValue`,`options`])]),h(`div`,Xe,[h(`label`,Ze,` یادداشت`+o(S.value?` (اجباری)`:` (اختیاری)`),1),u(h(`input`,{id:`status-note`,"onUpdate:modelValue":n[6]||=e=>d.value=e,type:`text`,class:`admin-input`,placeholder:`دلیل یا توضیح این تغییر`},null,512),[[L,d.value]])]),h(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!C.value||e.statusSaving,onClick:B},o(e.statusSaving?`در حال ثبت…`:`ثبت وضعیت`),9,Qe)])):D(``,!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=E(_({__name:`DesktopOrdersPage`,setup(s){let d=V(`(min-width: 1280px)`),{activeTab:_,selectedOrderId:b,searchQuery:T,filteredOrders:E,selectedOrder:O,showDetailModal:k,openOrderDetail:A,closeDetailModal:M,settlementLabel:F,goPricing:I,goChecks:z,goCashReceipt:B,changeStatus:U,statusSaving:W,openAddModal:G}=se(),K=f(null),q=f({});function J(){K.value=null}async function Y(e,n){if(n.stopPropagation(),K.value?.id===e.id){J();return}let r=n.currentTarget.getBoundingClientRect();K.value=e,await t();let i=Math.min(Math.max(8,r.right-168),window.innerWidth-168-8);q.value={position:`fixed`,top:`${r.bottom+4}px`,left:`${i}px`,width:`168px`}}function X(){J()}c(()=>{document.addEventListener(`click`,X),window.addEventListener(`scroll`,J,!0),window.addEventListener(`resize`,J)}),r(()=>{document.removeEventListener(`click`,X),window.removeEventListener(`scroll`,J,!0),window.removeEventListener(`resize`,J)});function ne(){O.value&&(M(),I(O.value))}function ie(){O.value&&(M(),z(O.value))}function ae(){O.value&&(M(),B(O.value))}function oe(){O.value&&U({orderId:O.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}function ce(){if(!O.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=K.value;if(t){if(J(),e===`detail`){A(t);return}if(e===`pricing`){I(t);return}if(e===`checks`){z(t);return}if(e===`final`){U({orderId:t.id,status:`final_approved`,note:`تأیید نهایی سفارش`});return}B(t)}}return(t,r)=>(a(),g(`div`,et,[h(`div`,tt,[h(`div`,nt,[r[9]||=h(`div`,null,[h(`h2`,{class:`orders-page__list-title`},`سفارشها`)],-1),h(`div`,rt,[h(`button`,it,[v(N,{name:`filter`,size:16}),r[8]||=S(` فیلتر `,-1)]),h(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:r[0]||=(...e)=>m(G)&&m(G)(...e)},` سفارش جدید `)])]),h(`div`,at,[v(N,{name:`search`,size:18}),u(h(`input`,{"onUpdate:modelValue":r[1]||=e=>i(T)?T.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[L,m(T)]])]),h(`div`,ot,[(a(!0),g(w,null,y(m(Z),e=>(a(),g(`button`,{key:e.key,type:`button`,class:l([`admin-tab`,{active:m(_)===e.key}]),onClick:t=>_.value=e.key},[S(o(e.label)+` `,1),`count`in e&&e.count?(a(),g(w,{key:0},[S(` (`+o(e.count)+`)`,1)],64)):D(``,!0)],10,st))),128))]),h(`div`,ct,[h(`table`,lt,[r[10]||=h(`thead`,null,[h(`tr`,null,[h(`th`,null,`شماره سفارش`),h(`th`,null,`مشتری`),h(`th`,null,`روش تسویه`),h(`th`,null,`مبلغ کل`),h(`th`,null,`متراژ`),h(`th`,null,`وضعیت`),h(`th`,null,`تاریخ ثبت`),h(`th`,null,`عملیات`)])],-1),h(`tbody`,null,[(a(!0),g(w,null,y(m(E),e=>(a(),g(`tr`,{key:e.id,class:l({"is-selected":m(b)===e.id}),onClick:t=>m(A)(e)},[h(`td`,null,o(e.orderNumber),1),h(`td`,null,o(e.customerName),1),h(`td`,null,o(m(F)(e.settlementMethod)),1),h(`td`,null,o(e.totalAmount?m(H)(e.totalAmount):`—`),1),h(`td`,null,o(m(R)(e.meterage)),1),h(`td`,null,[v(re,{status:e.status},null,8,[`status`])]),h(`td`,null,o(m(ee)(e.createdAt)),1),h(`td`,dt,[h(`button`,{type:`button`,class:`orders-page__more-btn`,"aria-expanded":K.value?.id===e.id,"aria-haspopup":`menu`,"aria-label":`عملیات سفارش`,onClick:t=>Y(e,t)},[v(N,{name:`more`,size:18})],8,ft)])],10,ut))),128))])])]),r[11]||=C(`