diff --git a/dist/assets/ActiveSwitchCell-Mj6U4GtB.js b/dist/assets/ActiveSwitchCell-DIBIZfO9.js similarity index 96% rename from dist/assets/ActiveSwitchCell-Mj6U4GtB.js rename to dist/assets/ActiveSwitchCell-DIBIZfO9.js index 5d4523e..9ad525c 100644 --- a/dist/assets/ActiveSwitchCell-Mj6U4GtB.js +++ b/dist/assets/ActiveSwitchCell-DIBIZfO9.js @@ -1 +1 @@ -import{$ as e,g as t,k as n,l as r,st as i}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a}from"./http-BjLkjdQu.js";import{V as o}from"./index-BzcByePp.js";import{t as s}from"./BaseSwitch-pJwnFBVo.js";function c(e=480){return new Promise(t=>{window.setTimeout(t,e)})}function l(t){let n=e(null),r=e(null),i=a();async function o(e,a){if(n.value)return a;let o=!a;if(!o&&t.confirmOff&&!await t.confirmOff())return a;n.value=e,r.value=null;let s=a;try{return await t.onPersist(o),i.success(t.successMessage?.(o)??(o?`وضعیت فعال شد.`:`وضعیت غیرفعال شد.`)),o}catch{return r.value=e,i.error(t.errorMessage??`به‌روزرسانی وضعیت انجام نشد.`),s}finally{n.value=null}}function s(e){return n.value===e}function c(e){return r.value===e}return{toggle:o,isLoading:s,hasError:c}}var u=t({__name:`ActiveSwitchCell`,props:{id:{},modelValue:{type:Boolean},entityName:{},entityType:{},persist:{type:Function}},emits:[`update:modelValue`],setup(e,{emit:t}){let a=e,u=t,{toggle:d,isLoading:f,hasError:p}=l({onPersist:async e=>{a.persist?await a.persist(a.id,e):await c()},successMessage:e=>e?`${a.entityType??`مورد`} «${a.entityName}» فعال شد.`:`${a.entityType??`مورد`} «${a.entityName}» غیرفعال شد.`});async function m(e){if(e===a.modelValue)return;let t=a.entityType??`مورد`;if(!await o({title:e?`فعال‌سازی ${t}`:`غیرفعال‌سازی ${t}`,message:e?`آیا از فعال کردن «${a.entityName}» مطمئن هستید؟`:`آیا از غیرفعال کردن «${a.entityName}» مطمئن هستید؟`,tone:e?`primary`:`danger`,confirmLabel:e?`فعال کردن`:`غیرفعال کردن`,cancelLabel:`انصراف`}))return;let n=await d(a.id,a.modelValue);u(`update:modelValue`,n)}return(t,a)=>(n(),r(s,{"model-value":e.modelValue,loading:i(f)(e.id),error:i(p)(e.id),"onUpdate:modelValue":m},null,8,[`model-value`,`loading`,`error`]))}});export{u as t}; \ No newline at end of file +import{$ as e,g as t,k as n,l as r,st as i}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a}from"./http-BjLkjdQu.js";import{z as o}from"./index-SWzbcuqQ.js";import{t as s}from"./BaseSwitch-pJwnFBVo.js";function c(e=480){return new Promise(t=>{window.setTimeout(t,e)})}function l(t){let n=e(null),r=e(null),i=a();async function o(e,a){if(n.value)return a;let o=!a;if(!o&&t.confirmOff&&!await t.confirmOff())return a;n.value=e,r.value=null;let s=a;try{return await t.onPersist(o),i.success(t.successMessage?.(o)??(o?`وضعیت فعال شد.`:`وضعیت غیرفعال شد.`)),o}catch{return r.value=e,i.error(t.errorMessage??`به‌روزرسانی وضعیت انجام نشد.`),s}finally{n.value=null}}function s(e){return n.value===e}function c(e){return r.value===e}return{toggle:o,isLoading:s,hasError:c}}var u=t({__name:`ActiveSwitchCell`,props:{id:{},modelValue:{type:Boolean},entityName:{},entityType:{},persist:{type:Function}},emits:[`update:modelValue`],setup(e,{emit:t}){let a=e,u=t,{toggle:d,isLoading:f,hasError:p}=l({onPersist:async e=>{a.persist?await a.persist(a.id,e):await c()},successMessage:e=>e?`${a.entityType??`مورد`} «${a.entityName}» فعال شد.`:`${a.entityType??`مورد`} «${a.entityName}» غیرفعال شد.`});async function m(e){if(e===a.modelValue)return;let t=a.entityType??`مورد`;if(!await o({title:e?`فعال‌سازی ${t}`:`غیرفعال‌سازی ${t}`,message:e?`آیا از فعال کردن «${a.entityName}» مطمئن هستید؟`:`آیا از غیرفعال کردن «${a.entityName}» مطمئن هستید؟`,tone:e?`primary`:`danger`,confirmLabel:e?`فعال کردن`:`غیرفعال کردن`,cancelLabel:`انصراف`}))return;let n=await d(a.id,a.modelValue);u(`update:modelValue`,n)}return(t,a)=>(n(),r(s,{"model-value":e.modelValue,loading:i(f)(e.id),error:i(p)(e.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-S1e1av3F.js b/dist/assets/AdminCurrencyInput-BGwf-fv_.js similarity index 93% rename from dist/assets/AdminCurrencyInput-S1e1av3F.js rename to dist/assets/AdminCurrencyInput-BGwf-fv_.js index 11acbf1..197ba8e 100644 --- a/dist/assets/AdminCurrencyInput-S1e1av3F.js +++ b/dist/assets/AdminCurrencyInput-BGwf-fv_.js @@ -1 +1 @@ -import{Dt as e,d as t,g as n,k as r,s as i,t as a}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{c as o,r as s}from"./index-BzcByePp.js";var c=[`id`,`value`,`placeholder`,`disabled`],l=a(n({__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(n,{emit:a}){let l=n,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)=>(r(),t(`input`,{id:n.id,type:`text`,inputmode:`numeric`,dir:`ltr`,class:e([`admin-currency-input`,n.inputClass]),value:d.value,placeholder:n.placeholder,disabled:n.disabled,onInput:f},null,42,c))}}),[[`__scopeId`,`data-v-56435fc8`]]);export{l as t}; \ No newline at end of file +import{Dt as e,d as t,g as n,k as r,s as i,t as a}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{c as o,r as s}from"./index-SWzbcuqQ.js";var c=[`id`,`value`,`placeholder`,`disabled`],l=a(n({__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(n,{emit:a}){let l=n,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)=>(r(),t(`input`,{id:n.id,type:`text`,inputmode:`numeric`,dir:`ltr`,class:e([`admin-currency-input`,n.inputClass]),value:d.value,placeholder:n.placeholder,disabled:n.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-D0rHEosY.css b/dist/assets/AdminImagePicker-D0rHEosY.css new file mode 100644 index 0000000..c5eef47 --- /dev/null +++ b/dist/assets/AdminImagePicker-D0rHEosY.css @@ -0,0 +1 @@ +.image-picker__label[data-v-0959163b]{margin:0 0 8px;font-size:.8125rem;font-weight:600}.image-picker__row[data-v-0959163b]{align-items:center;gap:12px;display:flex}.image-picker__preview[data-v-0959163b]{border:1px solid var(--color-border);background:#e8eceb 50%/cover no-repeat;border-radius:10px;flex-shrink:0;width:88px;height:72px}.image-picker__preview--empty[data-v-0959163b]{background:repeating-linear-gradient(45deg,#eef1f0,#eef1f0 8px,#e4e8e6 8px 16px)}.image-picker__actions[data-v-0959163b]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.image-picker__file[data-v-0959163b]{display:none}.image-picker__error[data-v-0959163b]{width:100%;color:var(--color-danger);margin:0;font-size:.75rem}.image-picker__ok[data-v-0959163b]{width:100%;color:var(--color-success-dark);margin:0;font-size:.75rem;font-weight:600} diff --git a/dist/assets/AdminImagePicker-DBOLHU6S.js b/dist/assets/AdminImagePicker-DBOLHU6S.js new file mode 100644 index 0000000..e6734d8 --- /dev/null +++ b/dist/assets/AdminImagePicker-DBOLHU6S.js @@ -0,0 +1 @@ +import{$ as e,At as t,Dt as n,c as r,d as i,g as a,k as o,kt as s,st as c,t as l,u}from"./_plugin-vue_export-helper-QrIvvHC8.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(a({__name:`AdminImagePicker`,props:{modelValue:{},label:{},showRemove:{type:Boolean,default:!0}},emits:[`update:modelValue`],setup(a,{emit:l}){let d=a,f=l,h=e(null),g=e(!1),T=e(``),E=e(!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(e,l)=>(o(),i(`div`,_,[a.label?(o(),i(`p`,v,t(a.label),1)):u(``,!0),r(`div`,y,[r(`div`,{class:n([`image-picker__preview`,{"image-picker__preview--empty":!d.modelValue}]),style:s(d.modelValue?{backgroundImage:c(p)(d.modelValue)}:void 0)},null,6),r(`div`,b,[r(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:g.value,onClick:D},t(d.modelValue?`تغییر تصویر`:`افزودن تصویر`),9,x),d.showRemove&&d.modelValue?(o(),i(`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?(o(),i(`p`,C,t(T.value),1)):E.value?(o(),i(`p`,w,`تصویر انتخاب شد — برای ثبت نهایی «ثبت» را بزنید.`)):u(``,!0)])]),r(`input`,{ref_key:`inputRef`,ref:h,type:`file`,accept:`image/*`,class:`image-picker__file`,onChange:O},null,544)]))}}),[[`__scopeId`,`data-v-0959163b`]]);export{p as n,T as t}; \ No newline at end of file diff --git a/dist/assets/AdminImagePicker-DLFdrgWU.js b/dist/assets/AdminImagePicker-DLFdrgWU.js deleted file mode 100644 index e8bad28..0000000 --- a/dist/assets/AdminImagePicker-DLFdrgWU.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,Dt as n,c as r,d as i,g as a,k as o,kt as s,st as c,t as l,u}from"./_plugin-vue_export-helper-QrIvvHC8.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(a({__name:`AdminImagePicker`,props:{modelValue:{},label:{}},emits:[`update:modelValue`],setup(a,{emit:l}){let d=a,f=l,h=e(null),g=e(!1),T=e(``),E=e(!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(e,l)=>(o(),i(`div`,_,[a.label?(o(),i(`p`,v,t(a.label),1)):u(``,!0),r(`div`,y,[r(`div`,{class:n([`image-picker__preview`,{"image-picker__preview--empty":!d.modelValue}]),style:s(d.modelValue?{backgroundImage:c(p)(d.modelValue)}:void 0)},null,6),r(`div`,b,[r(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:g.value,onClick:D},t(d.modelValue?`تغییر تصویر`:`افزودن تصویر`),9,x),d.modelValue?(o(),i(`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?(o(),i(`p`,C,t(T.value),1)):E.value?(o(),i(`p`,w,`تصویر انتخاب شد — برای ثبت نهایی «ثبت» را بزنید.`)):u(``,!0)])]),r(`input`,{ref_key:`inputRef`,ref:h,type:`file`,accept:`image/*`,class:`image-picker__file`,onChange:O},null,544)]))}}),[[`__scopeId`,`data-v-ab0add26`]]);export{p as n,T as t}; \ No newline at end of file diff --git a/dist/assets/AdminImagePicker-RdXJzEal.css b/dist/assets/AdminImagePicker-RdXJzEal.css deleted file mode 100644 index 404abbe..0000000 --- a/dist/assets/AdminImagePicker-RdXJzEal.css +++ /dev/null @@ -1 +0,0 @@ -.image-picker__label[data-v-ab0add26]{margin:0 0 8px;font-size:.8125rem;font-weight:600}.image-picker__row[data-v-ab0add26]{align-items:center;gap:12px;display:flex}.image-picker__preview[data-v-ab0add26]{border:1px solid var(--color-border);background:#e8eceb 50%/cover no-repeat;border-radius:10px;flex-shrink:0;width:88px;height:72px}.image-picker__preview--empty[data-v-ab0add26]{background:repeating-linear-gradient(45deg,#eef1f0,#eef1f0 8px,#e4e8e6 8px 16px)}.image-picker__actions[data-v-ab0add26]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.image-picker__file[data-v-ab0add26]{display:none}.image-picker__error[data-v-ab0add26]{width:100%;color:var(--color-danger);margin:0;font-size:.75rem}.image-picker__ok[data-v-ab0add26]{width:100%;color:var(--color-success-dark);margin:0;font-size:.75rem;font-weight:600} diff --git a/dist/assets/AdminSelect-8XDtPu3U.js b/dist/assets/AdminSelect-6a7SFr9x.js similarity index 93% rename from dist/assets/AdminSelect-8XDtPu3U.js rename to dist/assets/AdminSelect-6a7SFr9x.js index 8438418..030eb75 100644 --- a/dist/assets/AdminSelect-8XDtPu3U.js +++ b/dist/assets/AdminSelect-6a7SFr9x.js @@ -1 +1 @@ -import{$ as e,At as t,B as n,D as r,Dt as i,M as a,N as o,U as s,a as c,c as l,d as u,g as d,h as f,k as p,kt as m,l as h,r as g,s as _,t as v,u as y,w as b}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{f as x,m as S,p as C}from"./http-BjLkjdQu.js";import{N as w,R as T}from"./index-BzcByePp.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=v(d({__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(d,{emit:v}){let L=d,R=v,z=e(!1),B=e(``),V=e(null),H=e(null),U=e(null),W=e({});w(V,()=>{z.value=!1,B.value=``},{ignore:[H]});let G=_(()=>L.options.find(e=>e.value===L.modelValue)),K=_(()=>G.value?.label??L.placeholder),q=_(()=>{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 b(),J(),L.searchable&&(B.value=``,await b(),U.value?.focus()))}function Z(e){R(`update:modelValue`,e),z.value=!1,B.value=``}return n(z,e=>{Y(e),e&&b(()=>J())}),r(()=>{Y(!1)}),(e,n)=>(p(),u(`div`,{id:d.id,ref_key:`rootRef`,ref:V,class:i([`admin-select`,{"admin-select--open":z.value,"admin-select--block":d.block}])},[l(`button`,{type:`button`,class:`admin-select__trigger`,"aria-label":d.ariaLabel,"aria-expanded":z.value,"aria-haspopup":`listbox`,onClick:X},[l(`span`,O,[o(e.$slots,`option-leading`,{option:G.value},void 0,!0),l(`span`,k,t(K.value),1)]),l(`span`,A,[f(T,{name:`chevron-down`,size:16})])],8,D),(p(),h(c,{to:`body`},[z.value?(p(),u(`ul`,{key:0,ref_key:`menuRef`,ref:H,class:`admin-select__menu`,role:`listbox`,"aria-label":d.ariaLabel,style:m(W.value)},[d.searchable?(p(),u(`li`,M,[s(l(`input`,{ref_key:`searchInputRef`,ref:U,"onUpdate:modelValue":n[0]||=e=>B.value=e,type:`search`,class:`admin-select__search-input`,placeholder:d.searchPlaceholder,onClick:n[1]||=S(()=>{},[`stop`]),onKeydown:n[2]||=C(S(e=>z.value=!1,[`stop`]),[`esc`])},null,40,N),[[x,B.value]])])):y(``,!0),q.value.length?y(``,!0):(p(),u(`li`,P,` موردی یافت نشد `)),(p(!0),u(g,null,a(q.value,n=>(p(),u(`li`,{key:n.value,role:`presentation`},[l(`button`,{type:`button`,class:i([`admin-select__option`,{"admin-select__option--active":n.value===d.modelValue}]),role:`option`,"aria-selected":n.value===d.modelValue,onClick:e=>Z(n.value)},[l(`span`,I,[o(e.$slots,`option-leading`,{option:n},void 0,!0),l(`span`,null,t(n.label),1)]),n.value===d.modelValue?(p(),h(T,{key:0,name:`check`,size:16,class:`admin-select__check`})):y(``,!0)],10,F)]))),128))],12,j)):y(``,!0)]))],10,E))}}),[[`__scopeId`,`data-v-4623e322`]]);export{L as t}; \ No newline at end of file +import{$ as e,At as t,B as n,D as r,Dt as i,M as a,N as o,U as s,a as c,c as l,d as u,g as d,h as f,k as p,kt as m,l as h,r as g,s as _,t as v,u as y,w as b}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{f as x,m as S,p as C}from"./http-BjLkjdQu.js";import{I as w,j as T}from"./index-SWzbcuqQ.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=v(d({__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(d,{emit:v}){let L=d,R=v,z=e(!1),B=e(``),V=e(null),H=e(null),U=e(null),W=e({});T(V,()=>{z.value=!1,B.value=``},{ignore:[H]});let G=_(()=>L.options.find(e=>e.value===L.modelValue)),K=_(()=>G.value?.label??L.placeholder),q=_(()=>{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 b(),J(),L.searchable&&(B.value=``,await b(),U.value?.focus()))}function Z(e){R(`update:modelValue`,e),z.value=!1,B.value=``}return n(z,e=>{Y(e),e&&b(()=>J())}),r(()=>{Y(!1)}),(e,n)=>(p(),u(`div`,{id:d.id,ref_key:`rootRef`,ref:V,class:i([`admin-select`,{"admin-select--open":z.value,"admin-select--block":d.block}])},[l(`button`,{type:`button`,class:`admin-select__trigger`,"aria-label":d.ariaLabel,"aria-expanded":z.value,"aria-haspopup":`listbox`,onClick:X},[l(`span`,O,[o(e.$slots,`option-leading`,{option:G.value},void 0,!0),l(`span`,k,t(K.value),1)]),l(`span`,A,[f(w,{name:`chevron-down`,size:16})])],8,D),(p(),h(c,{to:`body`},[z.value?(p(),u(`ul`,{key:0,ref_key:`menuRef`,ref:H,class:`admin-select__menu`,role:`listbox`,"aria-label":d.ariaLabel,style:m(W.value)},[d.searchable?(p(),u(`li`,M,[s(l(`input`,{ref_key:`searchInputRef`,ref:U,"onUpdate:modelValue":n[0]||=e=>B.value=e,type:`search`,class:`admin-select__search-input`,placeholder:d.searchPlaceholder,onClick:n[1]||=S(()=>{},[`stop`]),onKeydown:n[2]||=C(S(e=>z.value=!1,[`stop`]),[`esc`])},null,40,N),[[x,B.value]])])):y(``,!0),q.value.length?y(``,!0):(p(),u(`li`,P,` موردی یافت نشد `)),(p(!0),u(g,null,a(q.value,n=>(p(),u(`li`,{key:n.value,role:`presentation`},[l(`button`,{type:`button`,class:i([`admin-select__option`,{"admin-select__option--active":n.value===d.modelValue}]),role:`option`,"aria-selected":n.value===d.modelValue,onClick:e=>Z(n.value)},[l(`span`,I,[o(e.$slots,`option-leading`,{option:n},void 0,!0),l(`span`,null,t(n.label),1)]),n.value===d.modelValue?(p(),h(w,{key:0,name:`check`,size:16,class:`admin-select__check`})):y(``,!0)],10,F)]))),128))],12,j)):y(``,!0)]))],10,E))}}),[[`__scopeId`,`data-v-4623e322`]]);export{L as t}; \ No newline at end of file diff --git a/dist/assets/BankAccountsView-CkbL3HvV.js b/dist/assets/BankAccountsView-D2HiabfV.js similarity index 94% rename from dist/assets/BankAccountsView-CkbL3HvV.js rename to dist/assets/BankAccountsView-D2HiabfV.js index 79e84fe..62e99a7 100644 --- a/dist/assets/BankAccountsView-CkbL3HvV.js +++ b/dist/assets/BankAccountsView-D2HiabfV.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as ee,h as l,k as u,l as d,m as f,r as p,s as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as te,f as _,m as ne,t as v}from"./http-BjLkjdQu.js";import{B as y,H as b,d as x,v as re,z as ie}from"./index-BzcByePp.js";import{t as ae}from"./BaseSwitch-pJwnFBVo.js";import{t as oe}from"./BaseEmptyState-B7aEMvHg.js";import{t as S}from"./ActiveSwitchCell-Mj6U4GtB.js";var se={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`},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=h(ee({__name:`BankAccountsView`,setup(ee){let h=ie(),R=y(),z=te(),B=e(null),V=e([]),H=e(!1),U=e(``),W=e(!1),G=m(()=>String(h.params.companyId)),K=m(()=>V.value),q=()=>({bankName:``,accountNumber:``,accountHolder:B.value?.name??``,cardNumber:``,iban:``,isActive:!0}),J=o(q()),Y=m(()=>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),x.listByCompany(G.value)]);B.value=e,V.value=t}catch(e){z.error(e instanceof v?e.message:`بارگذاری حساب‌ها انجام نشد.`)}}n(()=>{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 x.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 v?e.message:`ثبت حساب انجام نشد.`)}finally{W.value=!1}}async function $(e,t){await x.setActive(e,t)}function ge(){R.push(`/companies`)}return(e,n)=>(u(),c(`div`,se,[s(`div`,ce,[s(`div`,null,[s(`h1`,le,` مدیریت حساب‌های بانکی — `+t(B.value?.name??`…`),1)]),s(`div`,{class:`admin-action-group`},[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:X},` افزودن حساب `),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:ge},` بازگشت `)])]),K.value.length?(u(),c(`div`,ue,[s(`div`,de,[s(`table`,fe,[n[6]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`بانک`),s(`th`,null,`حساب بانکی`),s(`th`,null,`نام صاحب`),s(`th`,null,`شماره کارت`),s(`th`,null,`شماره شبا`),s(`th`,{class:`status`},`وضعیت`)])],-1),s(`tbody`,null,[(u(!0),c(p,null,i(K.value,e=>(u(),c(`tr`,{key:e.id},[s(`td`,null,t(e.bankName),1),s(`td`,null,t(e.accountNumber),1),s(`td`,null,t(e.accountHolder),1),s(`td`,null,t(e.cardNumber||`—`),1),s(`td`,null,t(e.iban||`—`),1),s(`td`,pe,[l(S,{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))])])])])):(u(),d(oe,{key:0,class:`admin-card`,icon:`wallet`,title:`حساب بانکی ثبت نشده`,description:`برای این شرکت هنوز حساب بانکی ثبت نشده است.`},{default:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:X},` افزودن حساب `)]),_:1})),K.value.length?(u(),c(`div`,C,[(u(!0),c(p,null,i(K.value,e=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,w,[s(`p`,T,`بانک `+t(e.bankName),1),l(S,{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`])]),s(`div`,E,[s(`span`,null,t(e.accountHolder),1),s(`span`,null,`حساب: `+t(e.accountNumber),1),e.cardNumber?(u(),c(`span`,D,`کارت: `+t(e.cardNumber),1)):g(``,!0),e.iban?(u(),c(`span`,O,t(e.iban),1)):g(``,!0)])]))),128))])):g(``,!0),l(b,{open:H.value,title:`افزودن حساب بانکی`,size:`lg`,onClose:Z},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},` انصراف `),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Y.value||W.value,onClick:Q},` ثبت حساب `,8,me)]),default:r(()=>[s(`form`,{class:`admin-form`,onSubmit:ne(Q,[`prevent`])},[U.value?(u(),c(`p`,k,t(U.value),1)):g(``,!0),s(`div`,A,[s(`div`,j,[n[7]||=s(`label`,{for:`bank-name`},[f(`نام بانک `),s(`span`,{class:`admin-form__required`},`*`)],-1),a(s(`input`,{id:`bank-name`,"onUpdate:modelValue":n[0]||=e=>J.bankName=e,type:`text`,class:`admin-input`,placeholder:`مثال: ملت`},null,512),[[_,J.bankName]])]),s(`div`,M,[n[8]||=s(`label`,{for:`account-number`},[f(` شماره حساب `),s(`span`,{class:`admin-form__required`},`*`)],-1),a(s(`input`,{id:`account-number`,"onUpdate:modelValue":n[1]||=e=>J.accountNumber=e,type:`text`,class:`admin-input`,placeholder:`1234567890`,inputmode:`numeric`,dir:`ltr`},null,512),[[_,J.accountNumber]])])]),s(`div`,N,[n[9]||=s(`label`,{for:`account-holder`},[f(` نام صاحب حساب `),s(`span`,{class:`admin-form__required`},`*`)],-1),a(s(`input`,{id:`account-holder`,"onUpdate:modelValue":n[2]||=e=>J.accountHolder=e,type:`text`,class:`admin-input`},null,512),[[_,J.accountHolder]])]),s(`div`,P,[s(`div`,F,[n[10]||=s(`label`,{for:`card-number`},`شماره کارت`,-1),a(s(`input`,{id:`card-number`,"onUpdate:modelValue":n[3]||=e=>J.cardNumber=e,type:`text`,class:`admin-input`,placeholder:`6104 3378 0077 1234`,inputmode:`numeric`,dir:`ltr`},null,512),[[_,J.cardNumber]])]),s(`div`,I,[n[11]||=s(`label`,{for:`iban`},`شماره شبا`,-1),a(s(`input`,{id:`iban`,"onUpdate:modelValue":n[4]||=e=>J.iban=e,type:`text`,class:`admin-input`,placeholder:`IR...`,dir:`ltr`},null,512),[[_,J.iban]])])]),s(`div`,L,[l(ae,{modelValue:J.isActive,"onUpdate:modelValue":n[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 +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as ee,h as l,k as u,l as d,m as f,r as p,s as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as te,f as _,m as ne,t as v}from"./http-BjLkjdQu.js";import{B as y,L as b,R as re,_ as ie,d as x}from"./index-SWzbcuqQ.js";import{t as ae}from"./BaseSwitch-pJwnFBVo.js";import{t as oe}from"./BaseEmptyState-Bzvl_pTa.js";import{t as S}from"./ActiveSwitchCell-DIBIZfO9.js";var se={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`},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=h(ee({__name:`BankAccountsView`,setup(ee){let h=b(),R=re(),z=te(),B=e(null),V=e([]),H=e(!1),U=e(``),W=e(!1),G=m(()=>String(h.params.companyId)),K=m(()=>V.value),q=()=>({bankName:``,accountNumber:``,accountHolder:B.value?.name??``,cardNumber:``,iban:``,isActive:!0}),J=o(q()),Y=m(()=>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),x.listByCompany(G.value)]);B.value=e,V.value=t}catch(e){z.error(e instanceof v?e.message:`بارگذاری حساب‌ها انجام نشد.`)}}n(()=>{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 x.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 v?e.message:`ثبت حساب انجام نشد.`)}finally{W.value=!1}}async function $(e,t){await x.setActive(e,t)}function ge(){R.push(`/companies`)}return(e,n)=>(u(),c(`div`,se,[s(`div`,ce,[s(`div`,null,[s(`h1`,le,` مدیریت حساب‌های بانکی — `+t(B.value?.name??`…`),1)]),s(`div`,{class:`admin-action-group`},[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:X},` افزودن حساب `),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:ge},` بازگشت `)])]),K.value.length?(u(),c(`div`,ue,[s(`div`,de,[s(`table`,fe,[n[6]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`بانک`),s(`th`,null,`حساب بانکی`),s(`th`,null,`نام صاحب`),s(`th`,null,`شماره کارت`),s(`th`,null,`شماره شبا`),s(`th`,{class:`status`},`وضعیت`)])],-1),s(`tbody`,null,[(u(!0),c(p,null,i(K.value,e=>(u(),c(`tr`,{key:e.id},[s(`td`,null,t(e.bankName),1),s(`td`,null,t(e.accountNumber),1),s(`td`,null,t(e.accountHolder),1),s(`td`,null,t(e.cardNumber||`—`),1),s(`td`,null,t(e.iban||`—`),1),s(`td`,pe,[l(S,{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))])])])])):(u(),d(oe,{key:0,class:`admin-card`,icon:`wallet`,title:`حساب بانکی ثبت نشده`,description:`برای این شرکت هنوز حساب بانکی ثبت نشده است.`},{default:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:X},` افزودن حساب `)]),_:1})),K.value.length?(u(),c(`div`,C,[(u(!0),c(p,null,i(K.value,e=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,w,[s(`p`,T,`بانک `+t(e.bankName),1),l(S,{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`])]),s(`div`,E,[s(`span`,null,t(e.accountHolder),1),s(`span`,null,`حساب: `+t(e.accountNumber),1),e.cardNumber?(u(),c(`span`,D,`کارت: `+t(e.cardNumber),1)):g(``,!0),e.iban?(u(),c(`span`,O,t(e.iban),1)):g(``,!0)])]))),128))])):g(``,!0),l(y,{open:H.value,title:`افزودن حساب بانکی`,size:`lg`,onClose:Z},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},` انصراف `),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Y.value||W.value,onClick:Q},` ثبت حساب `,8,me)]),default:r(()=>[s(`form`,{class:`admin-form`,onSubmit:ne(Q,[`prevent`])},[U.value?(u(),c(`p`,k,t(U.value),1)):g(``,!0),s(`div`,A,[s(`div`,j,[n[7]||=s(`label`,{for:`bank-name`},[f(`نام بانک `),s(`span`,{class:`admin-form__required`},`*`)],-1),a(s(`input`,{id:`bank-name`,"onUpdate:modelValue":n[0]||=e=>J.bankName=e,type:`text`,class:`admin-input`,placeholder:`مثال: ملت`},null,512),[[_,J.bankName]])]),s(`div`,M,[n[8]||=s(`label`,{for:`account-number`},[f(` شماره حساب `),s(`span`,{class:`admin-form__required`},`*`)],-1),a(s(`input`,{id:`account-number`,"onUpdate:modelValue":n[1]||=e=>J.accountNumber=e,type:`text`,class:`admin-input`,placeholder:`1234567890`,inputmode:`numeric`,dir:`ltr`},null,512),[[_,J.accountNumber]])])]),s(`div`,N,[n[9]||=s(`label`,{for:`account-holder`},[f(` نام صاحب حساب `),s(`span`,{class:`admin-form__required`},`*`)],-1),a(s(`input`,{id:`account-holder`,"onUpdate:modelValue":n[2]||=e=>J.accountHolder=e,type:`text`,class:`admin-input`},null,512),[[_,J.accountHolder]])]),s(`div`,P,[s(`div`,F,[n[10]||=s(`label`,{for:`card-number`},`شماره کارت`,-1),a(s(`input`,{id:`card-number`,"onUpdate:modelValue":n[3]||=e=>J.cardNumber=e,type:`text`,class:`admin-input`,placeholder:`6104 3378 0077 1234`,inputmode:`numeric`,dir:`ltr`},null,512),[[_,J.cardNumber]])]),s(`div`,I,[n[11]||=s(`label`,{for:`iban`},`شماره شبا`,-1),a(s(`input`,{id:`iban`,"onUpdate:modelValue":n[4]||=e=>J.iban=e,type:`text`,class:`admin-input`,placeholder:`IR...`,dir:`ltr`},null,512),[[_,J.iban]])])]),s(`div`,L,[l(ae,{modelValue:J.isActive,"onUpdate:modelValue":n[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-nv4M7RNj.js b/dist/assets/BannersView-M2Tlryjc.js similarity index 95% rename from dist/assets/BannersView-nv4M7RNj.js rename to dist/assets/BannersView-M2Tlryjc.js index b1ca3b1..1cff53b 100644 --- a/dist/assets/BannersView-nv4M7RNj.js +++ b/dist/assets/BannersView-M2Tlryjc.js @@ -1 +1 @@ -import{$ as e,At as t,Dt as n,E as r,H as i,M as ee,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,kt as f,l as p,m,r as h,s as g,t as _,u as v}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as y,f as b,t as x}from"./http-BjLkjdQu.js";import{H as S,f as C}from"./index-BzcByePp.js";import{t as te}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as w}from"./BaseSwitch-pJwnFBVo.js";import{t as T}from"./BaseEmptyState-B7aEMvHg.js";import{t as E}from"./AdminImagePicker-DLFdrgWU.js";import{t as D}from"./AdminSelect-8XDtPu3U.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`},ne={class:`field`},B={class:`field__head`},V={class:`field`},H={class:`field`},U=[`disabled`],W=_(l({__name:`BannersView`,setup(l){let _=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دسته‌بندی‌ها`}],W=e([]),G=e(!0),K=e(!1),q=e(!1),J=e(null),Y=y(),X=o({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,imageUrl:null,displayOrder:0,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),Z=g(()=>J.value?`ویرایش بنر`:`افزودن بنر`);function re(e){return _.find(t=>t.value===e)?.label??e}async function Q(){G.value=!0;try{W.value=await C.list()}catch(e){Y.error(e instanceof x?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 C.update(J.value,e):await C.create(e),q.value=!1,Y.success(`بنر ذخیره شد.`),await Q()}catch(e){Y.error(e instanceof x?e.message:`ذخیره بنر ناموفق بود.`)}finally{K.value=!1}}}async function oe(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await C.remove(e.id),Y.success(`بنر حذف شد.`),await Q()}catch(e){Y.error(e instanceof x?e.message:`حذف بنر ناموفق بود.`)}}return r(()=>{Q()}),(e,r)=>(d(),c(`div`,O,[s(`div`,{class:`admin-page-header`},[r[13]||=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`,onClick:$},`افزودن بنر`)]),G.value?(d(),p(te,{key:0,variant:`table`})):W.value.length?(d(),c(`div`,k,[s(`table`,A,[r[14]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تصویر`),s(`th`,null,`عنوان`),s(`th`,null,`بخش`),s(`th`,null,`دکمه`),s(`th`,null,`فعال`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(d(!0),c(h,null,ee(W.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,[s(`span`,{class:n([`banner-thumb`,{"banner-thumb--empty":!e.imageUrl}]),style:f(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6)]),s(`td`,null,[s(`strong`,null,t(e.title),1),e.subtitle?(d(),c(`p`,j,t(e.subtitle),1)):v(``,!0)]),s(`td`,null,t(re(e.slot)),1),s(`td`,null,t(e.ctaLabel||`—`),1),s(`td`,null,t(e.isActive?`بله`:`خیر`),1),s(`td`,M,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>ie(e)},` ویرایش `,8,N),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>oe(e)},` حذف `,8,P)])]))),128))])])])):(d(),p(T,{key:1,title:`بنری ثبت نشده`,description:`اولین بنر خانه را اضافه کنید.`},{default:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:$},` افزودن بنر `)]),_:1})),u(S,{open:q.value,title:Z.value,onClose:r[12]||=e=>q.value=!1},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[11]||=e=>q.value=!1},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.title.trim()||K.value,onClick:ae},t(K.value?`در حال ذخیره...`:`ذخیره`),9,U)]),default:i(()=>[s(`label`,F,[r[15]||=m(` بخش نمایش `,-1),u(D,{modelValue:X.slot,"onUpdate:modelValue":r[0]||=e=>X.slot=e,options:_},null,8,[`modelValue`])]),s(`div`,I,[s(`span`,L,[r[16]||=m(` عنوان `,-1),u(w,{modelValue:X.showTitle,"onUpdate:modelValue":r[1]||=e=>X.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),a(s(`input`,{"onUpdate:modelValue":r[2]||=e=>X.title=e,class:`admin-input`},null,512),[[b,X.title]])]),s(`div`,R,[s(`span`,z,[r[17]||=m(` زیرعنوان `,-1),u(w,{modelValue:X.showSubtitle,"onUpdate:modelValue":r[3]||=e=>X.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),a(s(`input`,{"onUpdate:modelValue":r[4]||=e=>X.subtitle=e,class:`admin-input`},null,512),[[b,X.subtitle]])]),s(`div`,ne,[s(`span`,B,[r[18]||=m(` متن دکمه `,-1),u(w,{modelValue:X.showCta,"onUpdate:modelValue":r[5]||=e=>X.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),a(s(`input`,{"onUpdate:modelValue":r[6]||=e=>X.ctaLabel=e,class:`admin-input`},null,512),[[b,X.ctaLabel]])]),s(`label`,V,[r[19]||=m(` لینک دکمه `,-1),a(s(`input`,{"onUpdate:modelValue":r[7]||=e=>X.ctaLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories`},null,512),[[b,X.ctaLink]])]),s(`label`,H,[r[20]||=m(`ترتیب نمایش`,-1),a(s(`input`,{"onUpdate:modelValue":r[8]||=e=>X.displayOrder=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[b,X.displayOrder,void 0,{number:!0}]])]),u(E,{modelValue:X.imageUrl,"onUpdate:modelValue":r[9]||=e=>X.imageUrl=e,label:`تصویر بنر`},null,8,[`modelValue`]),u(w,{modelValue:X.isActive,"onUpdate:modelValue":r[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 +import{$ as e,At as t,Dt as n,E as r,H as i,M as ee,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,kt as f,l as p,m,r as h,s as g,t as _,u as v}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as y,f as b,t as x}from"./http-BjLkjdQu.js";import{B as S,f as C}from"./index-SWzbcuqQ.js";import{t as te}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as w}from"./BaseSwitch-pJwnFBVo.js";import{t as T}from"./BaseEmptyState-Bzvl_pTa.js";import{t as E}from"./AdminImagePicker-DBOLHU6S.js";import{t as D}from"./AdminSelect-6a7SFr9x.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`},ne={class:`field`},B={class:`field__head`},V={class:`field`},H={class:`field`},U=[`disabled`],W=_(l({__name:`BannersView`,setup(l){let _=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دسته‌بندی‌ها`}],W=e([]),G=e(!0),K=e(!1),q=e(!1),J=e(null),Y=y(),X=o({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,imageUrl:null,displayOrder:0,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),Z=g(()=>J.value?`ویرایش بنر`:`افزودن بنر`);function re(e){return _.find(t=>t.value===e)?.label??e}async function Q(){G.value=!0;try{W.value=await C.list()}catch(e){Y.error(e instanceof x?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 C.update(J.value,e):await C.create(e),q.value=!1,Y.success(`بنر ذخیره شد.`),await Q()}catch(e){Y.error(e instanceof x?e.message:`ذخیره بنر ناموفق بود.`)}finally{K.value=!1}}}async function oe(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await C.remove(e.id),Y.success(`بنر حذف شد.`),await Q()}catch(e){Y.error(e instanceof x?e.message:`حذف بنر ناموفق بود.`)}}return r(()=>{Q()}),(e,r)=>(d(),c(`div`,O,[s(`div`,{class:`admin-page-header`},[r[13]||=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`,onClick:$},`افزودن بنر`)]),G.value?(d(),p(te,{key:0,variant:`table`})):W.value.length?(d(),c(`div`,k,[s(`table`,A,[r[14]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تصویر`),s(`th`,null,`عنوان`),s(`th`,null,`بخش`),s(`th`,null,`دکمه`),s(`th`,null,`فعال`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(d(!0),c(h,null,ee(W.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,[s(`span`,{class:n([`banner-thumb`,{"banner-thumb--empty":!e.imageUrl}]),style:f(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6)]),s(`td`,null,[s(`strong`,null,t(e.title),1),e.subtitle?(d(),c(`p`,j,t(e.subtitle),1)):v(``,!0)]),s(`td`,null,t(re(e.slot)),1),s(`td`,null,t(e.ctaLabel||`—`),1),s(`td`,null,t(e.isActive?`بله`:`خیر`),1),s(`td`,M,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>ie(e)},` ویرایش `,8,N),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>oe(e)},` حذف `,8,P)])]))),128))])])])):(d(),p(T,{key:1,title:`بنری ثبت نشده`,description:`اولین بنر خانه را اضافه کنید.`},{default:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:$},` افزودن بنر `)]),_:1})),u(S,{open:q.value,title:Z.value,onClose:r[12]||=e=>q.value=!1},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[11]||=e=>q.value=!1},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.title.trim()||K.value,onClick:ae},t(K.value?`در حال ذخیره...`:`ذخیره`),9,U)]),default:i(()=>[s(`label`,F,[r[15]||=m(` بخش نمایش `,-1),u(D,{modelValue:X.slot,"onUpdate:modelValue":r[0]||=e=>X.slot=e,options:_},null,8,[`modelValue`])]),s(`div`,I,[s(`span`,L,[r[16]||=m(` عنوان `,-1),u(w,{modelValue:X.showTitle,"onUpdate:modelValue":r[1]||=e=>X.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),a(s(`input`,{"onUpdate:modelValue":r[2]||=e=>X.title=e,class:`admin-input`},null,512),[[b,X.title]])]),s(`div`,R,[s(`span`,z,[r[17]||=m(` زیرعنوان `,-1),u(w,{modelValue:X.showSubtitle,"onUpdate:modelValue":r[3]||=e=>X.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),a(s(`input`,{"onUpdate:modelValue":r[4]||=e=>X.subtitle=e,class:`admin-input`},null,512),[[b,X.subtitle]])]),s(`div`,ne,[s(`span`,B,[r[18]||=m(` متن دکمه `,-1),u(w,{modelValue:X.showCta,"onUpdate:modelValue":r[5]||=e=>X.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),a(s(`input`,{"onUpdate:modelValue":r[6]||=e=>X.ctaLabel=e,class:`admin-input`},null,512),[[b,X.ctaLabel]])]),s(`label`,V,[r[19]||=m(` لینک دکمه `,-1),a(s(`input`,{"onUpdate:modelValue":r[7]||=e=>X.ctaLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories`},null,512),[[b,X.ctaLink]])]),s(`label`,H,[r[20]||=m(`ترتیب نمایش`,-1),a(s(`input`,{"onUpdate:modelValue":r[8]||=e=>X.displayOrder=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[b,X.displayOrder,void 0,{number:!0}]])]),u(E,{modelValue:X.imageUrl,"onUpdate:modelValue":r[9]||=e=>X.imageUrl=e,label:`تصویر بنر`},null,8,[`modelValue`]),u(w,{modelValue:X.isActive,"onUpdate:modelValue":r[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-B7aEMvHg.js b/dist/assets/BaseEmptyState-Bzvl_pTa.js similarity index 92% rename from dist/assets/BaseEmptyState-B7aEMvHg.js rename to dist/assets/BaseEmptyState-Bzvl_pTa.js index 89e78cb..b545331 100644 --- a/dist/assets/BaseEmptyState-B7aEMvHg.js +++ b/dist/assets/BaseEmptyState-Bzvl_pTa.js @@ -1 +1 @@ -import{At as e,Dt as t,N as n,c as r,d as i,g as a,h as o,k as s,t as c,u as l}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{R as u}from"./index-BzcByePp.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(a({__name:`BaseEmptyState`,props:{icon:{default:`file`},title:{},description:{},compact:{type:Boolean}},emits:[`action`,`secondary`],setup(a){return(c,h)=>(s(),i(`div`,{class:t([`base-empty`,{"base-empty--compact":a.compact}])},[r(`div`,d,[o(u,{name:a.icon,size:a.compact?28:36},null,8,[`name`,`size`])]),r(`h3`,f,e(a.title),1),a.description?(s(),i(`p`,p,e(a.description),1)):l(``,!0),c.$slots.default||c.$slots.secondary?(s(),i(`div`,m,[n(c.$slots,`default`,{},void 0,!0),n(c.$slots,`secondary`,{},void 0,!0)])):l(``,!0)],2))}}),[[`__scopeId`,`data-v-47ea81e4`]]);export{h as t}; \ No newline at end of file +import{At as e,Dt as t,N as n,c as r,d as i,g as a,h as o,k as s,t as c,u as l}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{I as u}from"./index-SWzbcuqQ.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(a({__name:`BaseEmptyState`,props:{icon:{default:`file`},title:{},description:{},compact:{type:Boolean}},emits:[`action`,`secondary`],setup(a){return(c,h)=>(s(),i(`div`,{class:t([`base-empty`,{"base-empty--compact":a.compact}])},[r(`div`,d,[o(u,{name:a.icon,size:a.compact?28:36},null,8,[`name`,`size`])]),r(`h3`,f,e(a.title),1),a.description?(s(),i(`p`,p,e(a.description),1)):l(``,!0),c.$slots.default||c.$slots.secondary?(s(),i(`div`,m,[n(c.$slots,`default`,{},void 0,!0),n(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/BrandsView-C7Jx2472.js b/dist/assets/BrandsView-vL6Hgb4d.js similarity index 94% rename from dist/assets/BrandsView-C7Jx2472.js rename to dist/assets/BrandsView-vL6Hgb4d.js index c098e53..7aaf6e2 100644 --- a/dist/assets/BrandsView-C7Jx2472.js +++ b/dist/assets/BrandsView-vL6Hgb4d.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as _,f as v,t as y}from"./http-BjLkjdQu.js";import{H as b,p as x}from"./index-BzcByePp.js";import{t as S}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as C}from"./BaseSwitch-pJwnFBVo.js";import{t as w}from"./BaseEmptyState-B7aEMvHg.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=e([]),P=e(!0),F=e(!1),I=e(null),L=_(),R=o({name:``,slug:``,description:``,displayOrder:0,isActive:!0}),z=h(()=>I.value?`ویرایش برند`:`افزودن برند`);async function B(){P.value=!0;try{g.value=await x.list()}catch(e){L.error(e instanceof y?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 x.update(I.value,e):await x.create(e),F.value=!1,L.success(`ذخیره شد`),await B()}catch(e){L.error(e instanceof y?e.message:`ذخیره ناموفق بود`)}}return n(()=>{B()}),(e,n)=>(d(),c(`div`,T,[s(`header`,{class:`admin-page__head`},[n[6]||=s(`div`,null,[s(`h1`,null,`برندها`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:V},`افزودن برند`)]),P.value?(d(),f(S,{key:0,variant:`table`})):g.value.length?(d(),c(`table`,E,[n[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,[(d(!0),c(m,null,i(g.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,t(e.name),1),s(`td`,D,t(e.slug||`—`),1),s(`td`,null,t(e.productsCount??0),1),s(`td`,null,t(e.isActive?`بله`:`خیر`),1),s(`td`,null,[s(`button`,{type:`button`,class:`link`,onClick:t=>H(e)},`ویرایش`,8,O)])]))),128))])])):(d(),f(w,{key:1,title:`برندی ثبت نشده`})),u(b,{open:F.value,title:z.value,onClose:n[5]||=e=>F.value=!1},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!R.name.trim(),onClick:U},`ذخیره`,8,N)]),default:r(()=>[s(`label`,k,[n[8]||=p(`نام`,-1),a(s(`input`,{"onUpdate:modelValue":n[0]||=e=>R.name=e,class:`admin-input`},null,512),[[v,R.name]])]),s(`label`,A,[n[9]||=p(`شناسه لاتین`,-1),a(s(`input`,{"onUpdate:modelValue":n[1]||=e=>R.slug=e,class:`admin-input`,dir:`ltr`,placeholder:`مثلاً nademi-silk`},null,512),[[v,R.slug]])]),s(`label`,j,[n[10]||=p(`توضیح`,-1),a(s(`textarea`,{"onUpdate:modelValue":n[2]||=e=>R.description=e,class:`admin-input`,rows:`3`},null,512),[[v,R.description]])]),s(`label`,M,[n[11]||=p(`ترتیب`,-1),a(s(`input`,{"onUpdate:modelValue":n[3]||=e=>R.displayOrder=e,type:`number`,class:`admin-input`},null,512),[[v,R.displayOrder,void 0,{number:!0}]])]),u(C,{modelValue:R.isActive,"onUpdate:modelValue":n[4]||=e=>R.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-a6f53b6f`]]);export{P as default}; \ No newline at end of file +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as _,f as v,t as y}from"./http-BjLkjdQu.js";import{B as b,p as x}from"./index-SWzbcuqQ.js";import{t as S}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as C}from"./BaseSwitch-pJwnFBVo.js";import{t as w}from"./BaseEmptyState-Bzvl_pTa.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=e([]),P=e(!0),F=e(!1),I=e(null),L=_(),R=o({name:``,slug:``,description:``,displayOrder:0,isActive:!0}),z=h(()=>I.value?`ویرایش برند`:`افزودن برند`);async function B(){P.value=!0;try{g.value=await x.list()}catch(e){L.error(e instanceof y?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 x.update(I.value,e):await x.create(e),F.value=!1,L.success(`ذخیره شد`),await B()}catch(e){L.error(e instanceof y?e.message:`ذخیره ناموفق بود`)}}return n(()=>{B()}),(e,n)=>(d(),c(`div`,T,[s(`header`,{class:`admin-page__head`},[n[6]||=s(`div`,null,[s(`h1`,null,`برندها`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:V},`افزودن برند`)]),P.value?(d(),f(S,{key:0,variant:`table`})):g.value.length?(d(),c(`table`,E,[n[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,[(d(!0),c(m,null,i(g.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,t(e.name),1),s(`td`,D,t(e.slug||`—`),1),s(`td`,null,t(e.productsCount??0),1),s(`td`,null,t(e.isActive?`بله`:`خیر`),1),s(`td`,null,[s(`button`,{type:`button`,class:`link`,onClick:t=>H(e)},`ویرایش`,8,O)])]))),128))])])):(d(),f(w,{key:1,title:`برندی ثبت نشده`})),u(b,{open:F.value,title:z.value,onClose:n[5]||=e=>F.value=!1},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!R.name.trim(),onClick:U},`ذخیره`,8,N)]),default:r(()=>[s(`label`,k,[n[8]||=p(`نام`,-1),a(s(`input`,{"onUpdate:modelValue":n[0]||=e=>R.name=e,class:`admin-input`},null,512),[[v,R.name]])]),s(`label`,A,[n[9]||=p(`شناسه لاتین`,-1),a(s(`input`,{"onUpdate:modelValue":n[1]||=e=>R.slug=e,class:`admin-input`,dir:`ltr`,placeholder:`مثلاً nademi-silk`},null,512),[[v,R.slug]])]),s(`label`,j,[n[10]||=p(`توضیح`,-1),a(s(`textarea`,{"onUpdate:modelValue":n[2]||=e=>R.description=e,class:`admin-input`,rows:`3`},null,512),[[v,R.description]])]),s(`label`,M,[n[11]||=p(`ترتیب`,-1),a(s(`input`,{"onUpdate:modelValue":n[3]||=e=>R.displayOrder=e,type:`number`,class:`admin-input`},null,512),[[v,R.displayOrder,void 0,{number:!0}]])]),u(C,{modelValue:R.isActive,"onUpdate:modelValue":n[4]||=e=>R.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-a6f53b6f`]]);export{P as default}; \ No newline at end of file diff --git a/dist/assets/CashPaymentsView-BDQ_HOSo.js b/dist/assets/CashPaymentsView-CBMJOEPX.js similarity index 95% rename from dist/assets/CashPaymentsView-BDQ_HOSo.js rename to dist/assets/CashPaymentsView-CBMJOEPX.js index a29052e..c40789b 100644 --- a/dist/assets/CashPaymentsView-BDQ_HOSo.js +++ b/dist/assets/CashPaymentsView-CBMJOEPX.js @@ -1 +1 @@ -import{$ as e,At as t,Dt as n,E as r,M as i,U as a,c as o,d as s,g as ee,h as c,k as l,l as u,r as d,s as te,st as f,t as p,u as m}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as re,t as h}from"./http-BjLkjdQu.js";import{R as g,T as ie,i as _,m as v,o as y,z as ae}from"./index-BzcByePp.js";import{t as oe}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as se}from"./AdminSelect-8XDtPu3U.js";import{t as ce}from"./AdminImageLightbox-CE3ZJ5-o.js";import{n as b,t as x}from"./adminLabels-Cz9ccm1Z.js";var le={class:`cash-payments-page`},ue={class:`cash-payments-page__filters admin-card`},de={class:`cash-payments-page__search`},fe={class:`cash-payments-page__table admin-card desktop-only`},S={class:`admin-table-wrap`},C={class:`admin-table`},w={dir:`ltr`},T=[`onClick`],E={key:1},D={key:0,class:`admin-action-group`},O=[`disabled`,`onClick`],k=[`disabled`,`onClick`],A={key:1,class:`admin-action-group`},j=[`disabled`,`onClick`],M={key:2},N={class:`compact-only admin-card-list`},P={class:`admin-card-item__header`},F={class:`admin-card-item__title`},I={class:`admin-card-item__meta`},pe={key:0},L={dir:`ltr`},R=[`onClick`],z={key:1,class:`admin-card-item__actions`},B=[`disabled`,`onClick`],me=[`disabled`,`onClick`],he=[`disabled`,`onClick`],V=p(ee({__name:`CashPaymentsView`,setup(ee){let p=ae(),V=e([]),H=e(p.query.order??``),U=e(`all`),W=e(!0),G=ne(),K=e(null),q=e(!1),J=e(``);function Y(e){J.value=e,q.value=!0}let ge=[{value:`all`,label:`همه وضعیت‌ها`},{value:`pending_review`,label:`در انتظار تأیید`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`},{value:`expired`,label:`منقضی‌شده`}],X=te(()=>{let e=V.value;U.value!==`all`&&(e=e.filter(e=>e.status===U.value));let t=H.value.trim();return t&&(e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t)||e.trackingCode.includes(t))),e});async function _e(){W.value=!0;try{V.value=await v.list()}catch(e){G.error(e instanceof h?e.message:`بارگذاری پرداخت‌ها انجام نشد.`)}finally{W.value=!1}}r(()=>{_e()});async function Z(e){K.value=e.id;try{let t=await v.updateStatus(e.id,{status:`approved`}),n=V.value.findIndex(t=>t.id===e.id);n!==-1&&(V.value[n]={...V.value[n],...t}),G.success(`پرداخت سفارش ${e.orderNumber} تأیید شد.`)}catch(e){G.error(e instanceof h?e.message:`تأیید پرداخت انجام نشد.`)}finally{K.value=null}}async function Q(e){K.value=e.id;try{await ie.updateStatus(e.orderId,{status:`final_approved`,note:`تأیید نهایی پس از تأیید رسید نقدی`}),G.success(`سفارش ${e.orderNumber} تأیید نهایی شد.`)}catch(e){G.error(e instanceof h?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=null}}async function $(e){K.value=e.id;try{let t=await v.updateStatus(e.id,{status:`rejected`}),n=V.value.findIndex(t=>t.id===e.id);n!==-1&&(V.value[n]={...V.value[n],...t}),G.warning(`پرداخت سفارش ${e.orderNumber} رد شد.`)}catch(e){G.error(e instanceof h?e.message:`رد پرداخت انجام نشد.`)}finally{K.value=null}}return(e,r)=>(l(),s(`div`,le,[r[4]||=o(`div`,{class:`admin-page-header`},[o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`پرداخت‌های نقدی`)])],-1),o(`div`,ue,[o(`div`,de,[c(g,{name:`search`,size:18}),a(o(`input`,{"onUpdate:modelValue":r[0]||=e=>H.value=e,type:`search`,class:`cash-payments-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، پیگیری...`},null,512),[[re,H.value]])]),c(se,{modelValue:U.value,"onUpdate:modelValue":r[1]||=e=>U.value=e,class:`cash-payments-page__status-select`,"aria-label":`فیلتر وضعیت پرداخت`,options:ge},null,8,[`modelValue`])]),W.value?(l(),u(oe,{key:0,variant:`table`})):(l(),s(d,{key:1},[o(`div`,fe,[o(`div`,S,[o(`table`,C,[r[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,`رسید`),o(`th`,null,`عملیات`)])],-1),o(`tbody`,null,[(l(!0),s(d,null,i(X.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,t(e.orderNumber),1),o(`td`,null,t(e.customerName),1),o(`td`,null,t(f(_)(e.amount)),1),o(`td`,null,t(e.paidAmount?f(_)(e.paidAmount):`—`),1),o(`td`,null,t(e.transferDate?f(y)(e.transferDate):`—`),1),o(`td`,w,t(e.trackingCode),1),o(`td`,null,t(f(y)(e.expiresAt)),1),o(`td`,null,[o(`span`,{class:n([`admin-badge`,f(x)[e.status]])},t(f(b)[e.status]),3)]),o(`td`,null,[e.receiptImage?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Y(e.receiptImage)},` مشاهده `,8,T)):(l(),s(`span`,E,`—`))]),o(`td`,null,[e.status===`pending_review`?(l(),s(`div`,D,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Z(e)},` تأیید `,8,O),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===e.id,onClick:t=>$(e)},` رد `,8,k)])):e.status===`approved`?(l(),s(`div`,A,[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Q(e)},` تأیید نهایی سفارش `,8,j)])):(l(),s(`span`,M,`—`))])]))),128))])])])]),o(`div`,N,[(l(!0),s(d,null,i(X.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,P,[o(`p`,F,t(e.orderNumber),1),o(`span`,{class:n([`admin-badge`,f(x)[e.status]])},t(f(b)[e.status]),3)]),o(`div`,I,[o(`span`,null,t(e.customerName),1),o(`span`,null,t(f(_)(e.amount)),1),e.paidAmount==null?m(``,!0):(l(),s(`span`,pe,`پرداختی: `+t(f(_)(e.paidAmount)),1)),o(`span`,L,t(e.trackingCode),1)]),e.receiptImage?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs cash-payments-page__receipt-btn`,onClick:t=>Y(e.receiptImage)},` مشاهده تصویر رسید `,8,R)):m(``,!0),e.status===`pending_review`||e.status===`approved`?(l(),s(`div`,z,[e.status===`pending_review`?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Z(e)},` تأیید `,8,B)):m(``,!0),e.status===`pending_review`?(l(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===e.id,onClick:t=>$(e)},` رد `,8,me)):m(``,!0),e.status===`approved`?(l(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Q(e)},` تأیید نهایی سفارش `,8,he)):m(``,!0)])):m(``,!0)]))),128))])],64)),J.value?(l(),u(ce,{key:2,modelValue:q.value,"onUpdate:modelValue":r[2]||=e=>q.value=e,src:J.value,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):m(``,!0)]))}}),[[`__scopeId`,`data-v-367bdef1`]]);export{V as default}; \ No newline at end of file +import{$ as e,At as t,Dt as n,E as r,M as i,U as a,c as o,d as s,g as ee,h as c,k as l,l as u,r as d,s as te,st as f,t as p,u as m}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as re,t as h}from"./http-BjLkjdQu.js";import{I as g,L as ie,i as _,m as v,o as y,w as ae}from"./index-SWzbcuqQ.js";import{t as oe}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as se}from"./AdminSelect-6a7SFr9x.js";import{t as ce}from"./AdminImageLightbox-CE3ZJ5-o.js";import{n as b,t as x}from"./adminLabels-Cz9ccm1Z.js";var le={class:`cash-payments-page`},ue={class:`cash-payments-page__filters admin-card`},de={class:`cash-payments-page__search`},fe={class:`cash-payments-page__table admin-card desktop-only`},S={class:`admin-table-wrap`},C={class:`admin-table`},w={dir:`ltr`},T=[`onClick`],E={key:1},D={key:0,class:`admin-action-group`},O=[`disabled`,`onClick`],k=[`disabled`,`onClick`],A={key:1,class:`admin-action-group`},j=[`disabled`,`onClick`],M={key:2},N={class:`compact-only admin-card-list`},P={class:`admin-card-item__header`},F={class:`admin-card-item__title`},I={class:`admin-card-item__meta`},pe={key:0},L={dir:`ltr`},R=[`onClick`],z={key:1,class:`admin-card-item__actions`},B=[`disabled`,`onClick`],me=[`disabled`,`onClick`],he=[`disabled`,`onClick`],V=p(ee({__name:`CashPaymentsView`,setup(ee){let p=ie(),V=e([]),H=e(p.query.order??``),U=e(`all`),W=e(!0),G=ne(),K=e(null),q=e(!1),J=e(``);function Y(e){J.value=e,q.value=!0}let ge=[{value:`all`,label:`همه وضعیت‌ها`},{value:`pending_review`,label:`در انتظار تأیید`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`},{value:`expired`,label:`منقضی‌شده`}],X=te(()=>{let e=V.value;U.value!==`all`&&(e=e.filter(e=>e.status===U.value));let t=H.value.trim();return t&&(e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t)||e.trackingCode.includes(t))),e});async function _e(){W.value=!0;try{V.value=await v.list()}catch(e){G.error(e instanceof h?e.message:`بارگذاری پرداخت‌ها انجام نشد.`)}finally{W.value=!1}}r(()=>{_e()});async function Z(e){K.value=e.id;try{let t=await v.updateStatus(e.id,{status:`approved`}),n=V.value.findIndex(t=>t.id===e.id);n!==-1&&(V.value[n]={...V.value[n],...t}),G.success(`پرداخت سفارش ${e.orderNumber} تأیید شد.`)}catch(e){G.error(e instanceof h?e.message:`تأیید پرداخت انجام نشد.`)}finally{K.value=null}}async function Q(e){K.value=e.id;try{await ae.updateStatus(e.orderId,{status:`final_approved`,note:`تأیید نهایی پس از تأیید رسید نقدی`}),G.success(`سفارش ${e.orderNumber} تأیید نهایی شد.`)}catch(e){G.error(e instanceof h?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=null}}async function $(e){K.value=e.id;try{let t=await v.updateStatus(e.id,{status:`rejected`}),n=V.value.findIndex(t=>t.id===e.id);n!==-1&&(V.value[n]={...V.value[n],...t}),G.warning(`پرداخت سفارش ${e.orderNumber} رد شد.`)}catch(e){G.error(e instanceof h?e.message:`رد پرداخت انجام نشد.`)}finally{K.value=null}}return(e,r)=>(l(),s(`div`,le,[r[4]||=o(`div`,{class:`admin-page-header`},[o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`پرداخت‌های نقدی`)])],-1),o(`div`,ue,[o(`div`,de,[c(g,{name:`search`,size:18}),a(o(`input`,{"onUpdate:modelValue":r[0]||=e=>H.value=e,type:`search`,class:`cash-payments-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، پیگیری...`},null,512),[[re,H.value]])]),c(se,{modelValue:U.value,"onUpdate:modelValue":r[1]||=e=>U.value=e,class:`cash-payments-page__status-select`,"aria-label":`فیلتر وضعیت پرداخت`,options:ge},null,8,[`modelValue`])]),W.value?(l(),u(oe,{key:0,variant:`table`})):(l(),s(d,{key:1},[o(`div`,fe,[o(`div`,S,[o(`table`,C,[r[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,`رسید`),o(`th`,null,`عملیات`)])],-1),o(`tbody`,null,[(l(!0),s(d,null,i(X.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,t(e.orderNumber),1),o(`td`,null,t(e.customerName),1),o(`td`,null,t(f(_)(e.amount)),1),o(`td`,null,t(e.paidAmount?f(_)(e.paidAmount):`—`),1),o(`td`,null,t(e.transferDate?f(y)(e.transferDate):`—`),1),o(`td`,w,t(e.trackingCode),1),o(`td`,null,t(f(y)(e.expiresAt)),1),o(`td`,null,[o(`span`,{class:n([`admin-badge`,f(x)[e.status]])},t(f(b)[e.status]),3)]),o(`td`,null,[e.receiptImage?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Y(e.receiptImage)},` مشاهده `,8,T)):(l(),s(`span`,E,`—`))]),o(`td`,null,[e.status===`pending_review`?(l(),s(`div`,D,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Z(e)},` تأیید `,8,O),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===e.id,onClick:t=>$(e)},` رد `,8,k)])):e.status===`approved`?(l(),s(`div`,A,[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Q(e)},` تأیید نهایی سفارش `,8,j)])):(l(),s(`span`,M,`—`))])]))),128))])])])]),o(`div`,N,[(l(!0),s(d,null,i(X.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,P,[o(`p`,F,t(e.orderNumber),1),o(`span`,{class:n([`admin-badge`,f(x)[e.status]])},t(f(b)[e.status]),3)]),o(`div`,I,[o(`span`,null,t(e.customerName),1),o(`span`,null,t(f(_)(e.amount)),1),e.paidAmount==null?m(``,!0):(l(),s(`span`,pe,`پرداختی: `+t(f(_)(e.paidAmount)),1)),o(`span`,L,t(e.trackingCode),1)]),e.receiptImage?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs cash-payments-page__receipt-btn`,onClick:t=>Y(e.receiptImage)},` مشاهده تصویر رسید `,8,R)):m(``,!0),e.status===`pending_review`||e.status===`approved`?(l(),s(`div`,z,[e.status===`pending_review`?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Z(e)},` تأیید `,8,B)):m(``,!0),e.status===`pending_review`?(l(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===e.id,onClick:t=>$(e)},` رد `,8,me)):m(``,!0),e.status===`approved`?(l(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===e.id,onClick:t=>Q(e)},` تأیید نهایی سفارش `,8,he)):m(``,!0)])):m(``,!0)]))),128))])],64)),J.value?(l(),u(ce,{key:2,modelValue:q.value,"onUpdate:modelValue":r[2]||=e=>q.value=e,src:J.value,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):m(``,!0)]))}}),[[`__scopeId`,`data-v-367bdef1`]]);export{V as default}; \ No newline at end of file diff --git a/dist/assets/CatalogRequestsView-DXqH8XSn.js b/dist/assets/CatalogRequestsView-BEaJWR_M.js similarity index 94% rename from dist/assets/CatalogRequestsView-DXqH8XSn.js rename to dist/assets/CatalogRequestsView-BEaJWR_M.js index 8678e9d..6dca6e1 100644 --- a/dist/assets/CatalogRequestsView-DXqH8XSn.js +++ b/dist/assets/CatalogRequestsView-BEaJWR_M.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,M as r,c as i,d as a,g as o,h as s,k as c,l,m as u,r as d,st as f,t as p,u as m}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as h,t as g}from"./http-BjLkjdQu.js";import{h as _,o as v}from"./index-BzcByePp.js";import{t as y}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as b}from"./BaseEmptyState-B7aEMvHg.js";import{t as x}from"./AdminSelect-8XDtPu3U.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(o({__name:`CatalogRequestsView`,setup(o){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=e([]),I=e(``),L=e(!0),R=e(null),z=h();async function B(){L.value=!0;try{F.value=await _.list(I.value||void 0)}catch(e){z.error(e instanceof g?e.message:`بارگذاری انجام نشد`)}finally{L.value=!1}}async function V(e,t){try{await _.updateStatus(e,t),z.success(`وضعیت به‌روز شد`),await B()}catch(e){z.error(e instanceof g?e.message:`به‌روزرسانی ناموفق بود`)}}async function H(e,t){if(!R.value){R.value=e;try{await _.updateHolder(e,{holderType:t}),z.success(`محل نگهداری به‌روز شد`),await B()}catch(e){z.error(e instanceof g?e.message:`به‌روزرسانی محل ناموفق بود`)}finally{R.value=null}}}function U(e){return P[e]??e}return n(()=>{B()}),(e,n)=>(c(),a(`div`,S,[i(`header`,C,[n[1]||=i(`div`,null,[i(`h1`,null,`درخواست کالیته فیزیکی`),i(`p`,null,`بررسی، گردش وضعیت و محل نگهداری اقلام`)],-1),s(x,{modelValue:I.value,"onUpdate:modelValue":[n[0]||=e=>I.value=e,B],options:p},null,8,[`modelValue`])]),L.value?(c(),l(y,{key:0,variant:`cards`})):F.value.length?(c(!0),a(d,{key:2},r(F.value,e=>(c(),a(`div`,{key:e.id,class:`request-card`},[i(`div`,w,[i(`div`,null,[i(`strong`,null,t(e.customerName),1),i(`span`,T,t(e.customerPhone),1),i(`span`,E,t(f(N)[e.status]??e.status),1)]),s(x,{"model-value":e.status,options:p.filter(e=>e.value),"onUpdate:modelValue":t=>V(e.id,String(t))},null,8,[`model-value`,`options`,`onUpdate:modelValue`])]),e.note?(c(),a(`p`,D,t(e.note),1)):m(``,!0),i(`table`,O,[n[2]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`محصول`),i(`th`,null,`کد`),i(`th`,null,`تعداد`),i(`th`,null,`محل`)])],-1),i(`tbody`,null,[(c(!0),a(d,null,r(e.items,e=>(c(),a(`tr`,{key:e.id},[i(`td`,null,t(e.productName),1),i(`td`,k,t(e.productCode),1),i(`td`,null,t(e.quantity),1),i(`td`,null,[s(x,{"model-value":e.holderType,options:M,"onUpdate:modelValue":t=>H(e.id,String(t))},null,8,[`model-value`,`onUpdate:modelValue`]),e.movements?.length?(c(),a(`ul`,A,[(c(!0),a(d,null,r(e.movements,e=>(c(),a(`li`,{key:e.id},[u(t(U(e.fromHolder))+` → `+t(U(e.toHolder))+` `,1),i(`span`,j,t(f(v)(e.movedAt)),1)]))),128))])):m(``,!0)])]))),128))])])]))),128)):(c(),l(b,{key:1,title:`درخواستی نیست`}))]))}}),[[`__scopeId`,`data-v-747d8f88`]]);export{M as default}; \ No newline at end of file +import{$ as e,At as t,E as n,M as r,c as i,d as a,g as o,h as s,k as c,l,m as u,r as d,st as f,t as p,u as m}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as h,t as g}from"./http-BjLkjdQu.js";import{h as _,o as v}from"./index-SWzbcuqQ.js";import{t as y}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as b}from"./BaseEmptyState-Bzvl_pTa.js";import{t as x}from"./AdminSelect-6a7SFr9x.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(o({__name:`CatalogRequestsView`,setup(o){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=e([]),I=e(``),L=e(!0),R=e(null),z=h();async function B(){L.value=!0;try{F.value=await _.list(I.value||void 0)}catch(e){z.error(e instanceof g?e.message:`بارگذاری انجام نشد`)}finally{L.value=!1}}async function V(e,t){try{await _.updateStatus(e,t),z.success(`وضعیت به‌روز شد`),await B()}catch(e){z.error(e instanceof g?e.message:`به‌روزرسانی ناموفق بود`)}}async function H(e,t){if(!R.value){R.value=e;try{await _.updateHolder(e,{holderType:t}),z.success(`محل نگهداری به‌روز شد`),await B()}catch(e){z.error(e instanceof g?e.message:`به‌روزرسانی محل ناموفق بود`)}finally{R.value=null}}}function U(e){return P[e]??e}return n(()=>{B()}),(e,n)=>(c(),a(`div`,S,[i(`header`,C,[n[1]||=i(`div`,null,[i(`h1`,null,`درخواست کالیته فیزیکی`),i(`p`,null,`بررسی، گردش وضعیت و محل نگهداری اقلام`)],-1),s(x,{modelValue:I.value,"onUpdate:modelValue":[n[0]||=e=>I.value=e,B],options:p},null,8,[`modelValue`])]),L.value?(c(),l(y,{key:0,variant:`cards`})):F.value.length?(c(!0),a(d,{key:2},r(F.value,e=>(c(),a(`div`,{key:e.id,class:`request-card`},[i(`div`,w,[i(`div`,null,[i(`strong`,null,t(e.customerName),1),i(`span`,T,t(e.customerPhone),1),i(`span`,E,t(f(N)[e.status]??e.status),1)]),s(x,{"model-value":e.status,options:p.filter(e=>e.value),"onUpdate:modelValue":t=>V(e.id,String(t))},null,8,[`model-value`,`options`,`onUpdate:modelValue`])]),e.note?(c(),a(`p`,D,t(e.note),1)):m(``,!0),i(`table`,O,[n[2]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`محصول`),i(`th`,null,`کد`),i(`th`,null,`تعداد`),i(`th`,null,`محل`)])],-1),i(`tbody`,null,[(c(!0),a(d,null,r(e.items,e=>(c(),a(`tr`,{key:e.id},[i(`td`,null,t(e.productName),1),i(`td`,k,t(e.productCode),1),i(`td`,null,t(e.quantity),1),i(`td`,null,[s(x,{"model-value":e.holderType,options:M,"onUpdate:modelValue":t=>H(e.id,String(t))},null,8,[`model-value`,`onUpdate:modelValue`]),e.movements?.length?(c(),a(`ul`,A,[(c(!0),a(d,null,r(e.movements,e=>(c(),a(`li`,{key:e.id},[u(t(U(e.fromHolder))+` → `+t(U(e.toHolder))+` `,1),i(`span`,j,t(f(v)(e.movedAt)),1)]))),128))])):m(``,!0)])]))),128))])])]))),128)):(c(),l(b,{key:1,title:`درخواستی نیست`}))]))}}),[[`__scopeId`,`data-v-747d8f88`]]);export{M as default}; \ No newline at end of file diff --git a/dist/assets/CatalogsView-CErlF6z4.js b/dist/assets/CatalogsView-CErlF6z4.js deleted file mode 100644 index 1454bd9..0000000 --- a/dist/assets/CatalogsView-CErlF6z4.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,Dt as n,E as r,H as i,M as a,U as o,Z as ee,c as s,d as c,g as te,h as l,k as u,kt as d,l as f,m as p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as v,m as re,t as y}from"./http-BjLkjdQu.js";import{H as ie,R as ae,g as b,v as oe}from"./index-BzcByePp.js";import{t as se}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as ce}from"./BaseSwitch-pJwnFBVo.js";import{t as le}from"./BaseEmptyState-B7aEMvHg.js";import{t as ue}from"./AdminImagePicker-DLFdrgWU.js";import{t as x}from"./AdminSelect-8XDtPu3U.js";import{t as S}from"./ActiveSwitchCell-Mj6U4GtB.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=e([]),N=e([]),P=e(``),F=e(`all`),I=e(!0),L=e(null),R=e(null),z=e(``),B=e(!1),V=ne(),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=ee(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(),oe.list()]);g.value=e,N.value=t}catch(e){V.error(e instanceof y?e.message:`بارگذاری کالیته‌ها انجام نشد.`)}finally{I.value=!1}}r(()=>{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 y?e.message:`ذخیره کالیته انجام نشد.`)}finally{B.value=!1}}async function $(e,t){await b.setActive(e,t)}function je(){P.value=``,F.value=`all`}return(e,r)=>(u(),c(`div`,de,[s(`div`,{class:`admin-page-header`},[r[8]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`کالیته‌ها`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن کالیته `)]),s(`div`,fe,[s(`div`,pe,[l(ae,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":r[0]||=e=>P.value=e,type:`search`,class:`catalogs-page__search-input`,placeholder:`جستجو بر اساس کد یا نام...`},null,512),[[v,P.value]])]),l(x,{modelValue:F.value,"onUpdate:modelValue":r[1]||=e=>F.value=e,class:`catalogs-page__company-filter`,"aria-label":`فیلتر شرکت`,options:De.value},null,8,[`modelValue`,`options`])]),I.value?(u(),f(se,{key:0,variant:`table`})):q.value.length?(u(),c(`div`,me,[s(`div`,he,[s(`table`,ge,[r[9]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تصویر`),s(`th`,null,`کد`),s(`th`,null,`نام کالیته`),s(`th`,null,`شرکت`),s(`th`,{class:`numeric`},`ترتیب`),s(`th`,{class:`numeric`},`تعداد محصول`),s(`th`,{class:`status`},`وضعیت`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(u(!0),c(m,null,a(q.value,e=>(u(),c(`tr`,{key:e.id},[s(`td`,null,[s(`span`,{class:n([`catalog-thumb`,{"catalog-thumb--empty":!e.imageUrl}]),style:d(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6)]),s(`td`,null,t(e.code),1),s(`td`,null,t(e.name),1),s(`td`,null,t(e.companyName),1),s(`td`,_e,t(e.displayOrder),1),s(`td`,ve,t(e.productCount),1),s(`td`,ye,[l(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`])]),s(`td`,be,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,xe)])]))),128))])])])])):(u(),f(le,{key:1,class:`admin-card`,icon:`catalogs`,title:K.value?`نتیجه‌ای یافت نشد`:`کالیته‌ای ثبت نشده`,description:K.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کالیته را ثبت کنید.`},{default:i(()=>[K.value?(u(),c(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:je},` پاک کردن فیلترها `)):(u(),c(`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?(u(),c(`div`,C,[(u(!0),c(m,null,a(q.value,e=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,w,[s(`span`,{class:n([`catalog-thumb`,{"catalog-thumb--empty":!e.imageUrl}]),style:d(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6),s(`p`,T,`کالیته `+t(e.code)+` — `+t(e.name),1),l(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`])]),s(`div`,E,[s(`span`,null,t(e.companyName),1),s(`span`,null,t(e.productCount)+` محصول`,1),s(`span`,null,`ترتیب: `+t(e.displayOrder),1)]),s(`div`,D,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,O)])]))),128))])):_(``,!0),l(ie,{open:ke.value,title:W.value,size:`lg`,onClose:Z},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!G.value||B.value,onClick:Q},t(L.value===`edit`?`ذخیره تغییرات`:`ثبت کالیته`),9,Ee)]),default:i(()=>[s(`form`,{class:`admin-form`,onSubmit:re(Q,[`prevent`])},[z.value?(u(),c(`p`,k,t(z.value),1)):_(``,!0),s(`div`,A,[r[10]||=s(`label`,null,[p(`شرکت `),s(`span`,{class:`admin-form__required`},`*`)],-1),l(x,{modelValue:U.companyId,"onUpdate:modelValue":r[2]||=e=>U.companyId=e,block:``,"aria-label":`انتخاب شرکت`,placeholder:`انتخاب شرکت`,options:Oe.value},null,8,[`modelValue`,`options`])]),s(`div`,j,[s(`div`,M,[r[11]||=s(`label`,{for:`catalog-code`},[p(`کد کالیته `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`catalog-code`,"onUpdate:modelValue":r[3]||=e=>U.code=e,type:`text`,class:`admin-input`,placeholder:`377`},null,512),[[v,U.code]])]),s(`div`,Se,[r[12]||=s(`label`,{for:`catalog-name`},[p(`نام کالیته `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`catalog-name`,"onUpdate:modelValue":r[4]||=e=>U.name=e,type:`text`,class:`admin-input`},null,512),[[v,U.name]])])]),s(`div`,Ce,[s(`div`,we,[r[13]||=s(`label`,{for:`catalog-order`},`ترتیب نمایش`,-1),o(s(`input`,{id:`catalog-order`,"onUpdate:modelValue":r[5]||=e=>U.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[v,U.displayOrder,void 0,{number:!0}]])]),s(`div`,Te,[l(ce,{modelValue:U.isActive,"onUpdate:modelValue":r[6]||=e=>U.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])]),l(ue,{modelValue:U.imageUrl,"onUpdate:modelValue":r[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-yskXIlwQ.css b/dist/assets/CatalogsView-yskXIlwQ.css deleted file mode 100644 index 520b063..0000000 --- a/dist/assets/CatalogsView-yskXIlwQ.css +++ /dev/null @@ -1 +0,0 @@ -.catalogs-page__filters[data-v-4fb827ad]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.catalogs-page__search[data-v-4fb827ad]{min-width:200px;color:var(--color-text-muted);flex:1;align-items:center;gap:10px;display:flex}.catalogs-page__search-input[data-v-4fb827ad]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.catalogs-page__company-filter[data-v-4fb827ad]{width:min(220px,100%)}.catalogs-page__table[data-v-4fb827ad]{overflow:hidden}.catalog-thumb[data-v-4fb827ad]{background:#e8eceb 50%/cover no-repeat;border-radius:8px;width:72px;height:44px;display:block}.catalog-thumb--empty[data-v-4fb827ad]{background:#eef1f0} diff --git a/dist/assets/CategoriesView-D_1HbWj9.js b/dist/assets/CategoriesView-DB_2mVA7.js similarity index 98% rename from dist/assets/CategoriesView-D_1HbWj9.js rename to dist/assets/CategoriesView-DB_2mVA7.js index a684f59..54ee1b7 100644 --- a/dist/assets/CategoriesView-D_1HbWj9.js +++ b/dist/assets/CategoriesView-DB_2mVA7.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ee,f as v,t as y}from"./http-BjLkjdQu.js";import{D as b,U as x}from"./index-BzcByePp.js";import{t as te}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as S}from"./BaseSwitch-pJwnFBVo.js";import{t as C}from"./AdminImagePicker-DLFdrgWU.js";import{t as w}from"./AdminSelect-8XDtPu3U.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 t=e,n={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`},r=h(()=>n[t.name]);return(t,n)=>(d(),c(`span`,T,[r.value?(d(),f(x,{key:0,icon:r.value,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`icon`,`size`,`stroke-width`,`color`])):e.name===`shirt`?(d(),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`},[...n[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`?(d(),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`},[...n[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`?(d(),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`},[...n[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`?(d(),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`},[...n[3]||=[p(``,5)]],8,k)):e.name===`composition`?(d(),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`},[...n[4]||=[s(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,A)):e.name===`weave`?(d(),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`},[...n[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=e([]),g=e([]),x=o({}),T=e(!0),E=e(!1),D=ee(),O=e(!1),k=e(!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=o({id:``,title:``,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0}),q=o({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 x||(x[t]=null);for(let t of Object.keys(x))e.includes(t)||delete x[t]}async function $(){T.value=!0;try{let e=await b.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(x))x[e]=t[e]??null}catch(e){D.error(e instanceof y?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}),x[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}),x[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 x[e]}function Te(e){if(g.value.length<=1){D.error(`حداقل یک دسته فصل لازم است.`);return}g.value=g.value.filter(t=>t.id!==e),delete x[e]}async function Ee(){E.value=!0;try{let e={};for(let[t,n]of Object.entries(x))n&&(e[t]=n);await b.update({categoryDefsJson:{usage:p.value,seasons:g.value},categoryImagesJson:e}),D.success(`دسته‌بندی‌ها ذخیره شد.`),await $()}catch(e){D.error(e instanceof y?e.message:`ذخیره دسته‌بندی‌ها ناموفق بود.`)}finally{E.value=!1}}return n(()=>{$()}),(e,n)=>(d(),c(`div`,ne,[s(`div`,re,[n[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},t(E.value?`در حال ذخیره...`:`ذخیره تغییرات`),9,ie)]),T.value?(d(),f(te,{key:0,variant:`cards`})):(d(),c(`div`,ae,[s(`section`,oe,[s(`div`,se,[s(`div`,null,[n[9]||=s(`h2`,null,`بر اساس کاربرد`,-1),s(`p`,null,t(p.value.length)+` دسته برای فیلتر محصول در اپ کاربر`,1)]),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[0]||=e=>O.value=!O.value},t(O.value?`بستن فرم`:`+ افزودن دسته`),1)]),O.value?(d(),c(`div`,ce,[a(s(`input`,{"onUpdate:modelValue":n[1]||=e=>K.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً پارچه‌های مانتویی)`},null,512),[[v,K.title]]),a(s(`input`,{"onUpdate:modelValue":n[2]||=e=>K.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً mantle)`},null,512),[[v,K.id]]),a(s(`input`,{"onUpdate:modelValue":n[3]||=e=>K.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,512),[[v,K.subtitle]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Se},`ثبت در لیست`)])):_(``,!0),p.value.length?(d(),c(`div`,ue,[(d(!0),c(m,null,i(p.value,e=>(d(),c(`article`,{key:e.id,class:`category-row`},[u(C,{"model-value":x[e.id],"onUpdate:modelValue":t=>x[e.id]=t},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,N,[s(`div`,P,[a(s(`input`,{"onUpdate:modelValue":t=>e.title=t,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,F),[[v,e.title]]),u(S,{modelValue:e.showTitle,"onUpdate:modelValue":t=>e.showTitle=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,I,[a(s(`input`,{"onUpdate:modelValue":t=>e.subtitle=t,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,8,L),[[v,e.subtitle]]),u(S,{modelValue:e.showSubtitle,"onUpdate:modelValue":t=>e.showSubtitle=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,R,[u(w,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t,options:A,"aria-label":`آیکون`,block:``},{"option-leading":r(({option:e})=>[e?(d(),f(M,{key:0,name:e.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:e.showIcon,"onUpdate:modelValue":t=>e.showIcon=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`p`,z,t(e.id),1)]),s(`button`,{type:`button`,class:`category-row__remove`,onClick:t=>we(e.id)},`حذف`,8,B)]))),128))])):(d(),c(`p`,le,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))]),s(`section`,V,[s(`div`,H,[s(`div`,null,[n[10]||=s(`h2`,null,`بر اساس فصل`,-1),s(`p`,null,t(g.value.length)+` دسته فصلی برای فیلتر محصول`,1)]),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[4]||=e=>k.value=!k.value},t(k.value?`بستن فرم`:`+ افزودن دسته`),1)]),k.value?(d(),c(`div`,U,[a(s(`input`,{"onUpdate:modelValue":n[5]||=e=>q.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً بهاره)`},null,512),[[v,q.title]]),a(s(`input`,{"onUpdate:modelValue":n[6]||=e=>q.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً spring)`},null,512),[[v,q.id]]),a(s(`input`,{"onUpdate:modelValue":n[7]||=e=>q.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,512),[[v,q.description]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Ce},`ثبت در لیست`)])):_(``,!0),g.value.length?(d(),c(`div`,fe,[(d(!0),c(m,null,i(g.value,e=>(d(),c(`article`,{key:e.id,class:`category-row`},[u(C,{"model-value":x[e.id],"onUpdate:modelValue":t=>x[e.id]=t},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,pe,[s(`div`,W,[a(s(`input`,{"onUpdate:modelValue":t=>e.title=t,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,me),[[v,e.title]]),u(S,{modelValue:e.showTitle,"onUpdate:modelValue":t=>e.showTitle=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,he,[a(s(`input`,{"onUpdate:modelValue":t=>e.description=t,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,8,ge),[[v,e.description]]),u(S,{modelValue:e.showDescription,"onUpdate:modelValue":t=>e.showDescription=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,_e,[a(s(`input`,{"onUpdate:modelValue":t=>e.ctaLabel=t,class:`admin-input`,type:`text`,placeholder:`متن لینک (مشاهده محصولات)`},null,8,ve),[[v,e.ctaLabel]]),u(S,{modelValue:e.showCta,"onUpdate:modelValue":t=>e.showCta=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,ye,[u(w,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t,options:A,"aria-label":`آیکون`,block:``},{"option-leading":r(({option:e})=>[e?(d(),f(M,{key:0,name:e.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:e.showIcon,"onUpdate:modelValue":t=>e.showIcon=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`p`,be,t(e.id),1)]),s(`button`,{type:`button`,class:`category-row__remove`,onClick:t=>Te(e.id)},`حذف`,8,xe)]))),128))])):(d(),c(`p`,de,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))])]))]))}}),[[`__scopeId`,`data-v-092c0b6f`]]);export{G as default}; \ No newline at end of file +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ee,f as v,t as y}from"./http-BjLkjdQu.js";import{E as b,V as x}from"./index-SWzbcuqQ.js";import{t as te}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as S}from"./BaseSwitch-pJwnFBVo.js";import{t as C}from"./AdminImagePicker-DBOLHU6S.js";import{t as w}from"./AdminSelect-6a7SFr9x.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 t=e,n={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`},r=h(()=>n[t.name]);return(t,n)=>(d(),c(`span`,T,[r.value?(d(),f(x,{key:0,icon:r.value,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`icon`,`size`,`stroke-width`,`color`])):e.name===`shirt`?(d(),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`},[...n[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`?(d(),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`},[...n[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`?(d(),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`},[...n[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`?(d(),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`},[...n[3]||=[p(``,5)]],8,k)):e.name===`composition`?(d(),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`},[...n[4]||=[s(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,A)):e.name===`weave`?(d(),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`},[...n[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=e([]),g=e([]),x=o({}),T=e(!0),E=e(!1),D=ee(),O=e(!1),k=e(!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=o({id:``,title:``,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0}),q=o({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 x||(x[t]=null);for(let t of Object.keys(x))e.includes(t)||delete x[t]}async function $(){T.value=!0;try{let e=await b.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(x))x[e]=t[e]??null}catch(e){D.error(e instanceof y?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}),x[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}),x[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 x[e]}function Te(e){if(g.value.length<=1){D.error(`حداقل یک دسته فصل لازم است.`);return}g.value=g.value.filter(t=>t.id!==e),delete x[e]}async function Ee(){E.value=!0;try{let e={};for(let[t,n]of Object.entries(x))n&&(e[t]=n);await b.update({categoryDefsJson:{usage:p.value,seasons:g.value},categoryImagesJson:e}),D.success(`دسته‌بندی‌ها ذخیره شد.`),await $()}catch(e){D.error(e instanceof y?e.message:`ذخیره دسته‌بندی‌ها ناموفق بود.`)}finally{E.value=!1}}return n(()=>{$()}),(e,n)=>(d(),c(`div`,ne,[s(`div`,re,[n[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},t(E.value?`در حال ذخیره...`:`ذخیره تغییرات`),9,ie)]),T.value?(d(),f(te,{key:0,variant:`cards`})):(d(),c(`div`,ae,[s(`section`,oe,[s(`div`,se,[s(`div`,null,[n[9]||=s(`h2`,null,`بر اساس کاربرد`,-1),s(`p`,null,t(p.value.length)+` دسته برای فیلتر محصول در اپ کاربر`,1)]),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[0]||=e=>O.value=!O.value},t(O.value?`بستن فرم`:`+ افزودن دسته`),1)]),O.value?(d(),c(`div`,ce,[a(s(`input`,{"onUpdate:modelValue":n[1]||=e=>K.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً پارچه‌های مانتویی)`},null,512),[[v,K.title]]),a(s(`input`,{"onUpdate:modelValue":n[2]||=e=>K.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً mantle)`},null,512),[[v,K.id]]),a(s(`input`,{"onUpdate:modelValue":n[3]||=e=>K.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,512),[[v,K.subtitle]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Se},`ثبت در لیست`)])):_(``,!0),p.value.length?(d(),c(`div`,ue,[(d(!0),c(m,null,i(p.value,e=>(d(),c(`article`,{key:e.id,class:`category-row`},[u(C,{"model-value":x[e.id],"onUpdate:modelValue":t=>x[e.id]=t},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,N,[s(`div`,P,[a(s(`input`,{"onUpdate:modelValue":t=>e.title=t,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,F),[[v,e.title]]),u(S,{modelValue:e.showTitle,"onUpdate:modelValue":t=>e.showTitle=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,I,[a(s(`input`,{"onUpdate:modelValue":t=>e.subtitle=t,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,8,L),[[v,e.subtitle]]),u(S,{modelValue:e.showSubtitle,"onUpdate:modelValue":t=>e.showSubtitle=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,R,[u(w,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t,options:A,"aria-label":`آیکون`,block:``},{"option-leading":r(({option:e})=>[e?(d(),f(M,{key:0,name:e.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:e.showIcon,"onUpdate:modelValue":t=>e.showIcon=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`p`,z,t(e.id),1)]),s(`button`,{type:`button`,class:`category-row__remove`,onClick:t=>we(e.id)},`حذف`,8,B)]))),128))])):(d(),c(`p`,le,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))]),s(`section`,V,[s(`div`,H,[s(`div`,null,[n[10]||=s(`h2`,null,`بر اساس فصل`,-1),s(`p`,null,t(g.value.length)+` دسته فصلی برای فیلتر محصول`,1)]),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[4]||=e=>k.value=!k.value},t(k.value?`بستن فرم`:`+ افزودن دسته`),1)]),k.value?(d(),c(`div`,U,[a(s(`input`,{"onUpdate:modelValue":n[5]||=e=>q.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً بهاره)`},null,512),[[v,q.title]]),a(s(`input`,{"onUpdate:modelValue":n[6]||=e=>q.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً spring)`},null,512),[[v,q.id]]),a(s(`input`,{"onUpdate:modelValue":n[7]||=e=>q.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,512),[[v,q.description]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Ce},`ثبت در لیست`)])):_(``,!0),g.value.length?(d(),c(`div`,fe,[(d(!0),c(m,null,i(g.value,e=>(d(),c(`article`,{key:e.id,class:`category-row`},[u(C,{"model-value":x[e.id],"onUpdate:modelValue":t=>x[e.id]=t},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,pe,[s(`div`,W,[a(s(`input`,{"onUpdate:modelValue":t=>e.title=t,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,me),[[v,e.title]]),u(S,{modelValue:e.showTitle,"onUpdate:modelValue":t=>e.showTitle=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,he,[a(s(`input`,{"onUpdate:modelValue":t=>e.description=t,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,8,ge),[[v,e.description]]),u(S,{modelValue:e.showDescription,"onUpdate:modelValue":t=>e.showDescription=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,_e,[a(s(`input`,{"onUpdate:modelValue":t=>e.ctaLabel=t,class:`admin-input`,type:`text`,placeholder:`متن لینک (مشاهده محصولات)`},null,8,ve),[[v,e.ctaLabel]]),u(S,{modelValue:e.showCta,"onUpdate:modelValue":t=>e.showCta=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`div`,ye,[u(w,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t,options:A,"aria-label":`آیکون`,block:``},{"option-leading":r(({option:e})=>[e?(d(),f(M,{key:0,name:e.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:e.showIcon,"onUpdate:modelValue":t=>e.showIcon=t,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`p`,be,t(e.id),1)]),s(`button`,{type:`button`,class:`category-row__remove`,onClick:t=>Te(e.id)},`حذف`,8,xe)]))),128))])):(d(),c(`p`,de,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))])]))]))}}),[[`__scopeId`,`data-v-092c0b6f`]]);export{G as default}; \ No newline at end of file diff --git a/dist/assets/CheckManagementView-CRZVQ55a.js b/dist/assets/CheckManagementView-Cegsi1VF.js similarity index 89% rename from dist/assets/CheckManagementView-CRZVQ55a.js rename to dist/assets/CheckManagementView-Cegsi1VF.js index 521e645..cf1473c 100644 --- a/dist/assets/CheckManagementView-CRZVQ55a.js +++ b/dist/assets/CheckManagementView-Cegsi1VF.js @@ -1 +1 @@ -import{$ as e,At as t,Dt as n,E as r,M as i,a as ee,c as a,d as o,g as te,h as s,k as c,l as ne,m as l,r as u,s as d,st as f,t as p,u as m}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as re,m as h,t as g}from"./http-BjLkjdQu.js";import{B as ie,C as ae,T as _,V as v,_ as y,a as b,i as x,o as oe,z as se}from"./index-BzcByePp.js";import{s as S}from"./orderStatus-CeC05Cv4.js";import{t as C}from"./StatusBadge-jGFZVW4C.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=se(),F=ie(),I=re(),L=e(`info`),R=e(null),z=e([]),B=e(null),V=e(null),H=e(null),U=d(()=>R.value?ae(R.value):null),ze=d(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=d(()=>z.value.filter(e=>e.status===`pending_review`)),Be=d(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=d(()=>!Be.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=e(!1),q=d(()=>{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=d(()=>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([_.get(e),y.listByOrder(e)]);R.value=t,z.value=n,n.length===1&&(V.value=n[0].id)}catch(e){I.error(e instanceof g?e.message:`بارگذاری چک‌ها انجام نشد.`)}}r(()=>{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 oe(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 y.updateStatus(e.id,{status:t}),r=z.value.findIndex(t=>t.id===e.id);return r!==-1&&(z.value[r]=n),R.value=await _.get(String(p.params.id)),!0}catch(e){return I.error(e instanceof g?e.message:`به‌روزرسانی وضعیت چک انجام نشد.`),!1}finally{B.value=null}}async function $(e,t){if(t!==`approved`&&t!==`rejected`)return;let n=x(e.amount);await v(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 v({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 v({title:`تأیید نهایی سفارش`,message:`با تأیید نهایی، سفارش از مرحله بررسی چک خارج می‌شود و وارد آماده‌سازی می‌گردد. ادامه می‌دهید؟`,tone:`primary`,confirmLabel:`تأیید نهایی`,cancelLabel:`انصراف`})){K.value=!0;try{let e=await _.updateStatus(R.value.id,{status:`final_approved`,note:`تأیید نهایی پس از تأیید همه چک‌ها`});R.value=e,I.success(`سفارش تأیید نهایی شد.`)}catch(e){I.error(e instanceof g?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=!1}}}return(e,r)=>(c(),o(`div`,ce,[a(`div`,le,[r[5]||=a(`div`,null,[a(`h1`,{class:`admin-page-header__title`},`مدیریت چک‌های سفارش`)],-1),U.value?(c(),o(`div`,ue,[s(C,{status:U.value.status},null,8,[`status`])])):m(``,!0)]),a(`div`,de,[a(`div`,fe,[r[6]||=a(`span`,null,`تعداد`,-1),a(`strong`,null,t(z.value.length),1)]),a(`div`,pe,[r[7]||=a(`span`,null,`راس`,-1),a(`strong`,null,t(R.value?.checkRassDays??`—`)+` روز`,1)]),a(`div`,me,[r[8]||=a(`span`,null,`مجموع چک`,-1),a(`strong`,null,t(f(x)(ze.value)),1)]),a(`div`,he,[r[9]||=a(`span`,null,`مبلغ سفارش`,-1),a(`strong`,null,t(U.value?.totalAmount?f(x)(U.value.totalAmount):`—`),1)])]),a(`div`,ge,[a(`button`,{type:`button`,class:n([`admin-tab`,{active:L.value===`info`}]),onClick:r[0]||=e=>L.value=`info`},` چک‌ها (`+t(z.value.length)+`) `,3),a(`button`,{type:`button`,class:n([`admin-tab`,{active:L.value===`history`}]),onClick:r[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(c(),o(u,{key:0},[z.value.length?(c(),o(`div`,ve,[(c(!0),o(u,null,i(z.value,e=>(c(),o(`div`,{key:e.id,class:n([`check-row`,{open:V.value===e.id}])},[a(`button`,{type:`button`,class:`check-row__main`,onClick:t=>Ge(e)},[a(`span`,be,t(V.value===e.id?`▾`:`◂`),1),e.frontImage||e.backImage?(c(),o(`span`,{key:0,class:`check-row__thumb`,onClick:h(t=>H.value=e.frontImage||e.backImage,[`stop`])},[a(`img`,{src:e.frontImage||e.backImage,alt:``},null,8,T)],8,w)):(c(),o(`span`,E,`بدون عکس`)),a(`span`,D,[a(`strong`,null,`چک `+t(e.row),1),a(`small`,null,[l(t(f(x)(e.amount))+` `,1),e.bankName?(c(),o(u,{key:0},[l(` · `+t(e.bankName),1)],64)):m(``,!0),l(` · `+t(f(b)(e.dueDate)),1)])]),s(C,{status:Y(e.status)},null,8,[`status`])],8,ye),a(`div`,{class:`check-row__actions`,onClick:r[2]||=h(()=>{},[`stop`])},[e.status===`pending_review`?(c(),o(u,{key:0},[a(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===e.id,onClick:t=>$(e,`approved`)},` تأیید `,8,O),a(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===e.id,onClick:t=>$(e,`rejected`)},` رد `,8,k)],64)):m(``,!0)]),V.value===e.id?(c(),o(`div`,A,[Z(e).length?(c(),o(`div`,j,[(c(!0),o(u,null,i(Z(e),e=>(c(),o(`div`,{key:e.label,class:`check-row__field`},[a(`span`,null,t(e.label),1),a(`strong`,{dir:e.ltr?`ltr`:void 0},t(e.value),9,M)]))),128))])):(c(),o(`p`,N,`جزئیات متنی بیشتری ثبت نشده است.`)),a(`div`,xe,[e.frontImage?(c(),o(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:t=>H.value=e.frontImage},[a(`img`,{src:e.frontImage,alt:`روی چک`},null,8,Ce),r[10]||=a(`span`,null,`روی`,-1)],8,Se)):m(``,!0),e.backImage?(c(),o(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:t=>H.value=e.backImage},[a(`img`,{src:e.backImage,alt:`پشت چک`},null,8,Te),r[11]||=a(`span`,null,`پشت`,-1)],8,we)):m(``,!0),!e.frontImage&&!e.backImage?(c(),o(`p`,Ee,` تصویری ثبت نشده. `)):m(``,!0)])])):m(``,!0)],2))),128))])):(c(),o(`div`,_e,` چکی برای این سفارش ثبت نشده است. `)),a(`div`,De,[a(`p`,Oe,[G.value?(c(),o(u,{key:0},[l(` همه چک‌ها تأیید شده‌اند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(c(),o(u,{key:1},[l(` راس: `+t(f(b)(R.value.checkRassDate)),1)],64)):(c(),o(u,{key:2},[l(`راس بر اساس تاریخ ثبت سفارش محاسبه می‌شود.`)],64))]),a(`div`,ke,[G.value?(c(),o(`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?(c(),o(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ke},` تأیید همه چک‌ها `)):m(``,!0),a(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:He},` بازگشت `)])])],64)):(c(),o(u,{key:1},[!q.value.length&&!J.value.length?(c(),o(`div`,je,` هنوز تاریخچه‌ای ثبت نشده است. `)):(c(),o(`div`,Me,[(c(!0),o(u,null,i(q.value,e=>(c(),o(`article`,{key:e.id,class:`admin-card checks-page__history-item`},[a(`div`,P,[a(`strong`,null,t(e.fromStatus?f(S)(e.fromStatus):`—`)+` → `+t(f(S)(e.toStatus)),1),a(`span`,null,t(X(e.changedAt)),1)]),a(`p`,Ne,`توسط `+t(Ue(e.changedBy)),1),e.note?(c(),o(`p`,Pe,t(e.note),1)):m(``,!0),e.reason?(c(),o(`p`,Fe,`دلیل: `+t(e.reason),1)):m(``,!0)]))),128)),(c(!0),o(u,null,i(J.value,e=>(c(),o(`article`,{key:`note-${e.id}`,class:`admin-card checks-page__history-item`},[a(`div`,Ie,[a(`strong`,null,`یادداشت چک `+t(e.row),1),a(`span`,null,t(X(e.updatedAt)),1)]),s(C,{status:Y(e.status)},null,8,[`status`]),a(`p`,Le,t(e.notes),1)]))),128))]))],64)),(c(),ne(ee,{to:`body`},[H.value?(c(),o(`div`,{key:0,class:`checks-page__lightbox`,onClick:r[4]||=h(e=>H.value=null,[`self`])},[a(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:r[3]||=e=>H.value=null},` بستن `),a(`img`,{src:H.value,alt:`پیش‌نمایش`},null,8,Re)])):m(``,!0)]))]))}}),[[`__scopeId`,`data-v-af5e25db`]]);export{F as default}; \ No newline at end of file +import{$ as e,At as t,Dt as n,E as r,M as i,a as ee,c as a,d as o,g as te,h as s,k as c,l as ne,m as l,r as u,s as d,st as f,t as p,u as m}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as re,m as h,t as g}from"./http-BjLkjdQu.js";import{L as ie,R as ae,S as oe,a as _,g as v,i as y,o as se,w as b,z as x}from"./index-SWzbcuqQ.js";import{s as S}from"./orderStatus-CeC05Cv4.js";import{t as C}from"./StatusBadge-jGFZVW4C.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=ie(),F=ae(),I=re(),L=e(`info`),R=e(null),z=e([]),B=e(null),V=e(null),H=e(null),U=d(()=>R.value?oe(R.value):null),ze=d(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=d(()=>z.value.filter(e=>e.status===`pending_review`)),Be=d(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=d(()=>!Be.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=e(!1),q=d(()=>{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=d(()=>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([b.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 g?e.message:`بارگذاری چک‌ها انجام نشد.`)}}r(()=>{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 se(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 b.get(String(p.params.id)),!0}catch(e){return I.error(e instanceof g?e.message:`به‌روزرسانی وضعیت چک انجام نشد.`),!1}finally{B.value=null}}async function $(e,t){if(t!==`approved`&&t!==`rejected`)return;let n=y(e.amount);await x(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 x({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 x({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 g?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=!1}}}return(e,r)=>(c(),o(`div`,ce,[a(`div`,le,[r[5]||=a(`div`,null,[a(`h1`,{class:`admin-page-header__title`},`مدیریت چک‌های سفارش`)],-1),U.value?(c(),o(`div`,ue,[s(C,{status:U.value.status},null,8,[`status`])])):m(``,!0)]),a(`div`,de,[a(`div`,fe,[r[6]||=a(`span`,null,`تعداد`,-1),a(`strong`,null,t(z.value.length),1)]),a(`div`,pe,[r[7]||=a(`span`,null,`راس`,-1),a(`strong`,null,t(R.value?.checkRassDays??`—`)+` روز`,1)]),a(`div`,me,[r[8]||=a(`span`,null,`مجموع چک`,-1),a(`strong`,null,t(f(y)(ze.value)),1)]),a(`div`,he,[r[9]||=a(`span`,null,`مبلغ سفارش`,-1),a(`strong`,null,t(U.value?.totalAmount?f(y)(U.value.totalAmount):`—`),1)])]),a(`div`,ge,[a(`button`,{type:`button`,class:n([`admin-tab`,{active:L.value===`info`}]),onClick:r[0]||=e=>L.value=`info`},` چک‌ها (`+t(z.value.length)+`) `,3),a(`button`,{type:`button`,class:n([`admin-tab`,{active:L.value===`history`}]),onClick:r[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(c(),o(u,{key:0},[z.value.length?(c(),o(`div`,ve,[(c(!0),o(u,null,i(z.value,e=>(c(),o(`div`,{key:e.id,class:n([`check-row`,{open:V.value===e.id}])},[a(`button`,{type:`button`,class:`check-row__main`,onClick:t=>Ge(e)},[a(`span`,be,t(V.value===e.id?`▾`:`◂`),1),e.frontImage||e.backImage?(c(),o(`span`,{key:0,class:`check-row__thumb`,onClick:h(t=>H.value=e.frontImage||e.backImage,[`stop`])},[a(`img`,{src:e.frontImage||e.backImage,alt:``},null,8,T)],8,w)):(c(),o(`span`,E,`بدون عکس`)),a(`span`,D,[a(`strong`,null,`چک `+t(e.row),1),a(`small`,null,[l(t(f(y)(e.amount))+` `,1),e.bankName?(c(),o(u,{key:0},[l(` · `+t(e.bankName),1)],64)):m(``,!0),l(` · `+t(f(_)(e.dueDate)),1)])]),s(C,{status:Y(e.status)},null,8,[`status`])],8,ye),a(`div`,{class:`check-row__actions`,onClick:r[2]||=h(()=>{},[`stop`])},[e.status===`pending_review`?(c(),o(u,{key:0},[a(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===e.id,onClick:t=>$(e,`approved`)},` تأیید `,8,O),a(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===e.id,onClick:t=>$(e,`rejected`)},` رد `,8,k)],64)):m(``,!0)]),V.value===e.id?(c(),o(`div`,A,[Z(e).length?(c(),o(`div`,j,[(c(!0),o(u,null,i(Z(e),e=>(c(),o(`div`,{key:e.label,class:`check-row__field`},[a(`span`,null,t(e.label),1),a(`strong`,{dir:e.ltr?`ltr`:void 0},t(e.value),9,M)]))),128))])):(c(),o(`p`,N,`جزئیات متنی بیشتری ثبت نشده است.`)),a(`div`,xe,[e.frontImage?(c(),o(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:t=>H.value=e.frontImage},[a(`img`,{src:e.frontImage,alt:`روی چک`},null,8,Ce),r[10]||=a(`span`,null,`روی`,-1)],8,Se)):m(``,!0),e.backImage?(c(),o(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:t=>H.value=e.backImage},[a(`img`,{src:e.backImage,alt:`پشت چک`},null,8,Te),r[11]||=a(`span`,null,`پشت`,-1)],8,we)):m(``,!0),!e.frontImage&&!e.backImage?(c(),o(`p`,Ee,` تصویری ثبت نشده. `)):m(``,!0)])])):m(``,!0)],2))),128))])):(c(),o(`div`,_e,` چکی برای این سفارش ثبت نشده است. `)),a(`div`,De,[a(`p`,Oe,[G.value?(c(),o(u,{key:0},[l(` همه چک‌ها تأیید شده‌اند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(c(),o(u,{key:1},[l(` راس: `+t(f(_)(R.value.checkRassDate)),1)],64)):(c(),o(u,{key:2},[l(`راس بر اساس تاریخ ثبت سفارش محاسبه می‌شود.`)],64))]),a(`div`,ke,[G.value?(c(),o(`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?(c(),o(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ke},` تأیید همه چک‌ها `)):m(``,!0),a(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:He},` بازگشت `)])])],64)):(c(),o(u,{key:1},[!q.value.length&&!J.value.length?(c(),o(`div`,je,` هنوز تاریخچه‌ای ثبت نشده است. `)):(c(),o(`div`,Me,[(c(!0),o(u,null,i(q.value,e=>(c(),o(`article`,{key:e.id,class:`admin-card checks-page__history-item`},[a(`div`,P,[a(`strong`,null,t(e.fromStatus?f(S)(e.fromStatus):`—`)+` → `+t(f(S)(e.toStatus)),1),a(`span`,null,t(X(e.changedAt)),1)]),a(`p`,Ne,`توسط `+t(Ue(e.changedBy)),1),e.note?(c(),o(`p`,Pe,t(e.note),1)):m(``,!0),e.reason?(c(),o(`p`,Fe,`دلیل: `+t(e.reason),1)):m(``,!0)]))),128)),(c(!0),o(u,null,i(J.value,e=>(c(),o(`article`,{key:`note-${e.id}`,class:`admin-card checks-page__history-item`},[a(`div`,Ie,[a(`strong`,null,`یادداشت چک `+t(e.row),1),a(`span`,null,t(X(e.updatedAt)),1)]),s(C,{status:Y(e.status)},null,8,[`status`]),a(`p`,Le,t(e.notes),1)]))),128))]))],64)),(c(),ne(ee,{to:`body`},[H.value?(c(),o(`div`,{key:0,class:`checks-page__lightbox`,onClick:r[4]||=h(e=>H.value=null,[`self`])},[a(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:r[3]||=e=>H.value=null},` بستن `),a(`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/ChecksListView-AdYVIsnM.js b/dist/assets/ChecksListView-AdYVIsnM.js deleted file mode 100644 index 76288d6..0000000 --- a/dist/assets/ChecksListView-AdYVIsnM.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,E as n,M as r,U as ee,c as i,d as a,g as te,h as o,k as s,l as c,r as l,s as u,st as d,t as f,u as p}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as m,t as h}from"./http-BjLkjdQu.js";import{B as re,R as ie,T as ae,_ as g,i as _,o as oe}from"./index-BzcByePp.js";import{t as se}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as ce}from"./AdminSelect-8XDtPu3U.js";import{t as v}from"./StatusBadge-jGFZVW4C.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`},ue={class:`admin-card-item__header`},F={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=f(te({__name:`ChecksListView`,setup(te){let f=re(),U=ne(),W=e([]),G=e(!0),K=e(``),q=e(`all`),J=e(null),de=[{value:`all`,label:`همه وضعیت‌ها`},{value:`pending_review`,label:`در انتظار بررسی`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`}],Y=u(()=>{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=u(()=>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){f.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(e,n)=>(s(),a(`div`,le,[i(`div`,y,[n[2]||=i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`چک‌ها`)],-1),i(`div`,b,[i(`span`,null,t(W.value.length)+` چک`,1),X.value?(s(),a(`span`,x,t(X.value)+` در انتظار بررسی`,1)):p(``,!0)])]),i(`div`,S,[i(`div`,C,[o(ie,{name:`search`,size:18}),ee(i(`input`,{"onUpdate:modelValue":n[0]||=e=>K.value=e,type:`search`,class:`checks-list-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، بانک، صیاد...`},null,512),[[m,K.value]])]),o(ce,{modelValue:q.value,"onUpdate:modelValue":n[1]||=e=>q.value=e,class:`checks-list-page__status-select`,"aria-label":`فیلتر وضعیت چک`,options:de},null,8,[`modelValue`])]),G.value?(s(),c(se,{key:0,variant:`table`})):(s(),a(l,{key:1},[i(`div`,w,[i(`div`,T,[i(`table`,E,[n[3]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`شماره سفارش`),i(`th`,null,`مشتری`),i(`th`,null,`ردیف`),i(`th`,null,`مبلغ`),i(`th`,null,`بانک`),i(`th`,null,`شناسه صیادی`),i(`th`,null,`سررسید`),i(`th`,null,`وضعیت`),i(`th`,null,`عملیات`)])],-1),i(`tbody`,null,[(s(!0),a(l,null,r(Y.value,e=>(s(),a(`tr`,{key:e.id},[i(`td`,null,[i(`button`,{type:`button`,class:`checks-list-page__order-link`,onClick:t=>Q(e)},t(e.orderNumber||e.orderId),9,D)]),i(`td`,null,t(e.customerName||`—`),1),i(`td`,null,t(e.row),1),i(`td`,null,t(d(_)(e.amount)),1),i(`td`,null,t(e.bankName||`—`),1),i(`td`,O,t(e.sayadId||`—`),1),i(`td`,null,t(e.dueDate.slice(0,10)),1),i(`td`,null,[o(v,{status:Z(e.status)},null,8,[`status`])]),i(`td`,null,[i(`div`,k,[e.status===`pending_review`?(s(),a(l,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`approved`)},` تأیید `,8,A),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`rejected`)},` رد `,8,j)],64)):p(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e)},` جزئیات سفارش `,8,M)])])]))),128))])])]),Y.value.length?p(``,!0):(s(),a(`p`,N,` چکی با این فیلتر یافت نشد. `))]),i(`div`,P,[(s(!0),a(l,null,r(Y.value,e=>(s(),a(`article`,{key:e.id,class:`admin-card-item`},[i(`div`,ue,[i(`p`,F,t(e.orderNumber||e.orderId)+` — چک `+t(e.row),1),o(v,{status:Z(e.status)},null,8,[`status`])]),i(`div`,I,[i(`span`,null,t(e.customerName||`—`),1),i(`span`,null,t(d(_)(e.amount)),1),i(`span`,null,t(e.bankName||`—`),1),i(`span`,null,`سررسید `+t(e.dueDate.slice(0,10)),1),e.createdAt?(s(),a(`span`,L,`ثبت `+t(d(oe)(e.createdAt)),1)):p(``,!0)]),i(`div`,R,[e.status===`pending_review`?(s(),a(l,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`approved`)},` تأیید `,8,z),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`rejected`)},` رد `,8,B)],64)):p(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e)},` جزئیات سفارش `,8,V)])]))),128)),Y.value.length?p(``,!0):(s(),a(`p`,H,` چکی با این فیلتر یافت نشد. `))])],64))]))}}),[[`__scopeId`,`data-v-09633f1f`]]);export{U as default}; \ No newline at end of file diff --git a/dist/assets/ChecksListView-CCsj1dMX.js b/dist/assets/ChecksListView-CCsj1dMX.js new file mode 100644 index 0000000..5272832 --- /dev/null +++ b/dist/assets/ChecksListView-CCsj1dMX.js @@ -0,0 +1 @@ +import{$ as e,At as t,E as n,M as r,U as ee,c as i,d as a,g as te,h as o,k as s,l as c,r as l,s as u,st as d,t as f,u as p}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as m,t as h}from"./http-BjLkjdQu.js";import{I as re,R as ie,g,i as _,o as ae,w as oe}from"./index-SWzbcuqQ.js";import{t as se}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as ce}from"./AdminSelect-6a7SFr9x.js";import{t as v}from"./StatusBadge-jGFZVW4C.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`},ue={class:`admin-card-item__header`},F={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=f(te({__name:`ChecksListView`,setup(te){let f=ie(),U=ne(),W=e([]),G=e(!0),K=e(``),q=e(`all`),J=e(null),de=[{value:`all`,label:`همه وضعیت‌ها`},{value:`pending_review`,label:`در انتظار بررسی`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`}],Y=u(()=>{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=u(()=>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 oe.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){f.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(e,n)=>(s(),a(`div`,le,[i(`div`,y,[n[2]||=i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`چک‌ها`)],-1),i(`div`,b,[i(`span`,null,t(W.value.length)+` چک`,1),X.value?(s(),a(`span`,x,t(X.value)+` در انتظار بررسی`,1)):p(``,!0)])]),i(`div`,S,[i(`div`,C,[o(re,{name:`search`,size:18}),ee(i(`input`,{"onUpdate:modelValue":n[0]||=e=>K.value=e,type:`search`,class:`checks-list-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، بانک، صیاد...`},null,512),[[m,K.value]])]),o(ce,{modelValue:q.value,"onUpdate:modelValue":n[1]||=e=>q.value=e,class:`checks-list-page__status-select`,"aria-label":`فیلتر وضعیت چک`,options:de},null,8,[`modelValue`])]),G.value?(s(),c(se,{key:0,variant:`table`})):(s(),a(l,{key:1},[i(`div`,w,[i(`div`,T,[i(`table`,E,[n[3]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`شماره سفارش`),i(`th`,null,`مشتری`),i(`th`,null,`ردیف`),i(`th`,null,`مبلغ`),i(`th`,null,`بانک`),i(`th`,null,`شناسه صیادی`),i(`th`,null,`سررسید`),i(`th`,null,`وضعیت`),i(`th`,null,`عملیات`)])],-1),i(`tbody`,null,[(s(!0),a(l,null,r(Y.value,e=>(s(),a(`tr`,{key:e.id},[i(`td`,null,[i(`button`,{type:`button`,class:`checks-list-page__order-link`,onClick:t=>Q(e)},t(e.orderNumber||e.orderId),9,D)]),i(`td`,null,t(e.customerName||`—`),1),i(`td`,null,t(e.row),1),i(`td`,null,t(d(_)(e.amount)),1),i(`td`,null,t(e.bankName||`—`),1),i(`td`,O,t(e.sayadId||`—`),1),i(`td`,null,t(e.dueDate.slice(0,10)),1),i(`td`,null,[o(v,{status:Z(e.status)},null,8,[`status`])]),i(`td`,null,[i(`div`,k,[e.status===`pending_review`?(s(),a(l,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`approved`)},` تأیید `,8,A),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`rejected`)},` رد `,8,j)],64)):p(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e)},` جزئیات سفارش `,8,M)])])]))),128))])])]),Y.value.length?p(``,!0):(s(),a(`p`,N,` چکی با این فیلتر یافت نشد. `))]),i(`div`,P,[(s(!0),a(l,null,r(Y.value,e=>(s(),a(`article`,{key:e.id,class:`admin-card-item`},[i(`div`,ue,[i(`p`,F,t(e.orderNumber||e.orderId)+` — چک `+t(e.row),1),o(v,{status:Z(e.status)},null,8,[`status`])]),i(`div`,I,[i(`span`,null,t(e.customerName||`—`),1),i(`span`,null,t(d(_)(e.amount)),1),i(`span`,null,t(e.bankName||`—`),1),i(`span`,null,`سررسید `+t(e.dueDate.slice(0,10)),1),e.createdAt?(s(),a(`span`,L,`ثبت `+t(d(ae)(e.createdAt)),1)):p(``,!0)]),i(`div`,R,[e.status===`pending_review`?(s(),a(l,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`approved`)},` تأیید `,8,z),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===e.id,onClick:t=>$(e,`rejected`)},` رد `,8,B)],64)):p(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e)},` جزئیات سفارش `,8,V)])]))),128)),Y.value.length?p(``,!0):(s(),a(`p`,H,` چکی با این فیلتر یافت نشد. `))])],64))]))}}),[[`__scopeId`,`data-v-09633f1f`]]);export{U as default}; \ No newline at end of file diff --git a/dist/assets/CompaniesView-BIglXTeb.js b/dist/assets/CompaniesView-BIglXTeb.js deleted file mode 100644 index 7bab902..0000000 --- a/dist/assets/CompaniesView-BIglXTeb.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as ee,c as o,d as s,g as te,h as c,k as l,l as u,m as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as g,m as re,t as _}from"./http-BjLkjdQu.js";import{B as ie,H as ae,V as oe,k as se,v}from"./index-BzcByePp.js";import{t as ce}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as le}from"./BaseSwitch-pJwnFBVo.js";import{t as ue}from"./BaseEmptyState-B7aEMvHg.js";import{t as y}from"./ActiveSwitchCell-Mj6U4GtB.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`},ke={class:`admin-form__row`},Ae={class:`admin-form__field`},je={class:`admin-form__field`},Me=[`disabled`],Ne=2097152,N=m(te({__name:`CompaniesView`,setup(te){let m=[`image/png`,`image/jpeg`,`image/webp`,`image/svg+xml`],N=ie(),P=ne(),F=e([]),I=e(!0),L=e(null),R=e(null),z=e(null),B=e(null),V=e(!1);async function Pe(){I.value=!0;try{F.value=await v.list()}catch(e){P.error(e instanceof _?e.message:`بارگذاری شرکت‌ها انجام نشد.`)}finally{I.value=!1}}n(()=>{Pe()});let H=()=>({name:``,description:``,displayOrder:F.value.length+1,isActive:!0}),U=ee(H()),W=e(``),Fe=p(()=>L.value!==null),Ie=p(()=>L.value===`edit`?`ویرایش شرکت`:`افزودن شرکت`),Le=p(()=>L.value===`edit`?`ذخیره تغییرات`:`ثبت شرکت`),Re=p(()=>U.name.trim().length>0&&z.value!==null);function G(){z.value=null,B.value&&(B.value.value=``)}function K(){L.value=`add`,R.value=null,Object.assign(U,H()),G(),W.value=``}function q(e){L.value=`edit`,R.value=e.id,U.name=e.name,U.description=e.description===`—`?``:e.description,U.displayOrder=e.displayOrder,U.isActive=e.isActive,z.value=e.logoUrl,B.value&&(B.value.value=``),W.value=``}function J(){L.value=null,R.value=null,W.value=``,G()}function ze(e){let t=e.target.files?.[0];if(!t)return;if(!m.includes(t.type)){W.value=`فرمت مجاز: PNG، JPG، WEBP یا SVG`;return}if(t.size>Ne){W.value=`حداکثر حجم تصویر ۲ مگابایت است.`;return}W.value=``;let n=new FileReader;n.onload=()=>{z.value=n.result},n.readAsDataURL(t)}async function Y(){z.value&&await oe({title:`حذف تصویر`,message:`آیا از حذف لوگوی شرکت مطمئن هستید؟`,confirmLabel:`حذف`,cancelLabel:`انصراف`,tone:`danger`})&&G()}async function X(){let e=U.name.trim();if(!e){W.value=`نام شرکت الزامی است.`;return}if(!z.value){W.value=`آپلود لوگو الزامی است.`;return}if(F.value.some(t=>t.name===e&&t.id!==R.value)){W.value=`شرکتی با این نام قبلاً ثبت شده است.`;return}V.value=!0;try{if(L.value===`edit`&&R.value){let t=await v.update(R.value,{name:e,description:U.description.trim()||void 0,displayOrder:Number(U.displayOrder)||1,isActive:U.isActive,logoUrl:z.value}),n=F.value.findIndex(e=>e.id===R.value);n!==-1&&(F.value[n]={...F.value[n],...t}),P.success(`اطلاعات شرکت به‌روزرسانی شد.`)}else{let t=await v.create({name:e,slug:se(e),description:U.description.trim()||void 0,displayOrder:Number(U.displayOrder)||F.value.length+1,isActive:U.isActive,logoUrl:z.value});F.value.push(t),P.success(`شرکت جدید ثبت شد.`)}J()}catch(e){P.error(e instanceof _?e.message:`ذخیره شرکت انجام نشد.`)}finally{V.value=!1}}async function Z(e,t){await v.setActive(e,t)}function Q(e){N.push(`/companies/${e}/accounts`)}function $(e){return e.trim().charAt(0)||`؟`}return(e,n)=>(l(),s(`div`,de,[o(`div`,{class:`admin-page-header`},[n[5]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`مدیریت شرکت‌ها`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:K},` افزودن شرکت `)]),I.value?(l(),u(ce,{key:0,variant:`table`})):F.value.length?(l(),s(`div`,fe,[o(`div`,pe,[o(`table`,me,[n[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,[(l(!0),s(f,null,i(F.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,[e.logoUrl?(l(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,he)):(l(),s(`div`,ge,t($(e.name)),1))]),o(`td`,_e,t(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,t(e.description),1),o(`td`,null,t(e.name),1),o(`td`,ye,[o(`div`,be,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>q(e)},` ویرایش `,8,xe),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>Q(e.id)},` حساب‌ها `,8,b)])])]))),128))])])])])):(l(),u(ue,{key:1,class:`admin-card`,icon:`companies`,title:`شرکتی ثبت نشده`,description:`برای شروع، اولین شرکت را ثبت کنید.`},{default:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:K},` افزودن شرکت `)]),_:1})),!I.value&&F.value.length?(l(),s(`div`,x,[(l(!0),s(f,null,i(F.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,S,[o(`div`,C,[e.logoUrl?(l(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,w)):(l(),s(`div`,T,t($(e.name)),1)),o(`div`,null,[o(`p`,E,t(e.name),1),o(`p`,D,t(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,`ترتیب: `+t(e.displayOrder),1)]),o(`div`,k,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>q(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:Fe.value,title:Ie.value,onClose:J},{footer:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:J},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Re.value||V.value,onClick:X},t(Le.value),9,Me)]),default:r(()=>[o(`form`,{class:`admin-form`,onSubmit:re(X,[`prevent`])},[W.value?(l(),s(`p`,M,t(W.value),1)):h(``,!0),o(`div`,Se,[n[8]||=o(`label`,null,[d(`لوگو `),o(`span`,{class:`admin-form__required`},`*`)],-1),o(`div`,Ce,[z.value?(l(),s(`div`,we,[o(`img`,{src:z.value,alt:`پیش‌نمایش لوگو`,class:`logo-upload__preview`},null,8,Te),o(`button`,{type:`button`,class:`logo-upload__remove`,onClick:Y},` حذف تصویر `)])):(l(),s(`label`,Ee,[...n[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:B,type:`file`,accept:`image/png,image/jpeg,image/webp,image/svg+xml`,class:`logo-upload__input`,onChange:ze},null,544),z.value?(l(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm logo-upload__change`,onClick:n[0]||=e=>B.value?.click()},` تغییر تصویر `)):h(``,!0)])]),o(`div`,De,[n[9]||=o(`label`,{for:`company-name`},[d(`نام شرکت `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`company-name`,"onUpdate:modelValue":n[1]||=e=>U.name=e,type:`text`,class:`admin-input`,placeholder:`مثال: شرکت پَر`,autocomplete:`off`},null,512),[[g,U.name]])]),o(`div`,Oe,[n[10]||=o(`label`,{for:`company-description`},`توضیحات`,-1),a(o(`textarea`,{id:`company-description`,"onUpdate:modelValue":n[2]||=e=>U.description=e,class:`admin-form__textarea`,placeholder:`تولید و عرضه انواع پارچه`,rows:`3`},null,512),[[g,U.description]])]),o(`div`,ke,[o(`div`,Ae,[n[11]||=o(`label`,{for:`company-order`},`ترتیب نمایش`,-1),a(o(`input`,{id:`company-order`,"onUpdate:modelValue":n[3]||=e=>U.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[g,U.displayOrder,void 0,{number:!0}]])]),o(`div`,je,[c(le,{modelValue:U.isActive,"onUpdate:modelValue":n[4]||=e=>U.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-b4857c22`]]);export{N as default}; \ No newline at end of file diff --git a/dist/assets/CompaniesView-C54y7vWA.js b/dist/assets/CompaniesView-C54y7vWA.js new file mode 100644 index 0000000..de37615 --- /dev/null +++ b/dist/assets/CompaniesView-C54y7vWA.js @@ -0,0 +1 @@ +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as ee,c as o,d as s,g as te,h as c,k as l,l as u,m as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as g,m as re,t as _}from"./http-BjLkjdQu.js";import{B as ie,O as ae,R as oe,_ as v,z as se}from"./index-SWzbcuqQ.js";import{t as ce}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as le}from"./BaseSwitch-pJwnFBVo.js";import{t as ue}from"./BaseEmptyState-Bzvl_pTa.js";import{t as y}from"./ActiveSwitchCell-DIBIZfO9.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=oe(),F=ne(),I=e([]),L=e(!0),R=e(null),z=e(null),B=e(null),V=e(null),H=e(!1);async function Ne(){L.value=!0;try{I.value=await v.list()}catch(e){F.error(e instanceof _?e.message:`بارگذاری شرکت‌ها انجام نشد.`)}finally{L.value=!1}}n(()=>{Ne()});let U=()=>({name:``,description:``,displayOrder:I.value.length+1,isActive:!0}),W=ee(U()),G=e(``),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 se({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:ae(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 _?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(e,n)=>(l(),s(`div`,de,[o(`div`,{class:`admin-page-header`},[n[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?(l(),u(ce,{key:0,variant:`table`})):I.value.length?(l(),s(`div`,fe,[o(`div`,pe,[o(`table`,me,[n[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,[(l(!0),s(f,null,i(I.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,[e.logoUrl?(l(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,he)):(l(),s(`div`,ge,t($(e.name)),1))]),o(`td`,_e,t(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,t(e.description),1),o(`td`,null,t(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))])])])])):(l(),u(ue,{key:1,class:`admin-card`,icon:`companies`,title:`شرکتی ثبت نشده`,description:`برای شروع، اولین شرکت را ثبت کنید.`},{default:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:q},` افزودن شرکت `)]),_:1})),!L.value&&I.value.length?(l(),s(`div`,x,[(l(!0),s(f,null,i(I.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,S,[o(`div`,C,[e.logoUrl?(l(),s(`img`,{key:0,src:e.logoUrl,alt:`لوگوی ${e.name}`,class:`company-logo`},null,8,w)):(l(),s(`div`,T,t($(e.name)),1)),o(`div`,null,[o(`p`,E,t(e.name),1),o(`p`,D,t(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,`ترتیب: `+t(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(ie,{open:Pe.value,title:Fe.value,onClose:Y},{footer:r(()=>[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},t(Ie.value),9,je)]),default:r(()=>[o(`form`,{class:`admin-form`,onSubmit:re(X,[`prevent`])},[G.value?(l(),s(`p`,M,t(G.value),1)):h(``,!0),o(`div`,Se,[n[8]||=o(`label`,null,[d(`لوگو `),o(`span`,{class:`admin-form__required`},`*`)],-1),o(`div`,Ce,[B.value?(l(),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},` حذف تصویر `)])):(l(),s(`label`,Ee,[...n[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?(l(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm logo-upload__change`,onClick:n[0]||=e=>V.value?.click()},` تغییر تصویر `)):h(``,!0)])]),o(`div`,De,[n[9]||=o(`label`,{for:`company-name`},[d(`نام شرکت `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`company-name`,"onUpdate:modelValue":n[1]||=e=>W.name=e,type:`text`,class:`admin-input`,placeholder:`مثال: شرکت پَر`,autocomplete:`off`},null,512),[[g,W.name]])]),o(`div`,Oe,[n[10]||=o(`label`,{for:`company-description`},`توضیحات`,-1),a(o(`textarea`,{id:`company-description`,"onUpdate:modelValue":n[2]||=e=>W.description=e,class:`admin-form__textarea`,placeholder:`تولید و عرضه انواع پارچه`,rows:`3`},null,512),[[g,W.description]])]),o(`div`,N,[o(`div`,ke,[n[11]||=o(`label`,{for:`company-order`},`ترتیب نمایش`,-1),a(o(`input`,{id:`company-order`,"onUpdate:modelValue":n[3]||=e=>W.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[g,W.displayOrder,void 0,{number:!0}]])]),o(`div`,Ae,[c(le,{modelValue:W.isActive,"onUpdate:modelValue":n[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-DPDC8LXM.js b/dist/assets/CustomersView-DPDC8LXM.js deleted file mode 100644 index 883a597..0000000 --- a/dist/assets/CustomersView-DPDC8LXM.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,B as n,Dt as r,E as ee,H as i,M as a,U as o,Z as s,c,d as l,g as u,h as d,k as f,l as p,m,r as h,s as g,st as _,t as v,u as y}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as b,f as x,m as S,t as C}from"./http-BjLkjdQu.js";import{E as w,H as T,M as E,R as D,S as te,o as O,s as k,y as A}from"./index-BzcByePp.js";import{t as ne}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as re}from"./BaseSwitch-pJwnFBVo.js";import{t as ie}from"./BaseEmptyState-B7aEMvHg.js";import{t as j}from"./AdminSelect-8XDtPu3U.js";import{r as M}from"./adminLabels-Cz9ccm1Z.js";import{t as N}from"./ActiveSwitchCell-Mj6U4GtB.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`},ae=v(u({__name:`CustomerSuggestionsPanel`,props:{customerId:{}},setup(i){let s=i,u=b(),p=e(!0),_=e(!1),v=e([]),S=e([]),T=e([]),D=e(``),te=g(()=>S.value.filter(e=>!v.value.some(t=>t.productId===e.id&&t.isActive)).map(e=>({value:e.id,label:`${e.name} (${e.productCode})`})));async function O(){if(s.customerId){p.value=!0;try{let[e,t]=await Promise.all([E.list(s.customerId),w.list()]);v.value=e,S.value=t}catch(e){u.error(e instanceof C?e.message:`بارگذاری پیشنهادها ناموفق بود`)}finally{p.value=!1}}}async function k(){if(T.value.length){_.value=!0;try{for(let e of T.value)await E.create({customerId:s.customerId,productId:e,note:D.value.trim()||void 0});T.value=[],D.value=``,u.success(`پیشنهادها به صفحه خانه مشتری اضافه شد`),await O()}catch(e){u.error(e instanceof C?e.message:`ثبت پیشنهاد ناموفق بود`)}finally{_.value=!1}}}async function A(e){try{await E.setActive(e.id,!e.isActive),await O()}catch(e){u.error(e instanceof C?e.message:`به‌روزرسانی ناموفق بود`)}}function ne(e){e&&(T.value.includes(e)||(T.value=[...T.value,e]))}function re(e){T.value=T.value.filter(t=>t!==e)}return n(()=>s.customerId,()=>{O()}),ee(()=>{O()}),(e,n)=>(f(),l(`section`,P,[n[4]||=c(`header`,{class:`suggestions-panel__head`},[c(`div`,null,[c(`h3`,{class:`suggestions-panel__title`},`پیشنهاد اختصاصی در اپ`),c(`p`,{class:`suggestions-panel__hint`},` محصولات انتخاب‌شده در بخش «پیشنهاد اختصاصی ما برای شما» در صفحه خانه مشتری نمایش داده می‌شوند. `)])],-1),p.value?(f(),l(`div`,F,`در حال بارگذاری...`)):(f(),l(h,{key:1},[c(`div`,I,[c(`label`,L,[n[1]||=m(` افزودن محصول (کد کالیته) `,-1),d(j,{"model-value":``,options:[{value:``,label:`انتخاب محصول...`},...te.value],"onUpdate:modelValue":ne},null,8,[`options`])]),T.value.length?(f(),l(`div`,R,[(f(!0),l(h,null,a(T.value,e=>(f(),l(`span`,{key:e,class:`suggestions-panel__chip`},[m(t(S.value.find(t=>t.id===e)?.productCode||e)+` `,1),c(`button`,{type:`button`,"aria-label":`حذف`,onClick:t=>re(e)},`×`,8,z)]))),128))])):y(``,!0),c(`label`,B,[n[2]||=m(` یادداشت (اختیاری) `,-1),o(c(`textarea`,{"onUpdate:modelValue":n[0]||=e=>D.value=e,class:`admin-input`,rows:`2`,placeholder:`دلیل پیشنهاد برای مشتری`},null,512),[[x,D.value]])]),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!T.value.length||_.value,onClick:k},` افزودن به صفحه خانه مشتری `,8,V)]),v.value.length?(f(),l(`div`,H,[n[3]||=c(`h4`,{class:`suggestions-panel__sub`},`پیشنهادهای ثبت‌شده`,-1),c(`ul`,null,[(f(!0),l(h,null,a(v.value,e=>(f(),l(`li`,{key:e.id,class:`suggestions-panel__row`},[c(`div`,null,[c(`strong`,null,t(e.productName),1),c(`span`,U,`(`+t(e.productCode)+`)`,1),e.note?(f(),l(`p`,W,t(e.note),1)):y(``,!0)]),c(`div`,G,[c(`span`,{class:r(e.isActive?`on`:`off`)},t(e.isActive?`فعال`:`غیرفعال`),3),c(`button`,{type:`button`,class:`link`,onClick:t=>A(e)},t(e.isActive?`حذف از خانه`:`فعال‌سازی`),9,K)])]))),128))])])):(f(),l(`p`,q,`هنوز پیشنهادی برای این مشتری ثبت نشده است.`))],64))]))}}),[[`__scopeId`,`data-v-4182e847`]]),oe={class:`customers-page`},se={class:`admin-page-header`},ce={class:`customers-page__tabs`,role:`tablist`,"aria-label":`نوع کاربر`},le=[`aria-selected`],ue=[`aria-selected`],de={class:`customers-page__search admin-card`},fe={key:2,class:`customers-page__table admin-card desktop-only`},pe={class:`admin-table-wrap`},me={class:`admin-table`},he={key:0},ge={key:1},_e={key:2},ve={key:3},ye={key:4},be={key:0},xe={key:1},Se={key:2},Ce={key:3},we={key:4},Te={class:`numeric`},Ee={class:`numeric`},De={class:`status`},Oe={class:`actions`},ke=[`onClick`],Ae={key:3,class:`compact-only admin-card-list`},je={class:`admin-card-item__header`},Me={class:`admin-card-item__title`},Ne={class:`admin-card-item__header-actions`},Pe=[`onClick`],Fe={class:`admin-card-item__meta`},Ie={key:0},Le={key:1},Re={key:2},ze={key:3},Be={key:4},Ve={key:0,class:`admin-form__error`,role:`alert`},He={class:`admin-form__field`},Ue={class:`admin-form__row`},We={class:`admin-form__field`},Ge={class:`admin-form__field`},Ke={class:`admin-form__row`},qe={class:`admin-form__field`},Je={class:`admin-form__field`},Ye={class:`admin-form__row`},Xe={class:`admin-form__field`},Ze={class:`admin-form__field`},Qe={class:`admin-form__row`},$e={class:`admin-form__field`},et={key:0,class:`admin-form__field`},tt={class:`admin-form__field`},nt=[`disabled`],rt={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},J=v(u({__name:`CustomersView`,setup(n){let u=e([]),v=e([]),w=e([]),E=e(``),P=e(`customer`),F=e(!0),I=e(null),L=e(null),R=e(``),z=e(!1),B=b();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)?`-`:k(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=g(()=>[{value:``,label:`بدون سطح`},...v.value.map(e=>({value:e.id,label:e.label}))]),J=g(()=>[{value:``,label:`بدون واسطه`},...w.value.filter(e=>e.id!==L.value).map(e=>({value:e.id,label:e.name+(e.agentCode?` (${e.agentCode})`:``)}))]),Y=()=>({name:``,phone:``,nationalId:``,customerType:`wholesale`,companyName:``,isActive:!0,levelDefId:``,assignedAgentId:``,appRole:`customer`,agentCode:``}),X=s(Y()),it=g(()=>I.value!==null),at=g(()=>I.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),ot=g(()=>X.name.trim()&&X.phone.trim()&&X.nationalId.trim()),Z=g(()=>{let e=E.value.trim();return e?u.value.filter(t=>t.name.includes(e)||t.phone.includes(e)||t.nationalId.includes(e)||t.companyName.includes(e)):u.value});async function st(){F.value=!0;try{u.value=await A.list(void 0,P.value)}catch(e){B.error(e instanceof C?e.message:P.value===`agent`?`بارگذاری واسطه‌ها انجام نشد.`:`بارگذاری مشتریان انجام نشد.`)}finally{F.value=!1}}function ct(e){P.value!==e&&(P.value=e,E.value=``,st())}async function lt(){try{let[e,t]=await Promise.all([te.list(),A.list(void 0,`agent`)]);v.value=e,w.value=t}catch(e){B.error(e instanceof C?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}ee(()=>{st(),lt()});function ut(){I.value=`add`,L.value=null,Object.assign(X,Y()),X.appRole=P.value,R.value=``}function dt(e){I.value=`edit`,L.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.appRole=e.appRole===`agent`?`agent`:`customer`,X.agentCode=e.agentCode??``,R.value=``}function Q(){I.value=null,L.value=null,R.value=``}async function $(){if(!ot.value){R.value=`نام، تلفن و شناسه ملی الزامی هستند.`;return}z.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,appRole:X.appRole,agentCode:X.appRole===`agent`&&X.agentCode.trim()||null};try{if(I.value===`edit`&&L.value){let t=await A.update(L.value,e),n=u.value.findIndex(e=>e.id===L.value);n!==-1&&(u.value[n]={...u.value[n],...t})}else{let t=await A.create(e);u.value.unshift(t)}B.success(I.value===`edit`?`اطلاعات مشتری به‌روزرسانی شد.`:`مشتری جدید ثبت شد.`),Q(),e.appRole===`agent`&<()}catch(e){B.error(e instanceof C?e.message:`ذخیره مشتری انجام نشد.`)}finally{z.value=!1}}async function ft(e,t){await A.setActive(e,t)}function pt(){E.value=``}return(e,n)=>(f(),l(`div`,oe,[c(`div`,se,[n[13]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`مشتریان و واسطه‌ها`)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:ut},t(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1)]),c(`div`,ce,[c(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`customer`}]),"aria-selected":P.value===`customer`,onClick:n[0]||=e=>ct(`customer`)},` مشتریان `,10,le),c(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`agent`}]),"aria-selected":P.value===`agent`,onClick:n[1]||=e=>ct(`agent`)},` واسطه‌ها `,10,ue)]),c(`div`,de,[d(D,{name:`search`,size:18}),o(c(`input`,{"onUpdate:modelValue":n[2]||=e=>E.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[x,E.value]])]),F.value?(f(),p(ne,{key:0,variant:`table`})):Z.value.length?(f(),l(`div`,fe,[c(`div`,pe,[c(`table`,me,[c(`thead`,null,[c(`tr`,null,[c(`th`,null,t(P.value===`agent`?`نام واسطه`:`نام مشتری`),1),n[14]||=c(`th`,null,`تلفن`,-1),n[15]||=c(`th`,null,`نقش`,-1),P.value===`agent`?(f(),l(`th`,he,`کد واسطه`)):y(``,!0),P.value===`customer`?(f(),l(`th`,ge,`نوع`)):y(``,!0),P.value===`customer`?(f(),l(`th`,_e,`سطح`)):y(``,!0),P.value===`customer`?(f(),l(`th`,ve,`واسطه`)):y(``,!0),P.value===`customer`?(f(),l(`th`,ye,`شرکت`)):y(``,!0),n[16]||=c(`th`,{class:`numeric`},`تعداد سفارش`,-1),n[17]||=c(`th`,{class:`numeric`},`مجموع متراژ`,-1),n[18]||=c(`th`,{class:`status`},`وضعیت`,-1),n[19]||=c(`th`,null,`تاریخ ثبت`,-1),n[20]||=c(`th`,{class:`actions`},`عملیات`,-1)])]),c(`tbody`,null,[(f(!0),l(h,null,a(Z.value,e=>(f(),l(`tr`,{key:e.id},[c(`td`,null,t(V(e.name)),1),c(`td`,null,t(V(e.phone)),1),c(`td`,null,t(K(e.appRole)),1),P.value===`agent`?(f(),l(`td`,be,t(V(e.agentCode)),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,xe,t(V(_(M)[e.customerType])),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,Se,t(V(e.levelLabel)),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,Ce,t(V(e.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,we,t(V(e.companyName)),1)):y(``,!0),c(`td`,Te,t(V(e.orderCount)),1),c(`td`,Ee,t(H(e.totalMeterage)),1),c(`td`,De,[d(N,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),c(`td`,null,t(V(_(O)(e.registeredAt))),1),c(`td`,Oe,[c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>dt(e)},` ویرایش `,8,ke)])]))),128))])])])])):(f(),p(ie,{key:1,class:`admin-card`,icon:`customers`,title:E.value.trim()?`نتیجه‌ای یافت نشد`:P.value===`agent`?`واسطه‌ای ثبت نشده`:`مشتریان ثبت شده`,description:E.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:P.value===`agent`?`برای شروع، اولین واسطه را ثبت کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:i(()=>[E.value.trim()?(f(),l(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:pt},` پاک کردن جستجو `)):(f(),l(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:ut},t(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1))]),_:1},8,[`title`,`description`])),!F.value&&Z.value.length?(f(),l(`div`,Ae,[(f(!0),l(h,null,a(Z.value,e=>(f(),l(`article`,{key:e.id,class:`admin-card-item`},[c(`div`,je,[c(`p`,Me,t(V(e.name)),1),c(`div`,Ne,[d(N,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>dt(e)},` ویرایش `,8,Pe)])]),c(`div`,Fe,[c(`span`,null,t(V(e.phone)),1),P.value===`agent`?(f(),l(`span`,Ie,`کد: `+t(V(e.agentCode)),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,Le,t(V(_(M)[e.customerType])),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,Re,t(V(e.levelLabel)),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,ze,`واسطه: `+t(V(e.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,Be,t(V(e.companyName)),1)):y(``,!0),c(`span`,null,t(V(e.orderCount))+` سفارش · `+t(H(e.totalMeterage)),1)])]))),128))])):y(``,!0),d(T,{open:it.value,title:at.value,size:`lg`,onClose:Q},{footer:i(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Q},`انصراف`),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!ot.value||z.value,onClick:$},[z.value?(f(),l(`span`,rt)):y(``,!0),m(` `+t(I.value===`edit`?`ذخیره تغییرات`:X.appRole===`agent`?`ثبت واسطه`:`ثبت مشتری`),1)],8,nt)]),default:i(()=>[c(`form`,{class:`admin-form`,onSubmit:S($,[`prevent`])},[R.value?(f(),l(`p`,Ve,t(R.value),1)):y(``,!0),c(`div`,He,[n[21]||=c(`label`,{for:`customer-name`},[m(`نام مشتری `),c(`span`,{class:`admin-form__required`},`*`)],-1),o(c(`input`,{id:`customer-name`,"onUpdate:modelValue":n[3]||=e=>X.name=e,type:`text`,class:`admin-input`},null,512),[[x,X.name]])]),c(`div`,Ue,[c(`div`,We,[n[22]||=c(`label`,{for:`customer-phone`},[m(`تلفن `),c(`span`,{class:`admin-form__required`},`*`)],-1),o(c(`input`,{id:`customer-phone`,"onUpdate:modelValue":n[4]||=e=>X.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[x,X.phone]])]),c(`div`,Ge,[n[23]||=c(`label`,{for:`customer-national-id`},[m(`شناسه ملی `),c(`span`,{class:`admin-form__required`},`*`)],-1),o(c(`input`,{id:`customer-national-id`,"onUpdate:modelValue":n[5]||=e=>X.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[x,X.nationalId]])])]),c(`div`,Ke,[c(`div`,qe,[n[24]||=c(`label`,null,`نوع مشتری`,-1),d(j,{modelValue:X.customerType,"onUpdate:modelValue":n[6]||=e=>X.customerType=e,block:``,"aria-label":`نوع مشتری`,options:U},null,8,[`modelValue`])]),c(`div`,Je,[n[25]||=c(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),o(c(`input`,{id:`customer-company`,"onUpdate:modelValue":n[7]||=e=>X.companyName=e,type:`text`,class:`admin-input`},null,512),[[x,X.companyName]])])]),c(`div`,Ye,[c(`div`,Xe,[n[26]||=c(`label`,null,`سطح`,-1),d(j,{modelValue:X.levelDefId,"onUpdate:modelValue":n[8]||=e=>X.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:q.value},null,8,[`modelValue`,`options`])]),c(`div`,Ze,[n[27]||=c(`label`,null,`واسطه`,-1),d(j,{modelValue:X.assignedAgentId,"onUpdate:modelValue":n[9]||=e=>X.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاص‌یافته`,options:J.value},null,8,[`modelValue`,`options`])])]),c(`div`,Qe,[c(`div`,$e,[n[28]||=c(`label`,null,`نقش در اپ`,-1),d(j,{modelValue:X.appRole,"onUpdate:modelValue":n[10]||=e=>X.appRole=e,block:``,"aria-label":`نقش در اپ`,options:W},null,8,[`modelValue`])]),X.appRole===`agent`?(f(),l(`div`,et,[n[29]||=c(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),o(c(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":n[11]||=e=>X.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[x,X.agentCode]])])):y(``,!0)]),c(`div`,tt,[d(re,{modelValue:X.isActive,"onUpdate:modelValue":n[12]||=e=>X.isActive=e,label:`وضعیت`},null,8,[`modelValue`])]),I.value===`edit`&&L.value&&X.appRole===`customer`?(f(),p(ae,{key:1,"customer-id":L.value},null,8,[`customer-id`])):y(``,!0)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-2e37be8d`]]);export{J as default}; \ No newline at end of file diff --git a/dist/assets/CustomersView-DkeEBLgM.js b/dist/assets/CustomersView-DkeEBLgM.js new file mode 100644 index 0000000..99c2135 --- /dev/null +++ b/dist/assets/CustomersView-DkeEBLgM.js @@ -0,0 +1 @@ +import{$ as e,At as t,B as n,Dt as r,E as i,H as a,M as o,U as s,Z as c,c as l,d as u,g as d,h as f,k as p,l as m,m as h,r as g,s as _,st as v,t as y,u as b}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as x,f as S,m as C,t as w}from"./http-BjLkjdQu.js";import{A as T,B as E,I as D,T as O,o as ee,s as k,v as A,x as te}from"./index-SWzbcuqQ.js";import{t as ne}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as re}from"./BaseSwitch-pJwnFBVo.js";import{t as ie}from"./BaseEmptyState-Bzvl_pTa.js";import{t as j}from"./AdminSelect-6a7SFr9x.js";import{r as M}from"./adminLabels-Cz9ccm1Z.js";import{t as N}from"./ActiveSwitchCell-DIBIZfO9.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`},ae=y(d({__name:`CustomerSuggestionsPanel`,props:{customerId:{}},setup(a){let c=a,d=x(),m=e(!0),v=e(!1),y=e([]),C=e([]),E=e([]),D=e(``),ee=_(()=>C.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(c.customerId){m.value=!0;try{let[e,t]=await Promise.all([T.list(c.customerId),O.list()]);y.value=e,C.value=t}catch(e){d.error(e instanceof w?e.message:`بارگذاری پیشنهادها ناموفق بود`)}finally{m.value=!1}}}async function A(){if(E.value.length){v.value=!0;try{for(let e of E.value)await T.create({customerId:c.customerId,productId:e,note:D.value.trim()||void 0});E.value=[],D.value=``,d.success(`پیشنهادها به صفحه خانه مشتری اضافه شد`),await k()}catch(e){d.error(e instanceof w?e.message:`ثبت پیشنهاد ناموفق بود`)}finally{v.value=!1}}}async function te(e){try{await T.setActive(e.id,!e.isActive),await k()}catch(e){d.error(e instanceof w?e.message:`به‌روزرسانی ناموفق بود`)}}function ne(e){e&&(E.value.includes(e)||(E.value=[...E.value,e]))}function re(e){E.value=E.value.filter(t=>t!==e)}return n(()=>c.customerId,()=>{k()}),i(()=>{k()}),(e,n)=>(p(),u(`section`,P,[n[4]||=l(`header`,{class:`suggestions-panel__head`},[l(`div`,null,[l(`h3`,{class:`suggestions-panel__title`},`پیشنهاد اختصاصی در اپ`),l(`p`,{class:`suggestions-panel__hint`},` محصولات انتخاب‌شده در بخش «پیشنهاد اختصاصی ما برای شما» در صفحه خانه مشتری نمایش داده می‌شوند. `)])],-1),m.value?(p(),u(`div`,F,`در حال بارگذاری...`)):(p(),u(g,{key:1},[l(`div`,I,[l(`label`,L,[n[1]||=h(` افزودن محصول (کد کالیته) `,-1),f(j,{"model-value":``,options:[{value:``,label:`انتخاب محصول...`},...ee.value],"onUpdate:modelValue":ne},null,8,[`options`])]),E.value.length?(p(),u(`div`,R,[(p(!0),u(g,null,o(E.value,e=>(p(),u(`span`,{key:e,class:`suggestions-panel__chip`},[h(t(C.value.find(t=>t.id===e)?.productCode||e)+` `,1),l(`button`,{type:`button`,"aria-label":`حذف`,onClick:t=>re(e)},`×`,8,z)]))),128))])):b(``,!0),l(`label`,B,[n[2]||=h(` یادداشت (اختیاری) `,-1),s(l(`textarea`,{"onUpdate:modelValue":n[0]||=e=>D.value=e,class:`admin-input`,rows:`2`,placeholder:`دلیل پیشنهاد برای مشتری`},null,512),[[S,D.value]])]),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!E.value.length||v.value,onClick:A},` افزودن به صفحه خانه مشتری `,8,V)]),y.value.length?(p(),u(`div`,H,[n[3]||=l(`h4`,{class:`suggestions-panel__sub`},`پیشنهادهای ثبت‌شده`,-1),l(`ul`,null,[(p(!0),u(g,null,o(y.value,e=>(p(),u(`li`,{key:e.id,class:`suggestions-panel__row`},[l(`div`,null,[l(`strong`,null,t(e.productName),1),l(`span`,U,`(`+t(e.productCode)+`)`,1),e.note?(p(),u(`p`,W,t(e.note),1)):b(``,!0)]),l(`div`,G,[l(`span`,{class:r(e.isActive?`on`:`off`)},t(e.isActive?`فعال`:`غیرفعال`),3),l(`button`,{type:`button`,class:`link`,onClick:t=>te(e)},t(e.isActive?`حذف از خانه`:`فعال‌سازی`),9,K)])]))),128))])])):(p(),u(`p`,q,`هنوز پیشنهادی برای این مشتری ثبت نشده است.`))],64))]))}}),[[`__scopeId`,`data-v-4182e847`]]),oe={class:`customers-page`},se={class:`admin-page-header`},ce={class:`customers-page__tabs`,role:`tablist`,"aria-label":`نوع کاربر`},le=[`aria-selected`],ue=[`aria-selected`],de={class:`customers-page__search admin-card`},fe={key:2,class:`customers-page__table admin-card desktop-only`},pe={class:`admin-table-wrap`},me={class:`admin-table`},he={key:0},ge={key:1},_e={key:2},ve={key:3},ye={key:4},be={key:0},xe={key:1},Se={key:2},Ce={key:3},we={key:4},Te={class:`numeric`},Ee={class:`numeric`},De={class:`status`},Oe={class:`actions`},ke=[`onClick`],Ae={key:3,class:`compact-only admin-card-list`},je={class:`admin-card-item__header`},Me={class:`admin-card-item__title`},Ne={class:`admin-card-item__header-actions`},Pe=[`onClick`],Fe={class:`admin-card-item__meta`},Ie={key:0},Le={key:1},Re={key:2},ze={key:3},Be={key:4},Ve={key:0,class:`admin-form__error`,role:`alert`},He={class:`admin-form__field`},Ue={class:`admin-form__row`},We={class:`admin-form__field`},Ge={class:`admin-form__field`},Ke={class:`admin-form__row`},qe={class:`admin-form__field`},Je={class:`admin-form__field`},Ye={class:`admin-form__row`},Xe={class:`admin-form__field`},Ze={class:`admin-form__field`},Qe={class:`admin-form__row`},$e={class:`admin-form__field`},et={key:0,class:`admin-form__field`},tt={class:`admin-form__field`},nt=[`disabled`],rt={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},J=y(d({__name:`CustomersView`,setup(n){let d=e([]),y=e([]),T=e([]),O=e(``),P=e(`customer`),F=e(!0),I=e(null),L=e(null),R=e(``),z=e(!1),B=x();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)?`-`:k(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=_(()=>[{value:``,label:`بدون سطح`},...y.value.map(e=>({value:e.id,label:e.label}))]),J=_(()=>[{value:``,label:`بدون واسطه`},...T.value.filter(e=>e.id!==L.value).map(e=>({value:e.id,label:e.name+(e.agentCode?` (${e.agentCode})`:``)}))]),Y=()=>({name:``,phone:``,nationalId:``,customerType:`wholesale`,companyName:``,isActive:!0,levelDefId:``,assignedAgentId:``,appRole:`customer`,agentCode:``}),X=c(Y()),it=_(()=>I.value!==null),at=_(()=>I.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),ot=_(()=>X.name.trim()&&X.phone.trim()&&X.nationalId.trim()),Z=_(()=>{let e=O.value.trim();return e?d.value.filter(t=>t.name.includes(e)||t.phone.includes(e)||t.nationalId.includes(e)||t.companyName.includes(e)):d.value});async function st(){F.value=!0;try{d.value=await A.list(void 0,P.value)}catch(e){B.error(e instanceof w?e.message:P.value===`agent`?`بارگذاری واسطه‌ها انجام نشد.`:`بارگذاری مشتریان انجام نشد.`)}finally{F.value=!1}}function ct(e){P.value!==e&&(P.value=e,O.value=``,st())}async function lt(){try{let[e,t]=await Promise.all([te.list(),A.list(void 0,`agent`)]);y.value=e,T.value=t}catch(e){B.error(e instanceof w?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}i(()=>{st(),lt()});function ut(){I.value=`add`,L.value=null,Object.assign(X,Y()),X.appRole=P.value,R.value=``}function dt(e){I.value=`edit`,L.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.appRole=e.appRole===`agent`?`agent`:`customer`,X.agentCode=e.agentCode??``,R.value=``}function Q(){I.value=null,L.value=null,R.value=``}async function $(){if(!ot.value){R.value=`نام، تلفن و شناسه ملی الزامی هستند.`;return}z.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,appRole:X.appRole,agentCode:X.appRole===`agent`&&X.agentCode.trim()||null};try{if(I.value===`edit`&&L.value){let t=await A.update(L.value,e),n=d.value.findIndex(e=>e.id===L.value);n!==-1&&(d.value[n]={...d.value[n],...t})}else{let t=await A.create(e);d.value.unshift(t)}B.success(I.value===`edit`?`اطلاعات مشتری به‌روزرسانی شد.`:`مشتری جدید ثبت شد.`),Q(),e.appRole===`agent`&<()}catch(e){B.error(e instanceof w?e.message:`ذخیره مشتری انجام نشد.`)}finally{z.value=!1}}async function ft(e,t){await A.setActive(e,t)}function pt(){O.value=``}return(e,n)=>(p(),u(`div`,oe,[l(`div`,se,[n[13]||=l(`div`,null,[l(`h1`,{class:`admin-page-header__title`},`مشتریان و واسطه‌ها`)],-1),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:ut},t(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1)]),l(`div`,ce,[l(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`customer`}]),"aria-selected":P.value===`customer`,onClick:n[0]||=e=>ct(`customer`)},` مشتریان `,10,le),l(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`agent`}]),"aria-selected":P.value===`agent`,onClick:n[1]||=e=>ct(`agent`)},` واسطه‌ها `,10,ue)]),l(`div`,de,[f(D,{name:`search`,size:18}),s(l(`input`,{"onUpdate:modelValue":n[2]||=e=>O.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[S,O.value]])]),F.value?(p(),m(ne,{key:0,variant:`table`})):Z.value.length?(p(),u(`div`,fe,[l(`div`,pe,[l(`table`,me,[l(`thead`,null,[l(`tr`,null,[l(`th`,null,t(P.value===`agent`?`نام واسطه`:`نام مشتری`),1),n[14]||=l(`th`,null,`تلفن`,-1),n[15]||=l(`th`,null,`نقش`,-1),P.value===`agent`?(p(),u(`th`,he,`کد واسطه`)):b(``,!0),P.value===`customer`?(p(),u(`th`,ge,`نوع`)):b(``,!0),P.value===`customer`?(p(),u(`th`,_e,`سطح`)):b(``,!0),P.value===`customer`?(p(),u(`th`,ve,`واسطه`)):b(``,!0),P.value===`customer`?(p(),u(`th`,ye,`شرکت`)):b(``,!0),n[16]||=l(`th`,{class:`numeric`},`تعداد سفارش`,-1),n[17]||=l(`th`,{class:`numeric`},`مجموع متراژ`,-1),n[18]||=l(`th`,{class:`status`},`وضعیت`,-1),n[19]||=l(`th`,null,`تاریخ ثبت`,-1),n[20]||=l(`th`,{class:`actions`},`عملیات`,-1)])]),l(`tbody`,null,[(p(!0),u(g,null,o(Z.value,e=>(p(),u(`tr`,{key:e.id},[l(`td`,null,t(V(e.name)),1),l(`td`,null,t(V(e.phone)),1),l(`td`,null,t(K(e.appRole)),1),P.value===`agent`?(p(),u(`td`,be,t(V(e.agentCode)),1)):b(``,!0),P.value===`customer`?(p(),u(`td`,xe,t(V(v(M)[e.customerType])),1)):b(``,!0),P.value===`customer`?(p(),u(`td`,Se,t(V(e.levelLabel)),1)):b(``,!0),P.value===`customer`?(p(),u(`td`,Ce,t(V(e.assignedAgentName)),1)):b(``,!0),P.value===`customer`?(p(),u(`td`,we,t(V(e.companyName)),1)):b(``,!0),l(`td`,Te,t(V(e.orderCount)),1),l(`td`,Ee,t(H(e.totalMeterage)),1),l(`td`,De,[f(N,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),l(`td`,null,t(V(v(ee)(e.registeredAt))),1),l(`td`,Oe,[l(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>dt(e)},` ویرایش `,8,ke)])]))),128))])])])])):(p(),m(ie,{key:1,class:`admin-card`,icon:`customers`,title:O.value.trim()?`نتیجه‌ای یافت نشد`:P.value===`agent`?`واسطه‌ای ثبت نشده`:`مشتریان ثبت شده`,description:O.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:P.value===`agent`?`برای شروع، اولین واسطه را ثبت کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:a(()=>[O.value.trim()?(p(),u(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:pt},` پاک کردن جستجو `)):(p(),u(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:ut},t(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1))]),_:1},8,[`title`,`description`])),!F.value&&Z.value.length?(p(),u(`div`,Ae,[(p(!0),u(g,null,o(Z.value,e=>(p(),u(`article`,{key:e.id,class:`admin-card-item`},[l(`div`,je,[l(`p`,Me,t(V(e.name)),1),l(`div`,Ne,[f(N,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),l(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>dt(e)},` ویرایش `,8,Pe)])]),l(`div`,Fe,[l(`span`,null,t(V(e.phone)),1),P.value===`agent`?(p(),u(`span`,Ie,`کد: `+t(V(e.agentCode)),1)):b(``,!0),P.value===`customer`?(p(),u(`span`,Le,t(V(v(M)[e.customerType])),1)):b(``,!0),P.value===`customer`?(p(),u(`span`,Re,t(V(e.levelLabel)),1)):b(``,!0),P.value===`customer`?(p(),u(`span`,ze,`واسطه: `+t(V(e.assignedAgentName)),1)):b(``,!0),P.value===`customer`?(p(),u(`span`,Be,t(V(e.companyName)),1)):b(``,!0),l(`span`,null,t(V(e.orderCount))+` سفارش · `+t(H(e.totalMeterage)),1)])]))),128))])):b(``,!0),f(E,{open:it.value,title:at.value,size:`lg`,onClose:Q},{footer:a(()=>[l(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Q},`انصراف`),l(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!ot.value||z.value,onClick:$},[z.value?(p(),u(`span`,rt)):b(``,!0),h(` `+t(I.value===`edit`?`ذخیره تغییرات`:X.appRole===`agent`?`ثبت واسطه`:`ثبت مشتری`),1)],8,nt)]),default:a(()=>[l(`form`,{class:`admin-form`,onSubmit:C($,[`prevent`])},[R.value?(p(),u(`p`,Ve,t(R.value),1)):b(``,!0),l(`div`,He,[n[21]||=l(`label`,{for:`customer-name`},[h(`نام مشتری `),l(`span`,{class:`admin-form__required`},`*`)],-1),s(l(`input`,{id:`customer-name`,"onUpdate:modelValue":n[3]||=e=>X.name=e,type:`text`,class:`admin-input`},null,512),[[S,X.name]])]),l(`div`,Ue,[l(`div`,We,[n[22]||=l(`label`,{for:`customer-phone`},[h(`تلفن `),l(`span`,{class:`admin-form__required`},`*`)],-1),s(l(`input`,{id:`customer-phone`,"onUpdate:modelValue":n[4]||=e=>X.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[S,X.phone]])]),l(`div`,Ge,[n[23]||=l(`label`,{for:`customer-national-id`},[h(`شناسه ملی `),l(`span`,{class:`admin-form__required`},`*`)],-1),s(l(`input`,{id:`customer-national-id`,"onUpdate:modelValue":n[5]||=e=>X.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[S,X.nationalId]])])]),l(`div`,Ke,[l(`div`,qe,[n[24]||=l(`label`,null,`نوع مشتری`,-1),f(j,{modelValue:X.customerType,"onUpdate:modelValue":n[6]||=e=>X.customerType=e,block:``,"aria-label":`نوع مشتری`,options:U},null,8,[`modelValue`])]),l(`div`,Je,[n[25]||=l(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),s(l(`input`,{id:`customer-company`,"onUpdate:modelValue":n[7]||=e=>X.companyName=e,type:`text`,class:`admin-input`},null,512),[[S,X.companyName]])])]),l(`div`,Ye,[l(`div`,Xe,[n[26]||=l(`label`,null,`سطح`,-1),f(j,{modelValue:X.levelDefId,"onUpdate:modelValue":n[8]||=e=>X.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:q.value},null,8,[`modelValue`,`options`])]),l(`div`,Ze,[n[27]||=l(`label`,null,`واسطه`,-1),f(j,{modelValue:X.assignedAgentId,"onUpdate:modelValue":n[9]||=e=>X.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاص‌یافته`,options:J.value},null,8,[`modelValue`,`options`])])]),l(`div`,Qe,[l(`div`,$e,[n[28]||=l(`label`,null,`نقش در اپ`,-1),f(j,{modelValue:X.appRole,"onUpdate:modelValue":n[10]||=e=>X.appRole=e,block:``,"aria-label":`نقش در اپ`,options:W},null,8,[`modelValue`])]),X.appRole===`agent`?(p(),u(`div`,et,[n[29]||=l(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),s(l(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":n[11]||=e=>X.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[S,X.agentCode]])])):b(``,!0)]),l(`div`,tt,[f(re,{modelValue:X.isActive,"onUpdate:modelValue":n[12]||=e=>X.isActive=e,label:`وضعیت`},null,8,[`modelValue`])]),I.value===`edit`&&L.value&&X.appRole===`customer`?(p(),m(ae,{key:1,"customer-id":L.value},null,8,[`customer-id`])):b(``,!0)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-2e37be8d`]]);export{J as default}; \ No newline at end of file diff --git a/dist/assets/DashboardView-BTmX0Wl1.js b/dist/assets/DashboardView-BTmX0Wl1.js deleted file mode 100644 index f239674..0000000 --- a/dist/assets/DashboardView-BTmX0Wl1.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,Dt as n,E as r,H as i,M as a,P as o,c as s,d as c,g as l,h as u,k as d,kt as f,l as p,m,r as h,s as g,st as _,t as v,u as y}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as b,t as x}from"./http-BjLkjdQu.js";import{B as S,C,R as w,b as T,c as E,i as D,o as O}from"./index-BzcByePp.js";import{t as k}from"./StatusBadge-jGFZVW4C.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(l({__name:`SalesAreaChart`,props:{data:{},title:{},subtitle:{},height:{default:160},color:{default:`#091d36`},unit:{default:`میلیارد تومان`},labels:{}},setup(n){let r=n,i=e(null),o={top:12,right:8,bottom:8,left:8},l=g(()=>Math.max(...r.data,.001)),u=g(()=>{let e=B-o.left-o.right,t=V-o.top-o.bottom,n=e/Math.max(r.data.length-1,1);return r.data.map((e,r)=>({x:o.left+r*n,y:o.top+t-e/l.value*t,value:e,index:r}))}),p=g(()=>u.value.map(e=>`${e.x},${e.y}`).join(` `)),m=g(()=>{let e=V-o.bottom,t=u.value[0],n=u.value[u.value.length-1];return!t||!n?``:`${t.x},${e} ${p.value} ${n.x},${e}`}),v=g(()=>{let e=V-o.top-o.bottom;return[0,.5,1].map(t=>o.top+e*t)}),b=g(()=>i.value===null?null:u.value[i.value]??null);function x(e){let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*B,r=0,a=1/0;u.value.forEach(e=>{let t=Math.abs(e.x-n);t(d(),c(`div`,ee,[n.title||n.subtitle?(d(),c(`div`,A,[s(`div`,null,[n.title?(d(),c(`h3`,j,t(n.title),1)):y(``,!0),n.subtitle?(d(),c(`p`,M,t(n.subtitle),1)):y(``,!0)])])):y(``,!0),s(`div`,{class:`sales-chart__body`,style:f({height:`${n.height}px`})},[(d(),c(`svg`,{class:`sales-chart__svg`,viewBox:`0 0 ${B} ${V}`,preserveAspectRatio:`none`,role:`img`,"aria-label":n.title||`نمودار فروش`,onMousemove:x,onMouseleave:S},[(d(!0),c(h,null,a(v.value,(e,t)=>(d(),c(`line`,{key:t,x1:o.left,x2:B-o.right,y1:e,y2:e,class:`sales-chart__grid`},null,8,te))),128)),m.value?(d(),c(`polygon`,{key:0,points:m.value,class:`sales-chart__area`,style:f({fill:`${n.color}22`})},null,12,P)):y(``,!0),s(`polyline`,{points:p.value,class:`sales-chart__line`,style:f({stroke:n.color})},null,12,F),b.value?(d(),c(h,{key:1},[s(`line`,{x1:b.value.x,x2:b.value.x,y1:o.top,y2:V-o.bottom,class:`sales-chart__cursor`},null,8,I),s(`circle`,{cx:b.value.x,cy:b.value.y,r:`4`,class:`sales-chart__dot`,style:f({fill:n.color})},null,12,L)],64)):y(``,!0)],40,N)),b.value?(d(),c(`div`,{key:0,class:`sales-chart__tooltip`,style:f({left:`${b.value.x/B*100}%`})},[s(`span`,R,t(n.labels?.[b.value.index]??`روز ${b.value.index+1}`),1),s(`strong`,null,t(_(E)(b.value.value))+` `+t(n.unit),1)],4)):y(``,!0)],4),n.labels?.length?(d(),c(`div`,z,[(d(!0),c(h,null,a(n.labels,(e,n)=>(d(),c(`span`,{key:n},t(e),1))),128))])):y(``,!0)]))}}),[[`__scopeId`,`data-v-36d15f13`]]),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 t=S(),n=b(),i=e(G()),a=e([]),o=e(Array.from({length:28},()=>0)),s=e([`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`]),c=e([]),l=e(!1),u=g(()=>[{label:`سفارش‌های جدید`,value:i.value.newOrders,icon:`cart`,tone:`info`,link:`/orders`},{label:`در انتظار بررسی`,value:i.value.pendingReview,icon:`file`,tone:`warning`,link:`/orders?tab=pending_review`},{label:`بررسی چک`,value:i.value.pendingCheck,icon:`wallet`,tone:`purple`,link:`/orders?tab=pending_check`},{label:`تأیید نهایی شده`,value:i.value.finalApproval,icon:`check-circle`,tone:`success`,link:`/orders?tab=final_approval`}]),d=g(()=>{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 f(){l.value=!0;try{let e=await T.get();i.value=e.stats,a.value=(e.recentOrders??[]).map(e=>C(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){n.error(e instanceof x?e.message:`بارگذاری داشبورد انجام نشد.`)}finally{l.value=!1}}r(()=>{f()});function p(){t.push(`/orders`)}return{checkDeadlines:c,dashboardStats:i,recentOrders:a,chartPoints:d,salesChartData:o,chartAxisLabels:s,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(l({__name:`DesktopDashboard`,setup(e){let{checkDeadlines:r,dashboardStats:l,recentOrders:p,salesChartData:g,chartAxisLabels:v,goOrders:y,statCards:b}=K();return(e,x)=>{let S=o(`RouterLink`);return d(),c(`div`,q,[s(`div`,J,[s(`button`,Y,[u(w,{name:`calendar`,size:16}),x[1]||=m(` امروز `,-1)])]),s(`div`,X,[(d(!0),c(h,null,a(_(b),e=>(d(),c(`div`,{key:e.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:f({background:_(U)[e.tone],color:_(W)[e.tone]})},[u(w,{name:e.icon,size:20},null,8,[`name`])],4),s(`p`,Z,t(e.label),1),s(`p`,Q,t(e.value),1),u(S,{to:e.link,class:`admin-stat-card__link`},{default:i(()=>[...x[2]||=[m(`مشاهده سفارش‌ها`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,ne,[s(`div`,re,[s(`div`,null,[x[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,ie,t(_(D)(_(l).todaySales)),1),s(`span`,ae,` +`+t(_(l).todaySalesGrowth)+`% نسبت به دیروز `,1)]),u(w,{name:`calendar`,size:20,class:`dashboard__sales-icon`})]),x[4]||=s(`svg`,{class:`dashboard__sparkline`,viewBox:`0 0 120 32`,preserveAspectRatio:`none`},[s(`polyline`,{fill:`none`,stroke:`#159660`,"stroke-width":`2`,points:`0,24 20,18 40,22 60,12 80,16 100,8 120,14`})],-1)])]),s(`div`,oe,[s(`div`,se,[u(H,{title:`فروش ماه جاری`,subtitle:_(D)(_(l).monthSales),data:_(g),labels:_(v),unit:`میلیارد`,height:168},null,8,[`subtitle`,`data`,`labels`])]),s(`div`,ce,[x[7]||=s(`div`,{class:`dashboard__card-header`},[s(`h2`,{class:`dashboard__card-title`},`سفارش‌های اخیر`)],-1),s(`div`,le,[s(`table`,ue,[x[5]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`شماره سفارش`),s(`th`,null,`مشتری`),s(`th`,null,`شرکت`),s(`th`,null,`وضعیت`),s(`th`,null,`تاریخ ثبت`)])],-1),s(`tbody`,null,[(d(!0),c(h,null,a(_(p),e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,t(e.orderNumber),1),s(`td`,null,t(e.customerName),1),s(`td`,null,t(e.companyName),1),s(`td`,null,[u(k,{status:e.status},null,8,[`status`])]),s(`td`,null,t(_(O)(e.createdAt)),1)]))),128))])])]),s(`div`,de,[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>_(y)&&_(y)(...e)},[x[6]||=m(` مشاهده همه سفارش‌ها `,-1),u(w,{name:`chevron-left`,size:16})])])]),s(`div`,fe,[x[9]||=s(`div`,{class:`dashboard__card-header`},[s(`h2`,{class:`dashboard__card-title`},`سررسید چک‌ها`)],-1),s(`ul`,pe,[(d(!0),c(h,null,a(_(r),e=>(d(),c(`li`,{key:e.id,class:`dashboard__deadline-item`},[s(`span`,{class:n([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},t(e.label),3),s(`span`,me,t(e.count)+` فقره`,1),s(`span`,he,t(_(D)(e.amount)),1)]))),128))]),s(`div`,ge,[u(S,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm`},{default:i(()=>[x[8]||=m(` مشاهده همه `,-1),u(w,{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=l({__name:`CompactDashboard`,setup(e){let{checkDeadlines:r,dashboardStats:l,recentOrders:g,salesChartData:v,chartAxisLabels:y,goOrders:b,statCards:x}=K();return(e,S)=>{let C=o(`RouterLink`);return d(),c(`div`,ve,[s(`div`,ye,[s(`button`,be,[u(w,{name:`calendar`,size:16}),S[1]||=m(` امروز `,-1)])]),s(`div`,xe,[(d(!0),c(h,null,a(_(x),e=>(d(),c(`div`,{key:e.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:f({background:_(U)[e.tone],color:_(W)[e.tone]})},[u(w,{name:e.icon,size:20},null,8,[`name`])],4),s(`p`,Se,t(e.label),1),s(`p`,Ce,t(e.value),1),u(C,{to:e.link,class:`admin-stat-card__link`},{default:i(()=>[...S[2]||=[m(`مشاهده`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,we,[S[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,$,t(_(D)(_(l).todaySales)),1),s(`span`,Te,` +`+t(_(l).todaySalesGrowth)+`% نسبت به دیروز `,1)])]),s(`div`,Ee,[s(`section`,De,[u(H,{title:`فروش ماه جاری`,subtitle:_(D)(_(l).monthSales),data:_(v),labels:_(y),unit:`میلیارد`,height:140},null,8,[`subtitle`,`data`,`labels`])]),s(`section`,Oe,[S[5]||=s(`h2`,{class:`compact-section-card__title`},`سفارش‌های اخیر`,-1),s(`div`,ke,[(d(!0),c(h,null,a(_(g),e=>(d(),p(C,{key:e.id,to:`/orders`,class:`admin-card-item block no-underline text-inherit`},{default:i(()=>[s(`div`,Ae,[s(`p`,je,t(e.orderNumber),1),u(k,{status:e.status},null,8,[`status`])]),s(`div`,Me,[s(`span`,null,t(e.customerName),1),s(`span`,null,t(_(O)(e.createdAt)),1)])]),_:2},1024))),128))]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm inline-flex mt-3`,onClick:S[0]||=(...e)=>_(b)&&_(b)(...e)},[S[4]||=m(` مشاهده همه سفارش‌ها `,-1),u(w,{name:`chevron-left`,size:16})])]),s(`section`,Ne,[S[7]||=s(`h2`,{class:`compact-section-card__title`},`سررسید چک‌ها`,-1),s(`ul`,Pe,[(d(!0),c(h,null,a(_(r),e=>(d(),c(`li`,{key:e.id,class:`flex flex-wrap items-center gap-2 text-sm`},[s(`span`,{class:n([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},t(e.label),3),s(`span`,null,t(e.count)+` فقره`,1),s(`strong`,Fe,t(_(D)(e.amount)),1)]))),128))]),u(C,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm inline-flex mt-3 no-underline`},{default:i(()=>[S[6]||=m(` مشاهده همه `,-1),u(w,{name:`chevron-left`,size:16})]),_:1})])])])}}}),Le=l({__name:`DashboardView`,setup(e){return(e,t)=>(d(),c(h,null,[u(_e,{class:`desktop-only`}),u(Ie,{class:`compact-only`})],64))}});export{Le as default}; \ No newline at end of file diff --git a/dist/assets/DashboardView-Dd0CgoV5.js b/dist/assets/DashboardView-Dd0CgoV5.js new file mode 100644 index 0000000..ba9e2a9 --- /dev/null +++ b/dist/assets/DashboardView-Dd0CgoV5.js @@ -0,0 +1 @@ +import{$ as e,At as t,Dt as n,E as r,H as i,M as a,P as o,c as s,d as c,g as l,h as u,k as d,kt as f,l as p,m,r as h,s as g,st as _,t as v,u as y}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as b,t as x}from"./http-BjLkjdQu.js";import{I as S,R as C,S as w,c as T,i as E,o as D,y as O}from"./index-SWzbcuqQ.js";import{t as k}from"./StatusBadge-jGFZVW4C.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(l({__name:`SalesAreaChart`,props:{data:{},title:{},subtitle:{},height:{default:160},color:{default:`#091d36`},unit:{default:`میلیارد تومان`},labels:{}},setup(n){let r=n,i=e(null),o={top:12,right:8,bottom:8,left:8},l=g(()=>Math.max(...r.data,.001)),u=g(()=>{let e=B-o.left-o.right,t=V-o.top-o.bottom,n=e/Math.max(r.data.length-1,1);return r.data.map((e,r)=>({x:o.left+r*n,y:o.top+t-e/l.value*t,value:e,index:r}))}),p=g(()=>u.value.map(e=>`${e.x},${e.y}`).join(` `)),m=g(()=>{let e=V-o.bottom,t=u.value[0],n=u.value[u.value.length-1];return!t||!n?``:`${t.x},${e} ${p.value} ${n.x},${e}`}),v=g(()=>{let e=V-o.top-o.bottom;return[0,.5,1].map(t=>o.top+e*t)}),b=g(()=>i.value===null?null:u.value[i.value]??null);function x(e){let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*B,r=0,a=1/0;u.value.forEach(e=>{let t=Math.abs(e.x-n);t(d(),c(`div`,ee,[n.title||n.subtitle?(d(),c(`div`,A,[s(`div`,null,[n.title?(d(),c(`h3`,j,t(n.title),1)):y(``,!0),n.subtitle?(d(),c(`p`,M,t(n.subtitle),1)):y(``,!0)])])):y(``,!0),s(`div`,{class:`sales-chart__body`,style:f({height:`${n.height}px`})},[(d(),c(`svg`,{class:`sales-chart__svg`,viewBox:`0 0 ${B} ${V}`,preserveAspectRatio:`none`,role:`img`,"aria-label":n.title||`نمودار فروش`,onMousemove:x,onMouseleave:S},[(d(!0),c(h,null,a(v.value,(e,t)=>(d(),c(`line`,{key:t,x1:o.left,x2:B-o.right,y1:e,y2:e,class:`sales-chart__grid`},null,8,te))),128)),m.value?(d(),c(`polygon`,{key:0,points:m.value,class:`sales-chart__area`,style:f({fill:`${n.color}22`})},null,12,P)):y(``,!0),s(`polyline`,{points:p.value,class:`sales-chart__line`,style:f({stroke:n.color})},null,12,F),b.value?(d(),c(h,{key:1},[s(`line`,{x1:b.value.x,x2:b.value.x,y1:o.top,y2:V-o.bottom,class:`sales-chart__cursor`},null,8,I),s(`circle`,{cx:b.value.x,cy:b.value.y,r:`4`,class:`sales-chart__dot`,style:f({fill:n.color})},null,12,L)],64)):y(``,!0)],40,N)),b.value?(d(),c(`div`,{key:0,class:`sales-chart__tooltip`,style:f({left:`${b.value.x/B*100}%`})},[s(`span`,R,t(n.labels?.[b.value.index]??`روز ${b.value.index+1}`),1),s(`strong`,null,t(_(T)(b.value.value))+` `+t(n.unit),1)],4)):y(``,!0)],4),n.labels?.length?(d(),c(`div`,z,[(d(!0),c(h,null,a(n.labels,(e,n)=>(d(),c(`span`,{key:n},t(e),1))),128))])):y(``,!0)]))}}),[[`__scopeId`,`data-v-36d15f13`]]),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 t=C(),n=b(),i=e(G()),a=e([]),o=e(Array.from({length:28},()=>0)),s=e([`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`]),c=e([]),l=e(!1),u=g(()=>[{label:`سفارش‌های جدید`,value:i.value.newOrders,icon:`cart`,tone:`info`,link:`/orders`},{label:`در انتظار بررسی`,value:i.value.pendingReview,icon:`file`,tone:`warning`,link:`/orders?tab=pending_review`},{label:`بررسی چک`,value:i.value.pendingCheck,icon:`wallet`,tone:`purple`,link:`/orders?tab=pending_check`},{label:`تأیید نهایی شده`,value:i.value.finalApproval,icon:`check-circle`,tone:`success`,link:`/orders?tab=final_approval`}]),d=g(()=>{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 f(){l.value=!0;try{let e=await O.get();i.value=e.stats,a.value=(e.recentOrders??[]).map(e=>w(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){n.error(e instanceof x?e.message:`بارگذاری داشبورد انجام نشد.`)}finally{l.value=!1}}r(()=>{f()});function p(){t.push(`/orders`)}return{checkDeadlines:c,dashboardStats:i,recentOrders:a,chartPoints:d,salesChartData:o,chartAxisLabels:s,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(l({__name:`DesktopDashboard`,setup(e){let{checkDeadlines:r,dashboardStats:l,recentOrders:p,salesChartData:g,chartAxisLabels:v,goOrders:y,statCards:b}=K();return(e,x)=>{let C=o(`RouterLink`);return d(),c(`div`,q,[s(`div`,J,[s(`button`,Y,[u(S,{name:`calendar`,size:16}),x[1]||=m(` امروز `,-1)])]),s(`div`,X,[(d(!0),c(h,null,a(_(b),e=>(d(),c(`div`,{key:e.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:f({background:_(U)[e.tone],color:_(W)[e.tone]})},[u(S,{name:e.icon,size:20},null,8,[`name`])],4),s(`p`,Z,t(e.label),1),s(`p`,Q,t(e.value),1),u(C,{to:e.link,class:`admin-stat-card__link`},{default:i(()=>[...x[2]||=[m(`مشاهده سفارش‌ها`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,ne,[s(`div`,re,[s(`div`,null,[x[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,ie,t(_(E)(_(l).todaySales)),1),s(`span`,ae,` +`+t(_(l).todaySalesGrowth)+`% نسبت به دیروز `,1)]),u(S,{name:`calendar`,size:20,class:`dashboard__sales-icon`})]),x[4]||=s(`svg`,{class:`dashboard__sparkline`,viewBox:`0 0 120 32`,preserveAspectRatio:`none`},[s(`polyline`,{fill:`none`,stroke:`#159660`,"stroke-width":`2`,points:`0,24 20,18 40,22 60,12 80,16 100,8 120,14`})],-1)])]),s(`div`,oe,[s(`div`,se,[u(H,{title:`فروش ماه جاری`,subtitle:_(E)(_(l).monthSales),data:_(g),labels:_(v),unit:`میلیارد`,height:168},null,8,[`subtitle`,`data`,`labels`])]),s(`div`,ce,[x[7]||=s(`div`,{class:`dashboard__card-header`},[s(`h2`,{class:`dashboard__card-title`},`سفارش‌های اخیر`)],-1),s(`div`,le,[s(`table`,ue,[x[5]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`شماره سفارش`),s(`th`,null,`مشتری`),s(`th`,null,`شرکت`),s(`th`,null,`وضعیت`),s(`th`,null,`تاریخ ثبت`)])],-1),s(`tbody`,null,[(d(!0),c(h,null,a(_(p),e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,t(e.orderNumber),1),s(`td`,null,t(e.customerName),1),s(`td`,null,t(e.companyName),1),s(`td`,null,[u(k,{status:e.status},null,8,[`status`])]),s(`td`,null,t(_(D)(e.createdAt)),1)]))),128))])])]),s(`div`,de,[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>_(y)&&_(y)(...e)},[x[6]||=m(` مشاهده همه سفارش‌ها `,-1),u(S,{name:`chevron-left`,size:16})])])]),s(`div`,fe,[x[9]||=s(`div`,{class:`dashboard__card-header`},[s(`h2`,{class:`dashboard__card-title`},`سررسید چک‌ها`)],-1),s(`ul`,pe,[(d(!0),c(h,null,a(_(r),e=>(d(),c(`li`,{key:e.id,class:`dashboard__deadline-item`},[s(`span`,{class:n([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},t(e.label),3),s(`span`,me,t(e.count)+` فقره`,1),s(`span`,he,t(_(E)(e.amount)),1)]))),128))]),s(`div`,ge,[u(C,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm`},{default:i(()=>[x[8]||=m(` مشاهده همه `,-1),u(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=l({__name:`CompactDashboard`,setup(e){let{checkDeadlines:r,dashboardStats:l,recentOrders:g,salesChartData:v,chartAxisLabels:y,goOrders:b,statCards:x}=K();return(e,C)=>{let w=o(`RouterLink`);return d(),c(`div`,ve,[s(`div`,ye,[s(`button`,be,[u(S,{name:`calendar`,size:16}),C[1]||=m(` امروز `,-1)])]),s(`div`,xe,[(d(!0),c(h,null,a(_(x),e=>(d(),c(`div`,{key:e.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:f({background:_(U)[e.tone],color:_(W)[e.tone]})},[u(S,{name:e.icon,size:20},null,8,[`name`])],4),s(`p`,Se,t(e.label),1),s(`p`,Ce,t(e.value),1),u(w,{to:e.link,class:`admin-stat-card__link`},{default:i(()=>[...C[2]||=[m(`مشاهده`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,we,[C[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,$,t(_(E)(_(l).todaySales)),1),s(`span`,Te,` +`+t(_(l).todaySalesGrowth)+`% نسبت به دیروز `,1)])]),s(`div`,Ee,[s(`section`,De,[u(H,{title:`فروش ماه جاری`,subtitle:_(E)(_(l).monthSales),data:_(v),labels:_(y),unit:`میلیارد`,height:140},null,8,[`subtitle`,`data`,`labels`])]),s(`section`,Oe,[C[5]||=s(`h2`,{class:`compact-section-card__title`},`سفارش‌های اخیر`,-1),s(`div`,ke,[(d(!0),c(h,null,a(_(g),e=>(d(),p(w,{key:e.id,to:`/orders`,class:`admin-card-item block no-underline text-inherit`},{default:i(()=>[s(`div`,Ae,[s(`p`,je,t(e.orderNumber),1),u(k,{status:e.status},null,8,[`status`])]),s(`div`,Me,[s(`span`,null,t(e.customerName),1),s(`span`,null,t(_(D)(e.createdAt)),1)])]),_:2},1024))),128))]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm inline-flex mt-3`,onClick:C[0]||=(...e)=>_(b)&&_(b)(...e)},[C[4]||=m(` مشاهده همه سفارش‌ها `,-1),u(S,{name:`chevron-left`,size:16})])]),s(`section`,Ne,[C[7]||=s(`h2`,{class:`compact-section-card__title`},`سررسید چک‌ها`,-1),s(`ul`,Pe,[(d(!0),c(h,null,a(_(r),e=>(d(),c(`li`,{key:e.id,class:`flex flex-wrap items-center gap-2 text-sm`},[s(`span`,{class:n([`admin-badge`,{"admin-badge--danger":e.tone===`danger`,"admin-badge--warning":e.tone===`warning`,"admin-badge--neutral":e.tone===`neutral`}])},t(e.label),3),s(`span`,null,t(e.count)+` فقره`,1),s(`strong`,Fe,t(_(E)(e.amount)),1)]))),128))]),u(w,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm inline-flex mt-3 no-underline`},{default:i(()=>[C[6]||=m(` مشاهده همه `,-1),u(S,{name:`chevron-left`,size:16})]),_:1})])])])}}}),Le=l({__name:`DashboardView`,setup(e){return(e,t)=>(d(),c(h,null,[u(_e,{class:`desktop-only`}),u(Ie,{class:`compact-only`})],64))}});export{Le as default}; \ No newline at end of file diff --git a/dist/assets/InternalMessagesView-BL4mP-qn.js b/dist/assets/InternalMessagesView-CjsukHYr.js similarity index 87% rename from dist/assets/InternalMessagesView-BL4mP-qn.js rename to dist/assets/InternalMessagesView-CjsukHYr.js index 0dc1867..cd323d1 100644 --- a/dist/assets/InternalMessagesView-BL4mP-qn.js +++ b/dist/assets/InternalMessagesView-CjsukHYr.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,st as g,t as _}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as v,f as y,t as b}from"./http-BjLkjdQu.js";import{F as x,H as S,o as C,x as w}from"./index-BzcByePp.js";import{t as T}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as E}from"./BaseEmptyState-B7aEMvHg.js";var D={class:`internal-messages-page`},O={key:2,class:`admin-card`},k={class:`admin-table`},A={class:`preview-cell`},j={dir:`ltr`,class:`link-cell`},M={class:`actions`},N=[`onClick`],P=[`onClick`],F={class:`field`},I={class:`field`},L={class:`field`},R={class:`field`},z=[`disabled`],B=_(l({__name:`InternalMessagesView`,setup(l){let _=x(),B=e([]),V=e(!0),H=e(!1),U=e(!1),W=e(null),G=v(),K=o({senderName:``,subject:``,preview:``,link:``}),q=h(()=>W.value?`ویرایش پیام داخلی`:`پیام داخلی جدید`);async function J(){V.value=!0;try{B.value=await w.list()}catch(e){G.error(e instanceof b?e.message:`بارگذاری پیام‌ها ناموفق بود.`)}finally{V.value=!1}}function Y(){W.value=null,Object.assign(K,{senderName:_.fullName||`پشتیبانی`,subject:``,preview:``,link:``}),U.value=!0}function X(e){W.value=e.id,Object.assign(K,{senderName:e.senderName,subject:e.subject,preview:e.preview,link:e.link||``}),U.value=!0}async function Z(){if(!K.senderName.trim()||!K.subject.trim()||!K.preview.trim()){G.error(`فرستنده، موضوع و متن پیام الزامی است.`);return}H.value=!0;let e={senderName:K.senderName.trim(),subject:K.subject.trim(),preview:K.preview.trim(),link:K.link.trim()||null};try{W.value?(await w.update(W.value,e),G.success(`پیام به‌روزرسانی شد.`)):(await w.create(e),G.success(`پیام برای همه اپراتورها ارسال شد.`)),U.value=!1,await J()}catch(e){G.error(e instanceof b?e.message:`ذخیره پیام ناموفق بود.`)}finally{H.value=!1}}async function Q(e){if(window.confirm(`پیام «${e.subject}» حذف شود؟`))try{await w.remove(e.id),G.success(`پیام حذف شد.`),await J()}catch(e){G.error(e instanceof b?e.message:`حذف پیام ناموفق بود.`)}}return n(()=>{J()}),(e,n)=>(d(),c(`div`,D,[s(`div`,{class:`admin-page-header`},[n[6]||=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`,onClick:Y},`پیام جدید`)]),V.value?(d(),f(T,{key:0,variant:`table`})):B.value.length?(d(),c(`div`,O,[s(`table`,k,[n[7]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`موضوع`),s(`th`,null,`فرستنده`),s(`th`,null,`خلاصه`),s(`th`,null,`لینک`),s(`th`,null,`زمان`),s(`th`,null,`خوانده‌شده`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(d(!0),c(m,null,i(B.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,[s(`strong`,null,t(e.subject),1)]),s(`td`,null,t(e.senderName),1),s(`td`,A,t(e.preview),1),s(`td`,j,t(e.link||`—`),1),s(`td`,null,t(g(C)(e.sentAt)),1),s(`td`,null,t(e.isRead?`بله`:`خیر`),1),s(`td`,M,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,N),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>Q(e)},` حذف `,8,P)])]))),128))])])])):(d(),f(E,{key:1,title:`پیامی ثبت نشده`,description:`اولین پیام داخلی را برای تیم ارسال کنید.`},{default:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` پیام جدید `)]),_:1})),u(S,{open:U.value,title:q.value,size:`md`,onClose:n[5]||=e=>U.value=!1},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[4]||=e=>U.value=!1},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:H.value,onClick:Z},t(H.value?`در حال ذخیره…`:`ذخیره`),9,z)]),default:r(()=>[s(`label`,F,[n[8]||=p(` نام فرستنده `,-1),a(s(`input`,{"onUpdate:modelValue":n[0]||=e=>K.senderName=e,type:`text`,class:`admin-input`},null,512),[[y,K.senderName]])]),s(`label`,I,[n[9]||=p(` موضوع `,-1),a(s(`input`,{"onUpdate:modelValue":n[1]||=e=>K.subject=e,type:`text`,class:`admin-input`},null,512),[[y,K.subject]])]),s(`label`,L,[n[10]||=p(` متن پیام (خلاصه در لیست نامه) `,-1),a(s(`textarea`,{"onUpdate:modelValue":n[2]||=e=>K.preview=e,class:`admin-input`,rows:`4`},null,512),[[y,K.preview]])]),s(`label`,R,[n[11]||=p(` لینک (اختیاری) `,-1),a(s(`input`,{"onUpdate:modelValue":n[3]||=e=>K.link=e,type:`text`,class:`admin-input`,dir:`ltr`,placeholder:`/orders یا /settings`},null,512),[[y,K.link]])])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-413b6ea4`]]);export{B as default}; \ No newline at end of file +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,st as g,t as _}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as v,f as y,t as b}from"./http-BjLkjdQu.js";import{B as x,N as S,b as C,o as w}from"./index-SWzbcuqQ.js";import{t as T}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as E}from"./BaseEmptyState-Bzvl_pTa.js";var D={class:`internal-messages-page`},O={key:2,class:`admin-card`},k={class:`admin-table`},A={class:`preview-cell`},j={dir:`ltr`,class:`link-cell`},M={class:`actions`},N=[`onClick`],P=[`onClick`],F={class:`field`},I={class:`field`},L={class:`field`},R={class:`field`},z=[`disabled`],B=_(l({__name:`InternalMessagesView`,setup(l){let _=S(),B=e([]),V=e(!0),H=e(!1),U=e(!1),W=e(null),G=v(),K=o({senderName:``,subject:``,preview:``,link:``}),q=h(()=>W.value?`ویرایش پیام داخلی`:`پیام داخلی جدید`);async function J(){V.value=!0;try{B.value=await C.list()}catch(e){G.error(e instanceof b?e.message:`بارگذاری پیام‌ها ناموفق بود.`)}finally{V.value=!1}}function Y(){W.value=null,Object.assign(K,{senderName:_.fullName||`پشتیبانی`,subject:``,preview:``,link:``}),U.value=!0}function X(e){W.value=e.id,Object.assign(K,{senderName:e.senderName,subject:e.subject,preview:e.preview,link:e.link||``}),U.value=!0}async function Z(){if(!K.senderName.trim()||!K.subject.trim()||!K.preview.trim()){G.error(`فرستنده، موضوع و متن پیام الزامی است.`);return}H.value=!0;let e={senderName:K.senderName.trim(),subject:K.subject.trim(),preview:K.preview.trim(),link:K.link.trim()||null};try{W.value?(await C.update(W.value,e),G.success(`پیام به‌روزرسانی شد.`)):(await C.create(e),G.success(`پیام برای همه اپراتورها ارسال شد.`)),U.value=!1,await J()}catch(e){G.error(e instanceof b?e.message:`ذخیره پیام ناموفق بود.`)}finally{H.value=!1}}async function Q(e){if(window.confirm(`پیام «${e.subject}» حذف شود؟`))try{await C.remove(e.id),G.success(`پیام حذف شد.`),await J()}catch(e){G.error(e instanceof b?e.message:`حذف پیام ناموفق بود.`)}}return n(()=>{J()}),(e,n)=>(d(),c(`div`,D,[s(`div`,{class:`admin-page-header`},[n[6]||=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`,onClick:Y},`پیام جدید`)]),V.value?(d(),f(T,{key:0,variant:`table`})):B.value.length?(d(),c(`div`,O,[s(`table`,k,[n[7]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`موضوع`),s(`th`,null,`فرستنده`),s(`th`,null,`خلاصه`),s(`th`,null,`لینک`),s(`th`,null,`زمان`),s(`th`,null,`خوانده‌شده`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(d(!0),c(m,null,i(B.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,[s(`strong`,null,t(e.subject),1)]),s(`td`,null,t(e.senderName),1),s(`td`,A,t(e.preview),1),s(`td`,j,t(e.link||`—`),1),s(`td`,null,t(g(w)(e.sentAt)),1),s(`td`,null,t(e.isRead?`بله`:`خیر`),1),s(`td`,M,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,N),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>Q(e)},` حذف `,8,P)])]))),128))])])])):(d(),f(E,{key:1,title:`پیامی ثبت نشده`,description:`اولین پیام داخلی را برای تیم ارسال کنید.`},{default:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` پیام جدید `)]),_:1})),u(x,{open:U.value,title:q.value,size:`md`,onClose:n[5]||=e=>U.value=!1},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[4]||=e=>U.value=!1},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:H.value,onClick:Z},t(H.value?`در حال ذخیره…`:`ذخیره`),9,z)]),default:r(()=>[s(`label`,F,[n[8]||=p(` نام فرستنده `,-1),a(s(`input`,{"onUpdate:modelValue":n[0]||=e=>K.senderName=e,type:`text`,class:`admin-input`},null,512),[[y,K.senderName]])]),s(`label`,I,[n[9]||=p(` موضوع `,-1),a(s(`input`,{"onUpdate:modelValue":n[1]||=e=>K.subject=e,type:`text`,class:`admin-input`},null,512),[[y,K.subject]])]),s(`label`,L,[n[10]||=p(` متن پیام (خلاصه در لیست نامه) `,-1),a(s(`textarea`,{"onUpdate:modelValue":n[2]||=e=>K.preview=e,class:`admin-input`,rows:`4`},null,512),[[y,K.preview]])]),s(`label`,R,[n[11]||=p(` لینک (اختیاری) `,-1),a(s(`input`,{"onUpdate:modelValue":n[3]||=e=>K.link=e,type:`text`,class:`admin-input`,dir:`ltr`,placeholder:`/orders یا /settings`},null,512),[[y,K.link]])])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-413b6ea4`]]);export{B as default}; \ No newline at end of file diff --git a/dist/assets/LevelsView-BT4Elzxf.js b/dist/assets/LevelsView-B-ACzl3p.js similarity index 83% rename from dist/assets/LevelsView-BT4Elzxf.js rename to dist/assets/LevelsView-B-ACzl3p.js index 8dbf729..3a66d60 100644 --- a/dist/assets/LevelsView-BT4Elzxf.js +++ b/dist/assets/LevelsView-B-ACzl3p.js @@ -1,3 +1,3 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as _,f as v,t as y}from"./http-BjLkjdQu.js";import{H as b,S as x}from"./index-BzcByePp.js";import{t as S}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as C}from"./BaseEmptyState-B7aEMvHg.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=e([]),N=e(!0),P=e(!1),F=e(null),I=_(),L=o({code:``,label:``,sortOrder:0,benefitsText:``}),R=h(()=>F.value?`ویرایش سطح`:`سطح جدید`);function z(e){return e.split(` +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as _,f as v,t as y}from"./http-BjLkjdQu.js";import{B as b,x}from"./index-SWzbcuqQ.js";import{t as S}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as C}from"./BaseEmptyState-Bzvl_pTa.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=e([]),N=e(!0),P=e(!1),F=e(null),I=_(),L=o({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 x.list()}catch(e){I.error(e instanceof y?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 x.update(F.value,e):await x.create(e),P.value=!1,I.success(`ذخیره شد`),await B()}catch(e){I.error(e instanceof y?e.message:`ذخیره ناموفق بود`)}}return n(()=>{B()}),(e,n)=>(d(),c(`div`,w,[s(`header`,{class:`admin-page__head`},[n[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?(d(),f(S,{key:0,variant:`table`})):g.value.length?(d(),c(`table`,T,[n[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,[(d(!0),c(m,null,i(g.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,E,t(e.code),1),s(`td`,null,t(e.label),1),s(`td`,null,t(e.benefits.map(e=>e.title).join(`، `)||`—`),1),s(`td`,null,t(e.customersCount),1),s(`td`,null,[s(`button`,{type:`button`,class:`link`,onClick:t=>H(e)},`ویرایش`,8,D)])]))),128))])])):(d(),f(C,{key:1,title:`سطحی تعریف نشده`})),u(b,{open:P.value,title:R.value,onClose:n[4]||=e=>P.value=!1},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!L.code.trim()||!L.label.trim(),onClick:U},` ذخیره `,8,M)]),default:r(()=>[s(`label`,O,[n[7]||=p(`کد`,-1),a(s(`input`,{"onUpdate:modelValue":n[0]||=e=>L.code=e,class:`admin-input`,dir:`ltr`},null,512),[[v,L.code]])]),s(`label`,k,[n[8]||=p(`عنوان`,-1),a(s(`input`,{"onUpdate:modelValue":n[1]||=e=>L.label=e,class:`admin-input`},null,512),[[v,L.label]])]),s(`label`,A,[n[9]||=p(`ترتیب`,-1),a(s(`input`,{"onUpdate:modelValue":n[2]||=e=>L.sortOrder=e,type:`number`,class:`admin-input`},null,512),[[v,L.sortOrder,void 0,{number:!0}]])]),s(`label`,j,[n[10]||=p(` مزایا (هر خط یک مورد) `,-1),a(s(`textarea`,{"onUpdate:modelValue":n[3]||=e=>L.benefitsText=e,class:`admin-input`,rows:`4`},null,512),[[v,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-Cv7dE8jp.js b/dist/assets/LoginView-Z5zCxTv8.js similarity index 86% rename from dist/assets/LoginView-Cv7dE8jp.js rename to dist/assets/LoginView-Z5zCxTv8.js index 2dbb101..f1e3152 100644 --- a/dist/assets/LoginView-Cv7dE8jp.js +++ b/dist/assets/LoginView-Z5zCxTv8.js @@ -1 +1 @@ -import{$ as e,At as t,U as n,c as r,d as i,g as a,h as o,k as s,m as c,s as l,st as u,t as d,u as f}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as p,f as m,l as h,m as g,u as _}from"./http-BjLkjdQu.js";import{B as v,F as y,I as b,L as x,R as S,z as C}from"./index-BzcByePp.js";var w={class:`login-page`},T={class:`login-page__form-wrap`},E={class:`login-page__card admin-card`},D={class:`login-page__header`},O={key:0,class:`login-page__mock-hint`},k={dir:`ltr`},A={dir:`ltr`},j={key:0,class:`admin-form__error`,role:`alert`},M={class:`admin-form__field`},N={class:`login-page__input-wrap`},P={class:`login-page__field-icon`,"aria-hidden":`true`},F={class:`admin-form__field`},I={class:`login-page__input-wrap login-page__input-wrap--password`},L={class:`login-page__field-icon`,"aria-hidden":`true`},R=[`type`],z=[`aria-label`],B={class:`login-page__remember`},V=[`disabled`],H={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},U=d(a({__name:`LoginView`,setup(a){let d=v(),U=C(),W=y(),G=p(),K=e(x()?b.phone:``),q=e(x()?b.password:``),J=e(!0),Y=e(!1),X=x(),Z=l(()=>K.value.trim().length>0&&q.value.length>0);function Q(e){return e.replace(/[۰-۹]/g,e=>String(`۰۱۲۳۴۵۶۷۸۹`.indexOf(e))).replace(/[٠-٩]/g,e=>String(`٠١٢٣٤٥٦٧٨٩`.indexOf(e)))}async function $(){if(!Z.value){W.error=`لطفاً شماره موبایل و رمز عبور را وارد کنید.`;return}if(!await W.login(Q(K.value.trim()),q.value,J.value))return;G.success(`خوش آمدید، ${W.fullName}`);let e=typeof U.query.redirect==`string`?U.query.redirect:`/`,t=`/admin/`.replace(/\/$/,``),n=e.startsWith(t)?e.slice(t.length)||`/`:e;await d.replace(n)}return(e,a)=>(s(),i(`div`,w,[r(`div`,T,[r(`div`,E,[r(`div`,D,[a[8]||=r(`h2`,{class:`login-page__title`},`ورود به پنل مدیریت`,-1),a[9]||=r(`p`,{class:`login-page__subtitle`},`برای ادامه، اطلاعات حساب کاربری خود را وارد کنید.`,-1),u(X)?(s(),i(`p`,O,[a[6]||=c(` حالت موک فعال است — `,-1),r(`span`,k,t(u(b).phone),1),a[7]||=c(` / `,-1),r(`span`,A,t(u(b).password),1)])):f(``,!0)]),r(`form`,{class:`admin-form login-page__form`,onSubmit:g($,[`prevent`])},[u(W).error?(s(),i(`p`,j,t(u(W).error),1)):f(``,!0),r(`div`,M,[a[10]||=r(`label`,{for:`login-phone`},`شماره موبایل`,-1),r(`div`,N,[r(`span`,P,[o(S,{name:`phone`,size:18})]),n(r(`input`,{id:`login-phone`,"onUpdate:modelValue":a[0]||=e=>K.value=e,type:`tel`,class:`admin-input login-page__input`,placeholder:`۰۹۱۲۱۱۱۱۲۲۲۲`,autocomplete:`username`,inputmode:`tel`,dir:`ltr`,onInput:a[1]||=e=>u(W).clearError()},null,544),[[m,K.value]])])]),r(`div`,F,[a[11]||=r(`label`,{for:`login-password`},`رمز عبور`,-1),r(`div`,I,[r(`span`,L,[o(S,{name:`lock`,size:18})]),n(r(`input`,{id:`login-password`,"onUpdate:modelValue":a[2]||=e=>q.value=e,type:Y.value?`text`:`password`,class:`admin-input login-page__input login-page__input--with-toggle`,placeholder:`رمز عبور`,autocomplete:`current-password`,onInput:a[3]||=e=>u(W).clearError()},null,40,R),[[_,q.value]]),r(`button`,{type:`button`,class:`login-page__toggle-password`,"aria-label":Y.value?`پنهان کردن رمز`:`نمایش رمز`,onClick:a[4]||=e=>Y.value=!Y.value},[o(S,{name:Y.value?`eye-off`:`eye`,size:18},null,8,[`name`])],8,z)])]),r(`label`,B,[n(r(`input`,{"onUpdate:modelValue":a[5]||=e=>J.value=e,type:`checkbox`},null,512),[[h,J.value]]),a[12]||=r(`span`,null,`مرا به خاطر بسپار`,-1)]),r(`button`,{type:`submit`,class:`admin-btn admin-btn--primary login-page__submit`,disabled:!Z.value||u(W).loading},[u(W).loading?(s(),i(`span`,H)):f(``,!0),a[13]||=c(` ورود به پنل `,-1)],8,V)],32)])]),r(`div`,{class:`login-page__brand`},[r(`div`,{class:`login-page__brand-inner`},[r(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`login-page__brand-logo`}),a[14]||=r(`p`,{class:`login-page__brand-badge`},`پارچه`,-1),a[15]||=r(`h1`,{class:`login-page__brand-title`},`پنل مدیریت سفارش‌های عمده`,-1),a[16]||=r(`p`,{class:`login-page__brand-text`},` مدیریت سفارش‌ها، مشتریان، قیمت‌گذاری، چک‌ها و گزارش‌های فروش در یک محیط یکپارچه. `,-1)])])]))}}),[[`__scopeId`,`data-v-df8d196a`]]);export{U as default}; \ No newline at end of file +import{$ as e,At as t,U as n,c as r,d as i,g as a,h as o,k as s,m as c,s as l,st as u,t as d,u as f}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as p,f as m,l as h,m as g,u as _}from"./http-BjLkjdQu.js";import{F as v,I as y,L as b,N as x,P as S,R as C}from"./index-SWzbcuqQ.js";var w={class:`login-page`},T={class:`login-page__form-wrap`},E={class:`login-page__card admin-card`},D={class:`login-page__header`},O={key:0,class:`login-page__mock-hint`},k={dir:`ltr`},A={dir:`ltr`},j={key:0,class:`admin-form__error`,role:`alert`},M={class:`admin-form__field`},N={class:`login-page__input-wrap`},P={class:`login-page__field-icon`,"aria-hidden":`true`},F={class:`admin-form__field`},I={class:`login-page__input-wrap login-page__input-wrap--password`},L={class:`login-page__field-icon`,"aria-hidden":`true`},R=[`type`],z=[`aria-label`],B={class:`login-page__remember`},V=[`disabled`],H={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},U=d(a({__name:`LoginView`,setup(a){let d=C(),U=b(),W=x(),G=p(),K=e(v()?S.phone:``),q=e(v()?S.password:``),J=e(!0),Y=e(!1),X=v(),Z=l(()=>K.value.trim().length>0&&q.value.length>0);function Q(e){return e.replace(/[۰-۹]/g,e=>String(`۰۱۲۳۴۵۶۷۸۹`.indexOf(e))).replace(/[٠-٩]/g,e=>String(`٠١٢٣٤٥٦٧٨٩`.indexOf(e)))}async function $(){if(!Z.value){W.error=`لطفاً شماره موبایل و رمز عبور را وارد کنید.`;return}if(!await W.login(Q(K.value.trim()),q.value,J.value))return;G.success(`خوش آمدید، ${W.fullName}`);let e=typeof U.query.redirect==`string`?U.query.redirect:`/`,t=`/admin/`.replace(/\/$/,``),n=e.startsWith(t)?e.slice(t.length)||`/`:e;await d.replace(n)}return(e,a)=>(s(),i(`div`,w,[r(`div`,T,[r(`div`,E,[r(`div`,D,[a[8]||=r(`h2`,{class:`login-page__title`},`ورود به پنل مدیریت`,-1),a[9]||=r(`p`,{class:`login-page__subtitle`},`برای ادامه، اطلاعات حساب کاربری خود را وارد کنید.`,-1),u(X)?(s(),i(`p`,O,[a[6]||=c(` حالت موک فعال است — `,-1),r(`span`,k,t(u(S).phone),1),a[7]||=c(` / `,-1),r(`span`,A,t(u(S).password),1)])):f(``,!0)]),r(`form`,{class:`admin-form login-page__form`,onSubmit:g($,[`prevent`])},[u(W).error?(s(),i(`p`,j,t(u(W).error),1)):f(``,!0),r(`div`,M,[a[10]||=r(`label`,{for:`login-phone`},`شماره موبایل`,-1),r(`div`,N,[r(`span`,P,[o(y,{name:`phone`,size:18})]),n(r(`input`,{id:`login-phone`,"onUpdate:modelValue":a[0]||=e=>K.value=e,type:`tel`,class:`admin-input login-page__input`,placeholder:`۰۹۱۲۱۱۱۱۲۲۲۲`,autocomplete:`username`,inputmode:`tel`,dir:`ltr`,onInput:a[1]||=e=>u(W).clearError()},null,544),[[m,K.value]])])]),r(`div`,F,[a[11]||=r(`label`,{for:`login-password`},`رمز عبور`,-1),r(`div`,I,[r(`span`,L,[o(y,{name:`lock`,size:18})]),n(r(`input`,{id:`login-password`,"onUpdate:modelValue":a[2]||=e=>q.value=e,type:Y.value?`text`:`password`,class:`admin-input login-page__input login-page__input--with-toggle`,placeholder:`رمز عبور`,autocomplete:`current-password`,onInput:a[3]||=e=>u(W).clearError()},null,40,R),[[_,q.value]]),r(`button`,{type:`button`,class:`login-page__toggle-password`,"aria-label":Y.value?`پنهان کردن رمز`:`نمایش رمز`,onClick:a[4]||=e=>Y.value=!Y.value},[o(y,{name:Y.value?`eye-off`:`eye`,size:18},null,8,[`name`])],8,z)])]),r(`label`,B,[n(r(`input`,{"onUpdate:modelValue":a[5]||=e=>J.value=e,type:`checkbox`},null,512),[[h,J.value]]),a[12]||=r(`span`,null,`مرا به خاطر بسپار`,-1)]),r(`button`,{type:`submit`,class:`admin-btn admin-btn--primary login-page__submit`,disabled:!Z.value||u(W).loading},[u(W).loading?(s(),i(`span`,H)):f(``,!0),a[13]||=c(` ورود به پنل `,-1)],8,V)],32)])]),r(`div`,{class:`login-page__brand`},[r(`div`,{class:`login-page__brand-inner`},[r(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`login-page__brand-logo`}),a[14]||=r(`p`,{class:`login-page__brand-badge`},`پارچه`,-1),a[15]||=r(`h1`,{class:`login-page__brand-title`},`پنل مدیریت سفارش‌های عمده`,-1),a[16]||=r(`p`,{class:`login-page__brand-text`},` مدیریت سفارش‌ها، مشتریان، قیمت‌گذاری، چک‌ها و گزارش‌های فروش در یک محیط یکپارچه. `,-1)])])]))}}),[[`__scopeId`,`data-v-df8d196a`]]);export{U as default}; \ No newline at end of file diff --git a/dist/assets/OrderPricingView-4hixJcG6.css b/dist/assets/OrderPricingView-4hixJcG6.css new file mode 100644 index 0000000..72c06c4 --- /dev/null +++ b/dist/assets/OrderPricingView-4hixJcG6.css @@ -0,0 +1 @@ +.pricing-page__summary[data-v-fb0720df]{margin-bottom:16px;padding:20px}.pricing-page__order-meta[data-v-fb0720df]{margin-bottom:16px}.pricing-page__order-id[data-v-fb0720df]{margin-bottom:4px;font-size:1rem;display:block}.pricing-page__customer[data-v-fb0720df]{color:var(--color-text-muted);margin:0 0 8px;font-size:.875rem}.pricing-page__table[data-v-fb0720df]{margin-bottom:16px;padding:0;overflow:hidden}.pricing-page__add-btn[data-v-fb0720df]{align-items:center;gap:6px;margin:12px 16px 16px;display:inline-flex}.pricing-page__compact-items[data-v-fb0720df]{margin-bottom:16px}.pricing-page__item-index[data-v-fb0720df]{color:var(--color-text-muted);font-size:.75rem}.pricing-page__compact-fields[data-v-fb0720df]{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.pricing-page__compact-fields label[data-v-fb0720df]{color:var(--color-text-muted);flex-direction:column;gap:6px;min-width:0;font-size:.75rem;display:flex}.pricing-page__compact-fields[data-v-fb0720df] .admin-input,.pricing-page__compact-fields[data-v-fb0720df] input{width:100%;min-width:0}.pricing-page__invoice-hint[data-v-fb0720df]{color:var(--color-text-muted);margin:12px 0 0;font-size:.75rem;line-height:1.8}.pricing-page__line-total[data-v-fb0720df]{color:var(--color-text);grid-column:1/-1;margin:0;font-size:.875rem;font-weight:700}@media (width<=479px){.pricing-page__compact-fields[data-v-fb0720df]{grid-template-columns:1fr}} diff --git a/dist/assets/OrderPricingView-Ba_MCwwk.js b/dist/assets/OrderPricingView-Ba_MCwwk.js new file mode 100644 index 0000000..ef4f61d --- /dev/null +++ b/dist/assets/OrderPricingView-Ba_MCwwk.js @@ -0,0 +1 @@ +import{$ as e,At as t,B as n,E as r,H as i,M as a,U as o,Z as ee,c as s,d as c,g as te,h as l,k as u,l as ne,m as d,r as f,s as p,st as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as re,f as _,m as ie,t as v}from"./http-BjLkjdQu.js";import{B as ae,I as y,L as oe,R as se,S as ce,T as le,c as b,i as x,w as S,z as C}from"./index-SWzbcuqQ.js";import{t as ue}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as de}from"./AdminSelect-6a7SFr9x.js";import{r as fe}from"./orderStatus-CeC05Cv4.js";import{t as pe}from"./StatusBadge-jGFZVW4C.js";import{t as w}from"./AdminCurrencyInput-BGwf-fv_.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`},D=[`disabled`],Je=[`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=h(te({__name:`OrderPricingView`,setup(te){let h=oe(),O=se(),k=re(),A=e(null),j=e([]),M=e(0),N=e(``),P=e(!1),F=e(``),I=e(!1),L=e(!1),R=e(!0),z=e([]),B=e([]),V=()=>({productId:``,requestedMeterage:50,confirmedMeterage:50}),H=ee(V()),nt=p(()=>z.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=p(()=>H.productId.length>0&&H.requestedMeterage>0),W=p(()=>A.value?ce(A.value):null),G=p(()=>A.value?!fe.includes(A.value.status):!1),K=p(()=>!!A.value?.finalAmount&&!G.value);async function rt(){R.value=!0;try{let e=await S.get(String(h.params.id));A.value=e,j.value=(e.items??[]).map(q),M.value=e.shippingCost??0,B.value=[],z.value=await le.list({activeOnly:!0})}catch(e){k.error(e instanceof v?e.message:`بارگذاری سفارش انجام نشد.`)}finally{R.value=!1}}r(()=>{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 C({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))}n(()=>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??e.productCode,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 v?e.message:`ذخیره قیمت‌گذاری انجام نشد.`)}finally{I.value=!1}}}async function $(){if(A.value){if(!A.value.finalAmount){k.error(`ابتدا قیمت‌گذاری را ذخیره کنید تا مبلغ فاکتور مشخص شود.`);return}if(await C({title:`ارسال فاکتور برای مشتری`,message:`فاکتور ${x(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 v?e.message:`ارسال فاکتور انجام نشد.`)}finally{L.value=!1}}}}return(e,n)=>(u(),c(`div`,me,[s(`div`,he,[n[5]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`قیمت‌گذاری سفارش`)],-1),s(`div`,ge,[s(`button`,{type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:I.value||R.value,onClick:Q},t(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,_e),s(`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),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:it},` بازگشت `)])]),R.value?(u(),ne(ue,{key:0,variant:`detail`})):W.value?(u(),c(f,{key:1},[s(`div`,ye,[s(`div`,be,[s(`div`,null,[s(`strong`,xe,t(W.value.orderNumber),1),s(`p`,Se,t(W.value.customerName),1),l(pe,{status:W.value.status},null,8,[`status`])])]),s(`div`,Ce,[s(`div`,we,[n[6]||=s(`p`,{class:`admin-summary-item__label`},`مجموع مبلغ`,-1),s(`p`,Te,t(W.value.totalAmount?m(x)(W.value.totalAmount):`—`),1)]),s(`div`,Ee,[n[7]||=s(`p`,{class:`admin-summary-item__label`},`هزینه حمل`,-1),s(`p`,De,t(m(x)(M.value)),1)]),s(`div`,T,[n[8]||=s(`p`,{class:`admin-summary-item__label`},`مبلغ نهایی`,-1),s(`p`,E,t(A.value?.finalAmount?m(x)(A.value.finalAmount):`—`),1)])])]),s(`div`,Oe,[s(`div`,ke,[s(`table`,Ae,[n[9]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`ردیف`),s(`th`,null,`شرکت`),s(`th`,null,`کالیته`),s(`th`,null,`محصول`),s(`th`,null,`رنگ / نوع`),s(`th`,null,`متراژ درخواستی`),s(`th`,null,`متراژ تأیید شده`),s(`th`,null,`قیمت هر متر (تومان)`),s(`th`,null,`مبلغ کل (تومان)`),s(`th`,null,`عملیات`)])],-1),s(`tbody`,null,[(u(!0),c(f,null,a(j.value,(e,n)=>(u(),c(`tr`,{key:e.id},[s(`td`,null,t(n+1),1),s(`td`,null,t(e.companyName||A.value?.companyName||`—`),1),s(`td`,null,t(e.catalogCode),1),s(`td`,null,t(e.productName),1),s(`td`,null,t(e.color),1),s(`td`,null,t(m(b)(e.requestedMeterage)),1),s(`td`,null,[o(s(`input`,{"onUpdate:modelValue":t=>e.confirmedMeterage=t,type:`number`,class:`admin-input admin-input--sm`},null,8,je),[[_,e.confirmedMeterage,void 0,{number:!0}]])]),s(`td`,null,[l(w,{modelValue:e.supplyPrice,"onUpdate:modelValue":t=>e.supplyPrice=t,"input-class":`admin-input admin-input--sm`,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`td`,null,t(e.totalAmount?m(x)(e.totalAmount):`—`),1),s(`td`,null,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>J(e.id)},` حذف `,8,Me)])]))),128))])])]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost pricing-page__add-btn`,onClick:Y},[l(y,{name:`products`,size:16}),n[10]||=d(` افزودن محصول `,-1)])]),s(`div`,Ne,[(u(!0),c(f,null,a(j.value,(e,r)=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,Pe,[s(`p`,Fe,t(e.productName),1),s(`span`,Ie,`#`+t(r+1),1)]),s(`div`,Le,[e.companyName||A.value?.companyName?(u(),c(`span`,Re,t(e.companyName||A.value?.companyName),1)):g(``,!0),s(`span`,null,`کالیته `+t(e.catalogCode),1),s(`span`,null,t(e.color),1),s(`span`,null,`درخواست: `+t(m(b)(e.requestedMeterage))+` متر`,1)]),s(`div`,ze,[s(`label`,null,[n[11]||=d(` متراژ تأیید شده `,-1),o(s(`input`,{"onUpdate:modelValue":t=>e.confirmedMeterage=t,type:`number`,class:`admin-input`},null,8,Be),[[_,e.confirmedMeterage,void 0,{number:!0}]])]),s(`label`,null,[n[12]||=d(` قیمت هر متر (تومان) `,-1),l(w,{modelValue:e.supplyPrice,"onUpdate:modelValue":t=>e.supplyPrice=t,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),e.totalAmount?(u(),c(`p`,Ve,` مبلغ کل: `+t(m(x)(e.totalAmount)),1)):g(``,!0)]),s(`div`,He,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>J(e.id)},` حذف `,8,Ue)])]))),128)),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost`,onClick:Y},[l(y,{name:`products`,size:16}),n[13]||=d(` افزودن محصول `,-1)])]),s(`div`,We,[s(`div`,Ge,[n[14]||=s(`label`,null,`هزینه حمل (تومان)`,-1),l(w,{modelValue:M.value,"onUpdate:modelValue":n[0]||=e=>M.value=e,"allow-empty":!1},null,8,[`modelValue`])]),s(`div`,Ke,[n[15]||=s(`label`,null,`توضیحات برای مشتری`,-1),o(s(`textarea`,{"onUpdate:modelValue":n[1]||=e=>N.value=e,placeholder:`توضیحات خود را وارد کنید...`},null,512),[[_,N.value]])])]),s(`div`,qe,[s(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:I.value,onClick:Q},t(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,D),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||L.value||I.value,onClick:$},t(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,Je)]),s(`p`,Ye,[G.value?(u(),c(f,{key:0},[d(` فاکتور این سفارش برای مشتری ارسال شده است؛ انتخاب روش تسویه در اختیار اوست. `)],64)):K.value?(u(),c(f,{key:1},[d(` مبلغ نهایی آماده است. با ارسال فاکتور، مشتری برای انتخاب نقدی یا چک مطلع می‌شود. `)],64)):(u(),c(f,{key:2},[d(` ابتدا قیمت واحد اقلام و هزینه حمل را ذخیره کنید تا مبلغ نهایی فاکتور ساخته شود. `)],64))])],64)):g(``,!0),l(ae,{open:P.value,title:`افزودن محصول`,size:`lg`,onClose:X},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` انصراف `),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!U.value,onClick:Z},` افزودن به سفارش `,8,tt)]),default:i(()=>[s(`form`,{class:`admin-form`,onSubmit:ie(Z,[`prevent`])},[F.value?(u(),c(`p`,Xe,t(F.value),1)):g(``,!0),s(`div`,Ze,[n[16]||=s(`label`,null,[d(`محصول `),s(`span`,{class:`admin-form__required`},`*`)],-1),l(de,{modelValue:H.productId,"onUpdate:modelValue":n[2]||=e=>H.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:nt.value},null,8,[`modelValue`,`options`])]),s(`div`,Qe,[s(`div`,$e,[n[17]||=s(`label`,{for:`requested-meterage`},[d(` متراژ درخواستی `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`requested-meterage`,"onUpdate:modelValue":n[3]||=e=>H.requestedMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,H.requestedMeterage,void 0,{number:!0}]])]),s(`div`,et,[n[18]||=s(`label`,{for:`confirmed-meterage`},`متراژ تأیید شده`,-1),o(s(`input`,{id:`confirmed-meterage`,"onUpdate:modelValue":n[4]||=e=>H.confirmedMeterage=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[_,H.confirmedMeterage,void 0,{number:!0}]])])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-fb0720df`]]);export{O as default}; \ No newline at end of file diff --git a/dist/assets/OrderPricingView-BqbturHp.js b/dist/assets/OrderPricingView-BqbturHp.js deleted file mode 100644 index c3af0ad..0000000 --- a/dist/assets/OrderPricingView-BqbturHp.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,B as n,E as r,H as i,M as a,U as o,Z as ee,c as s,d as c,g as te,h as l,k as u,l as ne,m as d,r as f,s as p,st as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as re,f as _,m as ie,t as v}from"./http-BjLkjdQu.js";import{B as ae,C as oe,E as se,H as ce,R as y,T as b,V as x,c as S,i as C,z as le}from"./index-BzcByePp.js";import{t as ue}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as de}from"./AdminSelect-8XDtPu3U.js";import{r as fe}from"./orderStatus-CeC05Cv4.js";import{t as pe}from"./StatusBadge-jGFZVW4C.js";import{t as w}from"./AdminCurrencyInput-S1e1av3F.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`},D=[`disabled`],Je=[`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=h(te({__name:`OrderPricingView`,setup(te){let h=le(),O=ae(),k=re(),A=e(null),j=e([]),M=e(0),N=e(``),P=e(!1),F=e(``),I=e(!1),L=e(!1),R=e(!0),z=e([]),B=e([]),V=()=>({productId:``,requestedMeterage:50,confirmedMeterage:50}),H=ee(V()),nt=p(()=>z.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=p(()=>H.productId.length>0&&H.requestedMeterage>0),W=p(()=>A.value?oe(A.value):null),G=p(()=>A.value?!fe.includes(A.value.status):!1),K=p(()=>!!A.value?.finalAmount&&!G.value);async function rt(){R.value=!0;try{let e=await b.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}}r(()=>{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 x({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))}n(()=>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 b.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 x({title:`ارسال فاکتور برای مشتری`,message:`فاکتور ${C(A.value.finalAmount)} برای مشتری ارسال می‌شود و او روش تسویه را انتخاب می‌کند. ادامه می‌دهید؟`,confirmLabel:`ارسال فاکتور`,cancelLabel:`انصراف`})){L.value=!0;try{let e=await b.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(e,n)=>(u(),c(`div`,me,[s(`div`,he,[n[5]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`قیمت‌گذاری سفارش`)],-1),s(`div`,ge,[s(`button`,{type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:I.value||R.value,onClick:Q},t(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,_e),s(`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),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:it},` بازگشت `)])]),R.value?(u(),ne(ue,{key:0,variant:`detail`})):W.value?(u(),c(f,{key:1},[s(`div`,ye,[s(`div`,be,[s(`div`,null,[s(`strong`,xe,t(W.value.orderNumber),1),s(`p`,Se,t(W.value.customerName),1),l(pe,{status:W.value.status},null,8,[`status`])])]),s(`div`,Ce,[s(`div`,we,[n[6]||=s(`p`,{class:`admin-summary-item__label`},`مجموع مبلغ`,-1),s(`p`,Te,t(W.value.totalAmount?m(C)(W.value.totalAmount):`—`),1)]),s(`div`,Ee,[n[7]||=s(`p`,{class:`admin-summary-item__label`},`هزینه حمل`,-1),s(`p`,De,t(m(C)(M.value)),1)]),s(`div`,T,[n[8]||=s(`p`,{class:`admin-summary-item__label`},`مبلغ نهایی`,-1),s(`p`,E,t(A.value?.finalAmount?m(C)(A.value.finalAmount):`—`),1)])])]),s(`div`,Oe,[s(`div`,ke,[s(`table`,Ae,[n[9]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`ردیف`),s(`th`,null,`شرکت`),s(`th`,null,`کالیته`),s(`th`,null,`محصول`),s(`th`,null,`رنگ / نوع`),s(`th`,null,`متراژ درخواستی`),s(`th`,null,`متراژ تأیید شده`),s(`th`,null,`قیمت تأمینی (واحد)`),s(`th`,null,`مبلغ کل (تومان)`),s(`th`,null,`عملیات`)])],-1),s(`tbody`,null,[(u(!0),c(f,null,a(j.value,(e,n)=>(u(),c(`tr`,{key:e.id},[s(`td`,null,t(n+1),1),s(`td`,null,t(e.companyName||A.value?.companyName||`—`),1),s(`td`,null,t(e.catalogCode),1),s(`td`,null,t(e.productName),1),s(`td`,null,t(e.color),1),s(`td`,null,t(m(S)(e.requestedMeterage)),1),s(`td`,null,[o(s(`input`,{"onUpdate:modelValue":t=>e.confirmedMeterage=t,type:`number`,class:`admin-input admin-input--sm`},null,8,je),[[_,e.confirmedMeterage,void 0,{number:!0}]])]),s(`td`,null,[l(w,{modelValue:e.supplyPrice,"onUpdate:modelValue":t=>e.supplyPrice=t,"input-class":`admin-input admin-input--sm`,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),s(`td`,null,t(e.totalAmount?m(C)(e.totalAmount):`—`),1),s(`td`,null,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>J(e.id)},` حذف `,8,Me)])]))),128))])])]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost pricing-page__add-btn`,onClick:Y},[l(y,{name:`products`,size:16}),n[10]||=d(` افزودن محصول `,-1)])]),s(`div`,Ne,[(u(!0),c(f,null,a(j.value,(e,r)=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,Pe,[s(`p`,Fe,t(e.productName),1),s(`span`,Ie,`#`+t(r+1),1)]),s(`div`,Le,[e.companyName||A.value?.companyName?(u(),c(`span`,Re,t(e.companyName||A.value?.companyName),1)):g(``,!0),s(`span`,null,`کالیته `+t(e.catalogCode),1),s(`span`,null,t(e.color),1),s(`span`,null,`درخواست: `+t(m(S)(e.requestedMeterage))+` متر`,1)]),s(`div`,ze,[s(`label`,null,[n[11]||=d(` متراژ تأیید شده `,-1),o(s(`input`,{"onUpdate:modelValue":t=>e.confirmedMeterage=t,type:`number`,class:`admin-input`},null,8,Be),[[_,e.confirmedMeterage,void 0,{number:!0}]])]),s(`label`,null,[n[12]||=d(` قیمت تأمینی `,-1),l(w,{modelValue:e.supplyPrice,"onUpdate:modelValue":t=>e.supplyPrice=t,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),e.totalAmount?(u(),c(`p`,Ve,` مبلغ کل: `+t(m(C)(e.totalAmount)),1)):g(``,!0)]),s(`div`,He,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>J(e.id)},` حذف `,8,Ue)])]))),128)),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost`,onClick:Y},[l(y,{name:`products`,size:16}),n[13]||=d(` افزودن محصول `,-1)])]),s(`div`,We,[s(`div`,Ge,[n[14]||=s(`label`,null,`هزینه حمل (تومان)`,-1),l(w,{modelValue:M.value,"onUpdate:modelValue":n[0]||=e=>M.value=e,"allow-empty":!1},null,8,[`modelValue`])]),s(`div`,Ke,[n[15]||=s(`label`,null,`توضیحات برای مشتری`,-1),o(s(`textarea`,{"onUpdate:modelValue":n[1]||=e=>N.value=e,placeholder:`توضیحات خود را وارد کنید...`},null,512),[[_,N.value]])])]),s(`div`,qe,[s(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:I.value,onClick:Q},t(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,D),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||L.value||I.value,onClick:$},t(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,Je)]),s(`p`,Ye,[G.value?(u(),c(f,{key:0},[d(` فاکتور این سفارش برای مشتری ارسال شده است؛ انتخاب روش تسویه در اختیار اوست. `)],64)):K.value?(u(),c(f,{key:1},[d(` مبلغ نهایی آماده است. با ارسال فاکتور، مشتری برای انتخاب نقدی یا چک مطلع می‌شود. `)],64)):(u(),c(f,{key:2},[d(` ابتدا قیمت واحد اقلام و هزینه حمل را ذخیره کنید تا مبلغ نهایی فاکتور ساخته شود. `)],64))])],64)):g(``,!0),l(ce,{open:P.value,title:`افزودن محصول`,size:`lg`,onClose:X},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` انصراف `),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!U.value,onClick:Z},` افزودن به سفارش `,8,tt)]),default:i(()=>[s(`form`,{class:`admin-form`,onSubmit:ie(Z,[`prevent`])},[F.value?(u(),c(`p`,Xe,t(F.value),1)):g(``,!0),s(`div`,Ze,[n[16]||=s(`label`,null,[d(`محصول `),s(`span`,{class:`admin-form__required`},`*`)],-1),l(de,{modelValue:H.productId,"onUpdate:modelValue":n[2]||=e=>H.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:nt.value},null,8,[`modelValue`,`options`])]),s(`div`,Qe,[s(`div`,$e,[n[17]||=s(`label`,{for:`requested-meterage`},[d(` متراژ درخواستی `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`requested-meterage`,"onUpdate:modelValue":n[3]||=e=>H.requestedMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,H.requestedMeterage,void 0,{number:!0}]])]),s(`div`,et,[n[18]||=s(`label`,{for:`confirmed-meterage`},`متراژ تأیید شده`,-1),o(s(`input`,{id:`confirmed-meterage`,"onUpdate:modelValue":n[4]||=e=>H.confirmedMeterage=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[_,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-D4tU9mWx.css b/dist/assets/OrderPricingView-D4tU9mWx.css deleted file mode 100644 index 4ea0475..0000000 --- a/dist/assets/OrderPricingView-D4tU9mWx.css +++ /dev/null @@ -1 +0,0 @@ -.pricing-page__summary[data-v-ba142b4c]{margin-bottom:16px;padding:20px}.pricing-page__order-meta[data-v-ba142b4c]{margin-bottom:16px}.pricing-page__order-id[data-v-ba142b4c]{margin-bottom:4px;font-size:1rem;display:block}.pricing-page__customer[data-v-ba142b4c]{color:var(--color-text-muted);margin:0 0 8px;font-size:.875rem}.pricing-page__table[data-v-ba142b4c]{margin-bottom:16px;padding:0;overflow:hidden}.pricing-page__add-btn[data-v-ba142b4c]{align-items:center;gap:6px;margin:12px 16px 16px;display:inline-flex}.pricing-page__compact-items[data-v-ba142b4c]{margin-bottom:16px}.pricing-page__item-index[data-v-ba142b4c]{color:var(--color-text-muted);font-size:.75rem}.pricing-page__compact-fields[data-v-ba142b4c]{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.pricing-page__compact-fields label[data-v-ba142b4c]{color:var(--color-text-muted);flex-direction:column;gap:6px;min-width:0;font-size:.75rem;display:flex}.pricing-page__compact-fields[data-v-ba142b4c] .admin-input,.pricing-page__compact-fields[data-v-ba142b4c] input{width:100%;min-width:0}.pricing-page__invoice-hint[data-v-ba142b4c]{color:var(--color-text-muted);margin:12px 0 0;font-size:.75rem;line-height:1.8}.pricing-page__line-total[data-v-ba142b4c]{color:var(--color-text);grid-column:1/-1;margin:0;font-size:.875rem;font-weight:700}@media (width<=479px){.pricing-page__compact-fields[data-v-ba142b4c]{grid-template-columns:1fr}} diff --git a/dist/assets/OrdersView-BCieQtX2.js b/dist/assets/OrdersView-BCieQtX2.js deleted file mode 100644 index 2bd2899..0000000 --- a/dist/assets/OrdersView-BCieQtX2.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,A as t,At as n,B as r,D as i,Dt as a,E as o,H as s,J as c,M as l,U as u,Z as d,a as f,c as p,d as m,g as h,h as g,k as _,kt as v,l as y,m as b,p as x,r as S,s as C,st as w,t as T,u as E,w as D,x as O}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as k,f as ee,m as A,t as j}from"./http-BjLkjdQu.js";import{B as M,C as N,D as P,E as F,H as I,P as L,R,T as z,c as B,i as V,o as H,s as U,v as W,y as G,z as K}from"./index-BzcByePp.js";import{t as q}from"./AdminSelect-8XDtPu3U.js";import{t as J}from"./AdminImageLightbox-CE3ZJ5-o.js";import{n as Y,r as X}from"./adminLabels-Cz9ccm1Z.js";import{a as te,n as Z,o as ne,s as Q,t as re}from"./orderStatus-CeC05Cv4.js";import{t as ie}from"./StatusBadge-jGFZVW4C.js";function ae(){let t=K(),n=M(),i=k(),a=e([]),s=e([]),c=new Set(Z.map(e=>e.key));function l(){let e=typeof t.query.tab==`string`?t.query.tab:``;return c.has(e)?e:`all`}let u=e([]),f=e(l()),p=e(``),m=e(``),h=e(!1),g=e(!1),_=e(!1),v=e(``),y=e(!1),b=()=>({customerId:``,customerName:``,customerPhone:``,items:[]}),x=d(b()),S=C(()=>x.customerId.length>0&&x.items.length>0),w=C(()=>{let e=[...s.value];return e.sort((e,t)=>Number(t.isActive)-Number(e.isActive)||e.name.localeCompare(t.name,`fa`)),e});function T(e){let t=s.value.find(t=>t.id===e);x.customerId=e,x.customerName=t?.name??``,x.customerPhone=t?.phone??``}async function E(){try{s.value=await G.list()}catch(e){i.error(e instanceof j?e.message:`بارگذاری مشتریان انجام نشد.`)}}let D=C(()=>{let e=u.value;if(f.value!==`all`&&(e=e.filter(e=>e.status===f.value)),m.value.trim()){let t=m.value.trim();e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t))}return e}),O=C(()=>u.value.find(e=>e.id===p.value)??null);function ee(e){let t=e.trim();if(t)return u.value.find(e=>e.id===t||e.orderNumber.toUpperCase()===t.toUpperCase())}async function A(){let e=typeof t.query.order==`string`?t.query.order:``;if(!e||!u.value.length)return;let r=ee(e);if(!r){m.value=e;return}let i=typeof t.query.focus==`string`?t.query.focus:``;if(i===`pricing`){await n.replace(`/orders/${r.id}/pricing`);return}if(i===`checks`){await n.replace(`/orders/${r.id}/checks`);return}I(r),m.value=r.orderNumber}async function P(){try{let[e,t,n]=await Promise.all([z.list(),W.list(),G.list()]);u.value=e.map(e=>N(e)),a.value=t,s.value=n,await A()}catch(e){i.error(e instanceof j?e.message:`بارگذاری سفارش‌ها انجام نشد.`)}}o(()=>{P()}),r(()=>[t.query.order,t.query.focus],()=>{A()}),r(()=>t.query.tab,()=>{let e=l();f.value!==e&&(f.value=e)}),r(f,e=>{let r=typeof t.query.tab==`string`?t.query.tab:`all`,i=e===`all`?void 0:e;(r===`all`?void 0:r)!==i&&n.replace({query:{...t.query,tab:i}})});function F(e,t=!1){p.value=e.id,t&&(g.value=!0)}async function I(e){p.value=e.id,_.value=!0;try{let t=N(await z.get(e.id)),n=u.value.findIndex(t=>t.id===e.id);n>=0&&(u.value[n]={...u.value[n],...t})}catch{}}function L(){g.value=!1}function R(){_.value=!1}function B(e){return e?e===`check`?`چکی`:`نقدی`:`انتخاب‌نشده`}let V=e(!1);async function H(e){if(V.value)return null;V.value=!0;try{let t=await z.updateStatus(e.orderId,{status:e.status,note:e.note}),n=N(t),r=u.value.findIndex(t=>t.id===e.orderId);return r>=0&&(u.value[r]={...u.value[r],...n}),i.success(`وضعیت سفارش به «${Q(e.status)}» تغییر کرد.`),n}catch(e){return i.error(e instanceof j?e.message:`تغییر وضعیت انجام نشد.`),null}finally{V.value=!1}}function U(e){n.push(`/orders/${e.id}/pricing`)}function q(e){n.push(`/orders/${e.id}/checks`)}function J(e){n.push({path:`/cash-payments`,query:{order:e.orderNumber}})}function Y(){Object.assign(x,b()),v.value=``,h.value=!0,E()}function X(){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 z.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=N(e);u.value.unshift(t),p.value=t.id,i.success(`سفارش جدید ثبت شد.`),X()}catch(e){i.error(e instanceof j?e.message:`ثبت سفارش انجام نشد.`)}finally{y.value=!1}}return{companies:a,customers:s,activeCustomers:w,applyCustomer:T,loadCustomers:E,orderList:u,activeTab:f,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:B,changeStatus:H,statusSaving:V,goPricing:U,goChecks:q,goCashReceipt:J,openAddModal:Y,closeAddModal:X,submitAddOrder:re,saving:y}}var oe=Symbol(`orders-page`);function se(){let e=ae();return t(oe,e),e}function ce(){let e=O(oe);if(!e)throw Error(`Orders page context is missing`);return e}var $={class:`order-detail__hero`},le={class:`order-detail__hero-text`},ue={class:`order-detail__id`},de={key:0,class:`order-detail__raw-status`},fe={class:`order-detail__actions no-print`},pe=[`disabled`],me={class:`order-detail__panels`},he={class:`order-detail__section`},ge={class:`order-detail__info`},_e={class:`order-detail__info-row`},ve={class:`order-detail__info-value`},ye={class:`order-detail__info-row`},be={class:`order-detail__info-value order-detail__info-value--phone`,dir:`ltr`},xe={class:`order-detail__info-row`},Se={class:`order-detail__info-value`},Ce={class:`order-detail__info-row`},we={class:`order-detail__info-value`},Te={class:`order-detail__section`},Ee={class:`order-detail__info`},De={class:`order-detail__info-row`},Oe={class:`order-detail__info-value`},ke={class:`order-detail__info-row`},Ae={class:`order-detail__info-value`},je={class:`order-detail__info-row`},Me={class:`order-detail__info-value`},Ne={class:`order-detail__info-row`},Pe={class:`order-detail__info-value`},Fe={key:0,class:`order-detail__section`},Ie={key:0,class:`admin-table-wrap order-detail__table`},Le={class:`admin-table admin-table--compact`},Re={key:1,class:`order-detail__items`},ze={class:`order-detail__item-head`},Be={class:`order-detail__item-meta`},Ve={key:0},He={key:1},Ue={key:2,class:`order-detail__item-total`},We={key:1,class:`order-detail__section`},Ge={class:`order-detail__info`},Ke={class:`order-detail__info-row`},qe={class:`order-detail__info-value`},Je={class:`order-detail__info-row`},Ye={class:`order-detail__info-value`},Xe={key:0,class:`order-detail__info-row`},Ze={class:`order-detail__info-value`},Qe={key:1,class:`order-detail__info-row`},$e={class:`order-detail__info-value`,dir:`ltr`},et={key:2,class:`order-detail__info-row`},tt={class:`order-detail__info-value`},nt={key:0,class:`order-detail__receipt`},rt=[`src`],it={key:1,class:`order-detail__status-hint`},at={class:`order-detail__section order-detail__status no-print`},ot={key:0,class:`order-detail__status-hint`},st={key:1,class:`order-detail__status-form`},ct={class:`admin-form__field`},lt={class:`admin-form__field`},ut=[`disabled`],dt=T(h({__name:`OrderDetailContent`,props:{order:{},settlementLabel:{},layout:{default:`compact`},statusSaving:{type:Boolean}},emits:[`pricing`,`checks`,`cashReceipt`,`finalApprove`,`status`],setup(t,{emit:i}){let o=t,s=i,c=e(``),d=e(``),f=e(!1),h=C(()=>o.order.cashReceipt??null),v=C(()=>o.order.allowedTransitions??[]),x=C(()=>[...v.value]),T=C(()=>[{value:``,label:`انتخاب کنید…`},...x.value.map(e=>({value:e,label:Q(e)}))]),D=C(()=>!!c.value),O=C(()=>o.layout===`desktop`),k=C(()=>re[o.order.status]?.label??o.order.status),A=C(()=>{let e=Q(o.order.rawStatus);return!e||e===k.value?``:e}),j=C(()=>{let e=o.order.customerType;return e?X[e]??o.order.customerType??`—`:`—`}),M=C(()=>ne(o.order)),N=C(()=>te(o.order)),P=C(()=>o.order.settlementMethod===`check`&&!M.value),F=C(()=>o.order.settlementMethod===`cash`&&!M.value&&o.order.rawStatus!==`cash_confirmed`),I=C(()=>M.value?`pricing`:N.value?`final`:P.value?`checks`:F.value?`cash`:null);r(()=>o.order.id,()=>{c.value=``,d.value=``});function L(){if(!c.value||!D.value)return;let e=d.value.trim()||void 0;s(`status`,{orderId:o.order.id,status:c.value,note:e}),c.value=``,d.value=``}function z(){if(h.value?.receiptImage){f.value=!0;return}s(`cashReceipt`)}return(e,r)=>(_(),m(`div`,{class:a([`order-detail`,`order-detail--${t.layout}`])},[p(`header`,$,[p(`div`,le,[p(`div`,ue,[p(`strong`,null,n(t.order.orderNumber),1),g(ie,{status:t.order.status},null,8,[`status`])]),A.value?(_(),m(`p`,de,n(A.value),1)):E(``,!0)]),p(`div`,fe,[M.value?(_(),m(`button`,{key:0,type:`button`,class:a([`admin-btn admin-btn--sm`,I.value===`pricing`?`admin-btn--primary`:`admin-btn--outline`]),onClick:r[0]||=e=>s(`pricing`)},` قیمت‌گذاری سفارش `,2)):E(``,!0),P.value?(_(),m(`button`,{key:1,type:`button`,class:a([`admin-btn admin-btn--sm`,I.value===`checks`?`admin-btn--primary`:`admin-btn--outline`]),onClick:r[1]||=e=>s(`checks`)},` مدیریت چک‌ها `,2)):E(``,!0),F.value?(_(),m(`button`,{key:2,type:`button`,class:a([`admin-btn admin-btn--sm`,I.value===`cash`?`admin-btn--primary`:`admin-btn--outline`]),onClick:z},n(h.value?.receiptImage?`مشاهده رسید`:`رسید پرداخت`),3)):E(``,!0),N.value?(_(),m(`button`,{key:3,type:`button`,class:a([`admin-btn admin-btn--sm`,I.value===`final`?`admin-btn--primary`:`admin-btn--outline`]),disabled:t.statusSaving,onClick:r[2]||=e=>s(`finalApprove`)},` تأیید نهایی `,10,pe)):E(``,!0)])]),p(`div`,me,[p(`section`,he,[r[12]||=p(`h3`,{class:`order-detail__section-title`},`اطلاعات مشتری`,-1),p(`div`,ge,[p(`div`,_e,[g(R,{name:`building`,size:16}),r[8]||=p(`span`,{class:`order-detail__info-label`},`مشتری`,-1),p(`span`,ve,n(t.order.customerName),1)]),p(`div`,ye,[g(R,{name:`phone`,size:16}),r[9]||=p(`span`,{class:`order-detail__info-label`},`تلفن`,-1),p(`span`,be,n(t.order.customerPhone??`—`),1)]),p(`div`,xe,[g(R,{name:`id-card`,size:16}),r[10]||=p(`span`,{class:`order-detail__info-label`},`شناسه ملی`,-1),p(`span`,Se,n(t.order.customerNationalId??`—`),1)]),p(`div`,Ce,[g(R,{name:`user`,size:16}),r[11]||=p(`span`,{class:`order-detail__info-label`},`نوع مشتری`,-1),p(`span`,we,n(j.value),1)])])]),p(`section`,Te,[r[17]||=p(`h3`,{class:`order-detail__section-title`},`اطلاعات سفارش`,-1),p(`div`,Ee,[p(`div`,De,[r[13]||=p(`span`,{class:`order-detail__info-label`},`شرکت`,-1),p(`span`,Oe,n(t.order.companyName),1)]),p(`div`,ke,[r[14]||=p(`span`,{class:`order-detail__info-label`},`روش تسویه`,-1),p(`span`,Ae,n(t.settlementLabel(t.order.settlementMethod)),1)]),p(`div`,je,[r[15]||=p(`span`,{class:`order-detail__info-label`},`متراژ کل`,-1),p(`span`,Me,n(w(U)(t.order.meterage)),1)]),p(`div`,Ne,[r[16]||=p(`span`,{class:`order-detail__info-label`},`مبلغ کل`,-1),p(`span`,Pe,n(t.order.totalAmount==null?`پس از قیمت‌گذاری`:w(V)(t.order.totalAmount)),1)])])])]),t.order.items?.length?(_(),m(`section`,Fe,[r[19]||=p(`h3`,{class:`order-detail__section-title`},`محصولات سفارش`,-1),O.value?(_(),m(`div`,Ie,[p(`table`,Le,[r[18]||=p(`thead`,null,[p(`tr`,null,[p(`th`,null,`شرکت`),p(`th`,null,`کالیته`),p(`th`,null,`محصول`),p(`th`,null,`رنگ`),p(`th`,null,`متراژ`),p(`th`,null,`قیمت`),p(`th`,null,`مبلغ`)])],-1),p(`tbody`,null,[(_(!0),m(S,null,l(t.order.items,e=>(_(),m(`tr`,{key:e.id},[p(`td`,null,n(e.companyName||t.order.companyName),1),p(`td`,null,n(e.catalogCode),1),p(`td`,null,n(e.productName),1),p(`td`,null,n(e.color),1),p(`td`,null,n(w(B)(e.confirmedMeterage??e.requestedMeterage)),1),p(`td`,null,n(e.supplyPrice==null?`—`:w(V)(e.supplyPrice)),1),p(`td`,null,n(e.totalAmount==null?`—`:w(V)(e.totalAmount)),1)]))),128))])])])):(_(),m(`ul`,Re,[(_(!0),m(S,null,l(t.order.items,e=>(_(),m(`li`,{key:e.id,class:`order-detail__item`},[p(`div`,ze,[p(`strong`,null,n(e.productName),1),p(`span`,null,n(e.catalogCode),1)]),p(`div`,Be,[e.companyName?(_(),m(`span`,Ve,n(e.companyName),1)):E(``,!0),p(`span`,null,n(e.color),1),p(`span`,null,n(w(U)(e.confirmedMeterage??e.requestedMeterage)),1),e.supplyPrice==null?E(``,!0):(_(),m(`span`,He,n(w(V)(e.supplyPrice)),1)),e.totalAmount==null?E(``,!0):(_(),m(`span`,Ue,n(w(V)(e.totalAmount)),1))])]))),128))]))])):E(``,!0),h.value?(_(),m(`section`,We,[r[25]||=p(`h3`,{class:`order-detail__section-title`},`رسید پرداخت نقدی`,-1),p(`div`,Ge,[p(`div`,Ke,[r[20]||=p(`span`,{class:`order-detail__info-label`},`وضعیت`,-1),p(`span`,qe,n(w(Y)[h.value.status]),1)]),p(`div`,Je,[r[21]||=p(`span`,{class:`order-detail__info-label`},`مبلغ واریزی`,-1),p(`span`,Ye,n(h.value.paidAmount==null?w(V)(h.value.amount):w(V)(h.value.paidAmount)),1)]),h.value.transferDate?(_(),m(`div`,Xe,[r[22]||=p(`span`,{class:`order-detail__info-label`},`تاریخ واریز`,-1),p(`span`,Ze,[b(n(w(H)(h.value.transferDate))+` `,1),h.value.transferTime?(_(),m(S,{key:0},[b(` · `+n(h.value.transferTime),1)],64)):E(``,!0)])])):E(``,!0),h.value.trackingNumber||h.value.trackingCode?(_(),m(`div`,Qe,[r[23]||=p(`span`,{class:`order-detail__info-label`},`پیگیری`,-1),p(`span`,$e,n(h.value.trackingNumber||h.value.trackingCode),1)])):E(``,!0),h.value.notes?(_(),m(`div`,et,[r[24]||=p(`span`,{class:`order-detail__info-label`},`یادداشت`,-1),p(`span`,tt,n(h.value.notes),1)])):E(``,!0)]),h.value.receiptImage?(_(),m(`div`,nt,[p(`button`,{type:`button`,class:`order-detail__receipt-thumb`,onClick:r[3]||=e=>f.value=!0},[p(`img`,{src:h.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,rt)]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:r[4]||=e=>f.value=!0},` مشاهده تصویر رسید `)])):(_(),m(`p`,it,`تصویر رسید هنوز آپلود نشده است.`))])):E(``,!0),h.value?.receiptImage?(_(),y(J,{key:2,modelValue:f.value,"onUpdate:modelValue":r[5]||=e=>f.value=e,src:h.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):E(``,!0),p(`section`,at,[r[28]||=p(`h3`,{class:`order-detail__section-title`},`تغییر وضعیت`,-1),x.value.length?E(``,!0):(_(),m(`p`,ot,` در این مرحله گذر مجازی از این بخش نیست؛ از اقدام‌های مرحله‌ای بالا (قیمت‌گذاری، چک، رسید نقدی و …) استفاده کنید. `)),x.value.length?(_(),m(`div`,st,[p(`div`,ct,[r[26]||=p(`label`,null,`وضعیت بعدی`,-1),g(q,{modelValue:c.value,"onUpdate:modelValue":r[6]||=e=>c.value=e,block:``,"aria-label":`وضعیت بعدی`,placeholder:`انتخاب کنید…`,options:T.value},null,8,[`modelValue`,`options`])]),p(`div`,lt,[r[27]||=p(`label`,{for:`status-note`},`یادداشت (اختیاری)`,-1),u(p(`input`,{id:`status-note`,"onUpdate:modelValue":r[7]||=e=>d.value=e,type:`text`,class:`admin-input`,placeholder:`دلیل یا توضیح این تغییر`},null,512),[[ee,d.value]])]),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!D.value||t.statusSaving,onClick:L},n(t.statusSaving?`در حال ثبت…`:`ثبت وضعیت`),9,ut)])):E(``,!0)])],2))}}),[[`__scopeId`,`data-v-bff74c28`]]),ft={class:`orders-page`},pt={class:`orders-page__list-panel admin-card`},mt={class:`orders-page__list-header`},ht={class:`orders-page__list-actions`},gt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},_t={class:`orders-page__search`},vt={class:`admin-tabs`},yt=[`onClick`],bt={class:`admin-table-wrap`},xt={class:`admin-table admin-table--compact`},St=[`onClick`],Ct={class:`orders-page__actions-cell`},wt=[`aria-expanded`,`onClick`],Tt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},Et=T(h({__name:`DesktopOrdersPage`,setup(t){let r=L(`(min-width: 1280px)`),{activeTab:d,selectedOrderId:h,searchQuery:C,filteredOrders:T,selectedOrder:O,showDetailModal:k,openOrderDetail:j,closeDetailModal:M,settlementLabel:N,goPricing:P,goChecks:F,goCashReceipt:z,changeStatus:B,statusSaving:W,openAddModal:G}=ce(),K=e(null),q=e({});function J(){K.value=null}async function Y(e,t){if(t.stopPropagation(),K.value?.id===e.id){J();return}let n=t.currentTarget.getBoundingClientRect();K.value=e,await D();let r=Math.min(Math.max(8,n.right-168),window.innerWidth-168-8);q.value={position:`fixed`,top:`${n.bottom+4}px`,left:`${r}px`,width:`168px`}}function X(){J()}o(()=>{document.addEventListener(`click`,X),window.addEventListener(`scroll`,J,!0),window.addEventListener(`resize`,J)}),i(()=>{document.removeEventListener(`click`,X),window.removeEventListener(`scroll`,J,!0),window.removeEventListener(`resize`,J)});function Q(){O.value&&(M(),P(O.value))}function re(){O.value&&(M(),F(O.value))}function ae(){O.value&&(M(),z(O.value))}function oe(){O.value&&B({orderId:O.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}function se(){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`){j(t);return}if(e===`pricing`){P(t);return}if(e===`checks`){F(t);return}if(e===`final`){B({orderId:t.id,status:`final_approved`,note:`تأیید نهایی سفارش`});return}z(t)}}return(e,t)=>(_(),m(`div`,ft,[p(`div`,pt,[p(`div`,mt,[t[9]||=p(`div`,null,[p(`h2`,{class:`orders-page__list-title`},`سفارش‌ها`)],-1),p(`div`,ht,[p(`button`,gt,[g(R,{name:`filter`,size:16}),t[8]||=b(` فیلتر `,-1)]),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:t[0]||=(...e)=>w(G)&&w(G)(...e)},` سفارش جدید `)])]),p(`div`,_t,[g(R,{name:`search`,size:18}),u(p(`input`,{"onUpdate:modelValue":t[1]||=e=>c(C)?C.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[ee,w(C)]])]),p(`div`,vt,[(_(!0),m(S,null,l(w(Z),e=>(_(),m(`button`,{key:e.key,type:`button`,class:a([`admin-tab`,{active:w(d)===e.key}]),onClick:t=>d.value=e.key},[b(n(e.label)+` `,1),`count`in e&&e.count?(_(),m(S,{key:0},[b(` (`+n(e.count)+`)`,1)],64)):E(``,!0)],10,yt))),128))]),p(`div`,bt,[p(`table`,xt,[t[10]||=p(`thead`,null,[p(`tr`,null,[p(`th`,null,`شماره سفارش`),p(`th`,null,`مشتری`),p(`th`,null,`روش تسویه`),p(`th`,null,`مبلغ کل`),p(`th`,null,`متراژ`),p(`th`,null,`وضعیت`),p(`th`,null,`تاریخ ثبت`),p(`th`,null,`عملیات`)])],-1),p(`tbody`,null,[(_(!0),m(S,null,l(w(T),e=>(_(),m(`tr`,{key:e.id,class:a({"is-selected":w(h)===e.id}),onClick:t=>w(j)(e)},[p(`td`,null,n(e.orderNumber),1),p(`td`,null,n(e.customerName),1),p(`td`,null,n(w(N)(e.settlementMethod)),1),p(`td`,null,n(e.totalAmount?w(V)(e.totalAmount):`—`),1),p(`td`,null,n(w(U)(e.meterage)),1),p(`td`,null,[g(ie,{status:e.status},null,8,[`status`])]),p(`td`,null,n(w(H)(e.createdAt)),1),p(`td`,Ct,[p(`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)},[g(R,{name:`more`,size:18})],8,wt)])],10,St))),128))])])]),t[11]||=x(`
نمایش ۱ تا ۷ از ۱۰۳ سفارش
...
`,1)]),(_(),y(f,{to:`body`},[K.value?(_(),m(`div`,{key:0,class:`orders-page__menu`,role:`menu`,style:v(q.value),onClick:t[7]||=A(()=>{},[`stop`])},[p(`button`,{type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[2]||=e=>$(`detail`)},` جزئیات سفارش `),K.value&&w(ne)(K.value)?(_(),m(`button`,{key:0,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[3]||=e=>$(`pricing`)},` قیمت‌گذاری `)):E(``,!0),K.value.settlementMethod===`check`?(_(),m(`button`,{key:1,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[4]||=e=>$(`checks`)},` مدیریت چک‌ها `)):E(``,!0),K.value.settlementMethod===`cash`&&K.value.rawStatus!==`cash_confirmed`?(_(),m(`button`,{key:2,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[5]||=e=>$(`cash`)},` رسید پرداخت `)):E(``,!0),w(te)(K.value)?(_(),m(`button`,{key:3,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[6]||=e=>$(`final`)},` تأیید نهایی `)):E(``,!0)],4)):E(``,!0)])),g(I,{open:w(r)&&w(k)&&!!w(O),title:`جزئیات سفارش`,size:`xl`,onClose:w(M)},{footer:s(()=>[p(`button`,Tt,[g(R,{name:`sms`,size:16}),t[12]||=b(` ارسال پیامک `,-1)]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:se},[g(R,{name:`print`,size:16}),t[13]||=b(` چاپ `,-1)])]),default:s(()=>[w(O)?(_(),y(dt,{key:0,order:w(O),layout:`desktop`,"settlement-label":w(N),"status-saving":w(W),onPricing:Q,onChecks:re,onCashReceipt:ae,onFinalApprove:oe,onStatus:w(B)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-cfed03e1`]]),Dt={class:`compact-orders`},Ot={class:`compact-page-header`},kt={class:`compact-page-header__row`},At={class:`compact-page-header__actions`},jt={key:0,class:`compact-orders__filter-dot`,"aria-hidden":`true`},Mt={class:`orders-page__search admin-card`},Nt={key:0,class:`compact-orders__filter-chip admin-card`},Pt={key:1,class:`admin-tabs compact-orders__tabs`},Ft=[`onClick`],It={class:`compact-orders__filter-form`,role:`listbox`,"aria-label":`وضعیت سفارش`},Lt=[`aria-selected`,`onClick`],Rt={key:0,class:`compact-orders__filter-check`,"aria-hidden":`true`},zt={class:`admin-card-list`},Bt=[`onClick`],Vt={class:`admin-card-item__header`},Ht={class:`admin-card-item__title`},Ut={class:`admin-card-item__meta`},Wt={key:0,class:`admin-detail-panel__inner`},Gt={class:`admin-detail-panel__header`},Kt={class:`admin-detail-panel__body`},qt=T(h({__name:`CompactOrdersPage`,setup(t){let r=L(`(max-width: 767px)`),i=L(`(max-width: 1279px)`),{activeTab:o,selectedOrderId:d,searchQuery:f,filteredOrders:h,selectedOrder:v,showDetailPanel:x,showDetailModal:T,selectOrder:D,openOrderDetail:O,closeDetailPanel:k,closeDetailModal:A,settlementLabel:j,goPricing:M,goChecks:N,goCashReceipt:P,changeStatus:F,statusSaving:z,openAddModal:B}=ce(),W=e(!1),G=C(()=>o.value!==`all`),K=C(()=>Z.find(e=>e.key===o.value)?.label??`همه`);function q(){W.value=!0}function J(){W.value=!1}function Y(){o.value=`all`,W.value=!1}function X(e){o.value=e,W.value=!1}function te(e){if(r.value){D(e,!0);return}O(e)}function ne(){v.value&&(A(),k(),M(v.value))}function Q(){v.value&&(A(),k(),N(v.value))}function re(){v.value&&(A(),k(),P(v.value))}function ae(){v.value&&F({orderId:v.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}return(e,t)=>(_(),m(`div`,Dt,[p(`div`,Ot,[p(`div`,kt,[t[4]||=p(`div`,null,[p(`h2`,{class:`compact-page-header__title`},`سفارش‌ها`)],-1),p(`div`,At,[p(`button`,{type:`button`,class:a([`admin-btn admin-btn--outline admin-btn--sm`,{"admin-btn--filter-active":G.value}]),onClick:q},[g(R,{name:`filter`,size:16}),t[3]||=b(` فیلتر `,-1),G.value?(_(),m(`span`,jt)):E(``,!0)],2),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:t[0]||=(...e)=>w(B)&&w(B)(...e)},` سفارش جدید `)])])]),p(`div`,Mt,[g(R,{name:`search`,size:18}),u(p(`input`,{"onUpdate:modelValue":t[1]||=e=>c(f)?f.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[ee,w(f)]])]),w(r)&&G.value?(_(),m(`div`,Nt,[p(`span`,null,`وضعیت: `+n(K.value),1),p(`button`,{type:`button`,class:`compact-orders__filter-clear`,onClick:Y},`پاک کردن`)])):E(``,!0),w(r)?E(``,!0):(_(),m(`div`,Pt,[(_(!0),m(S,null,l(w(Z),e=>(_(),m(`button`,{key:e.key,type:`button`,class:a([`admin-tab`,{active:w(o)===e.key}]),onClick:t=>o.value=e.key},[b(n(e.label)+` `,1),`count`in e&&e.count?(_(),m(S,{key:0},[b(` (`+n(e.count)+`)`,1)],64)):E(``,!0)],10,Ft))),128))])),g(I,{open:W.value,title:`فیلتر سفارش‌ها`,onClose:J},{footer:s(()=>[p(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Y},` پاک کردن `),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:J},` بستن `)]),default:s(()=>[p(`div`,It,[(_(!0),m(S,null,l(w(Z),e=>(_(),m(`button`,{key:e.key,type:`button`,class:a([`compact-orders__filter-option`,{"is-active":w(o)===e.key}]),role:`option`,"aria-selected":w(o)===e.key,onClick:t=>X(e.key)},[p(`span`,null,n(e.label),1),w(o)===e.key?(_(),m(`span`,Rt,`✓`)):E(``,!0)],10,Lt))),128))])]),_:1},8,[`open`]),p(`div`,zt,[(_(!0),m(S,null,l(w(h),e=>(_(),m(`button`,{key:e.id,type:`button`,class:a([`admin-card-item`,{selected:w(d)===e.id}]),onClick:t=>te(e)},[p(`div`,Vt,[p(`p`,Ht,n(e.orderNumber),1),g(ie,{status:e.status},null,8,[`status`])]),p(`div`,Ut,[p(`span`,null,[t[5]||=p(`strong`,null,`مشتری:`,-1),b(` `+n(e.customerName),1)]),p(`span`,null,[t[6]||=p(`strong`,null,`متراژ:`,-1),b(` `+n(w(U)(e.meterage)),1)]),p(`span`,null,[t[7]||=p(`strong`,null,`مبلغ:`,-1),b(` `+n(e.totalAmount?w(V)(e.totalAmount):`—`),1)]),p(`span`,null,n(w(H)(e.createdAt)),1)])],10,Bt))),128))]),p(`div`,{class:a([`admin-detail-panel compact-orders__mobile-panel`,{open:w(r)&&w(x)&&w(v)}])},[w(v)?(_(),m(`div`,Wt,[p(`div`,Gt,[p(`button`,{type:`button`,class:`admin-detail-panel__back`,"aria-label":`بازگشت به لیست`,onClick:t[2]||=(...e)=>w(k)&&w(k)(...e)},[g(R,{name:`chevron-back`,size:20})]),t[8]||=p(`h2`,{class:`admin-detail-panel__title`},`جزئیات سفارش`,-1)]),p(`div`,Kt,[g(dt,{order:w(v),"settlement-label":w(j),"status-saving":w(z),onPricing:ne,onChecks:Q,onCashReceipt:re,onFinalApprove:ae,onStatus:w(F)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])])])):E(``,!0)],2),g(I,{open:w(i)&&!w(r)&&w(T)&&!!w(v),title:`جزئیات سفارش`,size:`xl`,onClose:w(A)},{default:s(()=>[w(v)?(_(),y(dt,{key:0,order:w(v),"settlement-label":w(j),"status-saving":w(z),onPricing:ne,onChecks:Q,onCashReceipt:re,onFinalApprove:ae,onStatus:w(F)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-fe86c1c8`]]);function Jt(e){return e.rollMeters&&e.rollMeters>0?e.rollMeters:e.minMeterage>0?e.minMeterage:50}function Yt(e){let t=e.orderMultiplier??e.orderStep;return t&&t>0?t:10}function Xt(e,t,n){return t===`roll`?n*Jt(e):n}function Zt(e,t){let n=Jt(e);return n>0?t/n:0}function Qt(e,t,n=1){if(!t||t<=0)return`مقدار باید بزرگ‌تر از صفر باشد.`;if(t1e-6)return`متراژ ${e.name} باید مضرب ${r} باشد`;let a=Jt(e),o=n>0?n:1;return t/a+1e-9h.value.map(e=>{let t=e.phone?` — ${e.phone}`:``,n=e.isActive===!1?` (غیرفعال)`:``;return{value:e.id,label:`${e.name}${t}${n}`}})),V=C(()=>N.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),H=C(()=>N.value.find(e=>e.id===R.productId)??null),U=C(()=>R.quantityMode===`roll`?`تعداد طاقه`:`متراژ (متر)`);r(()=>c.customerId,e=>{if(!e){c.customerName=``,c.customerPhone=``;return}v(e)});function W(e,t){let n=L.value>0?L.value:1;if(t===`roll`)return n;let r=Jt(e);return Math.max(e.minMeterage||0,n*r)}r(i,async e=>{if(e){R.productId=``,R.quantityMode=`roll`,R.quantity=0,o.value=``;try{let[e,t]=await Promise.all([F.list({activeOnly:!0}),P.get().catch(()=>null)]);N.value=e,L.value=t?.minOrderRollsPerProduct??1}catch(e){M.error(e instanceof j?e.message:`بارگذاری محصولات انجام نشد.`)}}}),r(()=>[R.productId,R.quantityMode],([e,t])=>{let n=N.value.find(t=>t.id===e);n&&(R.quantity=W(n,t))});function G(){o.value=``;let e=H.value;if(!e){o.value=`محصول را انتخاب کنید.`,M.error(o.value);return}if(!R.quantity||R.quantity<=0){o.value=`مقدار باید بزرگ‌تر از صفر باشد.`,M.error(o.value);return}let t=Xt(e,R.quantityMode,R.quantity),n=Qt(e,t,L.value);if(n){o.value=n,M.error(n);return}if(!x({productId:e.id,productName:e.name,catalogCode:e.catalogCode,meterage:t})){M.error(o.value||`افزودن محصول انجام نشد.`);return}R.productId=``,R.quantityMode=`roll`,R.quantity=0}function K(e){let t=N.value.find(t=>t.id===e.productId);if(!t)return null;let n=Zt(t,e.meterage);if(!Number.isFinite(n))return null;let r=Math.round(n*100)/100;return r%1,B(r)}return(e,t)=>(_(),y(I,{open:w(i),title:`پیش‌سفارش جدید`,size:`lg`,onClose:w(D)},{footer:s(()=>[p(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:t[6]||=(...e)=>w(D)&&w(D)(...e)},` انصراف `),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!w(f),onClick:t[7]||=(...e)=>w(O)&&w(O)(...e)},` ثبت پیش‌سفارش `,8,fn)]),default:s(()=>[p(`form`,{class:`admin-form`,onSubmit:t[5]||=A((...e)=>w(O)&&w(O)(...e),[`prevent`])},[w(o)?(_(),m(`p`,$t,n(w(o)),1)):E(``,!0),t[11]||=p(`p`,{class:`admin-form__hint`},` مثل سفارش مشتری: ابتدا اقلام ثبت می‌شود، قیمت‌گذاری و تسویه بعداً انجام می‌شود. `,-1),p(`div`,en,[t[8]||=p(`label`,{id:`order-customer-label`},[b(` مشتری `),p(`span`,{class:`admin-form__required`},`*`)],-1),g(q,{id:`order-customer`,modelValue:w(c).customerId,"onUpdate:modelValue":t[0]||=e=>w(c).customerId=e,block:``,searchable:``,"aria-label":`انتخاب مشتری از لیست`,placeholder:`انتخاب مشتری از لیست`,"search-placeholder":`جستجوی نام یا موبایل…`,options:z.value},null,8,[`modelValue`,`options`]),z.value.length?E(``,!0):(_(),m(`p`,tn,` مشتری‌ای در سیستم نیست. ابتدا از بخش «مشتریان» یک مشتری ثبت کنید. `))]),p(`div`,nn,[t[9]||=p(`label`,null,`محصول`,-1),g(q,{modelValue:R.productId,"onUpdate:modelValue":t[1]||=e=>R.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:V.value},null,8,[`modelValue`,`options`])]),p(`div`,rn,[p(`div`,an,[t[10]||=p(`span`,{class:`admin-form__label`},`واحد سفارش`,-1),p(`div`,on,[p(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`roll`}]),onClick:t[2]||=e=>R.quantityMode=`roll`},` طاقه `,2),p(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`meter`}]),onClick:t[3]||=e=>R.quantityMode=`meter`},` متراژ `,2)])]),p(`div`,sn,[p(`label`,cn,n(U.value),1),u(p(`input`,{id:`order-item-quantity`,"onUpdate:modelValue":t[4]||=e=>R.quantity=e,type:`number`,min:`0`,step:`any`,class:`admin-input`},null,512),[[ee,R.quantity,void 0,{number:!0}]])])]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:G},` افزودن به اقلام `),w(c).items.length?(_(),m(`div`,ln,[(_(!0),m(S,null,l(w(c).items,e=>(_(),m(`div`,{key:e.productId,class:`order-add__item`},[p(`div`,null,[p(`strong`,null,n(e.productName),1),p(`span`,null,[b(` کالیته `+n(e.catalogCode)+` — `+n(w(B)(e.meterage))+` متر `,1),K(e)?(_(),m(S,{key:0},[b(` (`+n(K(e))+` طاقه) `,1)],64)):E(``,!0)])]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>w(T)(e.productId)},` حذف `,8,un)]))),128))])):(_(),m(`p`,dn,`هنوز محصولی به پیش‌سفارش اضافه نشده است.`))],32)]),_:1},8,[`open`,`onClose`]))}}),[[`__scopeId`,`data-v-165a6b8d`]]),mn=h({__name:`OrdersView`,setup(e){return se(),(e,t)=>(_(),m(S,null,[g(Et,{class:`desktop-only`}),g(qt,{class:`compact-only`}),g(pn)],64))}});export{mn as default}; \ No newline at end of file diff --git a/dist/assets/OrdersView-SrWTA8-0.css b/dist/assets/OrdersView-DGF4rYB0.css similarity index 67% rename from dist/assets/OrdersView-SrWTA8-0.css rename to dist/assets/OrdersView-DGF4rYB0.css index 81747ad..2632e89 100644 --- a/dist/assets/OrdersView-SrWTA8-0.css +++ b/dist/assets/OrdersView-DGF4rYB0.css @@ -1 +1 @@ -.order-detail[data-v-bff74c28]{flex-direction:column;gap:16px;display:flex}.order-detail__hero[data-v-bff74c28]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-elevated,var(--color-bg));flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.order-detail__id[data-v-bff74c28]{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:0;font-size:1rem;display:flex}.order-detail__id strong[data-v-bff74c28]{line-height:1.3}.order-detail__raw-status[data-v-bff74c28]{color:var(--color-text-muted);margin:0;font-size:.75rem}.order-detail__actions[data-v-bff74c28]{flex-wrap:wrap;gap:8px;display:flex}.order-detail__actions .admin-btn[data-v-bff74c28]{min-height:40px}.order-detail__panels[data-v-bff74c28]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.order-detail__section[data-v-bff74c28]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);margin:0;padding:14px}.order-detail__section-title[data-v-bff74c28]{color:var(--color-text);margin:0 0 12px;font-size:.8125rem;font-weight:700}.order-detail__info[data-v-bff74c28]{gap:10px;display:grid}.order-detail__info-row[data-v-bff74c28]{grid-template-columns:auto minmax(72px,auto) 1fr;align-items:center;gap:8px;font-size:.8125rem;display:grid}.order-detail__info-row[data-v-bff74c28]:not(:has(svg)){grid-template-columns:minmax(72px,auto) 1fr}.order-detail__info-label[data-v-bff74c28]{color:var(--color-text-muted)}.order-detail__info-value[data-v-bff74c28]{color:var(--color-text);word-break:break-word;font-weight:600}.order-detail__info-value--phone[data-v-bff74c28]{text-align:right;justify-self:stretch}.order-detail__table[data-v-bff74c28]{overflow-x:auto}.order-detail__items[data-v-bff74c28]{gap:8px;margin:0;padding:0;list-style:none;display:grid}.order-detail__item[data-v-bff74c28]{border-radius:var(--radius-sm);background:var(--color-elevated,var(--color-bg));border:1px solid var(--color-border);padding:12px}.order-detail__item-head[data-v-bff74c28]{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:.875rem;display:flex}.order-detail__item-head span[data-v-bff74c28]{color:var(--color-text-muted);font-size:.75rem}.order-detail__item-meta[data-v-bff74c28]{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 12px;font-size:.75rem;display:flex}.order-detail__item-total[data-v-bff74c28]{color:var(--color-text);margin-inline-start:auto;font-weight:700}.order-detail__receipt[data-v-bff74c28]{flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;display:flex}.order-detail__receipt-thumb[data-v-bff74c28]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);cursor:pointer;padding:0;line-height:0;overflow:hidden}.order-detail__receipt-thumb img[data-v-bff74c28]{object-fit:cover;width:120px;height:120px;display:block}.order-detail__status .order-detail__section-title[data-v-bff74c28]{margin:0 0 8px}.order-detail__status-hint[data-v-bff74c28]{color:var(--color-text-muted);margin:0 0 12px;font-size:.75rem;line-height:1.7}.order-detail__status-form[data-v-bff74c28]{gap:12px;display:grid}@media (width<=639px){.order-detail__panels[data-v-bff74c28]{grid-template-columns:1fr}.order-detail__hero[data-v-bff74c28]{flex-direction:column}.order-detail__actions[data-v-bff74c28]{width:100%}.order-detail__actions .admin-btn[data-v-bff74c28]{flex:1}}.orders-page[data-v-cfed03e1]{min-height:calc(100dvh - var(--header-height) - 48px)}.orders-page__list-panel[data-v-cfed03e1]{min-width:0;padding:20px}.orders-page__list-header[data-v-cfed03e1]{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.orders-page__list-title[data-v-cfed03e1]{margin:0;font-size:1.125rem;font-weight:700}.orders-page__list-actions[data-v-cfed03e1]{gap:8px;display:flex}.orders-page__search[data-v-cfed03e1]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-border-light);color:var(--color-text-muted);align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;display:flex}.orders-page__search-input[data-v-cfed03e1]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.orders-page__actions-cell[data-v-cfed03e1]{width:48px}.orders-page__more-btn[data-v-cfed03e1]{color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:4px}.orders-page__more-btn[data-v-cfed03e1]:hover,.orders-page__more-btn[aria-expanded=true][data-v-cfed03e1]{color:var(--color-text);background:var(--color-border-light)}.admin-table tbody tr[data-v-cfed03e1]{cursor:pointer}.admin-table tbody tr.is-selected[data-v-cfed03e1]{background:var(--color-primary-soft)}.orders-page__menu{z-index:300000;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);gap:2px;min-width:160px;padding:6px;display:grid;box-shadow:0 10px 30px #00000040}.orders-page__menu-item{color:var(--color-text);text-align:start;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:8px 10px;font-size:.8125rem}.orders-page__menu-item:hover{background:var(--color-primary-soft)}.compact-orders__tabs[data-v-fe86c1c8]{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);border-bottom:1px solid var(--color-border);margin-bottom:16px;padding:4px 8px 0;overflow:visible}.orders-page__search[data-v-fe86c1c8]{color:var(--color-text-muted);align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;display:flex}.orders-page__search-input[data-v-fe86c1c8]{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.admin-btn--filter-active[data-v-fe86c1c8]{border-color:var(--color-primary);color:var(--color-primary)}.compact-orders__filter-dot[data-v-fe86c1c8]{background:var(--color-primary);border-radius:50%;width:6px;height:6px}.compact-orders__filter-chip[data-v-fe86c1c8]{color:var(--color-text);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;font-size:.875rem;display:flex}.compact-orders__filter-clear[data-v-fe86c1c8]{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:.8125rem;font-weight:600}.compact-orders__filter-form[data-v-fe86c1c8]{flex-direction:column;gap:6px;display:flex}.compact-orders__filter-option[data-v-fe86c1c8]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;min-height:44px;color:var(--color-text);text-align:right;cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-family:inherit;font-size:.875rem;display:flex}.compact-orders__filter-option.is-active[data-v-fe86c1c8]{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));color:var(--color-primary);font-weight:600}.compact-orders__filter-check[data-v-fe86c1c8]{font-size:.875rem}.admin-card-item[data-v-fe86c1c8]{cursor:pointer;text-align:right}.admin-detail-panel__inner[data-v-fe86c1c8]{background:var(--color-bg);flex-direction:column;height:100%;display:flex}@media (width>=768px){.compact-orders__mobile-panel[data-v-fe86c1c8]{display:none!important}}.admin-form__hint[data-v-165a6b8d]{color:var(--color-text-muted);margin:6px 0 0;font-size:.75rem}.admin-form__label[data-v-165a6b8d]{margin-bottom:6px;font-size:.8125rem;font-weight:600;display:block}.order-add__qty-row[data-v-165a6b8d]{align-items:end}.order-add__mode[data-v-165a6b8d]{grid-template-columns:1fr 1fr;gap:8px;display:grid}.order-add__mode-btn[data-v-165a6b8d]{height:var(--control-height,40px);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);font:inherit;cursor:pointer;font-size:.8125rem;font-weight:600;transition:border-color .15s,background .15s,color .15s}.order-add__mode-btn--active[data-v-165a6b8d]{border-color:var(--color-primary);background:var(--color-primary-soft,rgba(var(--color-primary-rgb), .08));color:var(--color-primary)}.order-add__items[data-v-165a6b8d]{flex-direction:column;gap:8px;margin-top:14px;display:flex}.order-add__item[data-v-165a6b8d]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.order-add__item span[data-v-165a6b8d]{color:var(--color-text-muted);margin-top:2px;font-size:.75rem;display:block} +.order-detail[data-v-774179f2]{flex-direction:column;gap:16px;display:flex}.order-detail__hero[data-v-774179f2]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-elevated,var(--color-bg));flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.order-detail__id[data-v-774179f2]{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:0;font-size:1rem;display:flex}.order-detail__id strong[data-v-774179f2]{line-height:1.3}.order-detail__raw-status[data-v-774179f2]{color:var(--color-text-muted);margin:0;font-size:.75rem}.order-detail__actions[data-v-774179f2]{flex-wrap:wrap;gap:8px;display:flex}.order-detail__actions .admin-btn[data-v-774179f2]{min-height:40px}.order-detail__panels[data-v-774179f2]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.order-detail__section[data-v-774179f2]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);margin:0;padding:14px}.order-detail__section-title[data-v-774179f2]{color:var(--color-text);margin:0 0 12px;font-size:.8125rem;font-weight:700}.order-detail__info[data-v-774179f2]{gap:10px;display:grid}.order-detail__info-row[data-v-774179f2]{grid-template-columns:auto minmax(72px,auto) 1fr;align-items:center;gap:8px;font-size:.8125rem;display:grid}.order-detail__info-row[data-v-774179f2]:not(:has(svg)){grid-template-columns:minmax(72px,auto) 1fr}.order-detail__info-label[data-v-774179f2]{color:var(--color-text-muted)}.order-detail__info-value[data-v-774179f2]{color:var(--color-text);word-break:break-word;font-weight:600}.order-detail__info-value--phone[data-v-774179f2]{text-align:right;justify-self:stretch}.order-detail__table[data-v-774179f2]{overflow-x:auto}.order-detail__items[data-v-774179f2]{gap:8px;margin:0;padding:0;list-style:none;display:grid}.order-detail__item[data-v-774179f2]{border-radius:var(--radius-sm);background:var(--color-elevated,var(--color-bg));border:1px solid var(--color-border);padding:12px}.order-detail__item-head[data-v-774179f2]{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:.875rem;display:flex}.order-detail__item-head span[data-v-774179f2]{color:var(--color-text-muted);font-size:.75rem}.order-detail__item-meta[data-v-774179f2]{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 12px;font-size:.75rem;display:flex}.order-detail__item-total[data-v-774179f2]{color:var(--color-text);margin-inline-start:auto;font-weight:700}.order-detail__receipt[data-v-774179f2]{flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;display:flex}.order-detail__receipt-thumb[data-v-774179f2]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);cursor:pointer;padding:0;line-height:0;overflow:hidden}.order-detail__receipt-thumb img[data-v-774179f2]{object-fit:cover;width:120px;height:120px;display:block}.order-detail__status .order-detail__section-title[data-v-774179f2]{margin:0 0 8px}.order-detail__status-hint[data-v-774179f2]{color:var(--color-text-muted);margin:0 0 12px;font-size:.75rem;line-height:1.7}.order-detail__status-form[data-v-774179f2]{gap:12px;display:grid}@media (width<=639px){.order-detail__panels[data-v-774179f2]{grid-template-columns:1fr}.order-detail__hero[data-v-774179f2]{flex-direction:column}.order-detail__actions[data-v-774179f2]{width:100%}.order-detail__actions .admin-btn[data-v-774179f2]{flex:1}}.orders-page[data-v-cfed03e1]{min-height:calc(100dvh - var(--header-height) - 48px)}.orders-page__list-panel[data-v-cfed03e1]{min-width:0;padding:20px}.orders-page__list-header[data-v-cfed03e1]{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.orders-page__list-title[data-v-cfed03e1]{margin:0;font-size:1.125rem;font-weight:700}.orders-page__list-actions[data-v-cfed03e1]{gap:8px;display:flex}.orders-page__search[data-v-cfed03e1]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-border-light);color:var(--color-text-muted);align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;display:flex}.orders-page__search-input[data-v-cfed03e1]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.orders-page__actions-cell[data-v-cfed03e1]{width:48px}.orders-page__more-btn[data-v-cfed03e1]{color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:4px}.orders-page__more-btn[data-v-cfed03e1]:hover,.orders-page__more-btn[aria-expanded=true][data-v-cfed03e1]{color:var(--color-text);background:var(--color-border-light)}.admin-table tbody tr[data-v-cfed03e1]{cursor:pointer}.admin-table tbody tr.is-selected[data-v-cfed03e1]{background:var(--color-primary-soft)}.orders-page__menu{z-index:300000;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);gap:2px;min-width:160px;padding:6px;display:grid;box-shadow:0 10px 30px #00000040}.orders-page__menu-item{color:var(--color-text);text-align:start;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:8px 10px;font-size:.8125rem}.orders-page__menu-item:hover{background:var(--color-primary-soft)}.compact-orders__tabs[data-v-fe86c1c8]{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);border-bottom:1px solid var(--color-border);margin-bottom:16px;padding:4px 8px 0;overflow:visible}.orders-page__search[data-v-fe86c1c8]{color:var(--color-text-muted);align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;display:flex}.orders-page__search-input[data-v-fe86c1c8]{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.admin-btn--filter-active[data-v-fe86c1c8]{border-color:var(--color-primary);color:var(--color-primary)}.compact-orders__filter-dot[data-v-fe86c1c8]{background:var(--color-primary);border-radius:50%;width:6px;height:6px}.compact-orders__filter-chip[data-v-fe86c1c8]{color:var(--color-text);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;font-size:.875rem;display:flex}.compact-orders__filter-clear[data-v-fe86c1c8]{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:.8125rem;font-weight:600}.compact-orders__filter-form[data-v-fe86c1c8]{flex-direction:column;gap:6px;display:flex}.compact-orders__filter-option[data-v-fe86c1c8]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;min-height:44px;color:var(--color-text);text-align:right;cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-family:inherit;font-size:.875rem;display:flex}.compact-orders__filter-option.is-active[data-v-fe86c1c8]{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));color:var(--color-primary);font-weight:600}.compact-orders__filter-check[data-v-fe86c1c8]{font-size:.875rem}.admin-card-item[data-v-fe86c1c8]{cursor:pointer;text-align:right}.admin-detail-panel__inner[data-v-fe86c1c8]{background:var(--color-bg);flex-direction:column;height:100%;display:flex}@media (width>=768px){.compact-orders__mobile-panel[data-v-fe86c1c8]{display:none!important}}.admin-form__hint[data-v-91be5fdc]{color:var(--color-text-muted);margin:6px 0 0;font-size:.75rem}.admin-form__label[data-v-91be5fdc]{margin-bottom:6px;font-size:.8125rem;font-weight:600;display:block}.order-add__qty-row[data-v-91be5fdc]{align-items:end}.order-add__mode[data-v-91be5fdc]{grid-template-columns:1fr 1fr;gap:8px;display:grid}.order-add__mode-btn[data-v-91be5fdc]{height:var(--control-height,40px);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);font:inherit;cursor:pointer;font-size:.8125rem;font-weight:600;transition:border-color .15s,background .15s,color .15s}.order-add__mode-btn--active[data-v-91be5fdc]{border-color:var(--color-primary);background:var(--color-primary-soft,rgba(var(--color-primary-rgb), .08));color:var(--color-primary)}.order-add__items[data-v-91be5fdc]{flex-direction:column;gap:8px;margin-top:14px;display:flex}.order-add__item[data-v-91be5fdc]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.order-add__item span[data-v-91be5fdc]{color:var(--color-text-muted);margin-top:2px;font-size:.75rem;display:block} diff --git a/dist/assets/OrdersView-Di_Bxuhp.js b/dist/assets/OrdersView-Di_Bxuhp.js new file mode 100644 index 0000000..b79f4c1 --- /dev/null +++ b/dist/assets/OrdersView-Di_Bxuhp.js @@ -0,0 +1 @@ +import{$ as e,A as t,At as n,B as r,D as i,Dt as a,E as o,H as s,J as c,M as l,U as u,Z as d,a as f,c as p,d as m,g as h,h as g,k as _,kt as v,l as y,m as b,p as x,r as S,s as C,st as w,t as T,u as E,w as D,x as O}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as k,f as A,m as j,t as M}from"./http-BjLkjdQu.js";import{B as N,E as P,I as F,L as I,M as L,R,S as z,T as B,_ as V,c as H,i as U,o as W,s as G,v as K,w as q}from"./index-SWzbcuqQ.js";import{t as J}from"./AdminSelect-6a7SFr9x.js";import{t as Y}from"./AdminImageLightbox-CE3ZJ5-o.js";import{n as X,r as Z}from"./adminLabels-Cz9ccm1Z.js";import{a as ee,n as te,o as ne,s as Q,t as re}from"./orderStatus-CeC05Cv4.js";import{t as ie}from"./StatusBadge-jGFZVW4C.js";function ae(){let t=I(),n=R(),i=k(),a=e([]),s=e([]),c=new Set(te.map(e=>e.key));function l(){let e=typeof t.query.tab==`string`?t.query.tab:``;return c.has(e)?e:`all`}let u=e([]),f=e(l()),p=e(``),m=e(``),h=e(!1),g=e(!1),_=e(!1),v=e(``),y=e(!1),b=()=>({customerId:``,customerName:``,customerPhone:``,items:[]}),x=d(b()),S=C(()=>x.customerId.length>0&&x.items.length>0),w=C(()=>{let e=[...s.value];return e.sort((e,t)=>Number(t.isActive)-Number(e.isActive)||e.name.localeCompare(t.name,`fa`)),e});function T(e){let t=s.value.find(t=>t.id===e);x.customerId=e,x.customerName=t?.name??``,x.customerPhone=t?.phone??``}async function E(){try{s.value=await K.list()}catch(e){i.error(e instanceof M?e.message:`بارگذاری مشتریان انجام نشد.`)}}let D=C(()=>{let e=u.value;if(f.value!==`all`&&(e=e.filter(e=>e.status===f.value)),m.value.trim()){let t=m.value.trim();e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t))}return e}),O=C(()=>u.value.find(e=>e.id===p.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 e=typeof t.query.order==`string`?t.query.order:``;if(!e||!u.value.length)return;let r=A(e);if(!r){m.value=e;return}let i=typeof t.query.focus==`string`?t.query.focus:``;if(i===`pricing`){await n.replace(`/orders/${r.id}/pricing`);return}if(i===`checks`){await n.replace(`/orders/${r.id}/checks`);return}F(r),m.value=r.orderNumber}async function N(){try{let[e,t,n]=await Promise.all([q.list(),V.list(),K.list()]);u.value=e.map(e=>z(e)),a.value=t,s.value=n,await j()}catch(e){i.error(e instanceof M?e.message:`بارگذاری سفارش‌ها انجام نشد.`)}}o(()=>{N()}),r(()=>[t.query.order,t.query.focus],()=>{j()}),r(()=>t.query.tab,()=>{let e=l();f.value!==e&&(f.value=e)}),r(f,e=>{let r=typeof t.query.tab==`string`?t.query.tab:`all`,i=e===`all`?void 0:e;(r===`all`?void 0:r)!==i&&n.replace({query:{...t.query,tab:i}})});function P(e,t=!1){p.value=e.id,t&&(g.value=!0)}async function F(e){p.value=e.id,_.value=!0;try{let t=z(await q.get(e.id)),n=u.value.findIndex(t=>t.id===e.id);n>=0&&(u.value[n]={...u.value[n],...t})}catch{}}function L(){g.value=!1}function B(){_.value=!1}function H(e){return e?e===`check`?`چکی`:`نقدی`:`انتخاب‌نشده`}let U=e(!1);async function W(e){if(U.value)return null;U.value=!0;try{let t=await q.updateStatus(e.orderId,{status:e.status,note:e.note}),n=z(t),r=u.value.findIndex(t=>t.id===e.orderId);return r>=0&&(u.value[r]={...u.value[r],...n}),i.success(`وضعیت سفارش به «${Q(e.status)}» تغییر کرد.`),n}catch(e){return i.error(e instanceof M?e.message:`تغییر وضعیت انجام نشد.`),null}finally{U.value=!1}}function G(e){n.push(`/orders/${e.id}/pricing`)}function J(e){n.push(`/orders/${e.id}/checks`)}function Y(e){n.push({path:`/cash-payments`,query:{order:e.orderNumber}})}function X(){Object.assign(x,b()),v.value=``,h.value=!0,E()}function Z(){h.value=!1,v.value=``}function ee(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 q.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=z(e);u.value.unshift(t),p.value=t.id,i.success(`سفارش جدید ثبت شد.`),Z()}catch(e){i.error(e instanceof M?e.message:`ثبت سفارش انجام نشد.`)}finally{y.value=!1}}return{companies:a,customers:s,activeCustomers:w,applyCustomer:T,loadCustomers:E,orderList:u,activeTab:f,selectedOrderId:p,searchQuery:m,showAddModal:h,showDetailPanel:g,showDetailModal:_,formError:v,form:x,addFormItem:ee,removeFormItem:ne,isFormValid:S,filteredOrders:D,selectedOrder:O,selectOrder:P,openOrderDetail:F,closeDetailPanel:L,closeDetailModal:B,settlementLabel:H,changeStatus:W,statusSaving:U,goPricing:G,goChecks:J,goCashReceipt:Y,openAddModal:X,closeAddModal:Z,submitAddOrder:re,saving:y}}var oe=Symbol(`orders-page`);function se(){let e=ae();return t(oe,e),e}function ce(){let e=O(oe);if(!e)throw Error(`Orders page context is missing`);return e}var $={class:`order-detail__hero`},le={class:`order-detail__hero-text`},ue={class:`order-detail__id`},de={key:0,class:`order-detail__raw-status`},fe={class:`order-detail__actions no-print`},pe=[`disabled`],me={class:`order-detail__panels`},he={class:`order-detail__section`},ge={class:`order-detail__info`},_e={class:`order-detail__info-row`},ve={class:`order-detail__info-value`},ye={class:`order-detail__info-row`},be={class:`order-detail__info-value order-detail__info-value--phone`,dir:`ltr`},xe={class:`order-detail__info-row`},Se={class:`order-detail__info-value`},Ce={class:`order-detail__info-row`},we={class:`order-detail__info-value`},Te={class:`order-detail__section`},Ee={class:`order-detail__info`},De={class:`order-detail__info-row`},Oe={class:`order-detail__info-value`},ke={class:`order-detail__info-row`},Ae={class:`order-detail__info-value`},je={class:`order-detail__info-row`},Me={class:`order-detail__info-value`},Ne={class:`order-detail__info-row`},Pe={class:`order-detail__info-value`},Fe={key:0,class:`order-detail__section`},Ie={key:0,class:`admin-table-wrap order-detail__table`},Le={class:`admin-table admin-table--compact`},Re={key:1,class:`order-detail__items`},ze={class:`order-detail__item-head`},Be={class:`order-detail__item-meta`},Ve={key:0},He={key:1},Ue={key:2,class:`order-detail__item-total`},We={key:1,class:`order-detail__section`},Ge={class:`order-detail__info`},Ke={class:`order-detail__info-row`},qe={class:`order-detail__info-value`},Je={class:`order-detail__info-row`},Ye={class:`order-detail__info-value`},Xe={key:0,class:`order-detail__info-row`},Ze={class:`order-detail__info-value`},Qe={key:1,class:`order-detail__info-row`},$e={class:`order-detail__info-value`,dir:`ltr`},et={key:2,class:`order-detail__info-row`},tt={class:`order-detail__info-value`},nt={key:0,class:`order-detail__receipt`},rt=[`src`],it={key:1,class:`order-detail__status-hint`},at={class:`order-detail__section order-detail__status no-print`},ot={key:0,class:`order-detail__status-hint`},st={key:1,class:`order-detail__status-form`},ct={class:`admin-form__field`},lt={class:`admin-form__field`},ut=[`disabled`],dt=T(h({__name:`OrderDetailContent`,props:{order:{},settlementLabel:{},layout:{default:`compact`},statusSaving:{type:Boolean}},emits:[`pricing`,`checks`,`cashReceipt`,`finalApprove`,`status`],setup(t,{emit:i}){let o=t,s=i,c=e(``),d=e(``),f=e(!1),h=C(()=>o.order.cashReceipt??null),v=C(()=>o.order.allowedTransitions??[]),x=C(()=>[...v.value]),T=C(()=>[{value:``,label:`انتخاب کنید…`},...x.value.map(e=>({value:e,label:Q(e)}))]),D=C(()=>!!c.value),O=C(()=>o.layout===`desktop`),k=C(()=>re[o.order.status]?.label??o.order.status),j=C(()=>{let e=Q(o.order.rawStatus);return!e||e===k.value?``:e}),M=C(()=>{let e=o.order.customerType;return e?Z[e]??o.order.customerType??`—`:`—`}),N=C(()=>ne(o.order)),P=C(()=>ee(o.order)),I=C(()=>o.order.settlementMethod===`check`&&!N.value),L=C(()=>o.order.settlementMethod===`cash`&&!N.value&&o.order.rawStatus!==`cash_confirmed`),R=C(()=>N.value?`pricing`:P.value?`final`:I.value?`checks`:L.value?`cash`:null);r(()=>o.order.id,()=>{c.value=``,d.value=``});function z(){if(!c.value||!D.value)return;let e=d.value.trim()||void 0;s(`status`,{orderId:o.order.id,status:c.value,note:e}),c.value=``,d.value=``}function B(){if(h.value?.receiptImage){f.value=!0;return}s(`cashReceipt`)}return(e,r)=>(_(),m(`div`,{class:a([`order-detail`,`order-detail--${t.layout}`])},[p(`header`,$,[p(`div`,le,[p(`div`,ue,[p(`strong`,null,n(t.order.orderNumber),1),g(ie,{status:t.order.status},null,8,[`status`])]),j.value?(_(),m(`p`,de,n(j.value),1)):E(``,!0)]),p(`div`,fe,[N.value?(_(),m(`button`,{key:0,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`pricing`?`admin-btn--primary`:`admin-btn--outline`]),onClick:r[0]||=e=>s(`pricing`)},` قیمت‌گذاری سفارش `,2)):E(``,!0),I.value?(_(),m(`button`,{key:1,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`checks`?`admin-btn--primary`:`admin-btn--outline`]),onClick:r[1]||=e=>s(`checks`)},` مدیریت چک‌ها `,2)):E(``,!0),L.value?(_(),m(`button`,{key:2,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`cash`?`admin-btn--primary`:`admin-btn--outline`]),onClick:B},n(h.value?.receiptImage?`مشاهده رسید`:`رسید پرداخت`),3)):E(``,!0),P.value?(_(),m(`button`,{key:3,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`final`?`admin-btn--primary`:`admin-btn--outline`]),disabled:t.statusSaving,onClick:r[2]||=e=>s(`finalApprove`)},` تأیید نهایی `,10,pe)):E(``,!0)])]),p(`div`,me,[p(`section`,he,[r[12]||=p(`h3`,{class:`order-detail__section-title`},`اطلاعات مشتری`,-1),p(`div`,ge,[p(`div`,_e,[g(F,{name:`building`,size:16}),r[8]||=p(`span`,{class:`order-detail__info-label`},`مشتری`,-1),p(`span`,ve,n(t.order.customerName),1)]),p(`div`,ye,[g(F,{name:`phone`,size:16}),r[9]||=p(`span`,{class:`order-detail__info-label`},`تلفن`,-1),p(`span`,be,n(t.order.customerPhone??`—`),1)]),p(`div`,xe,[g(F,{name:`id-card`,size:16}),r[10]||=p(`span`,{class:`order-detail__info-label`},`شناسه ملی`,-1),p(`span`,Se,n(t.order.customerNationalId??`—`),1)]),p(`div`,Ce,[g(F,{name:`user`,size:16}),r[11]||=p(`span`,{class:`order-detail__info-label`},`نوع مشتری`,-1),p(`span`,we,n(M.value),1)])])]),p(`section`,Te,[r[17]||=p(`h3`,{class:`order-detail__section-title`},`اطلاعات سفارش`,-1),p(`div`,Ee,[p(`div`,De,[r[13]||=p(`span`,{class:`order-detail__info-label`},`شرکت`,-1),p(`span`,Oe,n(t.order.companyName),1)]),p(`div`,ke,[r[14]||=p(`span`,{class:`order-detail__info-label`},`روش تسویه`,-1),p(`span`,Ae,n(t.settlementLabel(t.order.settlementMethod)),1)]),p(`div`,je,[r[15]||=p(`span`,{class:`order-detail__info-label`},`متراژ کل`,-1),p(`span`,Me,n(w(G)(t.order.meterage)),1)]),p(`div`,Ne,[r[16]||=p(`span`,{class:`order-detail__info-label`},`مبلغ کل`,-1),p(`span`,Pe,n(t.order.totalAmount==null?`پس از قیمت‌گذاری`:w(U)(t.order.totalAmount)),1)])])])]),t.order.items?.length?(_(),m(`section`,Fe,[r[19]||=p(`h3`,{class:`order-detail__section-title`},`محصولات سفارش`,-1),O.value?(_(),m(`div`,Ie,[p(`table`,Le,[r[18]||=p(`thead`,null,[p(`tr`,null,[p(`th`,null,`شرکت`),p(`th`,null,`کالیته`),p(`th`,null,`محصول`),p(`th`,null,`رنگ`),p(`th`,null,`متراژ`),p(`th`,null,`قیمت هر متر`),p(`th`,null,`مبلغ کل`)])],-1),p(`tbody`,null,[(_(!0),m(S,null,l(t.order.items,e=>(_(),m(`tr`,{key:e.id},[p(`td`,null,n(e.companyName||t.order.companyName),1),p(`td`,null,n(e.catalogCode),1),p(`td`,null,n(e.productName),1),p(`td`,null,n(e.color),1),p(`td`,null,n(w(H)(e.confirmedMeterage??e.requestedMeterage)),1),p(`td`,null,n(e.supplyPrice==null?`—`:w(U)(e.supplyPrice)),1),p(`td`,null,n(e.totalAmount==null?`—`:w(U)(e.totalAmount)),1)]))),128))])])])):(_(),m(`ul`,Re,[(_(!0),m(S,null,l(t.order.items,e=>(_(),m(`li`,{key:e.id,class:`order-detail__item`},[p(`div`,ze,[p(`strong`,null,n(e.productName),1),p(`span`,null,n(e.catalogCode),1)]),p(`div`,Be,[e.companyName?(_(),m(`span`,Ve,n(e.companyName),1)):E(``,!0),p(`span`,null,n(e.color),1),p(`span`,null,n(w(G)(e.confirmedMeterage??e.requestedMeterage)),1),e.supplyPrice==null?E(``,!0):(_(),m(`span`,He,n(w(U)(e.supplyPrice)),1)),e.totalAmount==null?E(``,!0):(_(),m(`span`,Ue,n(w(U)(e.totalAmount)),1))])]))),128))]))])):E(``,!0),h.value?(_(),m(`section`,We,[r[25]||=p(`h3`,{class:`order-detail__section-title`},`رسید پرداخت نقدی`,-1),p(`div`,Ge,[p(`div`,Ke,[r[20]||=p(`span`,{class:`order-detail__info-label`},`وضعیت`,-1),p(`span`,qe,n(w(X)[h.value.status]),1)]),p(`div`,Je,[r[21]||=p(`span`,{class:`order-detail__info-label`},`مبلغ واریزی`,-1),p(`span`,Ye,n(h.value.paidAmount==null?w(U)(h.value.amount):w(U)(h.value.paidAmount)),1)]),h.value.transferDate?(_(),m(`div`,Xe,[r[22]||=p(`span`,{class:`order-detail__info-label`},`تاریخ واریز`,-1),p(`span`,Ze,[b(n(w(W)(h.value.transferDate))+` `,1),h.value.transferTime?(_(),m(S,{key:0},[b(` · `+n(h.value.transferTime),1)],64)):E(``,!0)])])):E(``,!0),h.value.trackingNumber||h.value.trackingCode?(_(),m(`div`,Qe,[r[23]||=p(`span`,{class:`order-detail__info-label`},`پیگیری`,-1),p(`span`,$e,n(h.value.trackingNumber||h.value.trackingCode),1)])):E(``,!0),h.value.notes?(_(),m(`div`,et,[r[24]||=p(`span`,{class:`order-detail__info-label`},`یادداشت`,-1),p(`span`,tt,n(h.value.notes),1)])):E(``,!0)]),h.value.receiptImage?(_(),m(`div`,nt,[p(`button`,{type:`button`,class:`order-detail__receipt-thumb`,onClick:r[3]||=e=>f.value=!0},[p(`img`,{src:h.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,rt)]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:r[4]||=e=>f.value=!0},` مشاهده تصویر رسید `)])):(_(),m(`p`,it,`تصویر رسید هنوز آپلود نشده است.`))])):E(``,!0),h.value?.receiptImage?(_(),y(Y,{key:2,modelValue:f.value,"onUpdate:modelValue":r[5]||=e=>f.value=e,src:h.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):E(``,!0),p(`section`,at,[r[28]||=p(`h3`,{class:`order-detail__section-title`},`تغییر وضعیت`,-1),x.value.length?E(``,!0):(_(),m(`p`,ot,` در این مرحله گذر مجازی از این بخش نیست؛ از اقدام‌های مرحله‌ای بالا (قیمت‌گذاری، چک، رسید نقدی و …) استفاده کنید. `)),x.value.length?(_(),m(`div`,st,[p(`div`,ct,[r[26]||=p(`label`,null,`وضعیت بعدی`,-1),g(J,{modelValue:c.value,"onUpdate:modelValue":r[6]||=e=>c.value=e,block:``,"aria-label":`وضعیت بعدی`,placeholder:`انتخاب کنید…`,options:T.value},null,8,[`modelValue`,`options`])]),p(`div`,lt,[r[27]||=p(`label`,{for:`status-note`},`یادداشت (اختیاری)`,-1),u(p(`input`,{id:`status-note`,"onUpdate:modelValue":r[7]||=e=>d.value=e,type:`text`,class:`admin-input`,placeholder:`دلیل یا توضیح این تغییر`},null,512),[[A,d.value]])]),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!D.value||t.statusSaving,onClick:z},n(t.statusSaving?`در حال ثبت…`:`ثبت وضعیت`),9,ut)])):E(``,!0)])],2))}}),[[`__scopeId`,`data-v-774179f2`]]),ft={class:`orders-page`},pt={class:`orders-page__list-panel admin-card`},mt={class:`orders-page__list-header`},ht={class:`orders-page__list-actions`},gt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},_t={class:`orders-page__search`},vt={class:`admin-tabs`},yt=[`onClick`],bt={class:`admin-table-wrap`},xt={class:`admin-table admin-table--compact`},St=[`onClick`],Ct={class:`orders-page__actions-cell`},wt=[`aria-expanded`,`onClick`],Tt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},Et=T(h({__name:`DesktopOrdersPage`,setup(t){let r=L(`(min-width: 1280px)`),{activeTab:d,selectedOrderId:h,searchQuery:C,filteredOrders:T,selectedOrder:O,showDetailModal:k,openOrderDetail:M,closeDetailModal:P,settlementLabel:I,goPricing:R,goChecks:z,goCashReceipt:B,changeStatus:V,statusSaving:H,openAddModal:K}=ce(),q=e(null),J=e({});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 D();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()}o(()=>{document.addEventListener(`click`,Z),window.addEventListener(`scroll`,Y,!0),window.addEventListener(`resize`,Y)}),i(()=>{document.removeEventListener(`click`,Z),window.removeEventListener(`scroll`,Y,!0),window.removeEventListener(`resize`,Y)});function Q(){O.value&&(P(),R(O.value))}function re(){O.value&&(P(),z(O.value))}function ae(){O.value&&(P(),B(O.value))}function oe(){O.value&&V({orderId:O.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}function se(){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=q.value;if(t){if(Y(),e===`detail`){M(t);return}if(e===`pricing`){R(t);return}if(e===`checks`){z(t);return}if(e===`final`){V({orderId:t.id,status:`final_approved`,note:`تأیید نهایی سفارش`});return}B(t)}}return(e,t)=>(_(),m(`div`,ft,[p(`div`,pt,[p(`div`,mt,[t[9]||=p(`div`,null,[p(`h2`,{class:`orders-page__list-title`},`سفارش‌ها`)],-1),p(`div`,ht,[p(`button`,gt,[g(F,{name:`filter`,size:16}),t[8]||=b(` فیلتر `,-1)]),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:t[0]||=(...e)=>w(K)&&w(K)(...e)},` سفارش جدید `)])]),p(`div`,_t,[g(F,{name:`search`,size:18}),u(p(`input`,{"onUpdate:modelValue":t[1]||=e=>c(C)?C.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[A,w(C)]])]),p(`div`,vt,[(_(!0),m(S,null,l(w(te),e=>(_(),m(`button`,{key:e.key,type:`button`,class:a([`admin-tab`,{active:w(d)===e.key}]),onClick:t=>d.value=e.key},[b(n(e.label)+` `,1),`count`in e&&e.count?(_(),m(S,{key:0},[b(` (`+n(e.count)+`)`,1)],64)):E(``,!0)],10,yt))),128))]),p(`div`,bt,[p(`table`,xt,[t[10]||=p(`thead`,null,[p(`tr`,null,[p(`th`,null,`شماره سفارش`),p(`th`,null,`مشتری`),p(`th`,null,`روش تسویه`),p(`th`,null,`مبلغ کل`),p(`th`,null,`متراژ`),p(`th`,null,`وضعیت`),p(`th`,null,`تاریخ ثبت`),p(`th`,null,`عملیات`)])],-1),p(`tbody`,null,[(_(!0),m(S,null,l(w(T),e=>(_(),m(`tr`,{key:e.id,class:a({"is-selected":w(h)===e.id}),onClick:t=>w(M)(e)},[p(`td`,null,n(e.orderNumber),1),p(`td`,null,n(e.customerName),1),p(`td`,null,n(w(I)(e.settlementMethod)),1),p(`td`,null,n(e.totalAmount?w(U)(e.totalAmount):`—`),1),p(`td`,null,n(w(G)(e.meterage)),1),p(`td`,null,[g(ie,{status:e.status},null,8,[`status`])]),p(`td`,null,n(w(W)(e.createdAt)),1),p(`td`,Ct,[p(`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)},[g(F,{name:`more`,size:18})],8,wt)])],10,St))),128))])])]),t[11]||=x(`
نمایش ۱ تا ۷ از ۱۰۳ سفارش
...
`,1)]),(_(),y(f,{to:`body`},[q.value?(_(),m(`div`,{key:0,class:`orders-page__menu`,role:`menu`,style:v(J.value),onClick:t[7]||=j(()=>{},[`stop`])},[p(`button`,{type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[2]||=e=>$(`detail`)},` جزئیات سفارش `),q.value&&w(ne)(q.value)?(_(),m(`button`,{key:0,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[3]||=e=>$(`pricing`)},` قیمت‌گذاری `)):E(``,!0),q.value.settlementMethod===`check`?(_(),m(`button`,{key:1,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[4]||=e=>$(`checks`)},` مدیریت چک‌ها `)):E(``,!0),q.value.settlementMethod===`cash`&&q.value.rawStatus!==`cash_confirmed`?(_(),m(`button`,{key:2,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[5]||=e=>$(`cash`)},` رسید پرداخت `)):E(``,!0),w(ee)(q.value)?(_(),m(`button`,{key:3,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:t[6]||=e=>$(`final`)},` تأیید نهایی `)):E(``,!0)],4)):E(``,!0)])),g(N,{open:w(r)&&w(k)&&!!w(O),title:`جزئیات سفارش`,size:`xl`,onClose:w(P)},{footer:s(()=>[p(`button`,Tt,[g(F,{name:`sms`,size:16}),t[12]||=b(` ارسال پیامک `,-1)]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:se},[g(F,{name:`print`,size:16}),t[13]||=b(` چاپ `,-1)])]),default:s(()=>[w(O)?(_(),y(dt,{key:0,order:w(O),layout:`desktop`,"settlement-label":w(I),"status-saving":w(H),onPricing:Q,onChecks:re,onCashReceipt:ae,onFinalApprove:oe,onStatus:w(V)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-cfed03e1`]]),Dt={class:`compact-orders`},Ot={class:`compact-page-header`},kt={class:`compact-page-header__row`},At={class:`compact-page-header__actions`},jt={key:0,class:`compact-orders__filter-dot`,"aria-hidden":`true`},Mt={class:`orders-page__search admin-card`},Nt={key:0,class:`compact-orders__filter-chip admin-card`},Pt={key:1,class:`admin-tabs compact-orders__tabs`},Ft=[`onClick`],It={class:`compact-orders__filter-form`,role:`listbox`,"aria-label":`وضعیت سفارش`},Lt=[`aria-selected`,`onClick`],Rt={key:0,class:`compact-orders__filter-check`,"aria-hidden":`true`},zt={class:`admin-card-list`},Bt=[`onClick`],Vt={class:`admin-card-item__header`},Ht={class:`admin-card-item__title`},Ut={class:`admin-card-item__meta`},Wt={key:0,class:`admin-detail-panel__inner`},Gt={class:`admin-detail-panel__header`},Kt={class:`admin-detail-panel__body`},qt=T(h({__name:`CompactOrdersPage`,setup(t){let r=L(`(max-width: 767px)`),i=L(`(max-width: 1279px)`),{activeTab:o,selectedOrderId:d,searchQuery:f,filteredOrders:h,selectedOrder:v,showDetailPanel:x,showDetailModal:T,selectOrder:D,openOrderDetail:O,closeDetailPanel:k,closeDetailModal:j,settlementLabel:M,goPricing:P,goChecks:I,goCashReceipt:R,changeStatus:z,statusSaving:B,openAddModal:V}=ce(),H=e(!1),K=C(()=>o.value!==`all`),q=C(()=>te.find(e=>e.key===o.value)?.label??`همه`);function J(){H.value=!0}function Y(){H.value=!1}function X(){o.value=`all`,H.value=!1}function Z(e){o.value=e,H.value=!1}function ee(e){if(r.value){D(e,!0);return}O(e)}function ne(){v.value&&(j(),k(),P(v.value))}function Q(){v.value&&(j(),k(),I(v.value))}function re(){v.value&&(j(),k(),R(v.value))}function ae(){v.value&&z({orderId:v.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}return(e,t)=>(_(),m(`div`,Dt,[p(`div`,Ot,[p(`div`,kt,[t[4]||=p(`div`,null,[p(`h2`,{class:`compact-page-header__title`},`سفارش‌ها`)],-1),p(`div`,At,[p(`button`,{type:`button`,class:a([`admin-btn admin-btn--outline admin-btn--sm`,{"admin-btn--filter-active":K.value}]),onClick:J},[g(F,{name:`filter`,size:16}),t[3]||=b(` فیلتر `,-1),K.value?(_(),m(`span`,jt)):E(``,!0)],2),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:t[0]||=(...e)=>w(V)&&w(V)(...e)},` سفارش جدید `)])])]),p(`div`,Mt,[g(F,{name:`search`,size:18}),u(p(`input`,{"onUpdate:modelValue":t[1]||=e=>c(f)?f.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[A,w(f)]])]),w(r)&&K.value?(_(),m(`div`,Nt,[p(`span`,null,`وضعیت: `+n(q.value),1),p(`button`,{type:`button`,class:`compact-orders__filter-clear`,onClick:X},`پاک کردن`)])):E(``,!0),w(r)?E(``,!0):(_(),m(`div`,Pt,[(_(!0),m(S,null,l(w(te),e=>(_(),m(`button`,{key:e.key,type:`button`,class:a([`admin-tab`,{active:w(o)===e.key}]),onClick:t=>o.value=e.key},[b(n(e.label)+` `,1),`count`in e&&e.count?(_(),m(S,{key:0},[b(` (`+n(e.count)+`)`,1)],64)):E(``,!0)],10,Ft))),128))])),g(N,{open:H.value,title:`فیلتر سفارش‌ها`,onClose:Y},{footer:s(()=>[p(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` پاک کردن `),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` بستن `)]),default:s(()=>[p(`div`,It,[(_(!0),m(S,null,l(w(te),e=>(_(),m(`button`,{key:e.key,type:`button`,class:a([`compact-orders__filter-option`,{"is-active":w(o)===e.key}]),role:`option`,"aria-selected":w(o)===e.key,onClick:t=>Z(e.key)},[p(`span`,null,n(e.label),1),w(o)===e.key?(_(),m(`span`,Rt,`✓`)):E(``,!0)],10,Lt))),128))])]),_:1},8,[`open`]),p(`div`,zt,[(_(!0),m(S,null,l(w(h),e=>(_(),m(`button`,{key:e.id,type:`button`,class:a([`admin-card-item`,{selected:w(d)===e.id}]),onClick:t=>ee(e)},[p(`div`,Vt,[p(`p`,Ht,n(e.orderNumber),1),g(ie,{status:e.status},null,8,[`status`])]),p(`div`,Ut,[p(`span`,null,[t[5]||=p(`strong`,null,`مشتری:`,-1),b(` `+n(e.customerName),1)]),p(`span`,null,[t[6]||=p(`strong`,null,`متراژ:`,-1),b(` `+n(w(G)(e.meterage)),1)]),p(`span`,null,[t[7]||=p(`strong`,null,`مبلغ:`,-1),b(` `+n(e.totalAmount?w(U)(e.totalAmount):`—`),1)]),p(`span`,null,n(w(W)(e.createdAt)),1)])],10,Bt))),128))]),p(`div`,{class:a([`admin-detail-panel compact-orders__mobile-panel`,{open:w(r)&&w(x)&&w(v)}])},[w(v)?(_(),m(`div`,Wt,[p(`div`,Gt,[p(`button`,{type:`button`,class:`admin-detail-panel__back`,"aria-label":`بازگشت به لیست`,onClick:t[2]||=(...e)=>w(k)&&w(k)(...e)},[g(F,{name:`chevron-back`,size:20})]),t[8]||=p(`h2`,{class:`admin-detail-panel__title`},`جزئیات سفارش`,-1)]),p(`div`,Kt,[g(dt,{order:w(v),"settlement-label":w(M),"status-saving":w(B),onPricing:ne,onChecks:Q,onCashReceipt:re,onFinalApprove:ae,onStatus:w(z)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])])])):E(``,!0)],2),g(N,{open:w(i)&&!w(r)&&w(T)&&!!w(v),title:`جزئیات سفارش`,size:`xl`,onClose:w(j)},{default:s(()=>[w(v)?(_(),y(dt,{key:0,order:w(v),"settlement-label":w(M),"status-saving":w(B),onPricing:ne,onChecks:Q,onCashReceipt:re,onFinalApprove:ae,onStatus:w(z)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-fe86c1c8`]]);function Jt(e){return e.rollMeters&&e.rollMeters>0?e.rollMeters:e.minMeterage>0?e.minMeterage:50}function Yt(e){let t=e.orderMultiplier??e.orderStep;return t&&t>0?t:10}function Xt(e,t,n){return t===`roll`?n*Jt(e):n}function Zt(e,t){let n=Jt(e);return n>0?t/n:0}function Qt(e,t,n=1){if(!t||t<=0)return`مقدار باید بزرگ‌تر از صفر باشد.`;if(t1e-6)return`متراژ ${e.name} باید مضرب ${r} باشد`;let a=Jt(e),o=n>0?n:1;return t/a+1e-9h.value.map(e=>{let t=e.phone?` — ${e.phone}`:``,n=e.isActive===!1?` (غیرفعال)`:``;return{value:e.id,label:`${e.name}${t}${n}`}})),V=C(()=>I.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=C(()=>I.value.find(e=>e.id===R.productId)??null),W=C(()=>R.quantityMode===`roll`?`تعداد طاقه`:`متراژ (متر)`);r(()=>c.customerId,e=>{if(!e){c.customerName=``,c.customerPhone=``;return}v(e)});function G(e,t){let n=L.value>0?L.value:1;if(t===`roll`)return n;let r=Jt(e);return Math.max(e.minMeterage||0,n*r)}r(i,async e=>{if(e){R.productId=``,R.quantityMode=`roll`,R.quantity=0,o.value=``;try{let[e,t]=await Promise.all([B.list({activeOnly:!0}),P.get().catch(()=>null)]);I.value=e,L.value=t?.minOrderRollsPerProduct??1}catch(e){F.error(e instanceof M?e.message:`بارگذاری محصولات انجام نشد.`)}}}),r(()=>[R.productId,R.quantityMode],([e,t])=>{let n=I.value.find(t=>t.id===e);n&&(R.quantity=G(n,t))});function K(){o.value=``;let e=U.value;if(!e){o.value=`محصول را انتخاب کنید.`,F.error(o.value);return}if(!R.quantity||R.quantity<=0){o.value=`مقدار باید بزرگ‌تر از صفر باشد.`,F.error(o.value);return}let t=Xt(e,R.quantityMode,R.quantity),n=Qt(e,t,L.value);if(n){o.value=n,F.error(n);return}if(!x({productId:e.id,productName:e.name,catalogCode:e.catalogCode??e.productCode,meterage:t})){F.error(o.value||`افزودن محصول انجام نشد.`);return}R.productId=``,R.quantityMode=`roll`,R.quantity=0}function q(e){let t=I.value.find(t=>t.id===e.productId);if(!t)return null;let n=Zt(t,e.meterage);if(!Number.isFinite(n))return null;let r=Math.round(n*100)/100;return r%1,H(r)}return(e,t)=>(_(),y(N,{open:w(i),title:`پیش‌سفارش جدید`,size:`lg`,onClose:w(D)},{footer:s(()=>[p(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:t[6]||=(...e)=>w(D)&&w(D)(...e)},` انصراف `),p(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!w(f),onClick:t[7]||=(...e)=>w(O)&&w(O)(...e)},` ثبت پیش‌سفارش `,8,fn)]),default:s(()=>[p(`form`,{class:`admin-form`,onSubmit:t[5]||=j((...e)=>w(O)&&w(O)(...e),[`prevent`])},[w(o)?(_(),m(`p`,$t,n(w(o)),1)):E(``,!0),t[11]||=p(`p`,{class:`admin-form__hint`},` مثل سفارش مشتری: ابتدا اقلام ثبت می‌شود، قیمت‌گذاری و تسویه بعداً انجام می‌شود. `,-1),p(`div`,en,[t[8]||=p(`label`,{id:`order-customer-label`},[b(` مشتری `),p(`span`,{class:`admin-form__required`},`*`)],-1),g(J,{id:`order-customer`,modelValue:w(c).customerId,"onUpdate:modelValue":t[0]||=e=>w(c).customerId=e,block:``,searchable:``,"aria-label":`انتخاب مشتری از لیست`,placeholder:`انتخاب مشتری از لیست`,"search-placeholder":`جستجوی نام یا موبایل…`,options:z.value},null,8,[`modelValue`,`options`]),z.value.length?E(``,!0):(_(),m(`p`,tn,` مشتری‌ای در سیستم نیست. ابتدا از بخش «مشتریان» یک مشتری ثبت کنید. `))]),p(`div`,nn,[t[9]||=p(`label`,null,`محصول`,-1),g(J,{modelValue:R.productId,"onUpdate:modelValue":t[1]||=e=>R.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:V.value},null,8,[`modelValue`,`options`])]),p(`div`,rn,[p(`div`,an,[t[10]||=p(`span`,{class:`admin-form__label`},`واحد سفارش`,-1),p(`div`,on,[p(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`roll`}]),onClick:t[2]||=e=>R.quantityMode=`roll`},` طاقه `,2),p(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`meter`}]),onClick:t[3]||=e=>R.quantityMode=`meter`},` متراژ `,2)])]),p(`div`,sn,[p(`label`,cn,n(W.value),1),u(p(`input`,{id:`order-item-quantity`,"onUpdate:modelValue":t[4]||=e=>R.quantity=e,type:`number`,min:`0`,step:`any`,class:`admin-input`},null,512),[[A,R.quantity,void 0,{number:!0}]])])]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:K},` افزودن به اقلام `),w(c).items.length?(_(),m(`div`,ln,[(_(!0),m(S,null,l(w(c).items,e=>(_(),m(`div`,{key:e.productId,class:`order-add__item`},[p(`div`,null,[p(`strong`,null,n(e.productName),1),p(`span`,null,[b(` کالیته `+n(e.catalogCode)+` — `+n(w(H)(e.meterage))+` متر `,1),q(e)?(_(),m(S,{key:0},[b(` (`+n(q(e))+` طاقه) `,1)],64)):E(``,!0)])]),p(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:t=>w(T)(e.productId)},` حذف `,8,un)]))),128))])):(_(),m(`p`,dn,`هنوز محصولی به پیش‌سفارش اضافه نشده است.`))],32)]),_:1},8,[`open`,`onClose`]))}}),[[`__scopeId`,`data-v-91be5fdc`]]),mn=h({__name:`OrdersView`,setup(e){return se(),(e,t)=>(_(),m(S,null,[g(Et,{class:`desktop-only`}),g(qt,{class:`compact-only`}),g(pn)],64))}});export{mn as default}; \ No newline at end of file diff --git a/dist/assets/ProductsView-CReNQodS.js b/dist/assets/ProductsView-CReNQodS.js deleted file mode 100644 index db97625..0000000 --- a/dist/assets/ProductsView-CReNQodS.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,Dt as n,E as r,H as i,M as a,U as o,Z as ee,c as s,d as c,g as te,h as l,k as u,kt as ne,l as d,m as f,r as p,s as m,st as h,t as g,u as _}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as re,d as v,f as y,m as ie,t as b}from"./http-BjLkjdQu.js";import{D as ae,E as x,H as oe,R as se,c as S,g as ce,i as C,p as le}from"./index-BzcByePp.js";import{t as ue}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as w}from"./BaseSwitch-pJwnFBVo.js";import{t as de}from"./BaseEmptyState-B7aEMvHg.js";import{n as fe,t as pe}from"./AdminImagePicker-DLFdrgWU.js";import{t as T}from"./AdminSelect-8XDtPu3U.js";import{t as E}from"./ActiveSwitchCell-Mj6U4GtB.js";import{t as me}from"./AdminCurrencyInput-S1e1av3F.js";var he={class:`products-page`},ge={class:`products-page__filters admin-card`},_e={class:`products-page__search`},ve={key:2,class:`products-page__table admin-card desktop-only`},ye={class:`admin-table-wrap`},be={class:`admin-table`},xe={class:`numeric`},Se={class:`numeric`},Ce={class:`numeric`},D={class:`numeric`},O={class:`status`},k={class:`actions`},A=[`onClick`],we={key:3,class:`compact-only admin-card-list`},Te={class:`admin-card-item__header`},Ee={class:`admin-card-item__title`},De={class:`admin-card-item__header-actions`},Oe=[`onClick`],ke={class:`admin-card-item__meta`},Ae={key:0,class:`admin-form__error`,role:`alert`},je={class:`admin-form__field`},Me={class:`admin-form__field`},Ne={class:`admin-form__row`},Pe={class:`admin-form__field`},Fe={class:`admin-form__field`},Ie={class:`admin-form__field`},Le={class:`admin-form__row`},Re={class:`admin-form__field`},ze={class:`admin-form__field`},Be={class:`admin-form__row`},Ve={class:`admin-form__field`},He={class:`admin-form__field`},Ue={class:`admin-form__row`},We={class:`admin-form__field`},Ge=[`value`],Ke={class:`admin-form__field`},qe=[`value`],Je={class:`admin-form__row`},Ye={class:`admin-form__field`},Xe={class:`admin-form__field`},j={class:`admin-form__row`},Ze={class:`admin-form__field`},Qe={class:`admin-form__field`},$e={class:`admin-form__field`},et={class:`color-variants`},tt={class:`color-variant__fields`},nt=[`onUpdate:modelValue`,`placeholder`],rt=[`onClick`],it={class:`admin-form__field`},at={class:`admin-form__field`},ot=[`disabled`],M=g(te({__name:`ProductsView`,setup(te){let g=e([]),M=e([]),N=e([]),P=e([{value:`trousers`,label:`شلوار`},{value:`suit`,label:`کت‌وشلوار`},{value:`shirt`,label:`پیراهن`},{value:`other`,label:`سایر`}]),F=e([{value:`summer`,label:`تابستان`},{value:`winter`,label:`زمستان`},{value:`all_season`,label:`چهارفصل`}]),I=e(``),L=e(`all`),R=e(!0),z=e(null),B=e(null),V=e(``),H=e(!1),U=re(),st=m(()=>[{value:`all`,label:`همه کالیته‌ها`},...M.value.map(e=>({value:e.id,label:`${e.code} — ${e.name}`}))]),ct=m(()=>M.value.map(e=>({value:e.id,label:`${e.code} — ${e.name} (${e.companyName})`}))),lt=m(()=>[{value:``,label:`بدون برند`},...N.value.filter(e=>e.isActive).map(e=>({value:e.id,label:e.name}))]),W=()=>({catalogId:M.value[0]?.id??``,brandId:``,name:``,color:``,productCode:``,minMeterage:100,orderStep:50,price:null,internalStock:0,isActive:!0,usageCategory:`other`,season:`all_season`,composition:``,weaveType:``,subtitle:``,rollMeters:50,isNew:!1,colorRows:[{id:crypto.randomUUID(),name:``,imageUrl:``}]}),G=ee(W()),ut=m(()=>z.value!==null),dt=m(()=>z.value===`edit`?`ویرایش محصول`:`افزودن محصول`),K=m(()=>G.name.trim()&&G.catalogId&&G.minMeterage>0),q=m(()=>I.value.trim().length>0||L.value!==`all`),J=m(()=>{let e=g.value;L.value!==`all`&&(e=e.filter(e=>e.catalogId===L.value));let t=I.value.trim();return t&&(e=e.filter(e=>e.name.includes(t)||e.color.includes(t)||e.productCode.includes(t)||e.catalogCode.includes(t))),e});async function ft(){R.value=!0;try{let[e,t,n,r]=await Promise.all([x.list(),ce.list(),le.list(),ae.get().catch(()=>null)]);g.value=e,M.value=t,N.value=n,r?.categoryDefsJson?.usage?.length&&(P.value=[...r.categoryDefsJson.usage.map(e=>({value:e.id,label:e.title})),{value:`other`,label:`سایر`}]),r?.categoryDefsJson?.seasons?.length&&(F.value=r.categoryDefsJson.seasons.map(e=>({value:e.id,label:e.title})))}catch(e){U.error(e instanceof b?e.message:`بارگذاری محصولات انجام نشد.`)}finally{R.value=!1}}r(()=>{ft()});function pt(e){return M.value.find(t=>t.id===e)}function Y(){z.value=`add`,B.value=null,Object.assign(G,W()),V.value=``}function X(e){z.value=`edit`,B.value=e.id,G.catalogId=e.catalogId,G.brandId=e.brandId??``,G.name=e.name,G.color=e.color,G.productCode=e.productCode,G.minMeterage=e.minMeterage,G.orderStep=e.orderStep,G.price=e.price,G.internalStock=e.internalStock,G.isActive=e.isActive,G.usageCategory=e.usageCategory??`other`,G.season=e.season??`all_season`,G.composition=e.composition??``,G.weaveType=e.weaveType??``,G.subtitle=e.subtitle??``,G.rollMeters=e.rollMeters??50,G.isNew=e.isNew??!1;let t=e.colors??[],n=e.colorImages??[],r=[...e.imageUrls??[]];if(t.length){G.colorRows=t.map((e,t)=>({id:crypto.randomUUID(),name:e,imageUrl:n[t]||r[t]||``}));let e=new Set(G.colorRows.map(e=>e.imageUrl).filter(Boolean));for(let t of r)e.has(t)||(G.colorRows.push({id:crypto.randomUUID(),name:`رنگ ${G.colorRows.length+1}`,imageUrl:t}),e.add(t))}else r.length?G.colorRows=r.map((t,n)=>({id:crypto.randomUUID(),name:n===0?e.color||``:`رنگ ${n+1}`,imageUrl:t})):G.colorRows=[{id:crypto.randomUUID(),name:e.color||``,imageUrl:``}];V.value=``}function mt(){G.colorRows.push({id:crypto.randomUUID(),name:``,imageUrl:``})}function ht(e){if(G.colorRows.length<=1){G.colorRows[0]={id:G.colorRows[0]?.id??crypto.randomUUID(),name:``,imageUrl:``};return}G.colorRows.splice(e,1)}function gt(){let e=[],t=[],n=new Set,r=e=>{let r=e?.trim();!r||n.has(r)||(n.add(r),t.push(r))};return G.colorRows.forEach((t,n)=>{let i=t.imageUrl.trim()||void 0,a=t.name.trim()||(n===0?G.color.trim():``)||(i?`رنگ ${n+1}`:``);!a&&!i||(a&&e.push({name:a,imageUrl:i}),r(i))}),{colorEntries:e,imageUrls:t}}function Z(){z.value=null,B.value=null,V.value=``}async function Q(){if(!K.value){V.value=`نام محصول، کالیته و حداقل متراژ الزامی هستند.`;return}let e=pt(G.catalogId);if(!e){V.value=`کالیته معتبر انتخاب کنید.`;return}let{colorEntries:t,imageUrls:n}=gt(),r={usageCategory:G.usageCategory,season:G.season,composition:G.composition.trim()||null,weaveType:G.weaveType.trim()||null,subtitle:G.subtitle.trim()||null,rollMeters:G.rollMeters,isNew:G.isNew,colorsJson:t,imageUrlsJson:n},i=G.productCode.trim()||`${e.code}-NEW`;H.value=!0;try{if(z.value===`edit`&&B.value){let e=await x.update(B.value,{catalogId:G.catalogId,name:G.name.trim(),color:G.color.trim()||t[0]?.name||`—`,code:i,productCode:i,minMeterage:G.minMeterage,orderStep:G.orderStep,price:G.price,internalStock:G.internalStock,isActive:G.isActive,brandId:G.brandId||null,...r}),n=g.value.findIndex(e=>e.id===B.value);n!==-1&&(g.value[n]={...g.value[n],...e}),U.success(`اطلاعات محصول به‌روزرسانی شد.`)}else{let n=await x.create({companyId:e.companyId,catalogId:G.catalogId,name:G.name.trim(),color:G.color.trim()||t[0]?.name||`—`,code:i,productCode:i,minMeterage:G.minMeterage,orderStep:G.orderStep,price:G.price,internalStock:G.internalStock,isActive:G.isActive,brandId:G.brandId||null,...r});g.value.push(n),U.success(`محصول جدید ثبت شد.`)}Z()}catch(e){e instanceof b&&e.status===0&&(V.value=e.message),U.error(e instanceof b?e.message:`ذخیره محصول انجام نشد.`)}finally{H.value=!1}}async function $(e,t){await x.setActive(e,t)}function _t(){I.value=``,L.value=`all`}return(e,r)=>(u(),c(`div`,he,[s(`div`,{class:`admin-page-header`},[r[19]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`محصولات`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن محصول `)]),s(`div`,ge,[s(`div`,_e,[l(se,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":r[0]||=e=>I.value=e,type:`search`,class:`products-page__search-input`,placeholder:`جستجو در نام، رنگ، کد...`},null,512),[[y,I.value]])]),l(T,{modelValue:L.value,"onUpdate:modelValue":r[1]||=e=>L.value=e,class:`products-page__catalog-filter`,"aria-label":`فیلتر کالیته`,options:st.value},null,8,[`modelValue`,`options`])]),R.value?(u(),d(ue,{key:0,variant:`table`})):J.value.length?(u(),c(`div`,ve,[s(`div`,ye,[s(`table`,be,[r[20]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تصویر`),s(`th`,null,`کد محصول`),s(`th`,null,`نام`),s(`th`,null,`رنگ`),s(`th`,null,`برند`),s(`th`,null,`کالیته`),s(`th`,null,`شرکت`),s(`th`,{class:`numeric`},`حداقل متراژ`),s(`th`,{class:`numeric`},`ضریب`),s(`th`,{class:`numeric`},`قیمت`),s(`th`,{class:`numeric`},`موجودی`),s(`th`,{class:`status`},`وضعیت`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(u(!0),c(p,null,a(J.value,e=>(u(),c(`tr`,{key:e.id},[s(`td`,null,[s(`span`,{class:n([`product-thumb`,{"product-thumb--empty":!e.imageUrls?.[0]}]),style:ne(e.imageUrls?.[0]?{backgroundImage:h(fe)(e.imageUrls[0])}:void 0)},null,6)]),s(`td`,null,t(e.productCode),1),s(`td`,null,t(e.name),1),s(`td`,null,t(e.color),1),s(`td`,null,t(e.brandName||`—`),1),s(`td`,null,t(e.catalogCode),1),s(`td`,null,t(e.companyName),1),s(`td`,xe,t(h(S)(e.minMeterage))+` متر`,1),s(`td`,Se,t(h(S)(e.orderStep)),1),s(`td`,Ce,t(e.price?h(C)(e.price):`—`),1),s(`td`,D,t(h(S)(e.internalStock))+` متر`,1),s(`td`,O,[l(E,{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`])]),s(`td`,k,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,A)])]))),128))])])])])):(u(),d(de,{key:1,class:`admin-card`,icon:`products`,title:q.value?`نتیجه‌ای یافت نشد`:`محصولی ثبت نشده`,description:q.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین محصول را ثبت کنید.`},{default:i(()=>[q.value?(u(),c(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:_t},` پاک کردن فیلترها `)):(u(),c(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن محصول `))]),_:1},8,[`title`,`description`])),!R.value&&J.value.length?(u(),c(`div`,we,[(u(!0),c(p,null,a(J.value,e=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,Te,[s(`p`,Ee,t(e.name),1),s(`div`,De,[l(E,{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`]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,Oe)])]),s(`div`,ke,[s(`span`,null,t(e.productCode),1),s(`span`,null,t(e.color),1),s(`span`,null,`کالیته `+t(e.catalogCode),1),s(`span`,null,t(e.price?h(C)(e.price):`بدون قیمت`),1)])]))),128))])):_(``,!0),l(oe,{open:ut.value,title:dt.value,size:`lg`,onClose:Z},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||H.value,onClick:Q},t(z.value===`edit`?`ذخیره تغییرات`:`ثبت محصول`),9,ot)]),default:i(()=>[s(`form`,{class:`admin-form`,onSubmit:ie(Q,[`prevent`])},[V.value?(u(),c(`p`,Ae,t(V.value),1)):_(``,!0),s(`div`,je,[r[21]||=s(`label`,null,[f(`کالیته `),s(`span`,{class:`admin-form__required`},`*`)],-1),l(T,{modelValue:G.catalogId,"onUpdate:modelValue":r[2]||=e=>G.catalogId=e,block:``,"aria-label":`انتخاب کالیته`,placeholder:`انتخاب کالیته`,options:ct.value},null,8,[`modelValue`,`options`])]),s(`div`,Me,[r[22]||=s(`label`,null,`برند`,-1),l(T,{modelValue:G.brandId,"onUpdate:modelValue":r[3]||=e=>G.brandId=e,block:``,"aria-label":`برند محصول`,placeholder:`انتخاب برند`,options:lt.value},null,8,[`modelValue`,`options`])]),s(`div`,Ne,[s(`div`,Pe,[r[23]||=s(`label`,{for:`product-name`},[f(`نام محصول `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`product-name`,"onUpdate:modelValue":r[4]||=e=>G.name=e,type:`text`,class:`admin-input`},null,512),[[y,G.name]])]),s(`div`,Fe,[r[24]||=s(`label`,{for:`product-color`},`رنگ / نوع`,-1),o(s(`input`,{id:`product-color`,"onUpdate:modelValue":r[5]||=e=>G.color=e,type:`text`,class:`admin-input`},null,512),[[y,G.color]])])]),s(`div`,Ie,[r[25]||=s(`label`,{for:`product-code`},`کد محصول`,-1),o(s(`input`,{id:`product-code`,"onUpdate:modelValue":r[6]||=e=>G.productCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[y,G.productCode]])]),s(`div`,Le,[s(`div`,Re,[r[26]||=s(`label`,{for:`product-min`},`حداقل متراژ`,-1),o(s(`input`,{id:`product-min`,"onUpdate:modelValue":r[7]||=e=>G.minMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,G.minMeterage,void 0,{number:!0}]])]),s(`div`,ze,[r[27]||=s(`label`,{for:`product-step`},`ضریب سفارش`,-1),o(s(`input`,{id:`product-step`,"onUpdate:modelValue":r[8]||=e=>G.orderStep=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,G.orderStep,void 0,{number:!0}]])])]),s(`div`,Be,[s(`div`,Ve,[r[28]||=s(`label`,{for:`product-price`},`قیمت (تومان)`,-1),l(me,{id:`product-price`,modelValue:G.price,"onUpdate:modelValue":r[9]||=e=>G.price=e},null,8,[`modelValue`])]),s(`div`,He,[r[29]||=s(`label`,{for:`product-stock`},`موجودی داخلی (متر)`,-1),o(s(`input`,{id:`product-stock`,"onUpdate:modelValue":r[10]||=e=>G.internalStock=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[y,G.internalStock,void 0,{number:!0}]])])]),s(`div`,Ue,[s(`div`,We,[r[30]||=s(`label`,{for:`product-usage`},`کاربرد`,-1),o(s(`select`,{id:`product-usage`,"onUpdate:modelValue":r[11]||=e=>G.usageCategory=e,class:`admin-input`},[(u(!0),c(p,null,a(P.value,e=>(u(),c(`option`,{key:e.value,value:e.value},t(e.label),9,Ge))),128))],512),[[v,G.usageCategory]])]),s(`div`,Ke,[r[31]||=s(`label`,{for:`product-season`},`فصل`,-1),o(s(`select`,{id:`product-season`,"onUpdate:modelValue":r[12]||=e=>G.season=e,class:`admin-input`},[(u(!0),c(p,null,a(F.value,e=>(u(),c(`option`,{key:e.value,value:e.value},t(e.label),9,qe))),128))],512),[[v,G.season]])])]),s(`div`,Je,[s(`div`,Ye,[r[32]||=s(`label`,{for:`product-composition`},`جنس / ترکیب`,-1),o(s(`input`,{id:`product-composition`,"onUpdate:modelValue":r[13]||=e=>G.composition=e,type:`text`,class:`admin-input`},null,512),[[y,G.composition]])]),s(`div`,Xe,[r[33]||=s(`label`,{for:`product-weave`},`نوع بافت`,-1),o(s(`input`,{id:`product-weave`,"onUpdate:modelValue":r[14]||=e=>G.weaveType=e,type:`text`,class:`admin-input`},null,512),[[y,G.weaveType]])])]),s(`div`,j,[s(`div`,Ze,[r[34]||=s(`label`,{for:`product-subtitle`},`زیرعنوان`,-1),o(s(`input`,{id:`product-subtitle`,"onUpdate:modelValue":r[15]||=e=>G.subtitle=e,type:`text`,class:`admin-input`},null,512),[[y,G.subtitle]])]),s(`div`,Qe,[r[35]||=s(`label`,{for:`product-roll`},`متراژ طاقه`,-1),o(s(`input`,{id:`product-roll`,"onUpdate:modelValue":r[16]||=e=>G.rollMeters=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,G.rollMeters,void 0,{number:!0}]])])]),s(`div`,$e,[r[36]||=s(`label`,null,`رنگ‌ها و تصویر هر رنگ`,-1),r[37]||=s(`p`,{class:`color-variants__hint`},` برای هر رنگ نام و عکس بگذارید. اگر فقط عکس دارید، نام رنگ اصلی (بالا) یا «رنگ ۱» استفاده می‌شود. تصویر با زدن «ذخیره تغییرات» روی سرور ثبت می‌شود. `,-1),s(`div`,et,[(u(!0),c(p,null,a(G.colorRows,(e,t)=>(u(),c(`div`,{key:e.id,class:`color-variant`},[l(pe,{"model-value":e.imageUrl||null,"onUpdate:modelValue":t=>e.imageUrl=t??``},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,tt,[o(s(`input`,{"onUpdate:modelValue":t=>e.name=t,type:`text`,class:`admin-input`,placeholder:`نام رنگ ${t+1}`},null,8,nt),[[y,e.name]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ht(t)},` حذف این رنگ `,8,rt)])]))),128)),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:mt},` + افزودن رنگ `)])]),s(`div`,it,[l(w,{modelValue:G.isNew,"onUpdate:modelValue":r[17]||=e=>G.isNew=e,label:`محصول جدید`},null,8,[`modelValue`])]),s(`div`,at,[l(w,{modelValue:G.isActive,"onUpdate:modelValue":r[18]||=e=>G.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-e062996d`]]);export{M as default}; \ No newline at end of file diff --git a/dist/assets/ProductsView-CbVBTmyM.css b/dist/assets/ProductsView-CbVBTmyM.css new file mode 100644 index 0000000..20c0014 --- /dev/null +++ b/dist/assets/ProductsView-CbVBTmyM.css @@ -0,0 +1 @@ +.products-page__filters[data-v-1acc8c48]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.products-page__search[data-v-1acc8c48]{min-width:200px;color:var(--color-text-muted);flex:1;align-items:center;gap:10px;display:flex}.products-page__search-input[data-v-1acc8c48]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.products-page__catalog-filter[data-v-1acc8c48]{width:min(260px,100%)}.admin-form__hint[data-v-1acc8c48]{color:var(--color-text-muted);margin:6px 0 0;font-size:.75rem;line-height:1.5}.products-page__table[data-v-1acc8c48]{overflow:hidden}.product-thumb[data-v-1acc8c48]{background:#e8eceb 50%/cover no-repeat;border-radius:8px;width:44px;height:36px;display:block}.product-thumb--empty[data-v-1acc8c48]{background:#eef1f0}.color-variants[data-v-1acc8c48]{flex-direction:column;gap:14px;display:flex}.color-variants__hint[data-v-1acc8c48]{color:var(--color-text-muted);margin:0 0 10px;font-size:.75rem;line-height:1.6}.general-images[data-v-1acc8c48]{flex-direction:column;gap:12px;display:flex}.general-images__row[data-v-1acc8c48],.color-variant[data-v-1acc8c48]{border:1px solid var(--color-border);background:var(--color-bg,#f7f8f7);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px;display:flex}.color-variant__fields[data-v-1acc8c48]{flex-direction:column;flex:1;align-items:flex-start;gap:8px;min-width:180px;display:flex} diff --git a/dist/assets/ProductsView-CpaU9Oj4.js b/dist/assets/ProductsView-CpaU9Oj4.js new file mode 100644 index 0000000..213ffa8 --- /dev/null +++ b/dist/assets/ProductsView-CpaU9Oj4.js @@ -0,0 +1 @@ +import{$ as e,At as t,Dt as n,E as r,H as i,M as a,U as o,Z as ee,c as s,d as c,g as te,h as l,k as u,kt as ne,l as d,m as f,r as p,s as m,st as h,t as g,u as _}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as re,d as v,f as y,m as ie,t as b}from"./http-BjLkjdQu.js";import{B as ae,E as oe,I as se,T as x,_ as ce,c as S,i as C,p as le}from"./index-SWzbcuqQ.js";import{t as ue}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as w}from"./BaseSwitch-pJwnFBVo.js";import{t as de}from"./BaseEmptyState-Bzvl_pTa.js";import{n as fe,t as T}from"./AdminImagePicker-DBOLHU6S.js";import{t as E}from"./AdminSelect-6a7SFr9x.js";import{t as D}from"./ActiveSwitchCell-DIBIZfO9.js";import{t as pe}from"./AdminCurrencyInput-BGwf-fv_.js";var me={class:`products-page`},he={class:`products-page__filters admin-card`},ge={class:`products-page__search`},_e={key:2,class:`products-page__table admin-card desktop-only`},ve={class:`admin-table-wrap`},ye={class:`admin-table`},be={dir:`ltr`},xe={class:`numeric`},Se={class:`numeric`},Ce={class:`numeric`},O={class:`numeric`},k={class:`status`},A={class:`actions`},we=[`onClick`],Te={key:3,class:`compact-only admin-card-list`},Ee={class:`admin-card-item__header`},De={class:`admin-card-item__title`},Oe={class:`admin-card-item__header-actions`},ke=[`onClick`],Ae={class:`admin-card-item__meta`},je={dir:`ltr`},Me={key:0,class:`admin-form__error`,role:`alert`},Ne={class:`admin-form__field`},Pe={class:`admin-form__field`},Fe={class:`admin-form__row`},Ie={class:`admin-form__field`},Le={class:`admin-form__field`},Re={class:`admin-form__field`},ze={class:`admin-form__row`},Be={class:`admin-form__field`},Ve={class:`admin-form__field`},He={class:`admin-form__row`},Ue={class:`admin-form__field`},We={class:`admin-form__field`},Ge={class:`admin-form__row`},Ke={class:`admin-form__field`},qe=[`value`],Je={class:`admin-form__field`},Ye=[`value`],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={class:`admin-form__field`},nt={class:`admin-form__field`},rt={class:`general-images`},it=[`onClick`],at={class:`admin-form__field`},ot={class:`color-variants`},st={class:`color-variant__fields`},ct=[`onUpdate:modelValue`,`placeholder`],lt=[`onClick`],ut={class:`admin-form__field`},dt={class:`admin-form__field`},ft=[`disabled`],j=g(te({__name:`ProductsView`,setup(te){let g=e([]),j=e([]),M=e([]),N=e([{value:`trousers`,label:`شلوار`},{value:`suit`,label:`کت‌وشلوار`},{value:`shirt`,label:`پیراهن`},{value:`other`,label:`سایر`}]),P=e([{value:`summer`,label:`تابستان`},{value:`winter`,label:`زمستان`},{value:`all_season`,label:`چهارفصل`}]),F=e(``),I=e(`all`),L=e(!0),R=e(null),z=e(null),B=e(``),V=e(!1),H=re(),pt=m(()=>[{value:`all`,label:`همه شرکت‌ها`},...j.value.map(e=>({value:e.id,label:e.name}))]),mt=m(()=>j.value.filter(e=>e.isActive).map(e=>({value:e.id,label:e.name}))),ht=m(()=>[{value:``,label:`بدون برند`},...M.value.filter(e=>e.isActive).map(e=>({value:e.id,label:e.name}))]),U=()=>({companyId:j.value[0]?.id??``,brandId:``,name:``,color:``,productCode:``,minMeterage:100,orderStep:50,price:null,internalStock:0,isActive:!0,usageCategory:`other`,season:`all_season`,composition:``,weaveType:``,subtitle:``,rollMeters:50,isNew:!1,generalImages:[],colorRows:[{id:crypto.randomUUID(),name:``,imageUrl:``}]}),W=ee(U()),gt=m(()=>R.value!==null),_t=m(()=>R.value===`edit`?`ویرایش محصول`:`افزودن محصول`),G=m(()=>W.name.trim()&&W.companyId&&W.minMeterage>0),K=m(()=>F.value.trim().length>0||I.value!==`all`),q=m(()=>{let e=g.value;I.value!==`all`&&(e=e.filter(e=>e.companyId===I.value));let t=F.value.trim();return t&&(e=e.filter(e=>e.name.includes(t)||e.color.includes(t)||e.productCode.includes(t)||(e.catalogCode??e.productCode).includes(t))),e});async function J(){L.value=!0;try{let[e,t,n,r]=await Promise.all([x.list(),ce.list(),le.list(),oe.get().catch(()=>null)]);g.value=e,j.value=t,M.value=n,r?.categoryDefsJson?.usage?.length&&(N.value=[...r.categoryDefsJson.usage.map(e=>({value:e.id,label:e.title})),{value:`other`,label:`سایر`}]),r?.categoryDefsJson?.seasons?.length&&(P.value=r.categoryDefsJson.seasons.map(e=>({value:e.id,label:e.title})))}catch(e){H.error(e instanceof b?e.message:`بارگذاری محصولات انجام نشد.`)}finally{L.value=!1}}r(()=>{J()});function Y(){R.value=`add`,z.value=null,Object.assign(W,U()),B.value=``}async function X(e){R.value=`edit`,z.value=e.id;try{e=await x.getById(e.id)}catch{}W.companyId=e.companyId??j.value[0]?.id??``,W.brandId=e.brandId??``,W.name=e.name,W.color=e.color,W.productCode=e.productCode,W.minMeterage=e.minMeterage,W.orderStep=e.orderStep,W.price=e.price,W.internalStock=e.internalStock,W.isActive=e.isActive,W.usageCategory=e.usageCategory??`other`,W.season=e.season??`all_season`,W.composition=e.composition??``,W.weaveType=e.weaveType??``,W.subtitle=e.subtitle??``,W.rollMeters=e.rollMeters??50,W.isNew=e.isNew??!1,W.generalImages=[...e.imageUrls??[]];let t=e.colors??[];t.length?W.colorRows=t.map((t,n)=>{let r=e.colorVariantImages?.[n]?.[0],i=e.colorImages?.[n];return{id:crypto.randomUUID(),name:t,imageUrl:r||i||``}}):W.colorRows=[{id:crypto.randomUUID(),name:e.color||``,imageUrl:``}],B.value=``}function vt(){W.colorRows.push({id:crypto.randomUUID(),name:``,imageUrl:``})}function yt(e){if(W.colorRows.length<=1){W.colorRows[0]={id:W.colorRows[0]?.id??crypto.randomUUID(),name:``,imageUrl:``};return}W.colorRows.splice(e,1)}function bt(){W.generalImages.push(``)}function xt(e){W.generalImages.splice(e,1)}function St(e){let t=[],n=new Set;for(let r of e){let e=r.trim();!e||n.has(e)||(n.add(e),t.push(e))}return t}function Ct(){let e=St(W.generalImages),t=[];return W.colorRows.forEach((e,n)=>{let r=e.imageUrl.trim()||void 0,i=e.name.trim()||(n===0?W.color.trim():``)||(r?`رنگ ${n+1}`:``);!i&&!r||i&&t.push({name:i,imageUrls:r?[r]:[],imageUrl:r})}),{colorEntries:t,imageUrls:e}}function Z(){R.value=null,z.value=null,B.value=``}async function Q(){if(!G.value){B.value=`نام محصول، شرکت و حداقل متراژ الزامی هستند.`;return}let e=j.value.find(e=>e.id===W.companyId);if(!e){B.value=`شرکت معتبر انتخاب کنید.`;return}let{colorEntries:t,imageUrls:n}=Ct(),r={usageCategory:W.usageCategory,season:W.season,composition:W.composition.trim()||null,weaveType:W.weaveType.trim()||null,subtitle:W.subtitle.trim()||null,rollMeters:W.rollMeters,isNew:W.isNew,colorsJson:t,imageUrlsJson:n},i=W.productCode.trim()||`PRD-${Date.now()}`;V.value=!0;try{if(R.value===`edit`&&z.value){await x.update(z.value,{name:W.name.trim(),color:W.color.trim()||t[0]?.name||`—`,code:i,productCode:i,minMeterage:W.minMeterage,orderStep:W.orderStep,price:W.price,internalStock:W.internalStock,isActive:W.isActive,...r});let e=await x.getById(z.value),n=g.value.findIndex(e=>e.id===z.value);n!==-1&&(g.value[n]=e),H.success(`اطلاعات محصول به‌روزرسانی شد.`)}else{let n=await x.create({companyId:e.id,name:W.name.trim(),color:W.color.trim()||t[0]?.name||`—`,code:i,productCode:i,minMeterage:W.minMeterage,orderStep:W.orderStep,price:W.price,internalStock:W.internalStock,isActive:W.isActive,brandId:W.brandId||null,...r});g.value.push(n),H.success(`محصول جدید ثبت شد.`)}Z()}catch(e){e instanceof b&&e.status===0&&(B.value=e.message),H.error(e instanceof b?e.message:`ذخیره محصول انجام نشد.`)}finally{V.value=!1}}async function $(e,t){await x.setActive(e,t)}function wt(){F.value=``,I.value=`all`}return(e,r)=>(u(),c(`div`,me,[s(`div`,{class:`admin-page-header`},[r[19]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`محصولات`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن محصول `)]),s(`div`,he,[s(`div`,ge,[l(se,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":r[0]||=e=>F.value=e,type:`search`,class:`products-page__search-input`,placeholder:`جستجو در نام، رنگ، کد...`},null,512),[[y,F.value]])]),l(E,{modelValue:I.value,"onUpdate:modelValue":r[1]||=e=>I.value=e,class:`products-page__catalog-filter`,"aria-label":`فیلتر شرکت`,options:pt.value},null,8,[`modelValue`,`options`])]),L.value?(u(),d(ue,{key:0,variant:`table`})):q.value.length?(u(),c(`div`,_e,[s(`div`,ve,[s(`table`,ye,[r[20]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تصویر`),s(`th`,null,`کد محصول`),s(`th`,null,`نام`),s(`th`,null,`رنگ`),s(`th`,null,`برند`),s(`th`,null,`کد محصول`),s(`th`,null,`شرکت`),s(`th`,{class:`numeric`},`حداقل متراژ`),s(`th`,{class:`numeric`},`ضریب`),s(`th`,{class:`numeric`},`قیمت هر متر`),s(`th`,{class:`numeric`},`موجودی`),s(`th`,{class:`status`},`وضعیت`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(u(!0),c(p,null,a(q.value,e=>(u(),c(`tr`,{key:e.id},[s(`td`,null,[s(`span`,{class:n([`product-thumb`,{"product-thumb--empty":!e.imageUrls?.[0]}]),style:ne(e.imageUrls?.[0]?{backgroundImage:h(fe)(e.imageUrls[0])}:void 0)},null,6)]),s(`td`,null,t(e.productCode),1),s(`td`,null,t(e.name),1),s(`td`,null,t(e.color),1),s(`td`,null,t(e.brandName||`—`),1),s(`td`,be,t(e.productCode),1),s(`td`,null,t(e.companyName),1),s(`td`,xe,t(h(S)(e.minMeterage))+` متر`,1),s(`td`,Se,t(h(S)(e.orderStep)),1),s(`td`,Ce,t(e.price?`${h(C)(e.price)} / متر`:`—`),1),s(`td`,O,t(h(S)(e.internalStock))+` متر`,1),s(`td`,k,[l(D,{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`])]),s(`td`,A,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,we)])]))),128))])])])])):(u(),d(de,{key:1,class:`admin-card`,icon:`products`,title:K.value?`نتیجه‌ای یافت نشد`:`محصولی ثبت نشده`,description:K.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین محصول را ثبت کنید.`},{default:i(()=>[K.value?(u(),c(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:wt},` پاک کردن فیلترها `)):(u(),c(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن محصول `))]),_:1},8,[`title`,`description`])),!L.value&&q.value.length?(u(),c(`div`,Te,[(u(!0),c(p,null,a(q.value,e=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,Ee,[s(`p`,De,t(e.name),1),s(`div`,Oe,[l(D,{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`]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,ke)])]),s(`div`,Ae,[s(`span`,null,t(e.productCode),1),s(`span`,null,t(e.color),1),s(`span`,je,`کد `+t(e.productCode),1),s(`span`,null,t(e.price?`${h(C)(e.price)} / متر`:`بدون قیمت`),1)])]))),128))])):_(``,!0),l(ae,{open:gt.value,title:_t.value,size:`lg`,onClose:Z},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!G.value||V.value,onClick:Q},t(R.value===`edit`?`ذخیره تغییرات`:`ثبت محصول`),9,ft)]),default:i(()=>[s(`form`,{class:`admin-form`,onSubmit:ie(Q,[`prevent`])},[B.value?(u(),c(`p`,Me,t(B.value),1)):_(``,!0),s(`div`,Ne,[r[21]||=s(`label`,null,[f(`شرکت `),s(`span`,{class:`admin-form__required`},`*`)],-1),l(E,{modelValue:W.companyId,"onUpdate:modelValue":r[2]||=e=>W.companyId=e,block:``,"aria-label":`انتخاب شرکت`,placeholder:`انتخاب شرکت`,options:mt.value},null,8,[`modelValue`,`options`])]),s(`div`,Pe,[r[22]||=s(`label`,null,`برند`,-1),l(E,{modelValue:W.brandId,"onUpdate:modelValue":r[3]||=e=>W.brandId=e,block:``,"aria-label":`برند محصول`,placeholder:`انتخاب برند`,options:ht.value},null,8,[`modelValue`,`options`])]),s(`div`,Fe,[s(`div`,Ie,[r[23]||=s(`label`,{for:`product-name`},[f(`نام محصول `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`product-name`,"onUpdate:modelValue":r[4]||=e=>W.name=e,type:`text`,class:`admin-input`},null,512),[[y,W.name]])]),s(`div`,Le,[r[24]||=s(`label`,{for:`product-color`},`رنگ / نوع`,-1),o(s(`input`,{id:`product-color`,"onUpdate:modelValue":r[5]||=e=>W.color=e,type:`text`,class:`admin-input`},null,512),[[y,W.color]])])]),s(`div`,Re,[r[25]||=s(`label`,{for:`product-code`},`کد محصول`,-1),o(s(`input`,{id:`product-code`,"onUpdate:modelValue":r[6]||=e=>W.productCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[y,W.productCode]])]),s(`div`,ze,[s(`div`,Be,[r[26]||=s(`label`,{for:`product-min`},`حداقل متراژ`,-1),o(s(`input`,{id:`product-min`,"onUpdate:modelValue":r[7]||=e=>W.minMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,W.minMeterage,void 0,{number:!0}]])]),s(`div`,Ve,[r[27]||=s(`label`,{for:`product-step`},`ضریب سفارش`,-1),o(s(`input`,{id:`product-step`,"onUpdate:modelValue":r[8]||=e=>W.orderStep=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,W.orderStep,void 0,{number:!0}]])])]),s(`div`,He,[s(`div`,Ue,[r[28]||=s(`label`,{for:`product-price`},`قیمت هر متر (تومان)`,-1),l(pe,{id:`product-price`,modelValue:W.price,"onUpdate:modelValue":r[9]||=e=>W.price=e,placeholder:`مثلاً ۲۵۰٬۰۰۰`},null,8,[`modelValue`]),r[29]||=s(`p`,{class:`admin-form__hint`},` مبلغ به‌ازای هر متر پارچه؛ در سفارش با متراژ تأیید‌شده ضرب می‌شود. `,-1)]),s(`div`,We,[r[30]||=s(`label`,{for:`product-stock`},`موجودی داخلی (متر)`,-1),o(s(`input`,{id:`product-stock`,"onUpdate:modelValue":r[10]||=e=>W.internalStock=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[y,W.internalStock,void 0,{number:!0}]])])]),s(`div`,Ge,[s(`div`,Ke,[r[31]||=s(`label`,{for:`product-usage`},`کاربرد`,-1),o(s(`select`,{id:`product-usage`,"onUpdate:modelValue":r[11]||=e=>W.usageCategory=e,class:`admin-input`},[(u(!0),c(p,null,a(N.value,e=>(u(),c(`option`,{key:e.value,value:e.value},t(e.label),9,qe))),128))],512),[[v,W.usageCategory]])]),s(`div`,Je,[r[32]||=s(`label`,{for:`product-season`},`فصل`,-1),o(s(`select`,{id:`product-season`,"onUpdate:modelValue":r[12]||=e=>W.season=e,class:`admin-input`},[(u(!0),c(p,null,a(P.value,e=>(u(),c(`option`,{key:e.value,value:e.value},t(e.label),9,Ye))),128))],512),[[v,W.season]])])]),s(`div`,Xe,[s(`div`,Ze,[r[33]||=s(`label`,{for:`product-composition`},`جنس / ترکیب`,-1),o(s(`input`,{id:`product-composition`,"onUpdate:modelValue":r[13]||=e=>W.composition=e,type:`text`,class:`admin-input`},null,512),[[y,W.composition]])]),s(`div`,Qe,[r[34]||=s(`label`,{for:`product-weave`},`نوع بافت`,-1),o(s(`input`,{id:`product-weave`,"onUpdate:modelValue":r[14]||=e=>W.weaveType=e,type:`text`,class:`admin-input`},null,512),[[y,W.weaveType]])])]),s(`div`,$e,[s(`div`,et,[r[35]||=s(`label`,{for:`product-subtitle`},`زیرعنوان`,-1),o(s(`input`,{id:`product-subtitle`,"onUpdate:modelValue":r[15]||=e=>W.subtitle=e,type:`text`,class:`admin-input`},null,512),[[y,W.subtitle]])]),s(`div`,tt,[r[36]||=s(`label`,{for:`product-roll`},`متراژ طاقه`,-1),o(s(`input`,{id:`product-roll`,"onUpdate:modelValue":r[16]||=e=>W.rollMeters=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,W.rollMeters,void 0,{number:!0}]])])]),s(`div`,nt,[r[37]||=s(`label`,null,`تصاویر عمومی محصول`,-1),r[38]||=s(`p`,{class:`color-variants__hint`},` فقط برای گالری اصلی در اپ کاربر (بدون وابستگی به رنگ). با «ذخیره تغییرات» ثبت می‌شود. `,-1),s(`div`,rt,[(u(!0),c(p,null,a(W.generalImages,(e,t)=>(u(),c(`div`,{key:`general-${t}`,class:`general-images__row`},[l(T,{"model-value":e||null,"onUpdate:modelValue":e=>W.generalImages[t]=e??``},null,8,[`model-value`,`onUpdate:modelValue`]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>xt(t)},` حذف تصویر `,8,it)]))),128)),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:bt},` + افزودن تصویر عمومی `)])]),s(`div`,at,[r[39]||=s(`label`,null,`رنگ‌بندی‌ها`,-1),r[40]||=s(`p`,{class:`color-variants__hint`},` برای هر رنگ یک نام و یک تصویر بگذارید. تصویر رنگ در بخش رنگ‌بندی اپ نمایش داده می‌شود، نه در گالری عمومی. `,-1),s(`div`,ot,[(u(!0),c(p,null,a(W.colorRows,(e,t)=>(u(),c(`div`,{key:e.id,class:`color-variant`},[l(T,{"model-value":e.imageUrl||null,"show-remove":!1,"onUpdate:modelValue":t=>e.imageUrl=t??``},null,8,[`model-value`,`onUpdate:modelValue`]),s(`div`,st,[o(s(`input`,{"onUpdate:modelValue":t=>e.name=t,type:`text`,class:`admin-input`,placeholder:`نام رنگ ${t+1}`},null,8,ct),[[y,e.name]]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>yt(t)},` حذف این رنگ `,8,lt)])]))),128)),s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:vt},` + افزودن رنگ `)])]),s(`div`,ut,[l(w,{modelValue:W.isNew,"onUpdate:modelValue":r[17]||=e=>W.isNew=e,label:`محصول جدید`},null,8,[`modelValue`])]),s(`div`,dt,[l(w,{modelValue:W.isActive,"onUpdate:modelValue":r[18]||=e=>W.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-1acc8c48`]]);export{j as default}; \ No newline at end of file diff --git a/dist/assets/ProductsView-DS4PzfOc.css b/dist/assets/ProductsView-DS4PzfOc.css deleted file mode 100644 index 5fedf1e..0000000 --- a/dist/assets/ProductsView-DS4PzfOc.css +++ /dev/null @@ -1 +0,0 @@ -.products-page__filters[data-v-e062996d]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.products-page__search[data-v-e062996d]{min-width:200px;color:var(--color-text-muted);flex:1;align-items:center;gap:10px;display:flex}.products-page__search-input[data-v-e062996d]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.products-page__catalog-filter[data-v-e062996d]{width:min(260px,100%)}.products-page__table[data-v-e062996d]{overflow:hidden}.product-thumb[data-v-e062996d]{background:#e8eceb 50%/cover no-repeat;border-radius:8px;width:44px;height:36px;display:block}.product-thumb--empty[data-v-e062996d]{background:#eef1f0}.color-variants[data-v-e062996d]{flex-direction:column;gap:14px;display:flex}.color-variants__hint[data-v-e062996d]{color:var(--color-text-muted);margin:0 0 10px;font-size:.75rem;line-height:1.6}.color-variant[data-v-e062996d]{border:1px solid var(--color-border);background:var(--color-bg,#f7f8f7);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px;display:flex}.color-variant__fields[data-v-e062996d]{flex-direction:column;flex:1;align-items:flex-start;gap:8px;min-width:180px;display:flex} diff --git a/dist/assets/ReportsView-_sppl77t.js b/dist/assets/ReportsView-_sppl77t.js new file mode 100644 index 0000000..a67c13d --- /dev/null +++ b/dist/assets/ReportsView-_sppl77t.js @@ -0,0 +1 @@ +import{$ as e,At as t,E as n,M as r,c as i,d as a,g as o,h as s,k as c,l as ee,m as te,r as l,st as u,t as d,u as f}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,t as re}from"./http-BjLkjdQu.js";import{I as ie,c as p,i as m,s as h,y as g}from"./index-SWzbcuqQ.js";import{t as ae}from"./AdminPageSkeleton-oWhHYjl4.js";var oe={class:`reports-page`},se={class:`admin-page-header`},_={class:`reports-page__stats`},v={class:`admin-stat-card admin-card`},y={class:`admin-stat-card__value`},b={class:`reports-page__growth`},x={class:`admin-stat-card admin-card`},S={class:`admin-stat-card__value`},C={class:`admin-stat-card admin-card`},w={class:`admin-stat-card__value`},T={class:`admin-stat-card admin-card`},E={class:`admin-stat-card__value`},D={key:0,class:`reports-page__stats`},O={class:`admin-stat-card admin-card`},k={class:`admin-stat-card__value`},A={class:`admin-stat-card admin-card`},j={class:`admin-stat-card__value`},M={class:`admin-stat-card admin-card`},N={class:`admin-stat-card__value`},P={class:`admin-stat-card admin-card`},F={class:`admin-stat-card__value`},I={class:`admin-stat-card admin-card`},L={class:`admin-stat-card__value`},R={class:`admin-stat-card admin-card`},z={class:`admin-stat-card__value`},B={class:`reports-page__grid`},V={class:`admin-card reports-page__section`},H={class:`admin-table-wrap desktop-only`},U={class:`admin-table`},ce={class:`compact-only admin-card-list`},W={class:`admin-card-item__title`},G={class:`admin-card-item__meta`},le={class:`admin-card reports-page__section`},ue={class:`admin-table-wrap desktop-only`},de={class:`admin-table`},fe={class:`compact-only reports-page__status-list`},pe={key:1,class:`reports-page__grid reports-page__grid--full`},me={class:`admin-card reports-page__section`},he={class:`admin-table-wrap`},ge={class:`admin-table`},_e={key:2,class:`reports-page__grid`},ve={key:0,class:`admin-card reports-page__section`},ye={class:`admin-table-wrap`},be={class:`admin-table`},xe={dir:`ltr`},Se={key:1,class:`admin-card reports-page__section`},Ce={class:`admin-table-wrap`},we={class:`admin-table`},K=d(o({__name:`ReportsView`,setup(o){let d=ne(),K=e(!0),q=e({newOrders:0,pendingReview:0,pendingCheck:0,finalApproval:0,todaySales:0,todaySalesGrowth:0,monthSales:0}),J=e([]),Y=e([]),X=e([]),Z=e([]),Q=e([]),$=e(null);n(async()=>{K.value=!0;try{let[e,t]=await Promise.all([g.get(),g.reports()]);q.value=e.stats,J.value=t.reportSalesByCompany,Y.value=t.reportOrdersByStatus,X.value=t.reportSalesByMonth??[],Z.value=t.reportSalesByProduct??[],Q.value=t.reportSalesByCustomer??[],$.value=t.reportCustomers??null}catch(e){d.error(e instanceof re?e.message:`بارگذاری گزارش‌ها انجام نشد.`)}finally{K.value=!1}});function Te(){window.print()}return(e,n)=>(c(),a(`div`,oe,[i(`div`,se,[n[1]||=i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`گزارش‌ها`)],-1),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:Te},[s(ie,{name:`print`,size:16}),n[0]||=te(` چاپ گزارش `,-1)])]),K.value?(c(),ee(ae,{key:0,variant:`table`})):(c(),a(l,{key:1},[i(`div`,_,[i(`div`,v,[n[2]||=i(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),i(`p`,y,t(u(m)(q.value.todaySales)),1),i(`span`,b,`+`+t(q.value.todaySalesGrowth)+`% نسبت به دیروز`,1)]),i(`div`,x,[n[3]||=i(`p`,{class:`admin-stat-card__label`},`فروش ماه جاری`,-1),i(`p`,S,t(u(m)(q.value.monthSales)),1)]),i(`div`,C,[n[4]||=i(`p`,{class:`admin-stat-card__label`},`سفارش‌های جدید`,-1),i(`p`,w,t(u(p)(q.value.newOrders)),1)]),i(`div`,T,[n[5]||=i(`p`,{class:`admin-stat-card__label`},`در انتظار بررسی`,-1),i(`p`,E,t(u(p)(q.value.pendingReview)),1)])]),$.value?(c(),a(`div`,D,[i(`div`,O,[n[6]||=i(`p`,{class:`admin-stat-card__label`},`مشتریان فعال`,-1),i(`p`,k,t(u(p)($.value.active)),1)]),i(`div`,A,[n[7]||=i(`p`,{class:`admin-stat-card__label`},`غیرفعال`,-1),i(`p`,j,t(u(p)($.value.inactive)),1)]),i(`div`,M,[n[8]||=i(`p`,{class:`admin-stat-card__label`},`جدید ۳۰ روز`,-1),i(`p`,N,t(u(p)($.value.newLast30Days)),1)]),i(`div`,P,[n[9]||=i(`p`,{class:`admin-stat-card__label`},`بدون خرید`,-1),i(`p`,F,t(u(p)($.value.noPurchase)),1)]),i(`div`,I,[n[10]||=i(`p`,{class:`admin-stat-card__label`},`بدون خرید ۹۰ روز`,-1),i(`p`,L,t(u(p)($.value.noPurchase90Days)),1)]),i(`div`,R,[n[11]||=i(`p`,{class:`admin-stat-card__label`},`دارای واسطه`,-1),i(`p`,z,t(u(p)($.value.withAgent)),1)])])):f(``,!0),i(`div`,B,[i(`section`,V,[n[13]||=i(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک شرکت`,-1),i(`div`,H,[i(`table`,U,[n[12]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`شرکت`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`مجموع متراژ`),i(`th`,null,`مجموع مبلغ`)])],-1),i(`tbody`,null,[(c(!0),a(l,null,r(J.value,e=>(c(),a(`tr`,{key:e.companyName},[i(`td`,null,t(e.companyName),1),i(`td`,null,t(u(p)(e.orderCount)),1),i(`td`,null,t(u(h)(e.meterage)),1),i(`td`,null,t(u(m)(e.totalAmount)),1)]))),128))])])]),i(`div`,ce,[(c(!0),a(l,null,r(J.value,e=>(c(),a(`article`,{key:e.companyName,class:`admin-card-item`},[i(`p`,W,t(e.companyName),1),i(`div`,G,[i(`span`,null,t(e.orderCount)+` سفارش`,1),i(`span`,null,t(u(h)(e.meterage)),1),i(`span`,null,t(u(m)(e.totalAmount)),1)])]))),128))])]),i(`section`,le,[n[15]||=i(`h2`,{class:`reports-page__section-title`},`سفارش‌ها به تفکیک وضعیت`,-1),i(`div`,ue,[i(`table`,de,[n[14]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`وضعیت`),i(`th`,null,`تعداد`)])],-1),i(`tbody`,null,[(c(!0),a(l,null,r(Y.value,e=>(c(),a(`tr`,{key:e.status},[i(`td`,null,t(e.status),1),i(`td`,null,t(u(p)(e.count)),1)]))),128))])])]),i(`ul`,fe,[(c(!0),a(l,null,r(Y.value,e=>(c(),a(`li`,{key:e.status},[i(`span`,null,t(e.status),1),i(`strong`,null,t(u(p)(e.count)),1)]))),128))])])]),X.value.length?(c(),a(`div`,pe,[i(`section`,me,[n[17]||=i(`h2`,{class:`reports-page__section-title`},`فروش ماهانه`,-1),i(`div`,he,[i(`table`,ge,[n[16]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`ماه`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`مجموع متراژ`),i(`th`,null,`مجموع مبلغ`)])],-1),i(`tbody`,null,[(c(!0),a(l,null,r(X.value,e=>(c(),a(`tr`,{key:e.month},[i(`td`,null,t(e.month),1),i(`td`,null,t(u(p)(e.orderCount)),1),i(`td`,null,t(u(h)(e.meterage)),1),i(`td`,null,t(u(m)(e.totalAmount)),1)]))),128))])])])])])):f(``,!0),Z.value.length||Q.value.length?(c(),a(`div`,_e,[Z.value.length?(c(),a(`section`,ve,[n[19]||=i(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک محصول`,-1),i(`div`,ye,[i(`table`,be,[n[18]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`محصول`),i(`th`,null,`کد`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`متراژ`),i(`th`,null,`مبلغ`)])],-1),i(`tbody`,null,[(c(!0),a(l,null,r(Z.value,e=>(c(),a(`tr`,{key:e.productId},[i(`td`,null,t(e.productName),1),i(`td`,xe,t(e.productCode),1),i(`td`,null,t(u(p)(e.orderCount)),1),i(`td`,null,t(u(h)(e.meterage)),1),i(`td`,null,t(u(m)(e.totalAmount)),1)]))),128))])])])])):f(``,!0),Q.value.length?(c(),a(`section`,Se,[n[21]||=i(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک مشتری`,-1),i(`div`,Ce,[i(`table`,we,[n[20]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`مشتری`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`متراژ`),i(`th`,null,`مبلغ`)])],-1),i(`tbody`,null,[(c(!0),a(l,null,r(Q.value,e=>(c(),a(`tr`,{key:e.customerName},[i(`td`,null,t(e.customerName),1),i(`td`,null,t(u(p)(e.orderCount)),1),i(`td`,null,t(u(h)(e.meterage)),1),i(`td`,null,t(u(m)(e.totalAmount)),1)]))),128))])])])])):f(``,!0)])):f(``,!0)],64))]))}}),[[`__scopeId`,`data-v-6618f331`]]);export{K as default}; \ No newline at end of file diff --git a/dist/assets/ReportsView-mBlbgBE5.js b/dist/assets/ReportsView-mBlbgBE5.js deleted file mode 100644 index e14cc8d..0000000 --- a/dist/assets/ReportsView-mBlbgBE5.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,E as n,M as r,c as i,d as a,g as ee,h as o,k as s,l as te,m as c,r as l,st as u,t as d,u as f}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,t as re}from"./http-BjLkjdQu.js";import{R as ie,b as p,c as m,i as h,s as g}from"./index-BzcByePp.js";import{t as ae}from"./AdminPageSkeleton-oWhHYjl4.js";var oe={class:`reports-page`},se={class:`admin-page-header`},_={class:`reports-page__stats`},v={class:`admin-stat-card admin-card`},y={class:`admin-stat-card__value`},b={class:`reports-page__growth`},x={class:`admin-stat-card admin-card`},S={class:`admin-stat-card__value`},C={class:`admin-stat-card admin-card`},w={class:`admin-stat-card__value`},T={class:`admin-stat-card admin-card`},E={class:`admin-stat-card__value`},D={key:0,class:`reports-page__stats`},O={class:`admin-stat-card admin-card`},k={class:`admin-stat-card__value`},A={class:`admin-stat-card admin-card`},j={class:`admin-stat-card__value`},M={class:`admin-stat-card admin-card`},N={class:`admin-stat-card__value`},P={class:`admin-stat-card admin-card`},F={class:`admin-stat-card__value`},I={class:`admin-stat-card admin-card`},L={class:`admin-stat-card__value`},R={class:`admin-stat-card admin-card`},z={class:`admin-stat-card__value`},B={class:`reports-page__grid`},V={class:`admin-card reports-page__section`},H={class:`admin-table-wrap desktop-only`},U={class:`admin-table`},ce={class:`compact-only admin-card-list`},W={class:`admin-card-item__title`},G={class:`admin-card-item__meta`},le={class:`admin-card reports-page__section`},ue={class:`admin-table-wrap desktop-only`},de={class:`admin-table`},fe={class:`compact-only reports-page__status-list`},pe={key:1,class:`reports-page__grid reports-page__grid--full`},me={class:`admin-card reports-page__section`},he={class:`admin-table-wrap`},ge={class:`admin-table`},_e={key:2,class:`reports-page__grid`},ve={key:0,class:`admin-card reports-page__section`},ye={class:`admin-table-wrap`},be={class:`admin-table`},xe={dir:`ltr`},Se={key:1,class:`admin-card reports-page__section`},Ce={class:`admin-table-wrap`},we={class:`admin-table`},K=d(ee({__name:`ReportsView`,setup(ee){let d=ne(),K=e(!0),q=e({newOrders:0,pendingReview:0,pendingCheck:0,finalApproval:0,todaySales:0,todaySalesGrowth:0,monthSales:0}),J=e([]),Y=e([]),X=e([]),Z=e([]),Q=e([]),$=e(null);n(async()=>{K.value=!0;try{let[e,t]=await Promise.all([p.get(),p.reports()]);q.value=e.stats,J.value=t.reportSalesByCompany,Y.value=t.reportOrdersByStatus,X.value=t.reportSalesByMonth??[],Z.value=t.reportSalesByProduct??[],Q.value=t.reportSalesByCustomer??[],$.value=t.reportCustomers??null}catch(e){d.error(e instanceof re?e.message:`بارگذاری گزارش‌ها انجام نشد.`)}finally{K.value=!1}});function Te(){window.print()}return(e,n)=>(s(),a(`div`,oe,[i(`div`,se,[n[1]||=i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`گزارش‌ها`)],-1),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:Te},[o(ie,{name:`print`,size:16}),n[0]||=c(` چاپ گزارش `,-1)])]),K.value?(s(),te(ae,{key:0,variant:`table`})):(s(),a(l,{key:1},[i(`div`,_,[i(`div`,v,[n[2]||=i(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),i(`p`,y,t(u(h)(q.value.todaySales)),1),i(`span`,b,`+`+t(q.value.todaySalesGrowth)+`% نسبت به دیروز`,1)]),i(`div`,x,[n[3]||=i(`p`,{class:`admin-stat-card__label`},`فروش ماه جاری`,-1),i(`p`,S,t(u(h)(q.value.monthSales)),1)]),i(`div`,C,[n[4]||=i(`p`,{class:`admin-stat-card__label`},`سفارش‌های جدید`,-1),i(`p`,w,t(u(m)(q.value.newOrders)),1)]),i(`div`,T,[n[5]||=i(`p`,{class:`admin-stat-card__label`},`در انتظار بررسی`,-1),i(`p`,E,t(u(m)(q.value.pendingReview)),1)])]),$.value?(s(),a(`div`,D,[i(`div`,O,[n[6]||=i(`p`,{class:`admin-stat-card__label`},`مشتریان فعال`,-1),i(`p`,k,t(u(m)($.value.active)),1)]),i(`div`,A,[n[7]||=i(`p`,{class:`admin-stat-card__label`},`غیرفعال`,-1),i(`p`,j,t(u(m)($.value.inactive)),1)]),i(`div`,M,[n[8]||=i(`p`,{class:`admin-stat-card__label`},`جدید ۳۰ روز`,-1),i(`p`,N,t(u(m)($.value.newLast30Days)),1)]),i(`div`,P,[n[9]||=i(`p`,{class:`admin-stat-card__label`},`بدون خرید`,-1),i(`p`,F,t(u(m)($.value.noPurchase)),1)]),i(`div`,I,[n[10]||=i(`p`,{class:`admin-stat-card__label`},`بدون خرید ۹۰ روز`,-1),i(`p`,L,t(u(m)($.value.noPurchase90Days)),1)]),i(`div`,R,[n[11]||=i(`p`,{class:`admin-stat-card__label`},`دارای واسطه`,-1),i(`p`,z,t(u(m)($.value.withAgent)),1)])])):f(``,!0),i(`div`,B,[i(`section`,V,[n[13]||=i(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک شرکت`,-1),i(`div`,H,[i(`table`,U,[n[12]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`شرکت`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`مجموع متراژ`),i(`th`,null,`مجموع مبلغ`)])],-1),i(`tbody`,null,[(s(!0),a(l,null,r(J.value,e=>(s(),a(`tr`,{key:e.companyName},[i(`td`,null,t(e.companyName),1),i(`td`,null,t(u(m)(e.orderCount)),1),i(`td`,null,t(u(g)(e.meterage)),1),i(`td`,null,t(u(h)(e.totalAmount)),1)]))),128))])])]),i(`div`,ce,[(s(!0),a(l,null,r(J.value,e=>(s(),a(`article`,{key:e.companyName,class:`admin-card-item`},[i(`p`,W,t(e.companyName),1),i(`div`,G,[i(`span`,null,t(e.orderCount)+` سفارش`,1),i(`span`,null,t(u(g)(e.meterage)),1),i(`span`,null,t(u(h)(e.totalAmount)),1)])]))),128))])]),i(`section`,le,[n[15]||=i(`h2`,{class:`reports-page__section-title`},`سفارش‌ها به تفکیک وضعیت`,-1),i(`div`,ue,[i(`table`,de,[n[14]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`وضعیت`),i(`th`,null,`تعداد`)])],-1),i(`tbody`,null,[(s(!0),a(l,null,r(Y.value,e=>(s(),a(`tr`,{key:e.status},[i(`td`,null,t(e.status),1),i(`td`,null,t(u(m)(e.count)),1)]))),128))])])]),i(`ul`,fe,[(s(!0),a(l,null,r(Y.value,e=>(s(),a(`li`,{key:e.status},[i(`span`,null,t(e.status),1),i(`strong`,null,t(u(m)(e.count)),1)]))),128))])])]),X.value.length?(s(),a(`div`,pe,[i(`section`,me,[n[17]||=i(`h2`,{class:`reports-page__section-title`},`فروش ماهانه`,-1),i(`div`,he,[i(`table`,ge,[n[16]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`ماه`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`مجموع متراژ`),i(`th`,null,`مجموع مبلغ`)])],-1),i(`tbody`,null,[(s(!0),a(l,null,r(X.value,e=>(s(),a(`tr`,{key:e.month},[i(`td`,null,t(e.month),1),i(`td`,null,t(u(m)(e.orderCount)),1),i(`td`,null,t(u(g)(e.meterage)),1),i(`td`,null,t(u(h)(e.totalAmount)),1)]))),128))])])])])])):f(``,!0),Z.value.length||Q.value.length?(s(),a(`div`,_e,[Z.value.length?(s(),a(`section`,ve,[n[19]||=i(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک محصول`,-1),i(`div`,ye,[i(`table`,be,[n[18]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`محصول`),i(`th`,null,`کد`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`متراژ`),i(`th`,null,`مبلغ`)])],-1),i(`tbody`,null,[(s(!0),a(l,null,r(Z.value,e=>(s(),a(`tr`,{key:e.productId},[i(`td`,null,t(e.productName),1),i(`td`,xe,t(e.productCode),1),i(`td`,null,t(u(m)(e.orderCount)),1),i(`td`,null,t(u(g)(e.meterage)),1),i(`td`,null,t(u(h)(e.totalAmount)),1)]))),128))])])])])):f(``,!0),Q.value.length?(s(),a(`section`,Se,[n[21]||=i(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک مشتری`,-1),i(`div`,Ce,[i(`table`,we,[n[20]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`مشتری`),i(`th`,null,`تعداد سفارش`),i(`th`,null,`متراژ`),i(`th`,null,`مبلغ`)])],-1),i(`tbody`,null,[(s(!0),a(l,null,r(Q.value,e=>(s(),a(`tr`,{key:e.customerName},[i(`td`,null,t(e.customerName),1),i(`td`,null,t(u(m)(e.orderCount)),1),i(`td`,null,t(u(g)(e.meterage)),1),i(`td`,null,t(u(h)(e.totalAmount)),1)]))),128))])])])])):f(``,!0)])):f(``,!0)],64))]))}}),[[`__scopeId`,`data-v-6618f331`]]);export{K as default}; \ No newline at end of file diff --git a/dist/assets/SettingsView-CJBaFKxk.js b/dist/assets/SettingsView-CJBaFKxk.js new file mode 100644 index 0000000..e2de090 --- /dev/null +++ b/dist/assets/SettingsView-CJBaFKxk.js @@ -0,0 +1 @@ +import{$ as e,At as t,B as n,D as r,Dt as i,E as a,M as o,U as s,Z as c,a as l,c as u,d,g as f,h as p,k as m,kt as h,l as g,m as _,r as v,s as y,t as b,u as x,w as S}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as C,f as w,l as T,m as E,p as D}from"./http-BjLkjdQu.js";import{C as O,E as k,I as A,j,v as M}from"./index-SWzbcuqQ.js";import{t as N}from"./AdminPageSkeleton-oWhHYjl4.js";var P=[`id`],F=[`aria-label`,`aria-expanded`,`disabled`],I={class:`admin-multi-select__value`},L={class:`admin-multi-select__chevron`,"aria-hidden":`true`},R={key:0,class:`admin-multi-select__chips`},z={class:`admin-multi-select__chip-label`},B=[`onClick`],ee=[`aria-label`],te={key:0,class:`admin-multi-select__search`,role:`presentation`},V=[`placeholder`],H={key:1,class:`admin-multi-select__empty`,role:`presentation`},U=[`aria-selected`,`onClick`],W={class:`admin-multi-select__option-label`},G=b(f({__name:`AdminMultiSelect`,props:{modelValue:{},options:{},placeholder:{default:`انتخاب کنید`},ariaLabel:{default:`انتخاب چندگانه`},block:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`جستجو…`},disabled:{type:Boolean,default:!1},id:{default:void 0}},emits:[`update:modelValue`],setup(a,{emit:c}){let f=a,_=c,b=e(!1),C=e(``),T=e(null),O=e(null),k=e(null),M=e({});j(T,()=>{b.value=!1,C.value=``},{ignore:[O]});let N=y(()=>new Set(f.modelValue)),G=y(()=>f.options.filter(e=>N.value.has(e.value))),K=y(()=>{let e=f.modelValue.length;return e?e===1?G.value[0]?.label??f.placeholder:`${e} مورد انتخاب شده`:f.placeholder}),q=y(()=>{let e=C.value.trim().toLowerCase();return e?f.options.filter(t=>t.label.toLowerCase().includes(e)):f.options});function J(){let e=T.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));M.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(){f.disabled||(b.value=!b.value,b.value&&(await S(),J(),f.searchable&&(C.value=``,await S(),k.value?.focus())))}function Z(e){let t=new Set(f.modelValue);t.has(e)?t.delete(e):t.add(e),_(`update:modelValue`,[...t])}function Q(e){_(`update:modelValue`,f.modelValue.filter(t=>t!==e))}return n(b,e=>{Y(e),e&&S(()=>J())}),r(()=>{Y(!1)}),(e,n)=>(m(),d(`div`,{id:a.id,ref_key:`rootRef`,ref:T,class:i([`admin-multi-select`,{"admin-multi-select--open":b.value,"admin-multi-select--block":a.block,"admin-multi-select--disabled":a.disabled}])},[u(`button`,{type:`button`,class:`admin-multi-select__trigger`,"aria-label":a.ariaLabel,"aria-expanded":b.value,"aria-haspopup":`listbox`,disabled:a.disabled,onClick:X},[u(`span`,I,t(K.value),1),u(`span`,L,[p(A,{name:`chevron-down`,size:16})])],8,F),G.value.length&&!a.disabled?(m(),d(`ul`,R,[(m(!0),d(v,null,o(G.value,e=>(m(),d(`li`,{key:e.value,class:`admin-multi-select__chip`},[u(`span`,z,t(e.label),1),u(`button`,{type:`button`,class:`admin-multi-select__chip-remove`,"aria-label":`حذف`,onClick:t=>Q(e.value)},` × `,8,B)]))),128))])):x(``,!0),(m(),g(l,{to:`body`},[b.value?(m(),d(`ul`,{key:0,ref_key:`menuRef`,ref:O,class:`admin-multi-select__menu`,role:`listbox`,"aria-label":a.ariaLabel,style:h(M.value),"aria-multiselectable":`true`},[a.searchable?(m(),d(`li`,te,[s(u(`input`,{ref_key:`searchInputRef`,ref:k,"onUpdate:modelValue":n[0]||=e=>C.value=e,type:`search`,class:`admin-multi-select__search-input`,placeholder:a.searchPlaceholder,onClick:n[1]||=E(()=>{},[`stop`]),onKeydown:n[2]||=D(E(e=>b.value=!1,[`stop`]),[`esc`])},null,40,V),[[w,C.value]])])):x(``,!0),q.value.length?x(``,!0):(m(),d(`li`,H,` موردی یافت نشد `)),(m(!0),d(v,null,o(q.value,e=>(m(),d(`li`,{key:e.value,role:`presentation`},[u(`button`,{type:`button`,class:i([`admin-multi-select__option`,{"admin-multi-select__option--active":N.value.has(e.value)}]),role:`option`,"aria-selected":N.value.has(e.value),onClick:t=>Z(e.value)},[u(`span`,W,t(e.label),1),N.value.has(e.value)?(m(),g(A,{key:0,name:`check`,size:16,class:`admin-multi-select__check`})):x(``,!0)],10,U)]))),128))],12,ee)):x(``,!0)]))],10,P))}}),[[`__scopeId`,`data-v-9a22912b`]]),K={class:`settings-page`},q={class:`admin-page-header`},J=[`disabled`],Y={key:1,class:`settings-page__grid`},X={class:`admin-card settings-page__section`},Z={class:`admin-form__field`},Q={class:`admin-form__field`},ne={class:`admin-form__field`},re={class:`settings-page__check`},ie={class:`settings-page__check`},ae={class:`admin-form__field`},oe=[`disabled`],se={class:`settings-page__checks`},ce={class:`settings-page__check`},le={class:`settings-page__check`},ue={class:`admin-card settings-page__section`},de={class:`settings-page__checks`},fe={class:`settings-page__check`},pe={class:`settings-page__check`},me={class:`settings-page__check`},he={class:`settings-page__check`},ge={class:`settings-page__check`},_e={class:`admin-card settings-page__section`},ve={class:`admin-form__field`},ye={class:`admin-form__field`},be={class:`admin-card settings-page__section`},$={class:`admin-form__field`},xe={class:`admin-form__field`},Se={class:`settings-page__check settings-page__check--block`},Ce={class:`admin-form__field`},we=[`disabled`],Te=b(f({__name:`SettingsView`,setup(r){let i=C(),o=c({maxMeteragePerInvoice:5e3,cashInvoiceValidityHours:8,smsOrderRegistered:!0,smsPricingReady:!0,smsPaymentReminder:!0,smsCheckReview:!0,smsShippingUpdate:!0,defaultSettlementCheck:!0,defaultSettlementCash:!0,minOrderRollsPerProduct:1,showCatalogPublicPrice:!1,allowAgentPricing:!1,agentMinUnitPrice:null,supportPhone:``,supportEmail:``}),l=c({title:``,body:``}),f=e(!1),h=e([]),v=e([]),b=e(!1),x=e(!0),S=e(!1),E=y(()=>h.value.filter(e=>e.isActive).map(e=>({value:e.id,label:`${e.name} · ${e.phone}${e.appRole===`agent`?` (واسطه)`:``}`})));n(b,e=>{e&&(v.value=[])}),a(async()=>{x.value=!0;try{let[e,t]=await Promise.all([k.get(),M.list()]);Object.assign(o,{maxMeteragePerInvoice:e.maxMeteragePerInvoice,cashInvoiceValidityHours:e.cashInvoiceValidityHours,smsOrderRegistered:e.smsOrderRegistered,smsPricingReady:e.smsPricingReady,smsPaymentReminder:e.smsPaymentReminder,smsCheckReview:e.smsCheckReview,smsShippingUpdate:e.smsShippingUpdate,defaultSettlementCheck:e.defaultSettlementCheck,defaultSettlementCash:e.defaultSettlementCash,minOrderRollsPerProduct:e.minOrderRollsPerProduct??1,showCatalogPublicPrice:e.showCatalogPublicPrice??!1,allowAgentPricing:e.allowAgentPricing??!1,agentMinUnitPrice:e.agentMinUnitPrice??null,supportPhone:e.supportPhone??``,supportEmail:e.supportEmail??``}),h.value=t}catch(e){i.error(e instanceof Error?e.message:`دریافت تنظیمات ناموفق بود.`)}finally{x.value=!1}});async function D(){if(!S.value){S.value=!0;try{await k.update({...o}),i.success(`تنظیمات با موفقیت ذخیره شد.`)}catch(e){i.error(e instanceof Error?e.message:`ذخیره تنظیمات ناموفق بود.`)}finally{S.value=!1}}}async function A(){if(f.value)return;let e=l.title.trim(),t=l.body.trim();if(!e||!t){i.error(`عنوان و متن اعلان را وارد کنید.`);return}if(!b.value&&!v.value.length){i.error(`حداقل یک مشتری انتخاب کنید یا «ارسال به همه مشتریان فعال» را فعال کنید.`);return}f.value=!0;try{let n={title:e,body:t};b.value?n.allActive=!0:n.customerIds=[...v.value];let r=await O.broadcast(n);if(!r.sent){i.warning(`هیچ مشتری فعالی برای ارسال پیدا نشد.`);return}i.success(`اعلان برای ${r.sent} مشتری ارسال شد.`),l.title=``,l.body=``,v.value=[],b.value=!1}catch(e){i.error(e instanceof Error?e.message:`ارسال اعلان ناموفق بود.`)}finally{f.value=!1}}return(e,n)=>(m(),d(`div`,K,[u(`div`,q,[n[19]||=u(`div`,null,[u(`h1`,{class:`admin-page-header__title`},`تنظیمات`)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:x.value||S.value,onClick:D},t(S.value?`در حال ذخیره…`:`ذخیره تنظیمات`),9,J)]),x.value?(m(),g(N,{key:0,variant:`form`,rows:8})):(m(),d(`div`,Y,[u(`section`,X,[n[28]||=u(`h2`,{class:`settings-page__title`},`تنظیمات عمومی سفارش`,-1),u(`div`,Z,[n[20]||=u(`label`,{for:`max-meterage`},`حداکثر متراژ هر فاکتور (متر)`,-1),s(u(`input`,{id:`max-meterage`,"onUpdate:modelValue":n[0]||=e=>o.maxMeteragePerInvoice=e,type:`number`,min:`1000`,class:`admin-input`},null,512),[[w,o.maxMeteragePerInvoice,void 0,{number:!0}]])]),u(`div`,Q,[n[21]||=u(`label`,{for:`validity-hours`},`اعتبار فاکتور نقدی (ساعت)`,-1),s(u(`input`,{id:`validity-hours`,"onUpdate:modelValue":n[1]||=e=>o.cashInvoiceValidityHours=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[w,o.cashInvoiceValidityHours,void 0,{number:!0}]])]),u(`div`,ne,[n[22]||=u(`label`,{for:`min-rolls`},`حداقل طاقه از هر محصول`,-1),s(u(`input`,{id:`min-rolls`,"onUpdate:modelValue":n[2]||=e=>o.minOrderRollsPerProduct=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[w,o.minOrderRollsPerProduct,void 0,{number:!0}]])]),u(`label`,re,[s(u(`input`,{"onUpdate:modelValue":n[3]||=e=>o.showCatalogPublicPrice=e,type:`checkbox`},null,512),[[T,o.showCatalogPublicPrice]]),n[23]||=_(` نمایش قیمت عمومی در کاتالوگ `,-1)]),u(`label`,ie,[s(u(`input`,{"onUpdate:modelValue":n[4]||=e=>o.allowAgentPricing=e,type:`checkbox`},null,512),[[T,o.allowAgentPricing]]),n[24]||=_(` اجازه قیمت‌گذاری توسط واسطه `,-1)]),u(`div`,ae,[n[25]||=u(`label`,{for:`agent-min-price`},`حداقل قیمت هر متر واسطه (تومان)`,-1),s(u(`input`,{id:`agent-min-price`,"onUpdate:modelValue":n[5]||=e=>o.agentMinUnitPrice=e,type:`number`,min:`0`,class:`admin-input`,disabled:!o.allowAgentPricing},null,8,oe),[[w,o.agentMinUnitPrice,void 0,{number:!0}]])]),u(`div`,se,[u(`label`,ce,[s(u(`input`,{"onUpdate:modelValue":n[6]||=e=>o.defaultSettlementCheck=e,type:`checkbox`},null,512),[[T,o.defaultSettlementCheck]]),n[26]||=u(`span`,null,`فعال‌سازی تسویه چکی`,-1)]),u(`label`,le,[s(u(`input`,{"onUpdate:modelValue":n[7]||=e=>o.defaultSettlementCash=e,type:`checkbox`},null,512),[[T,o.defaultSettlementCash]]),n[27]||=u(`span`,null,`فعال‌سازی تسویه نقدی`,-1)])])]),u(`section`,ue,[n[34]||=u(`h2`,{class:`settings-page__title`},`پیامک و اعلان`,-1),u(`div`,de,[u(`label`,fe,[s(u(`input`,{"onUpdate:modelValue":n[8]||=e=>o.smsOrderRegistered=e,type:`checkbox`},null,512),[[T,o.smsOrderRegistered]]),n[29]||=u(`span`,null,`پیامک ثبت سفارش`,-1)]),u(`label`,pe,[s(u(`input`,{"onUpdate:modelValue":n[9]||=e=>o.smsPricingReady=e,type:`checkbox`},null,512),[[T,o.smsPricingReady]]),n[30]||=u(`span`,null,`پیامک صدور فاکتور و آماده‌بودن قیمت`,-1)]),u(`label`,me,[s(u(`input`,{"onUpdate:modelValue":n[10]||=e=>o.smsPaymentReminder=e,type:`checkbox`},null,512),[[T,o.smsPaymentReminder]]),n[31]||=u(`span`,null,`یادآوری پایان اعتبار فاکتور`,-1)]),u(`label`,he,[s(u(`input`,{"onUpdate:modelValue":n[11]||=e=>o.smsCheckReview=e,type:`checkbox`},null,512),[[T,o.smsCheckReview]]),n[32]||=u(`span`,null,`اعلان بررسی چک`,-1)]),u(`label`,ge,[s(u(`input`,{"onUpdate:modelValue":n[12]||=e=>o.smsShippingUpdate=e,type:`checkbox`},null,512),[[T,o.smsShippingUpdate]]),n[33]||=u(`span`,null,`اعلان وضعیت ارسال`,-1)])])]),u(`section`,_e,[n[38]||=u(`h2`,{class:`settings-page__title`},`اطلاعات تماس پشتیبانی`,-1),u(`div`,ve,[n[35]||=u(`label`,{for:`support-phone`},`تلفن پشتیبانی`,-1),s(u(`input`,{id:`support-phone`,"onUpdate:modelValue":n[13]||=e=>o.supportPhone=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[w,o.supportPhone]]),n[36]||=u(`p`,{class:`settings-page__hint`},` این شماره در صفحه ورود اپ و بخش پشتیبانی سایدبار دسکتاپ نمایش داده می‌شود. `,-1)]),u(`div`,ye,[n[37]||=u(`label`,{for:`support-email`},`ایمیل پشتیبانی`,-1),s(u(`input`,{id:`support-email`,"onUpdate:modelValue":n[14]||=e=>o.supportEmail=e,type:`email`,class:`admin-input`,dir:`ltr`},null,512),[[w,o.supportEmail]])])]),u(`section`,be,[n[44]||=u(`h2`,{class:`settings-page__title`},`اعلان هدفمند`,-1),u(`div`,$,[n[39]||=u(`label`,{for:`broadcast-title`},`عنوان`,-1),s(u(`input`,{id:`broadcast-title`,"onUpdate:modelValue":n[15]||=e=>l.title=e,type:`text`,class:`admin-input`},null,512),[[w,l.title]])]),u(`div`,xe,[n[40]||=u(`label`,{for:`broadcast-body`},`متن`,-1),s(u(`textarea`,{id:`broadcast-body`,"onUpdate:modelValue":n[16]||=e=>l.body=e,class:`admin-input`,rows:`4`},null,512),[[w,l.body]])]),u(`label`,Se,[s(u(`input`,{"onUpdate:modelValue":n[17]||=e=>b.value=e,type:`checkbox`},null,512),[[T,b.value]]),n[41]||=u(`span`,null,`ارسال به همه مشتریان فعال (نقش مشتری در اپ)`,-1)]),u(`div`,Ce,[n[42]||=u(`label`,{for:`broadcast-recipients`},`گیرندگان`,-1),p(G,{id:`broadcast-recipients`,modelValue:v.value,"onUpdate:modelValue":n[18]||=e=>v.value=e,options:E.value,disabled:b.value||!E.value.length,block:``,placeholder:`انتخاب مشتریان…`,"aria-label":`گیرندگان اعلان`},null,8,[`modelValue`,`options`,`disabled`]),n[43]||=u(`p`,{class:`settings-page__hint`},` با غیرفعال بودن «ارسال به همه»، یک یا چند مشتری فعال را انتخاب کنید. اعلان در بخش اعلان‌های اپ مشتری نمایش داده می‌شود. `,-1)]),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary settings-page__broadcast-submit`,disabled:f.value,onClick:A},t(f.value?`در حال ارسال…`:`ثبت و ارسال اعلان`),9,we)])]))]))}}),[[`__scopeId`,`data-v-230ea03a`]]);export{Te as default}; \ No newline at end of file diff --git a/dist/assets/SettingsView-CKijJhFP.js b/dist/assets/SettingsView-CKijJhFP.js deleted file mode 100644 index 67a3baa..0000000 --- a/dist/assets/SettingsView-CKijJhFP.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,B as n,D as r,Dt as i,E as a,M as o,U as s,Z as c,a as l,c as u,d,g as f,h as p,k as m,kt as h,l as g,m as _,r as v,s as y,t as b,u as x,w as S}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as C,f as w,l as T,m as E,p as D}from"./http-BjLkjdQu.js";import{D as O,N as k,R as A,w as j,y as M}from"./index-BzcByePp.js";import{t as N}from"./AdminPageSkeleton-oWhHYjl4.js";var P=[`id`],F=[`aria-label`,`aria-expanded`,`disabled`],I={class:`admin-multi-select__value`},L={class:`admin-multi-select__chevron`,"aria-hidden":`true`},R={key:0,class:`admin-multi-select__chips`},z={class:`admin-multi-select__chip-label`},B=[`onClick`],V=[`aria-label`],ee={key:0,class:`admin-multi-select__search`,role:`presentation`},te=[`placeholder`],H={key:1,class:`admin-multi-select__empty`,role:`presentation`},U=[`aria-selected`,`onClick`],W={class:`admin-multi-select__option-label`},G=b(f({__name:`AdminMultiSelect`,props:{modelValue:{},options:{},placeholder:{default:`انتخاب کنید`},ariaLabel:{default:`انتخاب چندگانه`},block:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`جستجو…`},disabled:{type:Boolean,default:!1},id:{default:void 0}},emits:[`update:modelValue`],setup(a,{emit:c}){let f=a,_=c,b=e(!1),C=e(``),T=e(null),O=e(null),j=e(null),M=e({});k(T,()=>{b.value=!1,C.value=``},{ignore:[O]});let N=y(()=>new Set(f.modelValue)),G=y(()=>f.options.filter(e=>N.value.has(e.value))),K=y(()=>{let e=f.modelValue.length;return e?e===1?G.value[0]?.label??f.placeholder:`${e} مورد انتخاب شده`:f.placeholder}),q=y(()=>{let e=C.value.trim().toLowerCase();return e?f.options.filter(t=>t.label.toLowerCase().includes(e)):f.options});function J(){let e=T.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));M.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(){f.disabled||(b.value=!b.value,b.value&&(await S(),J(),f.searchable&&(C.value=``,await S(),j.value?.focus())))}function Z(e){let t=new Set(f.modelValue);t.has(e)?t.delete(e):t.add(e),_(`update:modelValue`,[...t])}function Q(e){_(`update:modelValue`,f.modelValue.filter(t=>t!==e))}return n(b,e=>{Y(e),e&&S(()=>J())}),r(()=>{Y(!1)}),(e,n)=>(m(),d(`div`,{id:a.id,ref_key:`rootRef`,ref:T,class:i([`admin-multi-select`,{"admin-multi-select--open":b.value,"admin-multi-select--block":a.block,"admin-multi-select--disabled":a.disabled}])},[u(`button`,{type:`button`,class:`admin-multi-select__trigger`,"aria-label":a.ariaLabel,"aria-expanded":b.value,"aria-haspopup":`listbox`,disabled:a.disabled,onClick:X},[u(`span`,I,t(K.value),1),u(`span`,L,[p(A,{name:`chevron-down`,size:16})])],8,F),G.value.length&&!a.disabled?(m(),d(`ul`,R,[(m(!0),d(v,null,o(G.value,e=>(m(),d(`li`,{key:e.value,class:`admin-multi-select__chip`},[u(`span`,z,t(e.label),1),u(`button`,{type:`button`,class:`admin-multi-select__chip-remove`,"aria-label":`حذف`,onClick:t=>Q(e.value)},` × `,8,B)]))),128))])):x(``,!0),(m(),g(l,{to:`body`},[b.value?(m(),d(`ul`,{key:0,ref_key:`menuRef`,ref:O,class:`admin-multi-select__menu`,role:`listbox`,"aria-label":a.ariaLabel,style:h(M.value),"aria-multiselectable":`true`},[a.searchable?(m(),d(`li`,ee,[s(u(`input`,{ref_key:`searchInputRef`,ref:j,"onUpdate:modelValue":n[0]||=e=>C.value=e,type:`search`,class:`admin-multi-select__search-input`,placeholder:a.searchPlaceholder,onClick:n[1]||=E(()=>{},[`stop`]),onKeydown:n[2]||=D(E(e=>b.value=!1,[`stop`]),[`esc`])},null,40,te),[[w,C.value]])])):x(``,!0),q.value.length?x(``,!0):(m(),d(`li`,H,` موردی یافت نشد `)),(m(!0),d(v,null,o(q.value,e=>(m(),d(`li`,{key:e.value,role:`presentation`},[u(`button`,{type:`button`,class:i([`admin-multi-select__option`,{"admin-multi-select__option--active":N.value.has(e.value)}]),role:`option`,"aria-selected":N.value.has(e.value),onClick:t=>Z(e.value)},[u(`span`,W,t(e.label),1),N.value.has(e.value)?(m(),g(A,{key:0,name:`check`,size:16,class:`admin-multi-select__check`})):x(``,!0)],10,U)]))),128))],12,V)):x(``,!0)]))],10,P))}}),[[`__scopeId`,`data-v-9a22912b`]]),K={class:`settings-page`},q={class:`admin-page-header`},J=[`disabled`],Y={key:1,class:`settings-page__grid`},X={class:`admin-card settings-page__section`},Z={class:`admin-form__field`},Q={class:`admin-form__field`},ne={class:`admin-form__field`},re={class:`settings-page__check`},ie={class:`settings-page__check`},ae={class:`admin-form__field`},oe=[`disabled`],se={class:`settings-page__checks`},ce={class:`settings-page__check`},le={class:`settings-page__check`},ue={class:`admin-card settings-page__section`},de={class:`settings-page__checks`},fe={class:`settings-page__check`},pe={class:`settings-page__check`},me={class:`settings-page__check`},he={class:`settings-page__check`},ge={class:`settings-page__check`},_e={class:`admin-card settings-page__section`},ve={class:`admin-form__field`},ye={class:`admin-form__field`},be={class:`admin-card settings-page__section`},$={class:`admin-form__field`},xe={class:`admin-form__field`},Se={class:`settings-page__check settings-page__check--block`},Ce={class:`admin-form__field`},we=[`disabled`],Te=b(f({__name:`SettingsView`,setup(r){let i=C(),o=c({maxMeteragePerInvoice:5e3,cashInvoiceValidityHours:8,smsOrderRegistered:!0,smsPricingReady:!0,smsPaymentReminder:!0,smsCheckReview:!0,smsShippingUpdate:!0,defaultSettlementCheck:!0,defaultSettlementCash:!0,minOrderRollsPerProduct:1,showCatalogPublicPrice:!1,allowAgentPricing:!1,agentMinUnitPrice:null,supportPhone:``,supportEmail:``}),l=c({title:``,body:``}),f=e(!1),h=e([]),v=e([]),b=e(!1),x=e(!0),S=e(!1),E=y(()=>h.value.filter(e=>e.isActive).map(e=>({value:e.id,label:`${e.name} · ${e.phone}${e.appRole===`agent`?` (واسطه)`:``}`})));n(b,e=>{e&&(v.value=[])}),a(async()=>{x.value=!0;try{let[e,t]=await Promise.all([O.get(),M.list()]);Object.assign(o,{maxMeteragePerInvoice:e.maxMeteragePerInvoice,cashInvoiceValidityHours:e.cashInvoiceValidityHours,smsOrderRegistered:e.smsOrderRegistered,smsPricingReady:e.smsPricingReady,smsPaymentReminder:e.smsPaymentReminder,smsCheckReview:e.smsCheckReview,smsShippingUpdate:e.smsShippingUpdate,defaultSettlementCheck:e.defaultSettlementCheck,defaultSettlementCash:e.defaultSettlementCash,minOrderRollsPerProduct:e.minOrderRollsPerProduct??1,showCatalogPublicPrice:e.showCatalogPublicPrice??!1,allowAgentPricing:e.allowAgentPricing??!1,agentMinUnitPrice:e.agentMinUnitPrice??null,supportPhone:e.supportPhone??``,supportEmail:e.supportEmail??``}),h.value=t}catch(e){i.error(e instanceof Error?e.message:`دریافت تنظیمات ناموفق بود.`)}finally{x.value=!1}});async function D(){if(!S.value){S.value=!0;try{await O.update({...o}),i.success(`تنظیمات با موفقیت ذخیره شد.`)}catch(e){i.error(e instanceof Error?e.message:`ذخیره تنظیمات ناموفق بود.`)}finally{S.value=!1}}}async function k(){if(f.value)return;let e=l.title.trim(),t=l.body.trim();if(!e||!t){i.error(`عنوان و متن اعلان را وارد کنید.`);return}if(!b.value&&!v.value.length){i.error(`حداقل یک مشتری انتخاب کنید یا «ارسال به همه مشتریان فعال» را فعال کنید.`);return}f.value=!0;try{let n={title:e,body:t};b.value?n.allActive=!0:n.customerIds=[...v.value];let r=await j.broadcast(n);if(!r.sent){i.warning(`هیچ مشتری فعالی برای ارسال پیدا نشد.`);return}i.success(`اعلان برای ${r.sent} مشتری ارسال شد.`),l.title=``,l.body=``,v.value=[],b.value=!1}catch(e){i.error(e instanceof Error?e.message:`ارسال اعلان ناموفق بود.`)}finally{f.value=!1}}return(e,n)=>(m(),d(`div`,K,[u(`div`,q,[n[19]||=u(`div`,null,[u(`h1`,{class:`admin-page-header__title`},`تنظیمات`)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:x.value||S.value,onClick:D},t(S.value?`در حال ذخیره…`:`ذخیره تنظیمات`),9,J)]),x.value?(m(),g(N,{key:0,variant:`form`,rows:8})):(m(),d(`div`,Y,[u(`section`,X,[n[28]||=u(`h2`,{class:`settings-page__title`},`تنظیمات عمومی سفارش`,-1),u(`div`,Z,[n[20]||=u(`label`,{for:`max-meterage`},`حداکثر متراژ هر فاکتور (متر)`,-1),s(u(`input`,{id:`max-meterage`,"onUpdate:modelValue":n[0]||=e=>o.maxMeteragePerInvoice=e,type:`number`,min:`1000`,class:`admin-input`},null,512),[[w,o.maxMeteragePerInvoice,void 0,{number:!0}]])]),u(`div`,Q,[n[21]||=u(`label`,{for:`validity-hours`},`اعتبار فاکتور نقدی (ساعت)`,-1),s(u(`input`,{id:`validity-hours`,"onUpdate:modelValue":n[1]||=e=>o.cashInvoiceValidityHours=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[w,o.cashInvoiceValidityHours,void 0,{number:!0}]])]),u(`div`,ne,[n[22]||=u(`label`,{for:`min-rolls`},`حداقل طاقه از هر محصول`,-1),s(u(`input`,{id:`min-rolls`,"onUpdate:modelValue":n[2]||=e=>o.minOrderRollsPerProduct=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[w,o.minOrderRollsPerProduct,void 0,{number:!0}]])]),u(`label`,re,[s(u(`input`,{"onUpdate:modelValue":n[3]||=e=>o.showCatalogPublicPrice=e,type:`checkbox`},null,512),[[T,o.showCatalogPublicPrice]]),n[23]||=_(` نمایش قیمت عمومی در کاتالوگ `,-1)]),u(`label`,ie,[s(u(`input`,{"onUpdate:modelValue":n[4]||=e=>o.allowAgentPricing=e,type:`checkbox`},null,512),[[T,o.allowAgentPricing]]),n[24]||=_(` اجازه قیمت‌گذاری توسط واسطه `,-1)]),u(`div`,ae,[n[25]||=u(`label`,{for:`agent-min-price`},`حداقل قیمت واحد واسطه (تومان)`,-1),s(u(`input`,{id:`agent-min-price`,"onUpdate:modelValue":n[5]||=e=>o.agentMinUnitPrice=e,type:`number`,min:`0`,class:`admin-input`,disabled:!o.allowAgentPricing},null,8,oe),[[w,o.agentMinUnitPrice,void 0,{number:!0}]])]),u(`div`,se,[u(`label`,ce,[s(u(`input`,{"onUpdate:modelValue":n[6]||=e=>o.defaultSettlementCheck=e,type:`checkbox`},null,512),[[T,o.defaultSettlementCheck]]),n[26]||=u(`span`,null,`فعال‌سازی تسویه چکی`,-1)]),u(`label`,le,[s(u(`input`,{"onUpdate:modelValue":n[7]||=e=>o.defaultSettlementCash=e,type:`checkbox`},null,512),[[T,o.defaultSettlementCash]]),n[27]||=u(`span`,null,`فعال‌سازی تسویه نقدی`,-1)])])]),u(`section`,ue,[n[34]||=u(`h2`,{class:`settings-page__title`},`پیامک و اعلان`,-1),u(`div`,de,[u(`label`,fe,[s(u(`input`,{"onUpdate:modelValue":n[8]||=e=>o.smsOrderRegistered=e,type:`checkbox`},null,512),[[T,o.smsOrderRegistered]]),n[29]||=u(`span`,null,`پیامک ثبت سفارش`,-1)]),u(`label`,pe,[s(u(`input`,{"onUpdate:modelValue":n[9]||=e=>o.smsPricingReady=e,type:`checkbox`},null,512),[[T,o.smsPricingReady]]),n[30]||=u(`span`,null,`پیامک صدور فاکتور و آماده‌بودن قیمت`,-1)]),u(`label`,me,[s(u(`input`,{"onUpdate:modelValue":n[10]||=e=>o.smsPaymentReminder=e,type:`checkbox`},null,512),[[T,o.smsPaymentReminder]]),n[31]||=u(`span`,null,`یادآوری پایان اعتبار فاکتور`,-1)]),u(`label`,he,[s(u(`input`,{"onUpdate:modelValue":n[11]||=e=>o.smsCheckReview=e,type:`checkbox`},null,512),[[T,o.smsCheckReview]]),n[32]||=u(`span`,null,`اعلان بررسی چک`,-1)]),u(`label`,ge,[s(u(`input`,{"onUpdate:modelValue":n[12]||=e=>o.smsShippingUpdate=e,type:`checkbox`},null,512),[[T,o.smsShippingUpdate]]),n[33]||=u(`span`,null,`اعلان وضعیت ارسال`,-1)])])]),u(`section`,_e,[n[38]||=u(`h2`,{class:`settings-page__title`},`اطلاعات تماس پشتیبانی`,-1),u(`div`,ve,[n[35]||=u(`label`,{for:`support-phone`},`تلفن پشتیبانی`,-1),s(u(`input`,{id:`support-phone`,"onUpdate:modelValue":n[13]||=e=>o.supportPhone=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[w,o.supportPhone]]),n[36]||=u(`p`,{class:`settings-page__hint`},` این شماره در صفحه ورود اپ و بخش پشتیبانی سایدبار دسکتاپ نمایش داده می‌شود. `,-1)]),u(`div`,ye,[n[37]||=u(`label`,{for:`support-email`},`ایمیل پشتیبانی`,-1),s(u(`input`,{id:`support-email`,"onUpdate:modelValue":n[14]||=e=>o.supportEmail=e,type:`email`,class:`admin-input`,dir:`ltr`},null,512),[[w,o.supportEmail]])])]),u(`section`,be,[n[44]||=u(`h2`,{class:`settings-page__title`},`اعلان هدفمند`,-1),u(`div`,$,[n[39]||=u(`label`,{for:`broadcast-title`},`عنوان`,-1),s(u(`input`,{id:`broadcast-title`,"onUpdate:modelValue":n[15]||=e=>l.title=e,type:`text`,class:`admin-input`},null,512),[[w,l.title]])]),u(`div`,xe,[n[40]||=u(`label`,{for:`broadcast-body`},`متن`,-1),s(u(`textarea`,{id:`broadcast-body`,"onUpdate:modelValue":n[16]||=e=>l.body=e,class:`admin-input`,rows:`4`},null,512),[[w,l.body]])]),u(`label`,Se,[s(u(`input`,{"onUpdate:modelValue":n[17]||=e=>b.value=e,type:`checkbox`},null,512),[[T,b.value]]),n[41]||=u(`span`,null,`ارسال به همه مشتریان فعال (نقش مشتری در اپ)`,-1)]),u(`div`,Ce,[n[42]||=u(`label`,{for:`broadcast-recipients`},`گیرندگان`,-1),p(G,{id:`broadcast-recipients`,modelValue:v.value,"onUpdate:modelValue":n[18]||=e=>v.value=e,options:E.value,disabled:b.value||!E.value.length,block:``,placeholder:`انتخاب مشتریان…`,"aria-label":`گیرندگان اعلان`},null,8,[`modelValue`,`options`,`disabled`]),n[43]||=u(`p`,{class:`settings-page__hint`},` با غیرفعال بودن «ارسال به همه»، یک یا چند مشتری فعال را انتخاب کنید. اعلان در بخش اعلان‌های اپ مشتری نمایش داده می‌شود. `,-1)]),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary settings-page__broadcast-submit`,disabled:f.value,onClick:k},t(f.value?`در حال ارسال…`:`ثبت و ارسال اعلان`),9,we)])]))]))}}),[[`__scopeId`,`data-v-e84a2579`]]);export{Te as default}; \ No newline at end of file diff --git a/dist/assets/SettingsView-B5r5xmYu.css b/dist/assets/SettingsView-DoWxmKG-.css similarity index 85% rename from dist/assets/SettingsView-B5r5xmYu.css rename to dist/assets/SettingsView-DoWxmKG-.css index b760c2b..5428d77 100644 --- a/dist/assets/SettingsView-B5r5xmYu.css +++ b/dist/assets/SettingsView-DoWxmKG-.css @@ -1 +1 @@ -.admin-multi-select[data-v-9a22912b]{min-width:200px;max-width:100%;position:relative}.admin-multi-select--block[data-v-9a22912b]{width:100%;min-width:0}.admin-multi-select__trigger[data-v-9a22912b]{width:100%;min-height:var(--control-height,40px);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);justify-content:space-between;align-items:center;gap:10px;padding:0 12px 0 10px;font-family:inherit;font-size:.875rem;font-weight:500;display:flex}.admin-multi-select--disabled .admin-multi-select__trigger[data-v-9a22912b]{opacity:.55;cursor:not-allowed}.admin-multi-select__trigger[data-v-9a22912b]:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-elevated,var(--color-surface))}.admin-multi-select--open .admin-multi-select__trigger[data-v-9a22912b],.admin-multi-select__trigger[data-v-9a22912b]:focus-visible:not(:disabled){border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-multi-select__value[data-v-9a22912b]{text-align:start;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.admin-multi-select__chevron[data-v-9a22912b]{color:var(--color-text-muted);transition:transform var(--transition-fast);flex-shrink:0;display:inline-flex}.admin-multi-select--open .admin-multi-select__chevron[data-v-9a22912b]{color:var(--color-primary);transform:rotate(180deg)}.admin-multi-select__chips[data-v-9a22912b]{flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.admin-multi-select__chip[data-v-9a22912b]{background:var(--color-primary-soft);max-width:100%;color:var(--color-primary);border-radius:999px;align-items:center;gap:4px;padding:4px 8px;font-size:.75rem;font-weight:600;display:inline-flex}.admin-multi-select__chip-label[data-v-9a22912b]{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.admin-multi-select__chip-remove[data-v-9a22912b]{color:inherit;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1rem;line-height:1}.admin-multi-select__menu[data-v-9a22912b]{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card,0 12px 28px #0f172a1f);box-sizing:border-box;flex-direction:column;gap:4px;margin:0;padding:8px;list-style:none;display:flex;overflow-y:auto}.admin-multi-select__search[data-v-9a22912b]{z-index:1;background:var(--color-surface);padding-bottom:4px;position:sticky;top:0}.admin-multi-select__search-input[data-v-9a22912b]{border:1px solid var(--color-border);background:var(--color-bg);width:100%;height:36px;color:var(--color-text);font:inherit;border-radius:10px;padding:0 12px;font-size:.8125rem}.admin-multi-select__search-input[data-v-9a22912b]:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-multi-select__empty[data-v-9a22912b]{color:var(--color-text-muted);text-align:center;padding:12px;font-size:.8125rem}.admin-multi-select__option[data-v-9a22912b]{width:100%;color:var(--color-text);text-align:start;cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:.875rem;font-weight:500;display:flex}.admin-multi-select__option[data-v-9a22912b]:hover{background:var(--color-bg);border-color:var(--color-border)}.admin-multi-select__option--active[data-v-9a22912b]{background:var(--color-primary-soft);color:var(--color-primary);border-color:#0000;font-weight:600}.admin-multi-select__check[data-v-9a22912b]{color:var(--color-primary);flex-shrink:0}.settings-page__grid[data-v-e84a2579]{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.settings-page__section[data-v-e84a2579]{padding:20px}.settings-page__title[data-v-e84a2579]{margin:0 0 16px;font-size:1rem;font-weight:700}.settings-page__checks[data-v-e84a2579]{flex-direction:column;gap:12px;display:flex}.settings-page__check[data-v-e84a2579]{cursor:pointer;align-items:center;gap:10px;font-size:.875rem;display:flex}.settings-page__check input[data-v-e84a2579]{width:16px;height:16px;accent-color:var(--color-primary)}.settings-page__check--block[data-v-e84a2579]{margin-bottom:12px}.settings-page__broadcast-submit[data-v-e84a2579]{margin-top:4px}.settings-page__hint[data-v-e84a2579]{color:var(--color-text-muted);margin:6px 0 0;font-size:.75rem;line-height:1.5}@media (width<=1279px){.settings-page__grid[data-v-e84a2579]{grid-template-columns:1fr}} +.admin-multi-select[data-v-9a22912b]{min-width:200px;max-width:100%;position:relative}.admin-multi-select--block[data-v-9a22912b]{width:100%;min-width:0}.admin-multi-select__trigger[data-v-9a22912b]{width:100%;min-height:var(--control-height,40px);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);justify-content:space-between;align-items:center;gap:10px;padding:0 12px 0 10px;font-family:inherit;font-size:.875rem;font-weight:500;display:flex}.admin-multi-select--disabled .admin-multi-select__trigger[data-v-9a22912b]{opacity:.55;cursor:not-allowed}.admin-multi-select__trigger[data-v-9a22912b]:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-elevated,var(--color-surface))}.admin-multi-select--open .admin-multi-select__trigger[data-v-9a22912b],.admin-multi-select__trigger[data-v-9a22912b]:focus-visible:not(:disabled){border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-multi-select__value[data-v-9a22912b]{text-align:start;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.admin-multi-select__chevron[data-v-9a22912b]{color:var(--color-text-muted);transition:transform var(--transition-fast);flex-shrink:0;display:inline-flex}.admin-multi-select--open .admin-multi-select__chevron[data-v-9a22912b]{color:var(--color-primary);transform:rotate(180deg)}.admin-multi-select__chips[data-v-9a22912b]{flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.admin-multi-select__chip[data-v-9a22912b]{background:var(--color-primary-soft);max-width:100%;color:var(--color-primary);border-radius:999px;align-items:center;gap:4px;padding:4px 8px;font-size:.75rem;font-weight:600;display:inline-flex}.admin-multi-select__chip-label[data-v-9a22912b]{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.admin-multi-select__chip-remove[data-v-9a22912b]{color:inherit;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1rem;line-height:1}.admin-multi-select__menu[data-v-9a22912b]{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card,0 12px 28px #0f172a1f);box-sizing:border-box;flex-direction:column;gap:4px;margin:0;padding:8px;list-style:none;display:flex;overflow-y:auto}.admin-multi-select__search[data-v-9a22912b]{z-index:1;background:var(--color-surface);padding-bottom:4px;position:sticky;top:0}.admin-multi-select__search-input[data-v-9a22912b]{border:1px solid var(--color-border);background:var(--color-bg);width:100%;height:36px;color:var(--color-text);font:inherit;border-radius:10px;padding:0 12px;font-size:.8125rem}.admin-multi-select__search-input[data-v-9a22912b]:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-multi-select__empty[data-v-9a22912b]{color:var(--color-text-muted);text-align:center;padding:12px;font-size:.8125rem}.admin-multi-select__option[data-v-9a22912b]{width:100%;color:var(--color-text);text-align:start;cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:.875rem;font-weight:500;display:flex}.admin-multi-select__option[data-v-9a22912b]:hover{background:var(--color-bg);border-color:var(--color-border)}.admin-multi-select__option--active[data-v-9a22912b]{background:var(--color-primary-soft);color:var(--color-primary);border-color:#0000;font-weight:600}.admin-multi-select__check[data-v-9a22912b]{color:var(--color-primary);flex-shrink:0}.settings-page__grid[data-v-230ea03a]{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.settings-page__section[data-v-230ea03a]{padding:20px}.settings-page__title[data-v-230ea03a]{margin:0 0 16px;font-size:1rem;font-weight:700}.settings-page__checks[data-v-230ea03a]{flex-direction:column;gap:12px;display:flex}.settings-page__check[data-v-230ea03a]{cursor:pointer;align-items:center;gap:10px;font-size:.875rem;display:flex}.settings-page__check input[data-v-230ea03a]{width:16px;height:16px;accent-color:var(--color-primary)}.settings-page__check--block[data-v-230ea03a]{margin-bottom:12px}.settings-page__broadcast-submit[data-v-230ea03a]{margin-top:4px}.settings-page__hint[data-v-230ea03a]{color:var(--color-text-muted);margin:6px 0 0;font-size:.75rem;line-height:1.5}@media (width<=1279px){.settings-page__grid[data-v-230ea03a]{grid-template-columns:1fr}} diff --git a/dist/assets/ShippingView-BkidKjch.js b/dist/assets/ShippingView-C-VtAZgk.js similarity index 94% rename from dist/assets/ShippingView-BkidKjch.js rename to dist/assets/ShippingView-C-VtAZgk.js index e2c82d7..a98890d 100644 --- a/dist/assets/ShippingView-BkidKjch.js +++ b/dist/assets/ShippingView-C-VtAZgk.js @@ -1 +1 @@ -import{$ as e,At as t,B as n,Dt as r,E as ee,H as i,M as a,U as o,Z as te,c as s,d as c,g as ne,h as l,k as u,l as re,m as d,r as f,s as p,st as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ie,f as _,m as ae,t as v}from"./http-BjLkjdQu.js";import{C as oe,H as se,O as y,R as ce,T as le,o as b,s as x,z as ue}from"./index-BzcByePp.js";import{t as de}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as S}from"./AdminSelect-8XDtPu3U.js";import{a as C,i as w}from"./adminLabels-Cz9ccm1Z.js";import{i as fe}from"./orderStatus-CeC05Cv4.js";var pe={class:`shipping-page`},me={class:`shipping-page__filters admin-card`},he={class:`shipping-page__search`},ge={class:`shipping-page__table admin-card desktop-only`},_e={class:`admin-table-wrap`},T={class:`admin-table`},E={dir:`ltr`},D=[`onClick`],O={key:1},k={class:`compact-only admin-card-list`},A={class:`admin-card-item__header`},j={class:`admin-card-item__title`},M={class:`admin-card-item__meta`},N={dir:`ltr`},P={key:0,class:`admin-card-item__actions`},F=[`onClick`],I={key:0,class:`admin-form__error`,role:`alert`},ve={class:`admin-form__field`},L={class:`admin-form__row`},ye={class:`admin-form__field`},be={class:`admin-form__field`},xe={class:`admin-form__row`},Se={class:`admin-form__field`},Ce={class:`admin-form__field`},we=[`disabled`],R=h(ne({__name:`ShippingView`,setup(ne){let h=ue(),R=e([]),z=e([]),B=e(typeof h.query.order==`string`?h.query.order:``),V=e(`all`),H=e(!0),U=e(!1),W=e(``),G=e(!1),K=ie(),Te=[{value:`all`,label:`همه وضعیت‌ها`},{value:`preparing`,label:`در حال آماده‌سازی`},{value:`ready`,label:`آماده ارسال`},{value:`shipped`,label:`ارسال شده`},{value:`delivered`,label:`تحویل شده`}],Ee=[{value:`preparing`,label:`در حال آماده‌سازی`},{value:`ready`,label:`آماده ارسال`},{value:`shipped`,label:`ارسال شده`},{value:`delivered`,label:`تحویل شده`}],q=()=>({orderId:``,carrier:``,trackingNumber:``,meterage:1e3,status:`preparing`}),J=te(q()),Y=p(()=>{let e=R.value;V.value!==`all`&&(e=e.filter(e=>e.status===V.value));let t=B.value.trim();return t&&(e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t)||e.trackingNumber.includes(t)||e.carrier.includes(t))),e}),X=p(()=>J.orderId.trim()&&J.carrier.trim()),De=p(()=>{let e=new Set(R.value.map(e=>e.orderId));return z.value.filter(t=>!e.has(t.id)&&fe(t))}),Oe=p(()=>De.value.map(e=>({value:e.id,label:`${e.orderNumber} — ${e.customerName}`})));async function ke(){H.value=!0;try{let[e,t]=await Promise.all([y.list(),le.list()]);R.value=e,z.value=t.map(e=>oe(e))}catch(e){K.error(e instanceof v?e.message:`بارگذاری ارسال‌ها انجام نشد.`)}finally{H.value=!1}}ee(()=>{ke()}),n(()=>h.query.order,e=>{typeof e==`string`&&e.trim()&&(B.value=e.trim())});function Ae(){let e=z.value.find(e=>e.id===J.orderId);e&&(J.meterage=e.meterage)}function je(){Object.assign(J,q()),W.value=``,U.value=!0}function Z(){U.value=!1,W.value=``}async function Q(){if(!X.value){W.value=`سفارش و باربری الزامی هستند.`;return}G.value=!0;try{let e=await y.create({orderId:J.orderId,carrier:J.carrier.trim(),trackingNumber:J.trackingNumber.trim()||void 0,meterage:J.meterage,status:J.status});R.value.unshift(e),K.success(`بارنامه ثبت شد.`),Z()}catch(e){K.error(e instanceof v?e.message:`ثبت بارنامه انجام نشد.`)}finally{G.value=!1}}async function $(e){try{let t=await y.advanceStatus(e.id),n=R.value.findIndex(t=>t.id===e.id);n!==-1&&(R.value[n]=t),K.success(`وضعیت ارسال به‌روزرسانی شد.`)}catch(e){K.error(e instanceof v?e.message:`به‌روزرسانی وضعیت انجام نشد.`)}}return(e,n)=>(u(),c(`div`,pe,[s(`div`,{class:`admin-page-header`},[n[7]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`ارسال و باربری`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:je},` ثبت بارنامه `)]),s(`div`,me,[s(`div`,he,[l(ce,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":n[0]||=e=>B.value=e,type:`search`,class:`shipping-page__search-input`,placeholder:`جستجو در سفارش، مشتری، باربری...`},null,512),[[_,B.value]])]),l(S,{modelValue:V.value,"onUpdate:modelValue":n[1]||=e=>V.value=e,class:`shipping-page__status-select`,"aria-label":`فیلتر وضعیت ارسال`,options:Te},null,8,[`modelValue`])]),H.value?(u(),re(de,{key:0,variant:`table`})):(u(),c(f,{key:1},[s(`div`,ge,[s(`div`,_e,[s(`table`,T,[n[8]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`شماره سفارش`),s(`th`,null,`مشتری`),s(`th`,null,`باربری`),s(`th`,null,`شماره بارنامه`),s(`th`,null,`متراژ`),s(`th`,null,`وضعیت`),s(`th`,null,`تاریخ ارسال`),s(`th`,null,`تاریخ تحویل`),s(`th`,null,`عملیات`)])],-1),s(`tbody`,null,[(u(!0),c(f,null,a(Y.value,e=>(u(),c(`tr`,{key:e.id},[s(`td`,null,t(e.orderNumber),1),s(`td`,null,t(e.customerName),1),s(`td`,null,t(e.carrier),1),s(`td`,E,t(e.trackingNumber),1),s(`td`,null,t(m(x)(e.meterage)),1),s(`td`,null,[s(`span`,{class:r([`admin-badge`,m(w)[e.status]])},t(m(C)[e.status]),3)]),s(`td`,null,t(e.shippedAt?m(b)(e.shippedAt):`—`),1),s(`td`,null,t(e.deliveredAt?m(b)(e.deliveredAt):`—`),1),s(`td`,null,[e.status===`delivered`?(u(),c(`span`,O,`—`)):(u(),c(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>$(e)},` مرحله بعد `,8,D))])]))),128))])])])]),s(`div`,k,[(u(!0),c(f,null,a(Y.value,e=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,A,[s(`p`,j,t(e.orderNumber),1),s(`span`,{class:r([`admin-badge`,m(w)[e.status]])},t(m(C)[e.status]),3)]),s(`div`,M,[s(`span`,null,t(e.customerName),1),s(`span`,null,t(e.carrier),1),s(`span`,null,t(m(x)(e.meterage)),1),s(`span`,N,t(e.trackingNumber),1)]),e.status===`delivered`?g(``,!0):(u(),c(`div`,P,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>$(e)},` مرحله بعد `,8,F)]))]))),128))])],64)),l(se,{open:U.value,title:`ثبت بارنامه`,size:`lg`,onClose:Z},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.value||G.value,onClick:Q},` ثبت بارنامه `,8,we)]),default:i(()=>[s(`form`,{class:`admin-form`,onSubmit:ae(Q,[`prevent`])},[W.value?(u(),c(`p`,I,t(W.value),1)):g(``,!0),s(`div`,ve,[n[9]||=s(`label`,{id:`ship-order-label`},[d(`سفارش `),s(`span`,{class:`admin-form__required`},`*`)],-1),l(S,{modelValue:J.orderId,"onUpdate:modelValue":[n[2]||=e=>J.orderId=e,Ae],block:``,"aria-label":`انتخاب سفارش`,placeholder:`انتخاب سفارش`,options:Oe.value},null,8,[`modelValue`,`options`])]),s(`div`,L,[s(`div`,ye,[n[10]||=s(`label`,{for:`ship-carrier`},[d(`باربری `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`ship-carrier`,"onUpdate:modelValue":n[3]||=e=>J.carrier=e,type:`text`,class:`admin-input`},null,512),[[_,J.carrier]])]),s(`div`,be,[n[11]||=s(`label`,{for:`ship-tracking`},`شماره بارنامه`,-1),o(s(`input`,{id:`ship-tracking`,"onUpdate:modelValue":n[4]||=e=>J.trackingNumber=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[_,J.trackingNumber]])])]),s(`div`,xe,[s(`div`,Se,[n[12]||=s(`label`,{for:`ship-meterage`},`متراژ`,-1),o(s(`input`,{id:`ship-meterage`,"onUpdate:modelValue":n[5]||=e=>J.meterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,J.meterage,void 0,{number:!0}]])]),s(`div`,Ce,[n[13]||=s(`label`,{id:`ship-status-label`},`وضعیت`,-1),l(S,{modelValue:J.status,"onUpdate:modelValue":n[6]||=e=>J.status=e,block:``,"aria-label":`وضعیت ارسال`,options:Ee},null,8,[`modelValue`])])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-ded219cd`]]);export{R as default}; \ No newline at end of file +import{$ as e,At as t,B as n,Dt as r,E as ee,H as i,M as a,U as o,Z as te,c as s,d as c,g as ne,h as l,k as u,l as re,m as d,r as f,s as p,st as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ie,f as _,m as ae,t as v}from"./http-BjLkjdQu.js";import{B as oe,D as y,I as se,L as ce,S as le,o as b,s as x,w as ue}from"./index-SWzbcuqQ.js";import{t as de}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as S}from"./AdminSelect-6a7SFr9x.js";import{a as C,i as w}from"./adminLabels-Cz9ccm1Z.js";import{i as fe}from"./orderStatus-CeC05Cv4.js";var pe={class:`shipping-page`},me={class:`shipping-page__filters admin-card`},he={class:`shipping-page__search`},ge={class:`shipping-page__table admin-card desktop-only`},_e={class:`admin-table-wrap`},T={class:`admin-table`},E={dir:`ltr`},D=[`onClick`],O={key:1},k={class:`compact-only admin-card-list`},A={class:`admin-card-item__header`},j={class:`admin-card-item__title`},M={class:`admin-card-item__meta`},N={dir:`ltr`},P={key:0,class:`admin-card-item__actions`},F=[`onClick`],I={key:0,class:`admin-form__error`,role:`alert`},ve={class:`admin-form__field`},L={class:`admin-form__row`},ye={class:`admin-form__field`},be={class:`admin-form__field`},xe={class:`admin-form__row`},Se={class:`admin-form__field`},Ce={class:`admin-form__field`},we=[`disabled`],R=h(ne({__name:`ShippingView`,setup(ne){let h=ce(),R=e([]),z=e([]),B=e(typeof h.query.order==`string`?h.query.order:``),V=e(`all`),H=e(!0),U=e(!1),W=e(``),G=e(!1),K=ie(),Te=[{value:`all`,label:`همه وضعیت‌ها`},{value:`preparing`,label:`در حال آماده‌سازی`},{value:`ready`,label:`آماده ارسال`},{value:`shipped`,label:`ارسال شده`},{value:`delivered`,label:`تحویل شده`}],Ee=[{value:`preparing`,label:`در حال آماده‌سازی`},{value:`ready`,label:`آماده ارسال`},{value:`shipped`,label:`ارسال شده`},{value:`delivered`,label:`تحویل شده`}],q=()=>({orderId:``,carrier:``,trackingNumber:``,meterage:1e3,status:`preparing`}),J=te(q()),Y=p(()=>{let e=R.value;V.value!==`all`&&(e=e.filter(e=>e.status===V.value));let t=B.value.trim();return t&&(e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t)||e.trackingNumber.includes(t)||e.carrier.includes(t))),e}),X=p(()=>J.orderId.trim()&&J.carrier.trim()),De=p(()=>{let e=new Set(R.value.map(e=>e.orderId));return z.value.filter(t=>!e.has(t.id)&&fe(t))}),Oe=p(()=>De.value.map(e=>({value:e.id,label:`${e.orderNumber} — ${e.customerName}`})));async function ke(){H.value=!0;try{let[e,t]=await Promise.all([y.list(),ue.list()]);R.value=e,z.value=t.map(e=>le(e))}catch(e){K.error(e instanceof v?e.message:`بارگذاری ارسال‌ها انجام نشد.`)}finally{H.value=!1}}ee(()=>{ke()}),n(()=>h.query.order,e=>{typeof e==`string`&&e.trim()&&(B.value=e.trim())});function Ae(){let e=z.value.find(e=>e.id===J.orderId);e&&(J.meterage=e.meterage)}function je(){Object.assign(J,q()),W.value=``,U.value=!0}function Z(){U.value=!1,W.value=``}async function Q(){if(!X.value){W.value=`سفارش و باربری الزامی هستند.`;return}G.value=!0;try{let e=await y.create({orderId:J.orderId,carrier:J.carrier.trim(),trackingNumber:J.trackingNumber.trim()||void 0,meterage:J.meterage,status:J.status});R.value.unshift(e),K.success(`بارنامه ثبت شد.`),Z()}catch(e){K.error(e instanceof v?e.message:`ثبت بارنامه انجام نشد.`)}finally{G.value=!1}}async function $(e){try{let t=await y.advanceStatus(e.id),n=R.value.findIndex(t=>t.id===e.id);n!==-1&&(R.value[n]=t),K.success(`وضعیت ارسال به‌روزرسانی شد.`)}catch(e){K.error(e instanceof v?e.message:`به‌روزرسانی وضعیت انجام نشد.`)}}return(e,n)=>(u(),c(`div`,pe,[s(`div`,{class:`admin-page-header`},[n[7]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`ارسال و باربری`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:je},` ثبت بارنامه `)]),s(`div`,me,[s(`div`,he,[l(se,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":n[0]||=e=>B.value=e,type:`search`,class:`shipping-page__search-input`,placeholder:`جستجو در سفارش، مشتری، باربری...`},null,512),[[_,B.value]])]),l(S,{modelValue:V.value,"onUpdate:modelValue":n[1]||=e=>V.value=e,class:`shipping-page__status-select`,"aria-label":`فیلتر وضعیت ارسال`,options:Te},null,8,[`modelValue`])]),H.value?(u(),re(de,{key:0,variant:`table`})):(u(),c(f,{key:1},[s(`div`,ge,[s(`div`,_e,[s(`table`,T,[n[8]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`شماره سفارش`),s(`th`,null,`مشتری`),s(`th`,null,`باربری`),s(`th`,null,`شماره بارنامه`),s(`th`,null,`متراژ`),s(`th`,null,`وضعیت`),s(`th`,null,`تاریخ ارسال`),s(`th`,null,`تاریخ تحویل`),s(`th`,null,`عملیات`)])],-1),s(`tbody`,null,[(u(!0),c(f,null,a(Y.value,e=>(u(),c(`tr`,{key:e.id},[s(`td`,null,t(e.orderNumber),1),s(`td`,null,t(e.customerName),1),s(`td`,null,t(e.carrier),1),s(`td`,E,t(e.trackingNumber),1),s(`td`,null,t(m(x)(e.meterage)),1),s(`td`,null,[s(`span`,{class:r([`admin-badge`,m(w)[e.status]])},t(m(C)[e.status]),3)]),s(`td`,null,t(e.shippedAt?m(b)(e.shippedAt):`—`),1),s(`td`,null,t(e.deliveredAt?m(b)(e.deliveredAt):`—`),1),s(`td`,null,[e.status===`delivered`?(u(),c(`span`,O,`—`)):(u(),c(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>$(e)},` مرحله بعد `,8,D))])]))),128))])])])]),s(`div`,k,[(u(!0),c(f,null,a(Y.value,e=>(u(),c(`article`,{key:e.id,class:`admin-card-item`},[s(`div`,A,[s(`p`,j,t(e.orderNumber),1),s(`span`,{class:r([`admin-badge`,m(w)[e.status]])},t(m(C)[e.status]),3)]),s(`div`,M,[s(`span`,null,t(e.customerName),1),s(`span`,null,t(e.carrier),1),s(`span`,null,t(m(x)(e.meterage)),1),s(`span`,N,t(e.trackingNumber),1)]),e.status===`delivered`?g(``,!0):(u(),c(`div`,P,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:t=>$(e)},` مرحله بعد `,8,F)]))]))),128))])],64)),l(oe,{open:U.value,title:`ثبت بارنامه`,size:`lg`,onClose:Z},{footer:i(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.value||G.value,onClick:Q},` ثبت بارنامه `,8,we)]),default:i(()=>[s(`form`,{class:`admin-form`,onSubmit:ae(Q,[`prevent`])},[W.value?(u(),c(`p`,I,t(W.value),1)):g(``,!0),s(`div`,ve,[n[9]||=s(`label`,{id:`ship-order-label`},[d(`سفارش `),s(`span`,{class:`admin-form__required`},`*`)],-1),l(S,{modelValue:J.orderId,"onUpdate:modelValue":[n[2]||=e=>J.orderId=e,Ae],block:``,"aria-label":`انتخاب سفارش`,placeholder:`انتخاب سفارش`,options:Oe.value},null,8,[`modelValue`,`options`])]),s(`div`,L,[s(`div`,ye,[n[10]||=s(`label`,{for:`ship-carrier`},[d(`باربری `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`ship-carrier`,"onUpdate:modelValue":n[3]||=e=>J.carrier=e,type:`text`,class:`admin-input`},null,512),[[_,J.carrier]])]),s(`div`,be,[n[11]||=s(`label`,{for:`ship-tracking`},`شماره بارنامه`,-1),o(s(`input`,{id:`ship-tracking`,"onUpdate:modelValue":n[4]||=e=>J.trackingNumber=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[_,J.trackingNumber]])])]),s(`div`,xe,[s(`div`,Se,[n[12]||=s(`label`,{for:`ship-meterage`},`متراژ`,-1),o(s(`input`,{id:`ship-meterage`,"onUpdate:modelValue":n[5]||=e=>J.meterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,J.meterage,void 0,{number:!0}]])]),s(`div`,Ce,[n[13]||=s(`label`,{id:`ship-status-label`},`وضعیت`,-1),l(S,{modelValue:J.status,"onUpdate:modelValue":n[6]||=e=>J.status=e,block:``,"aria-label":`وضعیت ارسال`,options:Ee},null,8,[`modelValue`])])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-ded219cd`]]);export{R as default}; \ No newline at end of file diff --git a/dist/assets/SmsTariffView-BQ0goHy2.js b/dist/assets/SmsTariffView-CoRp2-Fp.js similarity index 85% rename from dist/assets/SmsTariffView-BQ0goHy2.js rename to dist/assets/SmsTariffView-CoRp2-Fp.js index 3595476..2f654b8 100644 --- a/dist/assets/SmsTariffView-BQ0goHy2.js +++ b/dist/assets/SmsTariffView-CoRp2-Fp.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,U as r,c as i,d as a,g as o,h as s,k as c,l,m as u,r as d,st as f,t as p,u as ee}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as te,f as m}from"./http-BjLkjdQu.js";import{A as h,c as g,l as _,n as ne,t as re}from"./index-BzcByePp.js";import{t as ie}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as ae}from"./BaseSwitch-pJwnFBVo.js";import{t as v}from"./AdminCurrencyInput-S1e1av3F.js";var oe={class:`sms-page`},se={class:`sms-stats`},ce={class:`sms-stat sms-stat--balance`},le={class:`sms-stat sms-stat--today`},ue={class:`sms-stat sms-stat--price`},de={class:`sms-stat sms-stat--wallet`},fe={class:`admin-card sms-manage`},pe={class:`sms-manage__row`},me={class:`sms-manage__tariff`},y={class:`sms-manage__price`},b=[`disabled`],x={class:`sms-manage__charge`},S=[`disabled`],C={class:`sms-block`},w={class:`sms-block__switch`},T={class:`admin-card sms-deposit`},E={class:`admin-form__field`},D={class:`admin-form__field`},O={class:`admin-form__field`},k=[`disabled`],A={class:`admin-card sms-thresholds`},j={class:`sms-thresholds__row`},M={class:`admin-form__field`},N={class:`admin-form__field`},P=[`disabled`],F=p(o({__name:`SmsTariffView`,setup(o){let p=te(),{refresh:F}=_(),I=e(!0),L=e(!1),R=e(!1),z=e(!1),B=e(!1),V=e(!1),H=e(null),U=e(250),W=e(null),G=e(``),K=e(``),q=e(``),J=e(``),Y=e(1e4),X=e(1e3);function Z(e){H.value=e,U.value=e.pricePerPart,K.value=re(e.cardNumber),q.value=ne(e.sheba),J.value=e.accountName,Y.value=e.yellowThreshold,X.value=e.redThreshold}n(async()=>{try{Z(await h.manage()),await F().catch(()=>{})}catch(e){p.error(e instanceof Error?e.message:`دریافت تعرفه پیامک ناموفق بود.`)}finally{I.value=!1}});async function he(){if(!(!U.value||U.value<1||L.value)){L.value=!0;try{Z(await h.update({pricePerPart:U.value})),p.success(`تعرفه پیامک ذخیره شد.`)}catch(e){p.error(e instanceof Error?e.message:`ذخیره تعرفه ناموفق بود.`)}finally{L.value=!1}}}async function ge(){if(!(!W.value||W.value<1||R.value)){R.value=!0;try{Z(await h.charge({amountToman:W.value,note:G.value.trim()||void 0})),W.value=null,G.value=``,await F(),p.success(`کیف پول پیامک شارژ شد.`)}catch(e){p.error(e instanceof Error?e.message:`شارژ کیف پول ناموفق بود.`)}finally{R.value=!1}}}async function _e(e){if(!H.value||V.value)return;let t=H.value.blocked;H.value.blocked=e,V.value=!0;try{Z(await h.update({blocked:e})),await F(),p.success(e?`ارسال پیامک مسدود شد.`:`ارسال پیامک فعال شد.`)}catch(e){H.value.blocked=t,p.error(e instanceof Error?e.message:`تغییر وضعیت مسدودسازی ناموفق بود.`)}finally{V.value=!1}}async function Q(){if(!z.value){z.value=!0;try{Z(await h.update({cardNumber:K.value,sheba:q.value,accountName:J.value})),await F(),p.success(`اطلاعات واریز ذخیره شد.`)}catch(e){p.error(e instanceof Error?e.message:`ذخیره اطلاعات واریز ناموفق بود.`)}finally{z.value=!1}}}async function ve(){if(!(Y.value==null||X.value==null||B.value)){B.value=!0;try{Z(await h.update({yellowThreshold:Y.value,redThreshold:X.value})),await F(),p.success(`آستانه‌ها ذخیره شد.`)}catch(e){p.error(e instanceof Error?e.message:`ذخیره آستانه‌ها ناموفق بود.`)}finally{B.value=!1}}}function $(e){return e??{messages:0,parts:0,costToman:0}}return(e,n)=>(c(),a(`div`,oe,[n[30]||=i(`div`,{class:`admin-page-header`},[i(`h1`,{class:`admin-page-header__title`},`تعرفه پیامک‌ها`)],-1),I.value?(c(),l(ie,{key:0,variant:`form`,rows:8})):H.value?(c(),a(d,{key:1},[i(`section`,se,[i(`article`,ce,[n[11]||=i(`h2`,null,`مانده جاری`,-1),i(`p`,null,[i(`span`,null,t(f(g)($(H.value.total).messages)),1),n[8]||=u(` پیامک`,-1)]),i(`p`,null,[i(`span`,null,t(f(g)($(H.value.total).parts)),1),n[9]||=u(` پارت`,-1)]),i(`p`,null,[i(`span`,null,t(f(g)($(H.value.total).costToman)),1),n[10]||=u(` تومان`,-1)])]),i(`article`,le,[n[15]||=i(`h2`,null,`امروز`,-1),i(`p`,null,[i(`span`,null,t(f(g)($(H.value.today).messages)),1),n[12]||=u(` پیامک`,-1)]),i(`p`,null,[i(`span`,null,t(f(g)($(H.value.today).parts)),1),n[13]||=u(` پارت`,-1)]),i(`p`,null,[i(`span`,null,t(f(g)($(H.value.today).costToman)),1),n[14]||=u(` تومان`,-1)])]),i(`article`,ue,[n[16]||=i(`h2`,null,`قیمت هر پارت`,-1),i(`strong`,null,t(f(g)(H.value.pricePerPart))+` تومان`,1)]),i(`article`,de,[n[17]||=i(`h2`,null,`موجودی کیف پول`,-1),i(`strong`,null,t(f(g)(H.value.balanceToman))+` تومان`,1)])]),i(`section`,fe,[n[20]||=i(`h2`,null,`مدیریت کیف پول`,-1),i(`div`,pe,[i(`div`,me,[n[18]||=i(`span`,null,`تعرفه پیامک`,-1),i(`strong`,null,t(f(g)(H.value.pricePerPart)),1)]),i(`div`,y,[s(v,{modelValue:U.value,"onUpdate:modelValue":n[0]||=e=>U.value=e,"allow-empty":!1},null,8,[`modelValue`]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:L.value||!U.value,onClick:he},t(L.value?`در حال ذخیره…`:`ذخیره قیمت`),9,b)]),i(`div`,x,[s(v,{modelValue:W.value,"onUpdate:modelValue":n[1]||=e=>W.value=e,placeholder:`مبلغ (تومان)`},null,8,[`modelValue`]),r(i(`input`,{"onUpdate:modelValue":n[2]||=e=>G.value=e,class:`admin-input`,type:`text`,placeholder:`توضیح (اختیاری)`},null,512),[[m,G.value]]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:R.value||!W.value,onClick:ge},t(R.value?`در حال شارژ…`:`شارژ کیف پول`),9,S)])]),n[21]||=i(`p`,{class:`sms-manage__hint`},`هر پیامک ۶۷ کاراکتر است. پیام ۱۴۰ کاراکتری ۳ پارت محاسبه می‌شود.`,-1),i(`div`,C,[n[19]||=i(`div`,null,[i(`strong`,null,`مسدودسازی ارسال پیامک`),i(`p`,null,`در حالت مسدود، ارسال پیامک متوقف می‌شود.`)],-1),i(`div`,w,[i(`span`,null,t(H.value.blocked?`فعال`:`خاموش`),1),s(ae,{"model-value":H.value.blocked,loading:V.value,"active-text":`فعال`,"inactive-text":`خاموش`,"onUpdate:modelValue":_e},null,8,[`model-value`,`loading`])])])]),i(`section`,T,[n[25]||=i(`h2`,null,`اطلاعات واریز شارژ`,-1),n[26]||=i(`p`,{class:`sms-deposit__hint`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی ارسال فرمایید. `,-1),i(`label`,E,[n[22]||=i(`span`,null,`شماره کارت`,-1),r(i(`input`,{"onUpdate:modelValue":n[3]||=e=>K.value=e,class:`admin-input`,dir:`ltr`,inputmode:`numeric`},null,512),[[m,K.value]])]),i(`label`,D,[n[23]||=i(`span`,null,`شماره شبا`,-1),r(i(`input`,{"onUpdate:modelValue":n[4]||=e=>q.value=e,class:`admin-input`,dir:`ltr`},null,512),[[m,q.value]])]),i(`label`,O,[n[24]||=i(`span`,null,`به نام`,-1),r(i(`input`,{"onUpdate:modelValue":n[5]||=e=>J.value=e,class:`admin-input`},null,512),[[m,J.value]])]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success sms-deposit__save`,disabled:z.value,onClick:Q},t(z.value?`در حال ذخیره…`:`ذخیره اطلاعات واریز`),9,k)]),i(`section`,A,[n[29]||=i(`h2`,null,`آستانه‌های رنگ موجودی`,-1),i(`div`,j,[i(`label`,M,[n[27]||=i(`span`,null,`آستانه زرد`,-1),s(v,{modelValue:Y.value,"onUpdate:modelValue":n[6]||=e=>Y.value=e,"allow-empty":!1},null,8,[`modelValue`])]),i(`label`,N,[n[28]||=i(`span`,null,`آستانه قرمز`,-1),s(v,{modelValue:X.value,"onUpdate:modelValue":n[7]||=e=>X.value=e,"allow-empty":!1},null,8,[`modelValue`])]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:B.value,onClick:ve},t(B.value?`در حال ذخیره…`:`ذخیره آستانه‌ها`),9,P)])])],64)):ee(``,!0)]))}}),[[`__scopeId`,`data-v-e4cab5f3`]]);export{F as default}; \ No newline at end of file +import{$ as e,At as t,E as n,U as r,c as i,d as a,g as o,h as s,k as c,l,m as u,r as d,st as f,t as p,u as ee}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as te,f as m}from"./http-BjLkjdQu.js";import{c as h,k as g,l as _,n as ne,t as re}from"./index-SWzbcuqQ.js";import{t as ie}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as ae}from"./BaseSwitch-pJwnFBVo.js";import{t as v}from"./AdminCurrencyInput-BGwf-fv_.js";var oe={class:`sms-page`},se={class:`sms-stats`},ce={class:`sms-stat sms-stat--balance`},le={class:`sms-stat sms-stat--today`},ue={class:`sms-stat sms-stat--price`},de={class:`sms-stat sms-stat--wallet`},fe={class:`admin-card sms-manage`},pe={class:`sms-manage__row`},me={class:`sms-manage__tariff`},y={class:`sms-manage__price`},b=[`disabled`],x={class:`sms-manage__charge`},S=[`disabled`],C={class:`sms-block`},w={class:`sms-block__switch`},T={class:`admin-card sms-deposit`},E={class:`admin-form__field`},D={class:`admin-form__field`},O={class:`admin-form__field`},k=[`disabled`],A={class:`admin-card sms-thresholds`},j={class:`sms-thresholds__row`},M={class:`admin-form__field`},N={class:`admin-form__field`},P=[`disabled`],F=p(o({__name:`SmsTariffView`,setup(o){let p=te(),{refresh:F}=_(),I=e(!0),L=e(!1),R=e(!1),z=e(!1),B=e(!1),V=e(!1),H=e(null),U=e(250),W=e(null),G=e(``),K=e(``),q=e(``),J=e(``),Y=e(1e4),X=e(1e3);function Z(e){H.value=e,U.value=e.pricePerPart,K.value=re(e.cardNumber),q.value=ne(e.sheba),J.value=e.accountName,Y.value=e.yellowThreshold,X.value=e.redThreshold}n(async()=>{try{Z(await g.manage()),await F().catch(()=>{})}catch(e){p.error(e instanceof Error?e.message:`دریافت تعرفه پیامک ناموفق بود.`)}finally{I.value=!1}});async function he(){if(!(!U.value||U.value<1||L.value)){L.value=!0;try{Z(await g.update({pricePerPart:U.value})),p.success(`تعرفه پیامک ذخیره شد.`)}catch(e){p.error(e instanceof Error?e.message:`ذخیره تعرفه ناموفق بود.`)}finally{L.value=!1}}}async function ge(){if(!(!W.value||W.value<1||R.value)){R.value=!0;try{Z(await g.charge({amountToman:W.value,note:G.value.trim()||void 0})),W.value=null,G.value=``,await F(),p.success(`کیف پول پیامک شارژ شد.`)}catch(e){p.error(e instanceof Error?e.message:`شارژ کیف پول ناموفق بود.`)}finally{R.value=!1}}}async function _e(e){if(!H.value||V.value)return;let t=H.value.blocked;H.value.blocked=e,V.value=!0;try{Z(await g.update({blocked:e})),await F(),p.success(e?`ارسال پیامک مسدود شد.`:`ارسال پیامک فعال شد.`)}catch(e){H.value.blocked=t,p.error(e instanceof Error?e.message:`تغییر وضعیت مسدودسازی ناموفق بود.`)}finally{V.value=!1}}async function Q(){if(!z.value){z.value=!0;try{Z(await g.update({cardNumber:K.value,sheba:q.value,accountName:J.value})),await F(),p.success(`اطلاعات واریز ذخیره شد.`)}catch(e){p.error(e instanceof Error?e.message:`ذخیره اطلاعات واریز ناموفق بود.`)}finally{z.value=!1}}}async function ve(){if(!(Y.value==null||X.value==null||B.value)){B.value=!0;try{Z(await g.update({yellowThreshold:Y.value,redThreshold:X.value})),await F(),p.success(`آستانه‌ها ذخیره شد.`)}catch(e){p.error(e instanceof Error?e.message:`ذخیره آستانه‌ها ناموفق بود.`)}finally{B.value=!1}}}function $(e){return e??{messages:0,parts:0,costToman:0}}return(e,n)=>(c(),a(`div`,oe,[n[30]||=i(`div`,{class:`admin-page-header`},[i(`h1`,{class:`admin-page-header__title`},`تعرفه پیامک‌ها`)],-1),I.value?(c(),l(ie,{key:0,variant:`form`,rows:8})):H.value?(c(),a(d,{key:1},[i(`section`,se,[i(`article`,ce,[n[11]||=i(`h2`,null,`مانده جاری`,-1),i(`p`,null,[i(`span`,null,t(f(h)($(H.value.total).messages)),1),n[8]||=u(` پیامک`,-1)]),i(`p`,null,[i(`span`,null,t(f(h)($(H.value.total).parts)),1),n[9]||=u(` پارت`,-1)]),i(`p`,null,[i(`span`,null,t(f(h)($(H.value.total).costToman)),1),n[10]||=u(` تومان`,-1)])]),i(`article`,le,[n[15]||=i(`h2`,null,`امروز`,-1),i(`p`,null,[i(`span`,null,t(f(h)($(H.value.today).messages)),1),n[12]||=u(` پیامک`,-1)]),i(`p`,null,[i(`span`,null,t(f(h)($(H.value.today).parts)),1),n[13]||=u(` پارت`,-1)]),i(`p`,null,[i(`span`,null,t(f(h)($(H.value.today).costToman)),1),n[14]||=u(` تومان`,-1)])]),i(`article`,ue,[n[16]||=i(`h2`,null,`قیمت هر پارت`,-1),i(`strong`,null,t(f(h)(H.value.pricePerPart))+` تومان`,1)]),i(`article`,de,[n[17]||=i(`h2`,null,`موجودی کیف پول`,-1),i(`strong`,null,t(f(h)(H.value.balanceToman))+` تومان`,1)])]),i(`section`,fe,[n[20]||=i(`h2`,null,`مدیریت کیف پول`,-1),i(`div`,pe,[i(`div`,me,[n[18]||=i(`span`,null,`تعرفه پیامک`,-1),i(`strong`,null,t(f(h)(H.value.pricePerPart)),1)]),i(`div`,y,[s(v,{modelValue:U.value,"onUpdate:modelValue":n[0]||=e=>U.value=e,"allow-empty":!1},null,8,[`modelValue`]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:L.value||!U.value,onClick:he},t(L.value?`در حال ذخیره…`:`ذخیره قیمت`),9,b)]),i(`div`,x,[s(v,{modelValue:W.value,"onUpdate:modelValue":n[1]||=e=>W.value=e,placeholder:`مبلغ (تومان)`},null,8,[`modelValue`]),r(i(`input`,{"onUpdate:modelValue":n[2]||=e=>G.value=e,class:`admin-input`,type:`text`,placeholder:`توضیح (اختیاری)`},null,512),[[m,G.value]]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:R.value||!W.value,onClick:ge},t(R.value?`در حال شارژ…`:`شارژ کیف پول`),9,S)])]),n[21]||=i(`p`,{class:`sms-manage__hint`},`هر پیامک ۶۷ کاراکتر است. پیام ۱۴۰ کاراکتری ۳ پارت محاسبه می‌شود.`,-1),i(`div`,C,[n[19]||=i(`div`,null,[i(`strong`,null,`مسدودسازی ارسال پیامک`),i(`p`,null,`در حالت مسدود، ارسال پیامک متوقف می‌شود.`)],-1),i(`div`,w,[i(`span`,null,t(H.value.blocked?`فعال`:`خاموش`),1),s(ae,{"model-value":H.value.blocked,loading:V.value,"active-text":`فعال`,"inactive-text":`خاموش`,"onUpdate:modelValue":_e},null,8,[`model-value`,`loading`])])])]),i(`section`,T,[n[25]||=i(`h2`,null,`اطلاعات واریز شارژ`,-1),n[26]||=i(`p`,{class:`sms-deposit__hint`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی ارسال فرمایید. `,-1),i(`label`,E,[n[22]||=i(`span`,null,`شماره کارت`,-1),r(i(`input`,{"onUpdate:modelValue":n[3]||=e=>K.value=e,class:`admin-input`,dir:`ltr`,inputmode:`numeric`},null,512),[[m,K.value]])]),i(`label`,D,[n[23]||=i(`span`,null,`شماره شبا`,-1),r(i(`input`,{"onUpdate:modelValue":n[4]||=e=>q.value=e,class:`admin-input`,dir:`ltr`},null,512),[[m,q.value]])]),i(`label`,O,[n[24]||=i(`span`,null,`به نام`,-1),r(i(`input`,{"onUpdate:modelValue":n[5]||=e=>J.value=e,class:`admin-input`},null,512),[[m,J.value]])]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success sms-deposit__save`,disabled:z.value,onClick:Q},t(z.value?`در حال ذخیره…`:`ذخیره اطلاعات واریز`),9,k)]),i(`section`,A,[n[29]||=i(`h2`,null,`آستانه‌های رنگ موجودی`,-1),i(`div`,j,[i(`label`,M,[n[27]||=i(`span`,null,`آستانه زرد`,-1),s(v,{modelValue:Y.value,"onUpdate:modelValue":n[6]||=e=>Y.value=e,"allow-empty":!1},null,8,[`modelValue`])]),i(`label`,N,[n[28]||=i(`span`,null,`آستانه قرمز`,-1),s(v,{modelValue:X.value,"onUpdate:modelValue":n[7]||=e=>X.value=e,"allow-empty":!1},null,8,[`modelValue`])]),i(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:B.value,onClick:ve},t(B.value?`در حال ذخیره…`:`ذخیره آستانه‌ها`),9,P)])])],64)):ee(``,!0)]))}}),[[`__scopeId`,`data-v-e4cab5f3`]]);export{F as default}; \ No newline at end of file diff --git a/dist/assets/StockAlertsView-CBkZ5P6m.css b/dist/assets/StockAlertsView-CBkZ5P6m.css deleted file mode 100644 index 00a413a..0000000 --- a/dist/assets/StockAlertsView-CBkZ5P6m.css +++ /dev/null @@ -1 +0,0 @@ -.admin-page__head[data-v-61131544]{margin-bottom:20px}.admin-page__head h1[data-v-61131544]{margin:0 0 4px;font-size:1.25rem}.admin-page__head p[data-v-61131544]{color:var(--color-text-muted);margin:0;font-size:.875rem}.admin-table[data-v-61131544]{border-collapse:collapse;width:100%}.admin-table th[data-v-61131544],.admin-table td[data-v-61131544]{text-align:right;border-bottom:1px solid var(--color-border);padding:10px 8px}.muted[data-v-61131544]{color:var(--color-text-muted);margin-right:6px;font-size:.75rem} diff --git a/dist/assets/StockAlertsView-Vd1IBphB.js b/dist/assets/StockAlertsView-Vd1IBphB.js deleted file mode 100644 index 03c001d..0000000 --- a/dist/assets/StockAlertsView-Vd1IBphB.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,At as t,E as n,M as r,c as i,d as a,g as o,k as s,l as c,m as l,r as u,t as d}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as f,t as p}from"./http-BjLkjdQu.js";import{j as m}from"./index-BzcByePp.js";import{t as h}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as g}from"./BaseEmptyState-B7aEMvHg.js";var _={class:`admin-page`},v={key:2,class:`admin-table`},y={class:`muted`,dir:`ltr`},b={class:`muted`,dir:`ltr`},x=[`onClick`],S=d(o({__name:`StockAlertsView`,setup(o){let d=e([]),S=e(!0),C=f();async function w(){S.value=!0;try{d.value=await m.list()}catch(e){C.error(e instanceof p?e.message:`بارگذاری ناموفق بود`)}finally{S.value=!1}}async function T(e){try{await m.notify(e),C.success(`اعلان موجودی ارسال شد`),await w()}catch(e){C.error(e instanceof p?e.message:`ارسال ناموفق بود`)}}return n(()=>{w()}),(e,n)=>(s(),a(`div`,_,[n[1]||=i(`header`,{class:`admin-page__head`},[i(`div`,null,[i(`h1`,null,`درخواست خبر موجودی`),i(`p`,null,`مشتریانی که برای محصول ناموجود درخواست اطلاع داده‌اند`)])],-1),S.value?(s(),c(h,{key:0,variant:`table`})):d.value.length?(s(),a(`table`,v,[n[0]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`مشتری`),i(`th`,null,`محصول`),i(`th`,null,`موجودی فعلی`),i(`th`)])],-1),i(`tbody`,null,[(s(!0),a(u,null,r(d.value,e=>(s(),a(`tr`,{key:e.id},[i(`td`,null,[l(t(e.customerName)+` `,1),i(`span`,y,t(e.customerPhone),1)]),i(`td`,null,[l(t(e.productName)+` `,1),i(`span`,b,`(`+t(e.productCode)+`)`,1)]),i(`td`,null,t(e.stock??`—`),1),i(`td`,null,[i(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:t=>T(e.id)},`ارسال اعلان`,8,x)])]))),128))])])):(s(),c(g,{key:1,title:`درخواستی فعال نیست`}))]))}}),[[`__scopeId`,`data-v-61131544`]]);export{S as default}; \ No newline at end of file diff --git a/dist/assets/SuggestionsView-DhHRi7XZ.js b/dist/assets/SuggestionsView-DvLSQunL.js similarity index 86% rename from dist/assets/SuggestionsView-DhHRi7XZ.js rename to dist/assets/SuggestionsView-DvLSQunL.js index 03f8144..35a05d2 100644 --- a/dist/assets/SuggestionsView-DhHRi7XZ.js +++ b/dist/assets/SuggestionsView-DvLSQunL.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as _,f as v,t as y}from"./http-BjLkjdQu.js";import{E as b,H as x,M as S,y as C}from"./index-BzcByePp.js";import{t as w}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as T}from"./BaseEmptyState-B7aEMvHg.js";import{t as E}from"./AdminSelect-8XDtPu3U.js";var D={class:`admin-page`},O={class:`admin-page__head`},k={key:2,class:`admin-table`},A={class:`muted`,dir:`ltr`},j=[`onClick`],M={class:`field`},N={class:`field`},P={class:`field`},F=[`disabled`],I=g(l({__name:`SuggestionsView`,setup(l){let g=e([]),I=e(!0),L=e([]),R=e([]),z=e(!1),B=_(),V=o({customerId:``,productId:``,note:``}),H=h(()=>L.value.map(e=>({value:e.id,label:e.name?.trim()||e.phone}))),U=h(()=>R.value.map(e=>({value:e.id,label:`${e.name} (${e.productCode})`})));async function W(){I.value=!0;try{let[e,t,n]=await Promise.all([S.list(),C.list(),b.list()]);g.value=e,L.value=t,R.value=n}catch(e){B.error(e instanceof y?e.message:`بارگذاری ناموفق بود`)}finally{I.value=!1}}async function G(){try{await S.create({customerId:V.customerId,productId:V.productId,note:V.note.trim()||void 0}),z.value=!1,V.note=``,B.success(`پیشنهاد ثبت شد`),await W()}catch(e){B.error(e instanceof y?e.message:`ثبت ناموفق بود`)}}async function K(e){try{await S.setActive(e.id,!e.isActive),await W()}catch(e){B.error(e instanceof y?e.message:`به‌روزرسانی ناموفق بود`)}}return n(()=>{W()}),(e,n)=>(d(),c(`div`,D,[s(`header`,O,[n[5]||=s(`div`,null,[s(`h1`,null,`پیشنهاد محصول`),s(`p`,null,`پیشنهاد دستی محصول به مشتری`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:n[0]||=e=>z.value=!0},`پیشنهاد جدید`)]),I.value?(d(),f(w,{key:0,variant:`table`})):g.value.length?(d(),c(`table`,k,[n[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,[(d(!0),c(m,null,i(g.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,t(e.customerName),1),s(`td`,null,[p(t(e.productName)+` `,1),s(`span`,A,`(`+t(e.productCode)+`)`,1)]),s(`td`,null,t(e.note||`—`),1),s(`td`,null,t(e.isActive?`فعال`:`غیرفعال`),1),s(`td`,null,[s(`button`,{type:`button`,class:`link`,onClick:t=>K(e)},t(e.isActive?`غیرفعال`:`فعال`),9,j)])]))),128))])])):(d(),f(T,{key:1,title:`پیشنهادی ثبت نشده`})),u(x,{open:z.value,title:`پیشنهاد محصول`,onClose:n[4]||=e=>z.value=!1},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!V.customerId||!V.productId,onClick:G},` ثبت `,8,F)]),default:r(()=>[s(`label`,M,[n[7]||=p(`مشتری `,-1),u(E,{modelValue:V.customerId,"onUpdate:modelValue":n[1]||=e=>V.customerId=e,options:H.value},null,8,[`modelValue`,`options`])]),s(`label`,N,[n[8]||=p(`محصول `,-1),u(E,{modelValue:V.productId,"onUpdate:modelValue":n[2]||=e=>V.productId=e,options:U.value},null,8,[`modelValue`,`options`])]),s(`label`,P,[n[9]||=p(`یادداشت`,-1),a(s(`textarea`,{"onUpdate:modelValue":n[3]||=e=>V.note=e,class:`admin-input`,rows:`3`},null,512),[[v,V.note]])])]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-56e3e728`]]);export{I as default}; \ No newline at end of file +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as o,c as s,d as c,g as l,h as u,k as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as _,f as v,t as y}from"./http-BjLkjdQu.js";import{A as b,B as x,T as S,v as C}from"./index-SWzbcuqQ.js";import{t as w}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as T}from"./BaseEmptyState-Bzvl_pTa.js";import{t as E}from"./AdminSelect-6a7SFr9x.js";var D={class:`admin-page`},O={class:`admin-page__head`},k={key:2,class:`admin-table`},A={class:`muted`,dir:`ltr`},j=[`onClick`],M={class:`field`},N={class:`field`},P={class:`field`},F=[`disabled`],I=g(l({__name:`SuggestionsView`,setup(l){let g=e([]),I=e(!0),L=e([]),R=e([]),z=e(!1),B=_(),V=o({customerId:``,productId:``,note:``}),H=h(()=>L.value.map(e=>({value:e.id,label:e.name?.trim()||e.phone}))),U=h(()=>R.value.map(e=>({value:e.id,label:`${e.name} (${e.productCode})`})));async function W(){I.value=!0;try{let[e,t,n]=await Promise.all([b.list(),C.list(),S.list()]);g.value=e,L.value=t,R.value=n}catch(e){B.error(e instanceof y?e.message:`بارگذاری ناموفق بود`)}finally{I.value=!1}}async function G(){try{await b.create({customerId:V.customerId,productId:V.productId,note:V.note.trim()||void 0}),z.value=!1,V.note=``,B.success(`پیشنهاد ثبت شد`),await W()}catch(e){B.error(e instanceof y?e.message:`ثبت ناموفق بود`)}}async function K(e){try{await b.setActive(e.id,!e.isActive),await W()}catch(e){B.error(e instanceof y?e.message:`به‌روزرسانی ناموفق بود`)}}return n(()=>{W()}),(e,n)=>(d(),c(`div`,D,[s(`header`,O,[n[5]||=s(`div`,null,[s(`h1`,null,`پیشنهاد محصول`),s(`p`,null,`پیشنهاد دستی محصول به مشتری`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:n[0]||=e=>z.value=!0},`پیشنهاد جدید`)]),I.value?(d(),f(w,{key:0,variant:`table`})):g.value.length?(d(),c(`table`,k,[n[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,[(d(!0),c(m,null,i(g.value,e=>(d(),c(`tr`,{key:e.id},[s(`td`,null,t(e.customerName),1),s(`td`,null,[p(t(e.productName)+` `,1),s(`span`,A,`(`+t(e.productCode)+`)`,1)]),s(`td`,null,t(e.note||`—`),1),s(`td`,null,t(e.isActive?`فعال`:`غیرفعال`),1),s(`td`,null,[s(`button`,{type:`button`,class:`link`,onClick:t=>K(e)},t(e.isActive?`غیرفعال`:`فعال`),9,j)])]))),128))])])):(d(),f(T,{key:1,title:`پیشنهادی ثبت نشده`})),u(x,{open:z.value,title:`پیشنهاد محصول`,onClose:n[4]||=e=>z.value=!1},{footer:r(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!V.customerId||!V.productId,onClick:G},` ثبت `,8,F)]),default:r(()=>[s(`label`,M,[n[7]||=p(`مشتری `,-1),u(E,{modelValue:V.customerId,"onUpdate:modelValue":n[1]||=e=>V.customerId=e,options:H.value},null,8,[`modelValue`,`options`])]),s(`label`,N,[n[8]||=p(`محصول `,-1),u(E,{modelValue:V.productId,"onUpdate:modelValue":n[2]||=e=>V.productId=e,options:U.value},null,8,[`modelValue`,`options`])]),s(`label`,P,[n[9]||=p(`یادداشت`,-1),a(s(`textarea`,{"onUpdate:modelValue":n[3]||=e=>V.note=e,class:`admin-input`,rows:`3`},null,512),[[v,V.note]])])]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-56e3e728`]]);export{I as default}; \ No newline at end of file diff --git a/dist/assets/UsersView-By1IH79j.js b/dist/assets/UsersView-ie6UvRnF.js similarity index 97% rename from dist/assets/UsersView-By1IH79j.js rename to dist/assets/UsersView-ie6UvRnF.js index eade3df..198bd9a 100644 --- a/dist/assets/UsersView-By1IH79j.js +++ b/dist/assets/UsersView-ie6UvRnF.js @@ -1 +1 @@ -import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as ee,c as o,d as s,g as te,h as c,k as l,l as u,m as d,r as f,s as p,st as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as _,m as re,t as v}from"./http-BjLkjdQu.js";import{H as ie,R as ae,o as oe,u as y}from"./index-BzcByePp.js";import{t as se}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as b}from"./BaseSwitch-pJwnFBVo.js";import{t as ce}from"./BaseEmptyState-B7aEMvHg.js";import{t as le}from"./AdminSelect-8XDtPu3U.js";import{o as x}from"./adminLabels-Cz9ccm1Z.js";import{t as S}from"./ActiveSwitchCell-Mj6U4GtB.js";var ue={class:`users-page`},de={class:`users-page__search admin-card`},fe={key:2,class:`users-page__table admin-card desktop-only`},pe={class:`admin-table-wrap`},me={class:`admin-table`},he={dir:`ltr`},ge={class:`status`},C={class:`actions`},w=[`onClick`],T={key:3,class:`compact-only admin-card-list`},E={class:`admin-card-item__header`},D={class:`admin-card-item__title`},O={class:`admin-card-item__meta`},k={dir:`ltr`},A={class:`admin-card-item__actions`},j=[`onClick`],M={key:0,class:`admin-form__error`,role:`alert`},N={class:`admin-form__field`},P={class:`admin-form__row`},F={class:`admin-form__field`},I={class:`admin-form__field`},L={class:`admin-form__field`},_e={class:`admin-form__field`},ve=[`disabled`],ye={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},R=h(te({__name:`UsersView`,setup(te){let h=e([]),R=e(``),z=e(!0),B=e(null),V=e(null),H=e(``),U=e(!1),W=ne(),be=[{value:`admin`,label:`مدیر سیستم`},{value:`sales`,label:`واحد فروش`},{value:`finance`,label:`واحد مالی`},{value:`warehouse`,label:`انبار`}],G=()=>({fullName:``,phone:``,email:``,role:`sales`,isActive:!0}),K=ee(G()),xe=p(()=>B.value!==null),Se=p(()=>B.value===`edit`?`ویرایش کاربر`:`افزودن کاربر`),q=p(()=>K.fullName.trim()&&K.phone.trim()),J=p(()=>{let e=R.value.trim();return e?h.value.filter(t=>t.fullName.includes(e)||t.phone.includes(e)||t.email.includes(e)||x[t.role].includes(e)):h.value});async function Ce(){z.value=!0;try{h.value=await y.list()}catch(e){W.error(e instanceof v?e.message:`بارگذاری کاربران انجام نشد.`)}finally{z.value=!1}}n(()=>{Ce()});function Y(){B.value=`add`,V.value=null,Object.assign(K,G()),H.value=``}function X(e){B.value=`edit`,V.value=e.id,K.fullName=e.fullName,K.phone=e.phone,K.email=e.email,K.role=e.role,K.isActive=e.isActive,H.value=``}function Z(){B.value=null,V.value=null,H.value=``}async function Q(){if(!q.value){H.value=`نام و تلفن الزامی هستند.`;return}U.value=!0;let e={fullName:K.fullName.trim(),phone:K.phone.trim(),email:K.email.trim()||void 0,role:K.role,isActive:K.isActive};try{if(B.value===`edit`&&V.value){let t=await y.update(V.value,e),n=h.value.findIndex(e=>e.id===V.value);n!==-1&&(h.value[n]={...h.value[n],...t})}else{let t=await y.create(e);h.value.push(t)}W.success(B.value===`edit`?`اطلاعات کاربر به‌روزرسانی شد.`:`کاربر جدید ثبت شد.`),Z()}catch(e){W.error(e instanceof v?e.message:`ذخیره کاربر انجام نشد.`)}finally{U.value=!1}}async function $(e,t){await y.setActive(e,t)}function we(){R.value=``}return(e,n)=>(l(),s(`div`,ue,[o(`div`,{class:`admin-page-header`},[n[6]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`کاربران و دسترسی‌ها`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن کاربر `)]),o(`div`,de,[c(ae,{name:`search`,size:18}),a(o(`input`,{"onUpdate:modelValue":n[0]||=e=>R.value=e,type:`search`,class:`users-page__search-input`,placeholder:`جستجو در نام، تلفن، ایمیل...`},null,512),[[_,R.value]])]),z.value?(l(),u(se,{key:0,variant:`table`})):J.value.length?(l(),s(`div`,fe,[o(`div`,pe,[o(`table`,me,[n[7]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`نام`),o(`th`,null,`تلفن`),o(`th`,null,`ایمیل`),o(`th`,null,`نقش`),o(`th`,{class:`status`},`وضعیت`),o(`th`,null,`آخرین ورود`),o(`th`,{class:`actions`},`عملیات`)])],-1),o(`tbody`,null,[(l(!0),s(f,null,i(J.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,t(e.fullName),1),o(`td`,null,t(e.phone),1),o(`td`,he,t(e.email),1),o(`td`,null,t(m(x)[e.role]),1),o(`td`,ge,[c(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,t(e.lastLoginAt?m(oe)(e.lastLoginAt):`—`),1),o(`td`,C,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,w)])]))),128))])])])])):(l(),u(ce,{key:1,class:`admin-card`,icon:`users`,title:R.value.trim()?`نتیجه‌ای یافت نشد`:`کاربری ثبت نشده`,description:R.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کاربر را ثبت کنید.`},{default:r(()=>[R.value.trim()?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:we},` پاک کردن جستجو `)):(l(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن کاربر `))]),_:1},8,[`title`,`description`])),!z.value&&J.value.length?(l(),s(`div`,T,[(l(!0),s(f,null,i(J.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,E,[o(`p`,D,t(e.fullName),1),c(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,t(m(x)[e.role]),1),o(`span`,null,t(e.phone),1),o(`span`,k,t(e.email),1)]),o(`div`,A,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,j)])]))),128))])):g(``,!0),c(ie,{open:xe.value,title:Se.value,size:`lg`,onClose:Z},{footer:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!q.value||U.value,onClick:Q},[U.value?(l(),s(`span`,ye)):g(``,!0),d(` `+t(B.value===`edit`?`ذخیره تغییرات`:`ثبت کاربر`),1)],8,ve)]),default:r(()=>[o(`form`,{class:`admin-form`,onSubmit:re(Q,[`prevent`])},[H.value?(l(),s(`p`,M,t(H.value),1)):g(``,!0),o(`div`,N,[n[8]||=o(`label`,{for:`user-name`},[d(`نام کامل `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-name`,"onUpdate:modelValue":n[1]||=e=>K.fullName=e,type:`text`,class:`admin-input`},null,512),[[_,K.fullName]])]),o(`div`,P,[o(`div`,F,[n[9]||=o(`label`,{for:`user-phone`},[d(`تلفن `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-phone`,"onUpdate:modelValue":n[2]||=e=>K.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[_,K.phone]])]),o(`div`,I,[n[10]||=o(`label`,{for:`user-email`},`ایمیل`,-1),a(o(`input`,{id:`user-email`,"onUpdate:modelValue":n[3]||=e=>K.email=e,type:`email`,class:`admin-input`,dir:`ltr`},null,512),[[_,K.email]])])]),o(`div`,L,[n[11]||=o(`label`,null,`نقش`,-1),c(le,{modelValue:K.role,"onUpdate:modelValue":n[4]||=e=>K.role=e,block:``,"aria-label":`نقش کاربر`,options:be},null,8,[`modelValue`])]),o(`div`,_e,[c(b,{modelValue:K.isActive,"onUpdate:modelValue":n[5]||=e=>K.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-345a9659`]]);export{R as default}; \ No newline at end of file +import{$ as e,At as t,E as n,H as r,M as i,U as a,Z as ee,c as o,d as s,g as te,h as c,k as l,l as u,m as d,r as f,s as p,st as m,t as h,u as g}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ne,f as _,m as re,t as v}from"./http-BjLkjdQu.js";import{B as ie,I as ae,o as oe,u as y}from"./index-SWzbcuqQ.js";import{t as se}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as b}from"./BaseSwitch-pJwnFBVo.js";import{t as ce}from"./BaseEmptyState-Bzvl_pTa.js";import{t as le}from"./AdminSelect-6a7SFr9x.js";import{o as x}from"./adminLabels-Cz9ccm1Z.js";import{t as S}from"./ActiveSwitchCell-DIBIZfO9.js";var ue={class:`users-page`},de={class:`users-page__search admin-card`},fe={key:2,class:`users-page__table admin-card desktop-only`},pe={class:`admin-table-wrap`},me={class:`admin-table`},he={dir:`ltr`},ge={class:`status`},C={class:`actions`},w=[`onClick`],T={key:3,class:`compact-only admin-card-list`},E={class:`admin-card-item__header`},D={class:`admin-card-item__title`},O={class:`admin-card-item__meta`},k={dir:`ltr`},A={class:`admin-card-item__actions`},j=[`onClick`],M={key:0,class:`admin-form__error`,role:`alert`},N={class:`admin-form__field`},P={class:`admin-form__row`},F={class:`admin-form__field`},I={class:`admin-form__field`},L={class:`admin-form__field`},_e={class:`admin-form__field`},ve=[`disabled`],ye={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},R=h(te({__name:`UsersView`,setup(te){let h=e([]),R=e(``),z=e(!0),B=e(null),V=e(null),H=e(``),U=e(!1),W=ne(),be=[{value:`admin`,label:`مدیر سیستم`},{value:`sales`,label:`واحد فروش`},{value:`finance`,label:`واحد مالی`},{value:`warehouse`,label:`انبار`}],G=()=>({fullName:``,phone:``,email:``,role:`sales`,isActive:!0}),K=ee(G()),xe=p(()=>B.value!==null),Se=p(()=>B.value===`edit`?`ویرایش کاربر`:`افزودن کاربر`),q=p(()=>K.fullName.trim()&&K.phone.trim()),J=p(()=>{let e=R.value.trim();return e?h.value.filter(t=>t.fullName.includes(e)||t.phone.includes(e)||t.email.includes(e)||x[t.role].includes(e)):h.value});async function Ce(){z.value=!0;try{h.value=await y.list()}catch(e){W.error(e instanceof v?e.message:`بارگذاری کاربران انجام نشد.`)}finally{z.value=!1}}n(()=>{Ce()});function Y(){B.value=`add`,V.value=null,Object.assign(K,G()),H.value=``}function X(e){B.value=`edit`,V.value=e.id,K.fullName=e.fullName,K.phone=e.phone,K.email=e.email,K.role=e.role,K.isActive=e.isActive,H.value=``}function Z(){B.value=null,V.value=null,H.value=``}async function Q(){if(!q.value){H.value=`نام و تلفن الزامی هستند.`;return}U.value=!0;let e={fullName:K.fullName.trim(),phone:K.phone.trim(),email:K.email.trim()||void 0,role:K.role,isActive:K.isActive};try{if(B.value===`edit`&&V.value){let t=await y.update(V.value,e),n=h.value.findIndex(e=>e.id===V.value);n!==-1&&(h.value[n]={...h.value[n],...t})}else{let t=await y.create(e);h.value.push(t)}W.success(B.value===`edit`?`اطلاعات کاربر به‌روزرسانی شد.`:`کاربر جدید ثبت شد.`),Z()}catch(e){W.error(e instanceof v?e.message:`ذخیره کاربر انجام نشد.`)}finally{U.value=!1}}async function $(e,t){await y.setActive(e,t)}function we(){R.value=``}return(e,n)=>(l(),s(`div`,ue,[o(`div`,{class:`admin-page-header`},[n[6]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`کاربران و دسترسی‌ها`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن کاربر `)]),o(`div`,de,[c(ae,{name:`search`,size:18}),a(o(`input`,{"onUpdate:modelValue":n[0]||=e=>R.value=e,type:`search`,class:`users-page__search-input`,placeholder:`جستجو در نام، تلفن، ایمیل...`},null,512),[[_,R.value]])]),z.value?(l(),u(se,{key:0,variant:`table`})):J.value.length?(l(),s(`div`,fe,[o(`div`,pe,[o(`table`,me,[n[7]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`نام`),o(`th`,null,`تلفن`),o(`th`,null,`ایمیل`),o(`th`,null,`نقش`),o(`th`,{class:`status`},`وضعیت`),o(`th`,null,`آخرین ورود`),o(`th`,{class:`actions`},`عملیات`)])],-1),o(`tbody`,null,[(l(!0),s(f,null,i(J.value,e=>(l(),s(`tr`,{key:e.id},[o(`td`,null,t(e.fullName),1),o(`td`,null,t(e.phone),1),o(`td`,he,t(e.email),1),o(`td`,null,t(m(x)[e.role]),1),o(`td`,ge,[c(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,t(e.lastLoginAt?m(oe)(e.lastLoginAt):`—`),1),o(`td`,C,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,w)])]))),128))])])])])):(l(),u(ce,{key:1,class:`admin-card`,icon:`users`,title:R.value.trim()?`نتیجه‌ای یافت نشد`:`کاربری ثبت نشده`,description:R.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کاربر را ثبت کنید.`},{default:r(()=>[R.value.trim()?(l(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:we},` پاک کردن جستجو `)):(l(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن کاربر `))]),_:1},8,[`title`,`description`])),!z.value&&J.value.length?(l(),s(`div`,T,[(l(!0),s(f,null,i(J.value,e=>(l(),s(`article`,{key:e.id,class:`admin-card-item`},[o(`div`,E,[o(`p`,D,t(e.fullName),1),c(S,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,t(m(x)[e.role]),1),o(`span`,null,t(e.phone),1),o(`span`,k,t(e.email),1)]),o(`div`,A,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>X(e)},` ویرایش `,8,j)])]))),128))])):g(``,!0),c(ie,{open:xe.value,title:Se.value,size:`lg`,onClose:Z},{footer:r(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!q.value||U.value,onClick:Q},[U.value?(l(),s(`span`,ye)):g(``,!0),d(` `+t(B.value===`edit`?`ذخیره تغییرات`:`ثبت کاربر`),1)],8,ve)]),default:r(()=>[o(`form`,{class:`admin-form`,onSubmit:re(Q,[`prevent`])},[H.value?(l(),s(`p`,M,t(H.value),1)):g(``,!0),o(`div`,N,[n[8]||=o(`label`,{for:`user-name`},[d(`نام کامل `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-name`,"onUpdate:modelValue":n[1]||=e=>K.fullName=e,type:`text`,class:`admin-input`},null,512),[[_,K.fullName]])]),o(`div`,P,[o(`div`,F,[n[9]||=o(`label`,{for:`user-phone`},[d(`تلفن `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-phone`,"onUpdate:modelValue":n[2]||=e=>K.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[_,K.phone]])]),o(`div`,I,[n[10]||=o(`label`,{for:`user-email`},`ایمیل`,-1),a(o(`input`,{id:`user-email`,"onUpdate:modelValue":n[3]||=e=>K.email=e,type:`email`,class:`admin-input`,dir:`ltr`},null,512),[[_,K.email]])])]),o(`div`,L,[n[11]||=o(`label`,null,`نقش`,-1),c(le,{modelValue:K.role,"onUpdate:modelValue":n[4]||=e=>K.role=e,block:``,"aria-label":`نقش کاربر`,options:be},null,8,[`modelValue`])]),o(`div`,_e,[c(b,{modelValue:K.isActive,"onUpdate:modelValue":n[5]||=e=>K.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-345a9659`]]);export{R as default}; \ No newline at end of file diff --git a/dist/assets/index-BzcByePp.js b/dist/assets/index-BzcByePp.js deleted file mode 100644 index 382892e..0000000 --- a/dist/assets/index-BzcByePp.js +++ /dev/null @@ -1,382 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-Cv7dE8jp.js","assets/_plugin-vue_export-helper-QrIvvHC8.js","assets/http-BjLkjdQu.js","assets/LoginView-D9TVA-2V.css","assets/DashboardView-BTmX0Wl1.js","assets/StatusBadge-jGFZVW4C.js","assets/orderStatus-CeC05Cv4.js","assets/StatusBadge-D4wGJ-Ud.css","assets/DashboardView-CFmOMgpM.css","assets/OrdersView-BCieQtX2.js","assets/AdminSelect-8XDtPu3U.js","assets/AdminSelect-DRq_EKw9.css","assets/AdminImageLightbox-CE3ZJ5-o.js","assets/AdminImageLightbox-DHLeZ8xo.css","assets/adminLabels-Cz9ccm1Z.js","assets/OrdersView-SrWTA8-0.css","assets/OrderPricingView-BqbturHp.js","assets/AdminPageSkeleton-oWhHYjl4.js","assets/AdminPageSkeleton-Gm3IJwUK.css","assets/AdminCurrencyInput-S1e1av3F.js","assets/AdminCurrencyInput-QPh70it7.css","assets/OrderPricingView-D4tU9mWx.css","assets/ChecksListView-AdYVIsnM.js","assets/ChecksListView-DeOu1gFo.css","assets/CheckManagementView-CRZVQ55a.js","assets/CheckManagementView-C1ozixF5.css","assets/CompaniesView-BIglXTeb.js","assets/BaseSwitch-pJwnFBVo.js","assets/BaseSwitch-CCZjYqBV.css","assets/BaseEmptyState-B7aEMvHg.js","assets/BaseEmptyState-Df57vCUi.css","assets/ActiveSwitchCell-Mj6U4GtB.js","assets/CompaniesView-BubE_GYW.css","assets/BankAccountsView-CkbL3HvV.js","assets/BankAccountsView-jIdT6saw.css","assets/CustomersView-DPDC8LXM.js","assets/CustomersView-DgDLPLAd.css","assets/ProductsView-CReNQodS.js","assets/AdminImagePicker-DLFdrgWU.js","assets/AdminImagePicker-RdXJzEal.css","assets/ProductsView-DS4PzfOc.css","assets/CategoriesView-D_1HbWj9.js","assets/CategoriesView-D7xsOZr4.css","assets/BannersView-nv4M7RNj.js","assets/BannersView-TRKkvRxh.css","assets/InternalMessagesView-BL4mP-qn.js","assets/InternalMessagesView-0lrPLnRU.css","assets/CatalogsView-CErlF6z4.js","assets/CatalogsView-yskXIlwQ.css","assets/CatalogRequestsView-DXqH8XSn.js","assets/CatalogRequestsView-DmO_C6eq.css","assets/BrandsView-C7Jx2472.js","assets/BrandsView-C8jhktRT.css","assets/SuggestionsView-DhHRi7XZ.js","assets/SuggestionsView-ztSfUAsG.css","assets/StockAlertsView-Vd1IBphB.js","assets/StockAlertsView-CBkZ5P6m.css","assets/LevelsView-BT4Elzxf.js","assets/LevelsView-Bwpvfee6.css","assets/CashPaymentsView-BDQ_HOSo.js","assets/CashPaymentsView-GWpZx-gw.css","assets/ShippingView-BkidKjch.js","assets/ShippingView-G0QuXsX0.css","assets/ReportsView-mBlbgBE5.js","assets/ReportsView-dONYkP5k.css","assets/SettingsView-CKijJhFP.js","assets/SettingsView-B5r5xmYu.css","assets/SmsTariffView-BQ0goHy2.js","assets/SmsTariffView-DfW33peq.css","assets/UsersView-By1IH79j.js","assets/UsersView-DSH2HjHE.css","assets/NotFoundView-DBzokouR.js","assets/NotFoundView-CY2m4474.css"])))=>i.map(i=>d[i]); -import{$ as e,A as t,At as n,B as r,C as i,Dt as a,E as o,G as s,H as c,J as l,K as u,L as d,M as f,N as p,P as m,Q as h,V as g,W as _,X as v,Y as y,Z as b,_ as x,a as ee,at as S,b as C,c as w,d as T,et as E,g as D,h as O,it as te,k,l as A,m as ne,nt as j,ot as M,q as re,r as N,rt as ie,s as P,st as F,t as I,tt as ae,u as L,w as oe,x as R,y as z}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as se,c as ce,i as le,m as B,n as V,o as ue,r as de,s as fe,t as pe}from"./http-BjLkjdQu.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var me=typeof window<`u`,he,ge=e=>he=e,_e=Symbol();function ve(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var ye=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function be(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function xe(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){Ee(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Se(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function Ce(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var we=typeof navigator==`object`?navigator:{userAgent:``},Te=/Macintosh/.test(we.userAgent)&&/AppleWebKit/.test(we.userAgent)&&!/Safari/.test(we.userAgent),Ee=me?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!Te?De:`msSaveOrOpenBlob`in we?Oe:ke:()=>{};function De(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?Ce(r):Se(r.href)?xe(e,t,n):(r.target=`_blank`,Ce(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){Ce(r)},0))}function Oe(e,t=`download`,n){if(typeof e==`string`)if(Se(e))xe(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){Ce(t)})}else navigator.msSaveOrOpenBlob(be(e,n),t)}function ke(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return xe(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(ye.HTMLElement))||`safari`in ye,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||Te)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:Ae}=Object;function je(){let t=s(!0),n=t.run(()=>e({})),r=[],i=[],a=y({install(e){ge(a),a._a=e,e.provide(_e,a),e.config.globalProperties.$pinia=a,i.forEach(e=>r.push(e)),i=[]},use(e){return this._a?r.push(e):i.push(e),this},_p:r,_a:null,_e:t,_s:new Map,state:n});return a}var Me=()=>{};function Ne(e,t,n,r=Me){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&u()&&v(i),i}function Pe(e,...t){e.forEach(e=>{e(...t)})}var Fe=e=>e(),Ie=Symbol(),Le=Symbol();function Re(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];e[n]=ve(i)&&ve(r)&&Object.hasOwn(e,n)&&!l(r)&&!re(r)?Re(i,r):r}return e}var ze=Symbol();function Be(e){return!e||typeof e!=`object`||!Object.hasOwn(e,ze)}var{assign:H}=Object;function Ve(e){return!!(l(e)&&e.effect)}function He(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),H(S(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=y(P(()=>{ge(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=Ue(e,l,t,n,r,!0),c}function Ue(e,t,n={},i,a,o){let c,u=H({actions:{}},n),d={deep:!0},f,p,m=new Set,h=new Set,g,_=i.state.value[e];!o&&!_&&(i.state.value[e]={});let v;function y(t){let n;f=p=!1,typeof t==`function`?(t(i.state.value[e]),n={type:`patch function`,storeId:e,events:g}):(Re(i.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:g});let r=v=Symbol();oe().then(()=>{v===r&&(f=!0)}),p=!0,Pe(m,n,i.state.value[e])}let x=o?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{H(e,t)})}:Me;function ee(){c.stop(),m.clear(),h.clear(),i._s.delete(e)}let S=(t,n=``)=>{if(Ie in t)return t[Le]=n,t;let r=function(){ge(i);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}Pe(h,{args:n,name:r[Le],store:w,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:w,n)}catch(e){throw Pe(o,e),e}return l instanceof Promise?l.then(e=>(Pe(a,e),e)).catch(e=>(Pe(o,e),Promise.reject(e))):(Pe(a,l),l)};return r[Ie]=!0,r[Le]=n,r},C={_p:i,$id:e,$onAction:Ne.bind(null,h),$patch:y,$reset:x,$subscribe(t,n={}){if(m.has(t))return Me;let a=Ne(m,t,n.detached,()=>o()),o=c.run(()=>r(()=>i.state.value[e],r=>{(n.flush===`sync`?p:f)&&t({storeId:e,type:`direct`,events:g},r)},H({},d,n)));return a},$dispose:ee},w=b(C);i._s.set(e,w);let T=(i._a&&i._a.runWithContext||Fe)(()=>i._e.run(()=>(c=s()).run(()=>t({action:S}))));for(let t in T){let n=T[t];l(n)&&!Ve(n)||re(n)?o||(_&&Be(n)&&(l(n)?n.value=_[t]:Re(n,_[t])),i.state.value[e][t]=n):typeof n==`function`&&(T[t]=S(n,t),u.actions[t]=n)}return H(w,T),H(ie(w),T),Object.defineProperty(w,"$state",{get:()=>i.state.value[e],set:e=>{y(t=>{H(t,e)})}}),i._p.forEach(e=>{let t=c.run(()=>e({store:w,app:i._a,pinia:i,options:u}));H(w,t)}),_&&o&&n.hydrate&&n.hydrate(w.$state,_),f=!0,p=!0,w}function We(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=C();return n||=o?R(_e,null):null,n&&ge(n),n=he,n._s.has(e)||(i?Ue(e,t,r,n):He(e,r,n)),n._s.get(e)}return a.$id=e,a}var Ge={"vuesax-linear:add":` - - - -`,"vuesax-linear:arrow-down":` - - -`,"vuesax-linear:arrow-left-1":` - - -`,"vuesax-linear:arrow-right-1":` - - -`,"vuesax-linear:bag-2":` - - - - - -`,"vuesax-linear:bag-cross":` - - - - - - - -`,"vuesax-linear:box-1":` - - - - -`,"vuesax-linear:box-remove":` - - - - - - - -`,"vuesax-linear:box-search":` - - - - - - -`,"vuesax-linear:building":` - - - - - - - -`,"vuesax-linear:buildings":` - - - - - - - - -`,"vuesax-linear:calendar":` - - - - - - - - - - - -`,"vuesax-linear:call":` - - -`,"vuesax-linear:card":` - - - - - -`,"vuesax-linear:card-receive":` - - - - - - - -`,"vuesax-linear:category":` - - - - - -`,"vuesax-linear:chart-2":` - - - - -`,"vuesax-linear:clipboard-close":` - - - - - -`,"vuesax-linear:clock":` - - - - - -`,"vuesax-linear:close-circle":` - - - - -`,"vuesax-linear:cpu":` - - - - - - - - - - - - - - - -`,"vuesax-linear:diamonds":` - - - -`,"vuesax-linear:document-text":` - - - - - -`,"vuesax-linear:edit-2":` - - - - -`,"vuesax-linear:element-3":` - - - - - -`,"vuesax-linear:eye":` - - - -`,"vuesax-linear:eye-slash":` - - - - - - - -`,"vuesax-linear:filter":` - - - -`,"vuesax-linear:flash":` - - - - - -`,"vuesax-linear:headphone":` - - -`,"vuesax-linear:home":` - - - -`,"vuesax-linear:info-circle":` - - - - -`,"vuesax-linear:lamp-on":` - - - -`,"vuesax-linear:location":` - - - -`,"vuesax-linear:lock":` - - - - - - -`,"vuesax-linear:logout":` - - - - -`,"vuesax-linear:menu":` - - - - -`,"vuesax-linear:message":` - - - - - -`,"vuesax-linear:mobile":` - - - - -`,"vuesax-linear:money-4":` - - - - - - - -`,"vuesax-linear:monitor":` - - - - - -`,"vuesax-linear:moon":` - - -`,"vuesax-linear:more":` - - - - -`,"vuesax-linear:note-remove":` - - - - - - - - -`,"vuesax-linear:notification":` - - - - -`,"vuesax-linear:pen-add":` - - - - - - - - -`,"vuesax-linear:people":` - - - - - - - -`,"vuesax-linear:personalcard":` - - - - - - - -`,"vuesax-linear:printer":` - - - - - - -`,"vuesax-linear:profile-2user":` - - - - - -`,"vuesax-linear:profile-circle":` - - - - -`,"vuesax-linear:receipt-search":` - - - - - - -`,"vuesax-linear:search-normal":` - - - -`,"vuesax-linear:search-status":` - - - - - -`,"vuesax-linear:setting-2":` - - - -`,"vuesax-linear:shopping-bag":` - - - - -`,"vuesax-linear:sms":` - - - -`,"vuesax-linear:sun-1":` - - - -`,"vuesax-linear:tick-circle":` - - - -`,"vuesax-linear:timer-1":` - - - - -`,"vuesax-linear:trash":` - - - - - - -`,"vuesax-linear:truck-time":` - - - - - - - - -`,"vuesax-linear:verify":` - - - -`,"vuesax-linear:wallet":` - - - - -`,"vuesax-linear:warning-2":` - - - - -`},Ke=[`aria-hidden`,`innerHTML`],qe=I(D({inheritAttrs:!1,__name:`BasicIcon`,props:{icon:{},color:{default:null},size:{default:24},strokeWidth:{default:1.5}},setup(e){ce(e=>({v196ba43b:String(t.strokeWidth)}));let t=e,n=d(),r=P(()=>{let e=Ge[t.icon];if(!e)return``;let n=String(t.size);return e.replace(/\swidth="[^"]*"/,` width="${n}"`).replace(/\sheight="[^"]*"/,` height="${n}"`).replace(/stroke="#[^"]*"/g,`stroke="currentColor"`)}),a=P(()=>({color:t.color||void 0,width:`${t.size}px`,height:`${t.size}px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,lineHeight:0,flexShrink:0})),o=P(()=>n[`aria-hidden`]??!0);return(e,t)=>(k(),T(`span`,i({class:`basic-icon`},F(n),{style:a.value,"aria-hidden":o.value,innerHTML:r.value}),null,16,Ke))}}),[[`__scopeId`,`data-v-159253ae`]]),Je={class:`toast-container`,"aria-live":`polite`,"aria-relevant":`additions`},Ye={class:`toast__icon`,"aria-hidden":`true`},Xe={class:`toast__message`},Ze=[`onClick`],Qe=I(D({__name:`ToastContainer`,setup(e){let{toasts:t,dismiss:r}=se(),i={success:`vuesax-linear:tick-circle`,error:`vuesax-linear:close-circle`,warning:`vuesax-linear:warning-2`,info:`vuesax-linear:info-circle`};function o(e,t){t.preventDefault(),t.stopPropagation(),r(e)}return(e,r)=>(k(),T(`div`,Je,[O(ue,{name:`toast`,tag:`div`,class:`toast-container__list`},{default:c(()=>[(k(!0),T(N,null,f(F(t),e=>(k(),T(`div`,{key:e.id,class:a([`toast`,`toast--${e.tone}`]),role:`status`},[w(`span`,Ye,[O(qe,{icon:i[e.tone]||`vuesax-linear:info-circle`,size:20,"stroke-width":1.5},null,8,[`icon`])]),w(`p`,Xe,n(e.message),1),w(`button`,{type:`button`,class:`toast__close`,"aria-label":`بستن`,onClick:t=>o(e.id,t)},` × `,8,Ze)],2))),128))]),_:1})]))}}),[[`__scopeId`,`data-v-223aafac`]]),$e=[`aria-label`],et={class:`admin-modal__header`},tt={class:`admin-modal__title`},nt={class:`admin-modal__body`},rt={key:0,class:`admin-modal__footer`},it=I(D({__name:`BaseModal`,props:{open:{type:Boolean},title:{},size:{}},emits:[`close`],setup(e,{emit:t}){let r=t;function i(e){e.target===e.currentTarget&&r(`close`)}return(t,o)=>(k(),A(ee,{to:`body`},[e.open?(k(),T(`div`,{key:0,class:`admin-modal-backdrop`,role:`presentation`,onClick:i},[w(`div`,{class:a([`admin-modal`,{"admin-modal--lg":e.size===`lg`,"admin-modal--xl":e.size===`xl`}]),role:`dialog`,"aria-modal":`true`,"aria-label":e.title,onClick:o[1]||=B(()=>{},[`stop`])},[w(`header`,et,[w(`h2`,tt,n(e.title),1),w(`button`,{type:`button`,class:`admin-modal__close`,"aria-label":`بستن`,onClick:o[0]||=e=>r(`close`)},` × `)]),w(`div`,nt,[p(t.$slots,`default`,{},void 0,!0)]),t.$slots.footer?(k(),T(`footer`,rt,[p(t.$slots,`footer`,{},void 0,!0)])):L(``,!0)],10,$e)])):L(``,!0)]))}}),[[`__scopeId`,`data-v-a52d3eeb`]]),U=b({open:!1,loading:!1,title:``,message:``,confirmLabel:`تأیید`,cancelLabel:`انصراف`,tone:`primary`,resolve:null});function at(){return U}function ot(e){return new Promise(t=>{Object.assign(U,{open:!0,loading:!1,title:e.title,message:e.message,confirmLabel:e.confirmLabel??`تأیید`,cancelLabel:e.cancelLabel??`انصراف`,tone:e.tone??`primary`,resolve:t})})}function st(e){U.resolve?.(e),U.open=!1,U.loading=!1,U.resolve=null}function ct(e){U.loading=e}var lt={class:`confirm-dialog__message`},ut=[`disabled`],dt=[`disabled`],ft={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},pt=I(D({__name:`ConfirmDialog`,setup(e){let t=at();function r(){st(!1)}function i(){ct(!0),st(!0)}return(e,o)=>(k(),A(it,{open:F(t).open,title:F(t).title,size:`md`,onClose:r},{footer:c(()=>[w(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,disabled:F(t).loading,onClick:r},n(F(t).cancelLabel),9,ut),w(`button`,{type:`button`,class:a([`admin-btn`,F(t).tone===`danger`?`admin-btn--danger`:`admin-btn--primary`]),disabled:F(t).loading,onClick:i},[F(t).loading?(k(),T(`span`,ft)):L(``,!0),ne(` `+n(F(t).confirmLabel),1)],10,dt)]),default:c(()=>[w(`p`,lt,n(F(t).message),1)]),_:1},8,[`open`,`title`]))}}),[[`__scopeId`,`data-v-47354e67`]]),mt=D({__name:`App`,setup(e){return(e,t)=>{let n=m(`RouterView`);return k(),T(N,null,[O(n),O(Qe),O(pt)],64)}}});function ht(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function gt(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&ht(e.default)}var W=Object.assign;function _t(e,t){let n={};for(let r in t){let i=t[r];n[r]=G(i)?i.map(e):e(i)}return n}var vt=()=>{},G=Array.isArray;function yt(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var bt=Symbol(``);function xt(e,t){return W(Error(),{type:e,[bt]:!0},t)}function K(e,t){return e instanceof Error&&bt in e&&(t==null||!!(e.type&t))}var St=Symbol(``),Ct=Symbol(``),wt=Symbol(``),Tt=Symbol(``),Et=Symbol(``);function Dt(){return R(wt)}function Ot(e){return R(Tt)}var kt=typeof document<`u`,At=/#/g,jt=/&/g,Mt=/\//g,Nt=/=/g,Pt=/\?/g,Ft=/\+/g,It=/%5B/g,Lt=/%5D/g,Rt=/%5E/g,zt=/%60/g,Bt=/%7B/g,Vt=/%7C/g,Ht=/%7D/g,Ut=/%20/g;function Wt(e){return e==null?``:encodeURI(``+e).replace(Vt,`|`).replace(It,`[`).replace(Lt,`]`)}function Gt(e){return Wt(e).replace(Bt,`{`).replace(Ht,`}`).replace(Rt,`^`)}function Kt(e){return Wt(e).replace(Ft,`%2B`).replace(Ut,`+`).replace(At,`%23`).replace(jt,`%26`).replace(zt,"`").replace(Bt,`{`).replace(Ht,`}`).replace(Rt,`^`)}function qt(e){return Kt(e).replace(Nt,`%3D`)}function Jt(e){return Wt(e).replace(At,`%23`).replace(Pt,`%3F`)}function Yt(e){return Jt(e).replace(Mt,`%2F`)}function Xt(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Zt=/\/$/,Qt=e=>e.replace(Zt,``);function $t(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=cn(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:Xt(o)}}function en(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function tn(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function nn(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&rn(t.matched[r],n.matched[i])&&an(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function rn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function an(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!on(e[n],t[n]))return!1;return!0}function on(e,t){return G(e)?sn(e,t):G(t)?sn(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function sn(e,t){return G(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function cn(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var q={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function ln(e){if(!e)if(kt){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),Qt(e)}var un=/^[^#]+#/;function dn(e,t){return e.replace(un,`#`)+t}function fn(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var pn=()=>({left:window.scrollX,top:window.scrollY});function mn(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=fn(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function hn(e,t){return(history.state?history.state.position-t:-1)+e}var gn=new Map;function _n(e,t){gn.set(e,t)}function vn(e){let t=gn.get(e);return gn.delete(e),t}function yn(e){return typeof e==`string`||e&&typeof e==`object`}function bn(e){return typeof e==`string`||typeof e==`symbol`}function xn(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&Kt(e)):[r&&Kt(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Cn(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=G(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function wn(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function J(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(xt(4,{from:n,to:t})):e instanceof Error?c(e):yn(e)?c(xt(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Tn(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(ht(s)){let c=(s.__vccOpts||s)[t];c&&a.push(J(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=gt(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&J(c,n,r,o,e,i)()}))}}return a}function En(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;orn(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>rn(e,s))||i.push(s))}return[n,r,i]}var Dn=()=>location.protocol+`//`+location.host;function On(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),tn(n,``)}return tn(n,e)+r+i}function kn(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=On(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(W({},e.state,{scroll:pn()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function An(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?pn():null}}function jn(e){let{history:t,location:n}=window,r={value:On(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Dn()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,W({},t.state,An(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=W({},i.value,t.state,{forward:e,scroll:pn()});a(o.current,o,!0),a(e,W({},An(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Mn(e){e=ln(e);let t=jn(e),n=kn(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=W({location:``,base:e,go:r,createHref:dn.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var Nn={type:0,value:``},Pn=/[a-zA-Z0-9_]/;function Fn(e){if(!e)return[[]];if(e===`/`)return[[Nn]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===80?1:-1:0}function Vn(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Un={strict:!1,end:!0,sensitive:!1};function Wn(e,t,n){let r=W(zn(Fn(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Gn(e,t){let n=[],r=new Map;t=yt(Un,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=qn(e);s.aliasOf=r&&r.record;let l=yt(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(qn(W({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Wn(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!Yn(d)&&o(e.name)),$n(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:vt}function o(e){if(bn(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Zn(e,n);n.splice(t,0,e),e.record.name&&!Yn(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw xt(1,{location:e});s=i.record.name,a=W(Kn(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Kn(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw xt(1,{location:e,currentLocation:t});s=i.record.name,a=W({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Xn(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Kn(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function qn(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Jn(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Jn(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function Yn(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Xn(e){return e.reduce((e,t)=>W(e,t.meta),{})}function Zn(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Vn(e,t[i])<0?r=i:n=i+1}let i=Qn(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Qn(e){let t=e;for(;t=t.parent;)if($n(t)&&Vn(e,t)===0)return t}function $n({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function er(e){let t=R(wt),n=R(Tt),r=P(()=>{let n=F(e.to);return t.resolve(n)}),i=P(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(rn.bind(null,i));if(o>-1)return o;let s=ar(e[t-2]);return t>1&&ar(i)===s&&a[a.length-1].path!==s?a.findIndex(rn.bind(null,e[t-2])):o}),a=P(()=>i.value>-1&&ir(n.params,r.value.params)),o=P(()=>i.value>-1&&i.value===n.matched.length-1&&an(n.params,r.value.params));function s(n={}){if(rr(n)){let n=t[F(e.replace)?`replace`:`push`](F(e.to)).catch(vt);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:P(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function tr(e){return e.length===1?e[0]:e}var nr=D({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:er,setup(e,{slots:t}){let n=b(er(e)),{options:r}=R(wt),i=P(()=>({[or(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[or(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&tr(t.default(n));return e.custom?r:z(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function rr(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ir(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!G(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function ar(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var or=(e,t,n)=>e??t??n,sr=D({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(n,{attrs:i,slots:a}){let o=R(Et),s=P(()=>n.route||o.value),c=R(Ct,0),l=P(()=>{let e=F(c),{matched:t}=s.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),u=P(()=>s.value.matched[l.value]);t(Ct,P(()=>l.value+1)),t(St,u),t(Et,s);let d=e();return r(()=>[d.value,u.value,n.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!rn(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=s.value,t=n.name,r=u.value,o=r&&r.components[t];if(!o)return cr(a.default,{Component:o,route:e});let c=r.props[t],l=c?c===!0?e.params:typeof c==`function`?c(e):c:null,f=z(o,W({},l,i,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(r.instances[t]=null)},ref:d}));return cr(a.default,{Component:f,route:e})||f}}});function cr(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var lr=sr;function ur(e){let t=Gn(e.routes,e),n=e.parseQuery||xn,r=e.stringifyQuery||Sn,i=e.history,a=wn(),o=wn(),s=wn(),c=j(q),l=q;kt&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let u=_t.bind(null,e=>``+e),d=_t.bind(null,Yt),f=_t.bind(null,Xt);function p(e,n){let r,i;return bn(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function m(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function h(){return t.getRoutes().map(e=>e.record)}function g(e){return!!t.getRecordMatcher(e)}function _(e,a){if(a=W({},a||c.value),typeof e==`string`){let r=$t(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return W(r,o,{params:f(o.params),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=W({},e,{path:$t(n,e.path,a.path).path});else{let t=W({},e.params);for(let e in t)t[e]??delete t[e];o=W({},e,{params:d(t)}),a.params=d(a.params)}let s=t.resolve(o,a),l=e.hash||``;s.params=u(f(s.params));let p=en(r,W({},e,{hash:Gt(l),path:s.path})),m=i.createHref(p);return W({fullPath:p,hash:l,query:r===Sn?Cn(e.query):e.query||{}},s,{redirectedFrom:void 0,href:m})}function v(e){return typeof e==`string`?$t(n,e,c.value.path):W({},e)}function y(e,t){if(l!==e)return xt(8,{from:t,to:e})}function b(e){return S(e)}function x(e){return b(W(v(e),{replace:!0}))}function ee(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=v(i):{path:i},i.params={}),W({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function S(e,t){let n=l=_(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,u=ee(n,i);if(u)return S(W(v(u),{state:typeof u==`object`?W({},a,u.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&nn(r,i,n)&&(f=xt(16,{to:d,from:i}),P(i,i,!0,!1)),(f?Promise.resolve(f):T(d,i)).catch(e=>K(e)?K(e,2)?e:ie(e):re(e,d,i)).then(e=>{if(e){if(K(e,2))return S(W({replace:s},v(e.to),{state:typeof e.to==`object`?W({},a,e.to.state):a,force:o}),t||d)}else e=O(d,i,!0,s,a);return D(d,i,e),e})}function C(e,t){let n=y(e,t);return n?Promise.reject(n):Promise.resolve()}function w(e){let t=L.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function T(e,t){let n,[r,i,s]=En(e,t);n=Tn(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(J(r,e,t))});let c=C.bind(null,e,t);return n.push(c),z(n).then(()=>{n=[];for(let r of a.list())n.push(J(r,e,t));return n.push(c),z(n)}).then(()=>{n=Tn(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(J(r,e,t))});return n.push(c),z(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter)if(G(r.beforeEnter))for(let i of r.beforeEnter)n.push(J(i,e,t));else n.push(J(r.beforeEnter,e,t));return n.push(c),z(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Tn(s,`beforeRouteEnter`,e,t,w),n.push(c),z(n))).then(()=>{n=[];for(let r of o.list())n.push(J(r,e,t));return n.push(c),z(n)}).catch(e=>K(e,8)?e:Promise.reject(e))}function D(e,t,n){s.list().forEach(r=>w(()=>r(e,t,n)))}function O(e,t,n,r,a){let o=y(e,t);if(o)return o;let s=t===q,l=kt?history.state:{};n&&(r||s?i.replace(e.fullPath,W({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,P(e,t,n,s),ie()}let te;function k(){te||=i.listen((e,t,n)=>{if(!R.listening)return;let r=_(e),a=ee(r,R.currentRoute.value);if(a){S(W(a,{replace:!0,force:!0}),r).catch(vt);return}l=r;let o=c.value;kt&&_n(hn(o.fullPath,n.delta),pn()),T(r,o).catch(e=>K(e,12)?e:K(e,2)?(S(W(v(e.to),{force:!0}),r).then(e=>{K(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(vt),Promise.reject()):(n.delta&&i.go(-n.delta,!1),re(e,r,o))).then(e=>{e||=O(r,o,!1),e&&(n.delta&&!K(e,8)?i.go(-n.delta,!1):n.type===`pop`&&K(e,20)&&i.go(-1,!1)),D(r,o,e)}).catch(vt)})}let A=wn(),ne=wn(),M;function re(e,t,n){ie(e);let r=ne.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function N(){return M&&c.value!==q?Promise.resolve():new Promise((e,t)=>{A.add([e,t])})}function ie(e){return M||(M=!e,k(),A.list().forEach(([t,n])=>e?n(e):t()),A.reset()),e}function P(t,n,r,i){let{scrollBehavior:a}=e;if(!kt||!a)return Promise.resolve();let o=!r&&vn(hn(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return oe().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&mn(e)).catch(e=>t===c.value&&re(e,t,n))}let I=e=>i.go(e),ae,L=new Set,R={currentRoute:c,listening:!0,addRoute:p,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:g,getRoutes:h,resolve:_,options:e,push:b,replace:x,go:I,back:()=>I(-1),forward:()=>I(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:ne.add,isReady:N,install(e){e.component(`RouterLink`,nr),e.component(`RouterView`,lr),e.config.globalProperties.$router=R,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>F(c)}),kt&&!ae&&c.value===q&&(ae=!0,b(i.location).catch(e=>{}));let t={};for(let e in q)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(wt,R),e.provide(Tt,E(t)),e.provide(Et,c);let n=e.unmount;L.add(e),e.unmount=function(){L.delete(e),L.size<1&&(l=q,te&&te(),te=null,c.value=q,ae=!1,M=!1),n()}}};function z(e){return e.reduce((e,t)=>e.then(()=>w(t)),Promise.resolve())}return R}var dr=[{name:`dashboard`,label:`داشبورد`,path:`/`,icon:`home`},{name:`orders`,label:`سفارش‌ها`,path:`/orders`,icon:`orders`},{name:`customers`,label:`مشتریان و واسطه‌ها`,path:`/customers`,icon:`customers`},{name:`products`,label:`محصولات`,path:`/products`,icon:`products`},{name:`categories`,label:`دسته‌بندی‌ها`,path:`/categories`,icon:`catalogs`},{name:`banners`,label:`بنرها`,path:`/banners`,icon:`image`},{name:`internal-messages`,label:`پیام‌های داخلی`,path:`/internal-messages`,icon:`message`},{name:`catalogs`,label:`کالیته‌ها`,path:`/catalogs`,icon:`catalogs`},{name:`catalog-requests`,label:`درخواست کالیته فیزیکی`,path:`/catalog-requests`,icon:`file`},{name:`brands`,label:`برندها`,path:`/brands`,icon:`building`},{name:`suggestions`,label:`پیشنهاد محصول`,path:`/suggestions`,icon:`cart`},{name:`stock-alerts`,label:`خبر موجودی`,path:`/stock-alerts`,icon:`bell`},{name:`levels`,label:`سطوح مشتری`,path:`/levels`,icon:`users`},{name:`companies`,label:`شرکت‌ها`,path:`/companies`,icon:`companies`},{name:`checks`,label:`چک‌ها`,path:`/checks`,icon:`checks`},{name:`cash-payments`,label:`پرداخت‌های نقدی`,path:`/cash-payments`,icon:`cash`},{name:`shipping`,label:`ارسال و باربری`,path:`/shipping`,icon:`shipping`},{name:`reports`,label:`گزارش‌ها`,path:`/reports`,icon:`reports`},{name:`settings`,label:`تنظیمات`,path:`/settings`,icon:`settings`},{name:`sms-tariff`,label:`تعرفه پیامک‌ها`,path:`/sms-tariff`,icon:`sms`},{name:`users`,label:`کاربران و دسترسی‌ها`,path:`/users`,icon:`users`}],fr=`09128081392`;function pr(e){if(!e)return!1;let t=e.replace(/\D/g,``);return t.startsWith(`98`)&&t.length===12&&(t=`0${t.slice(2)}`),t.length===10&&t.startsWith(`9`)&&(t=`0${t}`),t===fr}function mr(e){return pr(e)?dr:dr.filter(e=>e.name!==`sms-tariff`)}function hr(e,t){if(e===`/`)return t===`/`;if(/^\/orders\/[^/]+\/checks/.test(t)){if(e===`/checks`)return!0;if(e===`/orders`)return!1}return t===e||t.startsWith(`${e}/`)}var Y=D({__name:`AdminIcon`,props:{name:{},size:{default:20},strokeWidth:{default:1.5},color:{default:null}},setup(e){let t=e,n={home:`vuesax-linear:home`,orders:`vuesax-linear:document-text`,customers:`vuesax-linear:profile-2user`,products:`vuesax-linear:box-1`,catalogs:`vuesax-linear:category`,image:`vuesax-linear:category`,companies:`vuesax-linear:buildings`,checks:`vuesax-linear:card-receive`,cash:`vuesax-linear:money-4`,shipping:`vuesax-linear:truck-time`,reports:`vuesax-linear:chart-2`,settings:`vuesax-linear:setting-2`,users:`vuesax-linear:people`,logout:`vuesax-linear:logout`,search:`vuesax-linear:search-normal`,bell:`vuesax-linear:notification`,message:`vuesax-linear:message`,calendar:`vuesax-linear:calendar`,menu:`vuesax-linear:menu`,filter:`vuesax-linear:filter`,more:`vuesax-linear:more`,"chevron-left":`vuesax-linear:arrow-left-1`,"chevron-right":`vuesax-linear:arrow-right-1`,"chevron-back":`vuesax-linear:arrow-right-1`,"chevron-down":`vuesax-linear:arrow-down`,print:`vuesax-linear:printer`,sms:`vuesax-linear:sms`,check:`vuesax-linear:tick-circle`,cart:`vuesax-linear:bag-2`,file:`vuesax-linear:document-text`,wallet:`vuesax-linear:wallet`,"check-circle":`vuesax-linear:tick-circle`,phone:`vuesax-linear:call`,"id-card":`vuesax-linear:personalcard`,lock:`vuesax-linear:lock`,eye:`vuesax-linear:eye`,"eye-off":`vuesax-linear:eye-slash`,user:`vuesax-linear:profile-circle`,building:`vuesax-linear:building`,trash:`vuesax-linear:trash`},r=P(()=>t.name.startsWith(`vuesax-linear:`)?t.name:n[t.name]??`vuesax-linear:info-circle`);return(t,n)=>(k(),A(qe,{icon:r.value,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`icon`,`size`,`stroke-width`,`color`]))}}),X=`fabric-admin-session`,gr=`fabric-admin-token`,_r=!1,vr={phone:`09128081392`,password:`123456`,session:{id:`mock-admin-1`,fullName:`مدیر سیستم (موک)`,phone:`09128081392`,email:`admin@parche.ir`,role:`admin`}};function yr(){try{let e=localStorage.getItem(X)??sessionStorage.getItem(X);return e?JSON.parse(e):null}catch{return null}}function br(e,t){let n=JSON.stringify(e);localStorage.removeItem(X),sessionStorage.removeItem(X),t?localStorage.setItem(X,n):sessionStorage.setItem(X,n)}function xr(){localStorage.removeItem(X),sessionStorage.removeItem(X)}function Sr(){return!!localStorage.getItem(gr)}function Cr(e){return{id:e.id,fullName:e.fullName,phone:e.phone,email:e.email,role:e.role}}function wr(){return yr()}function Tr(){return _r}async function Er(e){let t=e.phone.trim(),n=e.password;if(!t||!n)return{success:!1,message:`شماره موبایل و رمز عبور الزامی است.`};try{let r=await V(`/admin/auth/login`,{method:`POST`,body:{phone:t,password:n},auth:!1});return le(r.accessToken,e.remember),br(Cr(r.user),e.remember),{success:!0}}catch(e){return e instanceof pe?{success:!1,message:e.message}:{success:!1,message:`ورود انجام نشد.`}}}async function Dr(){let e=de();if(!e)return xr(),null;if(e===`mock-admin-token`){let e=yr()??vr.session;return br(e,Sr()),e}try{let e=Cr(await V(`/auth/me`));return br(e,Sr()),e}catch{return le(null),xr(),null}}function Or(){le(null),xr()}var kr=We(`auth`,()=>{let t=e(wr()),n=e(!1),r=e(null),i=P(()=>!!t.value),a=P(()=>t.value?.fullName??``),o=P(()=>t.value?{admin:`مدیر سیستم`,sales:`واحد فروش`,finance:`واحد مالی`,warehouse:`انبار`}[t.value.role]:``);function s(){r.value=null}async function c(){t.value=wr(),t.value=await Dr()}async function l(e,i,a){n.value=!0,r.value=null;let o=await Er({phone:e,password:i,remember:a});return n.value=!1,o.success?(t.value=wr(),!0):(r.value=o.message??`ورود انجام نشد.`,!1)}function u(){Or(),t.value=null,r.value=null}return{session:t,loading:n,error:r,isAuthenticated:i,fullName:a,roleLabel:o,clearError:s,hydrate:c,login:l,logout:u}}),Ar={class:`admin-sidebar`,"aria-label":`ناوبری پنل مدیریت`},jr={class:`admin-sidebar__nav`},Mr=[`onClick`],Nr=I(D({__name:`AdminSidebar`,setup(e){let t=Ot(),r=Dt(),i=kr(),o=P(()=>mr(i.session?.phone));function s(e){r.push(e)}function c(){i.logout(),r.push(`/login`)}return(e,r)=>(k(),T(`aside`,Ar,[w(`div`,{class:`admin-sidebar__brand`},[w(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-sidebar__logo`}),r[0]||=w(`strong`,{class:`admin-sidebar__title`},`پارچه`,-1),r[1]||=w(`span`,{class:`admin-sidebar__subtitle`},`پنل مدیریت`,-1)]),w(`nav`,jr,[(k(!0),T(N,null,f(o.value,e=>(k(),T(`button`,{key:e.name,type:`button`,class:a([`admin-sidebar__item`,{active:F(hr)(e.path,F(t).path)}]),onClick:t=>s(e.path)},[O(Y,{name:e.icon,size:20},null,8,[`name`]),w(`span`,null,n(e.label),1)],10,Mr))),128))]),w(`button`,{type:`button`,class:`admin-sidebar__logout`,onClick:c},[O(Y,{name:`logout`,size:20}),r[2]||=w(`span`,null,`خروج`,-1)])]))}}),[[`__scopeId`,`data-v-a8a62cb5`]]),Pr=new WeakMap,Fr=(...e)=>{let t=e[0],n=x()?.proxy??u();if(n==null&&!C())throw Error(`injectLocal must be called in setup`);return n&&Pr.has(n)&&t in Pr.get(n)?Pr.get(n)[t]:R(...e)},Ir=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Lr=Object.prototype.toString,Rr=e=>Lr.call(e)===`[object Object]`,zr=()=>{},Br=Vr();function Vr(){var e,t;return Ir&&!!((e=window)!=null&&(e=e.navigator)!=null&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)==null||(t=t.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function Hr(...t){if(t.length!==1)return te(...t);let n=t[0];return typeof n==`function`?h(_(()=>({get:n,set:zr}))):e(n)}function Ur(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return`cancel`in e&&Object.assign(n,{cancel:e.cancel,flush:e.flush,isPending:e.isPending}),n}var Wr=e=>e();function Gr(e=Wr,t={}){let{initialState:n=`active`}=t,r=Hr(n===`active`);function i(){r.value=!1}function a(){r.value=!0}return{isActive:ae(r),pause:i,resume:a,eventFilter:(...t)=>{r.value&&e(...t)}}}function Kr(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function qr(e){return Array.isArray(e)?e:[e]}function Jr(e){return e||x()}function Yr(e,t,n={}){let{eventFilter:i=Wr,...a}=n;return r(e,Ur(i,t),a)}function Xr(e,t,n={}){let{eventFilter:r,initialState:i=`active`,...a}=n,{eventFilter:o,pause:s,resume:c,isActive:l}=Gr(r,{initialState:i});return{stop:Yr(e,t,{...a,eventFilter:o}),pause:s,resume:c,isActive:l}}function Zr(e,t=!0,n){Jr(n)?o(e,n):t?e():oe(e)}function Qr(e,t,n){return r(e,t,{...n,immediate:!0})}var $r=Ir?window:void 0;Ir&&window.document,Ir&&window.navigator,Ir&&window.location;function ei(e){let t=M(e);return t?.$el??t}function Z(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=P(()=>{let t=qr(M(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return Qr(()=>[n.value?.map(e=>ei(e))??[$r].filter(e=>e!=null),qr(M(n.value?e[1]:e[0])),qr(F(n.value?e[2]:e[1])),M(n.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=Rr(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}var ti=!1;function ni(e,t,n={}){let{window:r=$r,ignore:i=[],capture:a=!0,detectIframe:o=!1,controls:s=!1}=n;if(!r)return s?{stop:zr,cancel:zr,trigger:zr}:zr;if(Br&&!ti){ti=!0;let e={passive:!0};Array.from(r.document.body.children).forEach(t=>t.addEventListener(`click`,zr,e)),r.document.documentElement.addEventListener(`click`,zr,e)}let c=!0,l=e=>M(i).some(t=>{if(typeof t==`string`)return Array.from(r.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{let n=ei(t);return n&&(e.target===n||e.composedPath().includes(n))}});function u(e){let t=M(e);return t&&t.$.subTree.shapeFlag===16}function d(e,t){let n=M(e),r=n.$.subTree&&n.$.subTree.children;return r==null||!Array.isArray(r)?!1:r.some(e=>e.el===t.target||t.composedPath().includes(e.el))}let f=n=>{let r=ei(e);if(n.target!=null&&!(!(r instanceof Element)&&u(e)&&d(e,n))&&!(!r||r===n.target||n.composedPath().includes(r))){if(`detail`in n&&n.detail===0&&(c=!l(n)),!c){c=!0;return}t(n)}},p=!1,m=[Z(r,`click`,e=>{p||(p=!0,setTimeout(()=>{p=!1},0),f(e))},{passive:!0,capture:a}),Z(r,`pointerdown`,t=>{let n=ei(e);c=!l(t)&&!!(n&&!t.composedPath().includes(n))},{passive:!0}),o&&Z(r,`blur`,n=>{setTimeout(()=>{let i=ei(e),a=r.document.activeElement;for(;a?.shadowRoot;)a=a.shadowRoot.activeElement;a?.tagName===`IFRAME`&&!i?.contains(r.document.activeElement)&&t(n)},0)},{passive:!0})].filter(Boolean),h=()=>m.forEach(e=>e());return s?{stop:h,cancel:()=>{c=!1},trigger:e=>{c=!0,f(e),c=!1}}:h}function ri(){let e=j(!1),t=x();return t&&o(()=>{e.value=!0},t),e}function ii(e){let t=ri();return P(()=>(t.value,!!e()))}var ai=Symbol(`vueuse-ssr-width`);function oi(){let e=C()?Fr(ai,null):null;return typeof e==`number`?e:void 0}function si(e,t={}){let{window:n=$r,ssrWidth:r=oi()}=t,i=ii(()=>n&&`matchMedia`in n&&typeof n.matchMedia==`function`),a=j(typeof r==`number`),o=j(),s=j(!1);return g(()=>{if(a.value){a.value=!i.value;let t=M(e).split(`,`);s.value=t.some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||i);return n&&a&&(a=r>=Kr(n[1])),i&&a&&(a=r<=Kr(i[1])),t?!a:a});return}i.value&&(o.value=n.matchMedia(M(e)),s.value=o.value.matches)}),Z(o,`change`,e=>{s.value=e.matches},{passive:!0}),P(()=>s.value)}var ci=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:{},li=`__vueuse_ssr_handlers__`,ui=di();function di(){return li in ci||(ci[li]=ci[li]||{}),ci[li]}function fi(e,t){return ui[e]||t}function pi(e){return si(`(prefers-color-scheme: dark)`,e)}function mi(e){return e==null?`any`:e instanceof Set?`set`:e instanceof Map?`map`:e instanceof Date?`date`:typeof e==`boolean`?`boolean`:typeof e==`string`?`string`:typeof e==`object`?`object`:Number.isNaN(e)?`any`:`number`}var hi={boolean:{read:e=>e===`true`,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},gi=`vueuse-storage`;function _i(t,n,i,a={}){let{flush:o=`pre`,deep:s=!0,listenToStorageChanges:c=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:d,window:f=$r,eventFilter:p,onError:m=e=>{console.error(e)},initOnMounted:h}=a,g=(d?j:e)(typeof n==`function`?n():n),_=P(()=>M(t));if(!i)try{i=fi(`getDefaultStorage`,()=>$r?.localStorage)()}catch(e){m(e)}if(!i)return g;let v=M(n),y=mi(v),b=a.serializer??hi[y],{pause:x,resume:ee}=Xr(g,e=>w(e),{flush:o,deep:s,eventFilter:p});r(_,()=>E(),{flush:o});let S=!1;f&&c&&(i instanceof Storage?Z(f,`storage`,e=>{h&&!S||E(e)},{passive:!0}):Z(f,gi,e=>{h&&!S||D(e)})),h?Zr(()=>{S=!0,E()}):E();function C(e,t){if(f){let n={key:_.value,oldValue:e,newValue:t,storageArea:i};f.dispatchEvent(i instanceof Storage?new StorageEvent(`storage`,n):new CustomEvent(gi,{detail:n}))}}function w(e){try{let t=i.getItem(_.value);if(e==null)C(t,null),i.removeItem(_.value);else{let n=b.write(e);t!==n&&(i.setItem(_.value,n),C(t,n))}}catch(e){m(e)}}function T(e){let t=e?e.newValue:i.getItem(_.value);if(t==null)return l&&v!=null&&i.setItem(_.value,b.write(v)),v;if(!e&&u){let e=b.read(t);return typeof u==`function`?u(e,v):y===`object`&&!Array.isArray(e)?{...v,...e}:e}return typeof t==`string`?b.read(t):t}function E(e){if(!(e&&e.storageArea!==i)){if(e&&e.key==null){g.value=v;return}if(!(e&&e.key!==_.value)){x();try{let t=b.write(g.value);(e===void 0||e?.newValue!==t)&&(g.value=T(e))}catch(e){m(e)}finally{e?oe(ee):ee()}}}}function D(e){E(e.detail)}return g}function vi(e){return{...e,status:e.adminStatus??e.status,rawStatus:e.status,allowedTransitions:e.allowedTransitions??[],settlementMethod:e.settlementMethod??e.settlementType??null,meterage:e.meterage??e.totalMeterage??0}}function yi(e){return e.trim().toLowerCase().replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,``).replace(/-+/g,`-`).replace(/^-|-$/g,``)||`c-${Date.now()}`}var bi={list:e=>V(`/companies`,{query:{activeOnly:e?`true`:void 0}}),get:e=>V(`/companies/${e}`),create:e=>V(`/companies`,{body:e}),update:(e,t)=>V(`/companies/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>V(`/companies/${e}/active`,{method:`PATCH`,body:{isActive:t}})},xi={listByCompany:e=>V(`/companies/${e}/bank-accounts`),create:(e,t)=>V(`/companies/${e}/bank-accounts`,{body:t}),update:(e,t)=>V(`/bank-accounts/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>V(`/bank-accounts/${e}/active`,{method:`PATCH`,body:{isActive:t}})},Si={list:e=>V(`/catalogs`,{query:{companyId:e?.companyId,activeOnly:e?.activeOnly?`true`:void 0}}),create:e=>V(`/catalogs`,{body:e}),update:(e,t)=>V(`/catalogs/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>V(`/catalogs/${e}/active`,{method:`PATCH`,body:{isActive:t}})},Ci={list:e=>V(`/products`,{query:{catalogId:e?.catalogId,companyId:e?.companyId,activeOnly:e?.activeOnly?`true`:void 0}}),create:e=>V(`/products`,{body:e,timeoutMs:9e4}),update:(e,t)=>V(`/products/${e}`,{method:`PATCH`,body:t,timeoutMs:9e4}),setActive:(e,t)=>V(`/products/${e}/active`,{method:`PATCH`,body:{isActive:t}})},wi={list:(e,t)=>V(`/admin/customers`,{query:{q:e,appRole:t}}),create:e=>V(`/admin/customers`,{body:e}),update:(e,t)=>V(`/admin/customers/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>V(`/admin/customers/${e}/active`,{method:`PATCH`,body:{isActive:t}})},Ti={list:e=>V(`/admin/orders`,{query:{status:e?.status,q:e?.q}}),get:e=>V(`/admin/orders/${e}`),create:e=>V(`/admin/orders`,{body:e}),updatePricing:(e,t)=>V(`/admin/orders/${e}/pricing`,{method:`PATCH`,body:t}),updateStatus:(e,t)=>V(`/admin/orders/${e}/status`,{method:`PATCH`,body:t})},Ei={list:e=>V(`/admin/checks`,{query:{status:e}}),listByOrder:e=>V(`/admin/orders/${e}/checks`),updateStatus:(e,t)=>V(`/admin/checks/${e}/status`,{method:`PATCH`,body:t})},Di={list:e=>V(`/admin/cash-payments`,{query:{status:e}}),updateStatus:(e,t)=>V(`/admin/cash-payments/${e}/status`,{method:`PATCH`,body:t})},Oi={list:e=>V(`/admin/shipments`,{query:{status:e}}),create:e=>V(`/admin/shipments`,{body:e}),update:(e,t)=>V(`/admin/shipments/${e}`,{method:`PATCH`,body:t}),advanceStatus:(e,t)=>V(`/admin/shipments/${e}/status`,{method:`PATCH`,body:t??{}})},ki={list:()=>V(`/admin/users`),create:e=>V(`/admin/users`,{body:e}),update:(e,t)=>V(`/admin/users/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>V(`/admin/users/${e}/active`,{method:`PATCH`,body:{isActive:t}})},Ai={get:()=>V(`/admin/dashboard`),reports:()=>V(`/admin/reports`)},ji={get:()=>V(`/admin/settings`),update:e=>V(`/admin/settings`,{method:`PATCH`,body:e})},Mi={markRead:e=>V(`/admin/notifications/${e}/read`,{method:`PATCH`}),markAllRead:()=>V(`/admin/notifications/read-all`,{method:`PATCH`}),broadcast:e=>V(`/admin/notifications/broadcast`,{method:`POST`,body:e})},Ni={list:()=>V(`/admin/internal-messages`),create:e=>V(`/admin/internal-messages`,{body:e}),update:(e,t)=>V(`/admin/internal-messages/${e}`,{method:`PATCH`,body:t}),remove:e=>V(`/admin/internal-messages/${e}`,{method:`DELETE`}),markRead:e=>V(`/admin/internal-messages/${e}/read`,{method:`PATCH`}),markAllRead:()=>V(`/admin/internal-messages/read-all`,{method:`PATCH`})},Pi={list:e=>V(`/admin/catalog-requests`,{query:{status:e}}),updateStatus:(e,t)=>V(`/admin/catalog-requests/${e}/status`,{method:`PATCH`,body:{status:t}}),updateHolder:(e,t)=>V(`/admin/catalog-request-items/${e}/holder`,{method:`PATCH`,body:t})},Fi={list:e=>V(`/admin/banners`,{query:{slot:e}}),create:e=>V(`/admin/banners`,{body:e}),update:(e,t)=>V(`/admin/banners/${e}`,{method:`PATCH`,body:t}),remove:e=>V(`/admin/banners/${e}`,{method:`DELETE`})},Ii={list:()=>V(`/admin/brands`),create:e=>V(`/admin/brands`,{body:e}),update:(e,t)=>V(`/admin/brands/${e}`,{method:`PATCH`,body:t})},Li={list:()=>V(`/admin/levels`),create:e=>V(`/admin/levels`,{body:e}),update:(e,t)=>V(`/admin/levels/${e}`,{method:`PATCH`,body:t})},Ri={list:e=>V(`/admin/suggestions`,{query:{customerId:e}}),create:e=>V(`/admin/suggestions`,{body:e}),setActive:(e,t)=>V(`/admin/suggestions/${e}/active`,{method:`PATCH`,body:{isActive:t}})},zi={list:()=>V(`/admin/stock-alerts`),notify:e=>V(`/admin/stock-alerts/${e}/notify`,{method:`PATCH`})},Bi={summary:()=>V(`/admin/sms-wallet`),manage:()=>V(`/admin/sms-wallet/manage`),update:e=>V(`/admin/sms-wallet`,{method:`PATCH`,body:e}),charge:e=>V(`/admin/sms-wallet/charge`,{body:e})},Vi=e(null);function Hi(){async function e(){Vi.value=await Bi.summary()}return{summary:Vi,refresh:e}}var Ui=`۰۱۲۳۴۵۶۷۸۹`,Wi=new Intl.NumberFormat(`fa-IR`,{useGrouping:!0});function Gi(e){return e.replace(/[۰-۹]/g,e=>String(Ui.indexOf(e)))}function Ki(e){return Gi(e).replace(/[^\d]/g,``)}function qi(e){return Number.isFinite(e)?Wi.format(e):`—`}function Ji(e){return`${qi(e)} تومان`}function Yi(e){return`${qi(e)} متر`}function Xi(e){return String(e).replace(/\d/g,e=>Ui[Number(e)])}var Zi=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`}),Qi=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`});function $i(e){let t=Gi(e.trim()).replace(/-/g,`/`).match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/);if(!t)return!1;let n=Number(t[1]);return n>=1300&&n<=1500}function ea(e){if(typeof e!=`string`)return e;let t=e.trim(),n=t.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(n&&Number(n[1])>=1700)return new Date(Number(n[1]),Number(n[2])-1,Number(n[3]));let r=new Date(t);return Number.isNaN(r.getTime())?new Date(NaN):r}function ta(e){if(!e)return`—`;if(typeof e==`string`&&$i(e)){let t=Gi(e.trim()).replace(/-/g,`/`),n=t.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/);if(!n)return Xi(t);let[,r,i,a]=n;return Xi(`${r}/${i.padStart(2,`0`)}/${a.padStart(2,`0`)}`)}let t=ea(e);return Number.isNaN(t.getTime())?`—`:Zi.format(t)}function na(e){if(!e)return`—`;if(typeof e==`string`&&$i(e)&&!/[T\s]\d/.test(e))return ta(e);let t=ea(e);return Number.isNaN(t.getTime())?`—`:Qi.format(t)}var ra=/ORD-?\d{2,4}-?\d{2,6}/i,ia=/^\/?(?:admin\/)?orders\/([^/?#]+)\/?$/i,aa=/^\/?(?:admin\/)?orders\/([^/?#]+)\/(pricing|checks)\/?$/i;function oa(e){let t=e.match(ra);if(!t?.[0])return null;let n=t[0].toUpperCase().replace(/^ORD-?/,``).replace(/-/g,``);return n.length<6?t[0].toUpperCase():`ORD-${n.slice(0,4)}-${n.slice(4)}`}function Q(e,t){return t.some(t=>t.test(e))}function sa(e){let t=e.trim();if(!t)return t;try{if(/^https?:\/\//i.test(t)){let e=new URL(t);t=`${e.pathname}${e.search}`}}catch{}t=t.replace(/^\/admin(?=\/)/,``),t.startsWith(`/`)||(t=`/${t}`);let n=t.match(aa);if(n?.[1]&&n[2])return`/orders/${n[1]}/${n[2]}`;let r=t.match(ia);return r?.[1]?`/orders?order=${encodeURIComponent(r[1])}`:t}function ca(e){let t=e.link?.trim();if(t)return sa(t);let n=`${e.title?.trim()??``} ${e.body?.trim()??``}`,r=e.orderId?.trim()||null,i=oa(n),a=Q(n,[/پیامک/]),o=Q(n,[/چک/]),s=Q(n,[/قیمت/,/تخفیف/,/پیش[‌\s]?فاکتور/,/قیمت‌گذاری/,/اصلاح قیمت/]),c=!a&&Q(n,[/ارسال/,/باربری/,/حمل/,/بارنامه/]),l=Q(n,[/نقدی/,/پرداخت نقد/,/رسید پرداخت/]),u=Q(n,[/گزارش/]),d=Q(n,[/مشتری جدید/,/ثبت مشتری/]),f=Q(n,[/کالیته/]),p=Q(n,[/محصول/]),m=Q(n,[/شرکت/,/حساب بانکی/]),h=Q(n,[/سفارش/]),g=a||Q(n,[/پشتیبان/,/تنظیمات/]);return r?o?`/orders/${r}/checks`:s?`/orders/${r}/pricing`:c?`/shipping?order=${encodeURIComponent(r)}`:l?`/cash-payments?order=${encodeURIComponent(r)}`:`/orders?order=${encodeURIComponent(r)}`:i?o?`/orders?order=${encodeURIComponent(i)}&focus=checks`:s?`/orders?order=${encodeURIComponent(i)}&focus=pricing`:c?`/shipping?order=${encodeURIComponent(i)}`:l?`/cash-payments?order=${encodeURIComponent(i)}`:`/orders?order=${encodeURIComponent(i)}`:o?`/checks`:c?`/shipping`:l?`/cash-payments`:u?`/reports`:d?`/customers`:f?`/catalogs`:p?`/products`:m?`/companies`:g?`/settings`:s||h?`/orders`:null}function la(e){return e.replace(/\D/g,``).replace(/(\d{4})(?=\d)/g,`$1 `).trim()}function ua(e){let t=e.replace(/[\s-]/g,``).toUpperCase(),n=t.startsWith(`IR`)?t.slice(2):t;if(n.length<2)return t;let r=n.slice(2).replace(/(.{4})/g,`$1 `).trim();return`IR${n.slice(0,2)} ${r}`.trim()}var da=We(`theme`,()=>{let e=_i(`ft_admin_theme`,`system`),t=pi(),n=P(()=>e.value===`system`?t.value?`dark`:`light`:e.value),r=P(()=>n.value===`dark`);g(()=>{let e=document.documentElement;e.classList.toggle(`dark`,r.value),e.style.colorScheme=n.value});function i(t){e.value=t}return{preference:e,resolved:n,isDark:r,setPreference:i}}),fa={class:`admin-header`},pa={class:`admin-header__right`},ma=[`disabled`],ha={key:0},ga={class:`admin-header__dropdown`},_a=[`aria-label`,`aria-expanded`],va={key:0,class:`admin-header__badge`,"aria-hidden":`true`},ya={class:`admin-header__panel-header`},ba={key:0,class:`admin-header__panel-list`},xa=[`onClick`],Sa={class:`admin-header__panel-item-top`},Ca=[`datetime`],wa={class:`admin-header__panel-item-sender`},Ta={class:`admin-header__panel-item-body`},Ea={key:1,class:`admin-header__panel-empty`},Da={class:`admin-header__dropdown`},Oa=[`aria-label`,`aria-expanded`],ka={key:0,class:`admin-header__badge`,"aria-hidden":`true`},Aa={class:`admin-header__panel-header`},ja={key:0,class:`admin-header__panel-list`},Ma=[`onClick`],Na={class:`admin-header__panel-item-top`},Pa=[`datetime`],Fa={class:`admin-header__panel-item-body`},Ia={key:1,class:`admin-header__panel-empty`},La={class:`admin-header__dropdown`},Ra=[`aria-label`,`aria-expanded`],za={class:`admin-header__theme-glyph`,"aria-hidden":`true`},Ba={class:`admin-header__theme-list`},Va=[`onClick`],Ha={class:`admin-header__theme-option-icon`,"aria-hidden":`true`},Ua={class:`admin-header__theme-option-label`},Wa={class:`admin-header__user`},Ga={class:`admin-header__avatar`},Ka={class:`admin-header__user-info`},qa={key:0,class:`sms-charge`},Ja={class:`sms-charge__row`},Ya={dir:`ltr`},Xa={class:`sms-charge__row`},Za={dir:`ltr`},Qa={class:`sms-charge__name`},$a=I(D({__name:`AdminHeader`,emits:[`menuClick`],setup(t){let r=Dt(),i=kr(),s=da(),l=se(),{summary:u,refresh:d}=Hi(),p=e(!1),m=e(null),h=e(null),g=e([]),_=e([]),v=P(()=>g.value.filter(e=>!e.isRead).length),y=P(()=>_.value.filter(e=>!e.isRead).length),b=[{value:`light`,label:`روشن`,icon:`vuesax-linear:sun-1`},{value:`dark`,label:`تاریک`,icon:`vuesax-linear:moon`},{value:`system`,label:`سیستم`,icon:`vuesax-linear:mobile`}],x=P(()=>b.find(e=>e.value===s.preference)?.label??`سیستم`),ee=P(()=>b.find(e=>e.value===s.preference)?.icon??`vuesax-linear:sun-1`);Ai.get().then(e=>{g.value=e.messages??[],_.value=e.notifications??[]}).catch(()=>{g.value=[],_.value=[]}),ni(h,()=>{m.value=null}),Z(document,`keydown`,e=>{e.key===`Escape`&&(m.value=null)});function S(e){m.value=m.value===e?null:e}function C(){m.value=null}function E(e){e.isRead||(e.isRead=!0,Ni.markRead(e.id).catch(()=>{e.isRead=!1}))}function D(e){e.isRead||(e.isRead=!0,Mi.markRead(e.id).catch(()=>{e.isRead=!1}))}function te(){let e=g.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),Ni.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function j(){let e=_.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),Mi.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function M(e){C(),e&&r.push(e)}function re(e){E(e),M(ca({link:e.link||void 0,orderId:e.orderId,title:e.subject,body:e.preview}))}function ie(e){D(e),M(ca({link:e.link,orderId:e.orderId,title:e.title,body:e.body}))}function I(e){s.setPreference(e),C()}let ae=P(()=>{let e=u.value;return e?e.blocked||e.balanceToman<=e.redThreshold?`danger`:e.balanceToman<=e.yellowThreshold?`warn`:`ok`:`ok`});function oe(){d().catch(()=>{})}o(oe),Z(window,`focus`,oe);async function R(e){try{await navigator.clipboard.writeText(e.replace(/\s/g,``)),l.success(`کپی شد.`)}catch{l.error(`کپی انجام نشد.`)}}return(e,t)=>(k(),T(N,null,[w(`header`,fa,[w(`div`,pa,[w(`button`,{type:`button`,class:`admin-header__menu-btn compact-only`,"aria-label":`باز کردن منو`,onClick:t[0]||=t=>e.$emit(`menuClick`)},[O(Y,{name:`menu`,size:22})])]),w(`div`,{ref_key:`actionsRef`,ref:h,class:`admin-header__left`},[w(`div`,{class:a([`sms-credit`,F(u)?`sms-credit--${ae.value}`:``])},[w(`button`,{type:`button`,class:`sms-credit__charge`,disabled:!F(u),onClick:t[1]||=e=>p.value=!0},` شارژ `,8,ma),w(`span`,null,`اعتبار پیامک: `+n(F(u)?F(qi)(F(u).balanceRial):`—`)+` ریال`,1),F(u)?.blocked?(k(),T(`span`,ha,`مسدود`)):L(``,!0)],2),w(`div`,ga,[w(`button`,{type:`button`,class:a([`admin-header__icon-btn`,{"admin-header__icon-btn--active":m.value===`messages`}]),title:`پیام‌های داخلی`,"aria-label":`پیام‌های داخلی — ${v.value} پیام خوانده‌نشده`,"aria-expanded":m.value===`messages`,"aria-haspopup":`true`,onClick:t[2]||=B(e=>S(`messages`),[`stop`])},[O(Y,{name:`message`,size:22}),v.value?(k(),T(`span`,va,n(v.value),1)):L(``,!0),t[11]||=w(`span`,{class:`admin-header__icon-label`},`پیام`,-1)],10,_a),m.value===`messages`?(k(),T(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`پیام‌های داخلی`,onClick:t[3]||=B(()=>{},[`stop`])},[w(`div`,ya,[t[12]||=w(`h2`,{class:`admin-header__panel-title`},`پیام‌های داخلی`,-1),v.value?(k(),T(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:te},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):L(``,!0)]),g.value.length?(k(),T(`ul`,ba,[(k(!0),T(N,null,f(g.value,e=>(k(),T(`li`,{key:e.id,class:a([`admin-header__panel-item`,{unread:!e.isRead}])},[w(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>re(e)},[w(`span`,Sa,[w(`strong`,null,n(e.subject),1),w(`time`,{datetime:e.sentAt},n(F(na)(e.sentAt)),9,Ca)]),w(`span`,wa,`از `+n(e.senderName),1),w(`span`,Ta,n(e.preview),1)],8,xa)],2))),128))])):(k(),T(`p`,Ea,`پیامی وجود ندارد.`))])):L(``,!0)]),w(`div`,Da,[w(`button`,{type:`button`,class:a([`admin-header__icon-btn`,{"admin-header__icon-btn--active":m.value===`notifications`}]),title:`اعلان‌ها`,"aria-label":`اعلان‌ها — ${y.value} اعلان جدید`,"aria-expanded":m.value===`notifications`,"aria-haspopup":`true`,onClick:t[4]||=B(e=>S(`notifications`),[`stop`])},[O(Y,{name:`bell`,size:22}),y.value?(k(),T(`span`,ka,n(y.value),1)):L(``,!0),t[13]||=w(`span`,{class:`admin-header__icon-label`},`اعلان`,-1)],10,Oa),m.value===`notifications`?(k(),T(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`اعلان‌ها`,onClick:t[5]||=B(()=>{},[`stop`])},[w(`div`,Aa,[t[14]||=w(`h2`,{class:`admin-header__panel-title`},`اعلان‌ها`,-1),y.value?(k(),T(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:j},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):L(``,!0)]),_.value.length?(k(),T(`ul`,ja,[(k(!0),T(N,null,f(_.value,e=>(k(),T(`li`,{key:e.id,class:a([`admin-header__panel-item`,[{unread:!e.isRead},e.tone?`admin-header__panel-item--${e.tone}`:``]])},[w(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>ie(e)},[w(`span`,Na,[w(`strong`,null,n(e.title),1),w(`time`,{datetime:e.sentAt},n(F(na)(e.sentAt)),9,Pa)]),w(`span`,Fa,n(e.body),1)],8,Ma)],2))),128))])):(k(),T(`p`,Ia,`اعلانی وجود ندارد.`))])):L(``,!0)]),w(`div`,La,[w(`button`,{type:`button`,class:a([`admin-header__icon-btn`,{"admin-header__icon-btn--active":m.value===`theme`}]),title:`حالت نمایش`,"aria-label":`حالت نمایش — ${x.value}`,"aria-expanded":m.value===`theme`,"aria-haspopup":`true`,onClick:t[6]||=B(e=>S(`theme`),[`stop`])},[w(`span`,za,[O(qe,{icon:ee.value,size:20,"stroke-width":1.5},null,8,[`icon`])]),t[15]||=w(`span`,{class:`admin-header__icon-label`},`تم`,-1)],10,Ra),m.value===`theme`?(k(),T(`div`,{key:0,class:`admin-header__panel admin-header__panel--theme`,role:`dialog`,"aria-label":`انتخاب حالت نمایش`,onClick:t[7]||=B(()=>{},[`stop`])},[t[16]||=w(`div`,{class:`admin-header__panel-header`},[w(`h2`,{class:`admin-header__panel-title`},`حالت نمایش`)],-1),w(`ul`,Ba,[(k(),T(N,null,f(b,e=>w(`li`,{key:e.value},[w(`button`,{type:`button`,class:a([`admin-header__theme-option`,{"admin-header__theme-option--active":F(s).preference===e.value}]),onClick:t=>I(e.value)},[w(`span`,Ha,[O(qe,{icon:e.icon,size:18,"stroke-width":1.5},null,8,[`icon`])]),w(`span`,Ua,n(e.label),1),F(s).preference===e.value?(k(),A(qe,{key:0,class:`admin-header__theme-option-check`,icon:`vuesax-linear:tick-circle`,size:16,"stroke-width":1.75})):L(``,!0)],10,Va)])),64))])])):L(``,!0)]),w(`div`,Wa,[w(`div`,Ga,n(F(i).fullName.charAt(0)||`؟`),1),w(`div`,Ka,[w(`strong`,null,n(F(i).fullName||`مدیر`),1),w(`span`,null,n(F(i).roleLabel||`پنل مدیریت`),1)])])],512)]),O(it,{open:p.value,title:`شارژ اعتبار پیامک`,onClose:t[10]||=e=>p.value=!1},{default:c(()=>[F(u)?(k(),T(`div`,qa,[t[20]||=w(`p`,{class:`sms-charge__note`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید. `,-1),w(`div`,Ja,[w(`button`,{type:`button`,class:`sms-charge__copy`,onClick:t[8]||=e=>R(F(u).deposit.cardNumber)},` کپی `),w(`div`,null,[t[17]||=w(`span`,null,`شماره کارت`,-1),w(`strong`,Ya,n(F(Xi)(F(la)(F(u).deposit.cardNumber))),1)])]),w(`div`,Xa,[w(`button`,{type:`button`,class:`sms-charge__copy sms-charge__copy--sheba`,onClick:t[9]||=e=>R(F(u).deposit.sheba)},` کپی `),w(`div`,null,[t[18]||=w(`span`,null,`شماره شبا`,-1),w(`strong`,Za,n(F(Xi)(F(ua)(F(u).deposit.sheba))),1)])]),w(`p`,Qa,[t[19]||=ne(` به نام `,-1),w(`strong`,null,n(F(u).deposit.accountName),1)])])):L(``,!0)]),_:1},8,[`open`])],64))}}),[[`__scopeId`,`data-v-a733eff3`]]),eo=[`aria-hidden`],to={class:`admin-drawer__brand`},no={class:`admin-drawer__nav`},ro=[`onClick`],io=I(D({__name:`AdminMobileDrawer`,props:{open:{type:Boolean}},emits:[`close`],setup(e,{emit:t}){let r=t,i=Ot(),o=Dt(),s=kr(),c=P(()=>mr(s.session?.phone));function l(e){o.push(e),r(`close`)}function u(){s.logout(),o.push(`/login`),r(`close`)}return(t,o)=>(k(),T(N,null,[w(`div`,{class:a([`admin-drawer-backdrop`,{open:e.open}]),role:`presentation`,onClick:o[0]||=e=>r(`close`)},null,2),w(`aside`,{class:a([`admin-drawer`,{open:e.open}]),"aria-label":`منوی ناوبری`,"aria-hidden":!e.open},[w(`div`,to,[w(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-drawer__logo`}),o[2]||=w(`strong`,null,`پارچه`,-1),o[3]||=w(`span`,null,`پنل مدیریت`,-1),w(`button`,{type:`button`,class:`admin-drawer__close`,"aria-label":`بستن منو`,onClick:o[1]||=e=>r(`close`)},` × `)]),w(`nav`,no,[(k(!0),T(N,null,f(c.value,e=>(k(),T(`button`,{key:e.name,type:`button`,class:a([`admin-drawer__item`,{active:F(hr)(e.path,F(i).path)}]),onClick:t=>l(e.path)},[O(Y,{name:e.icon,size:20},null,8,[`name`]),w(`span`,null,n(e.label),1)],10,ro))),128))]),w(`button`,{type:`button`,class:`admin-drawer__logout`,onClick:u},[O(Y,{name:`logout`,size:20}),o[4]||=w(`span`,null,`خروج`,-1)])],10,eo)],64))}}),[[`__scopeId`,`data-v-72a66f9e`]]),ao={class:`admin-shell`},oo={class:`admin-shell__main`},so={class:`admin-shell__content`},co=I(D({__name:`AdminShell`,setup(t){let n=Ot(),i=e(!1);function a(){i.value=!0}function o(){i.value=!1}return r(()=>n.path,()=>{i.value=!1}),(e,t)=>{let n=m(`RouterView`);return k(),T(`div`,ao,[O(Nr,{class:`desktop-only admin-shell__sidebar`}),O(io,{open:i.value,onClose:o},null,8,[`open`]),w(`div`,oo,[O($a,{onMenuClick:a}),w(`main`,so,[O(n)])])])}}}),[[`__scopeId`,`data-v-435fffac`]]),lo=`modulepreload`,uo=function(e){return`/admin/`+e},fo={},$=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=uo(t,n),t=s(t),t in fo)return;fo[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:lo,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},po=ur({history:Mn(`/admin/`),routes:[{path:`/login`,name:`login`,component:()=>$(()=>import(`./LoginView-Cv7dE8jp.js`),__vite__mapDeps([0,1,2,3])),meta:{public:!0,title:`ورود به پنل مدیریت`}},{path:`/`,component:co,meta:{requiresAuth:!0},children:[{path:``,name:`dashboard`,component:()=>$(()=>import(`./DashboardView-BTmX0Wl1.js`),__vite__mapDeps([4,1,2,5,6,7,8])),meta:{title:`داشبورد مدیریتی`}},{path:`orders`,name:`orders`,component:()=>$(()=>import(`./OrdersView-BCieQtX2.js`),__vite__mapDeps([9,1,2,10,11,12,13,14,6,5,7,15])),meta:{title:`سفارش‌ها`}},{path:`orders/:id/pricing`,name:`order-pricing`,component:()=>$(()=>import(`./OrderPricingView-BqbturHp.js`),__vite__mapDeps([16,1,2,17,18,10,11,6,5,7,19,20,21])),meta:{title:`قیمت‌گذاری سفارش`}},{path:`checks`,name:`checks`,component:()=>$(()=>import(`./ChecksListView-AdYVIsnM.js`),__vite__mapDeps([22,1,2,17,18,10,11,5,6,7,23])),meta:{title:`چک‌ها`}},{path:`orders/:id/checks`,name:`order-checks`,component:()=>$(()=>import(`./CheckManagementView-CRZVQ55a.js`),__vite__mapDeps([24,1,2,6,5,7,25])),meta:{title:`مدیریت چک‌های سفارش`}},{path:`orders/:id`,name:`order-detail`,redirect:e=>({name:`orders`,query:{order:String(e.params.id)}})},{path:`companies`,name:`companies`,component:()=>$(()=>import(`./CompaniesView-BIglXTeb.js`),__vite__mapDeps([26,1,2,17,18,27,28,29,30,31,32])),meta:{title:`مدیریت شرکت‌ها`}},{path:`companies/:companyId/accounts`,name:`bank-accounts`,component:()=>$(()=>import(`./BankAccountsView-CkbL3HvV.js`),__vite__mapDeps([33,1,2,27,28,29,30,31,34])),meta:{title:`حساب‌های بانکی`}},{path:`customers`,name:`customers`,component:()=>$(()=>import(`./CustomersView-DPDC8LXM.js`),__vite__mapDeps([35,1,2,17,18,27,28,29,30,10,11,14,31,36])),meta:{title:`مشتریان و واسطه‌ها`}},{path:`products`,name:`products`,component:()=>$(()=>import(`./ProductsView-CReNQodS.js`),__vite__mapDeps([37,1,2,17,18,27,28,29,30,38,39,10,11,31,19,20,40])),meta:{title:`محصولات`}},{path:`categories`,name:`categories`,component:()=>$(()=>import(`./CategoriesView-D_1HbWj9.js`),__vite__mapDeps([41,1,2,17,18,27,28,38,39,10,11,42])),meta:{title:`دسته‌بندی‌ها`}},{path:`banners`,name:`banners`,component:()=>$(()=>import(`./BannersView-nv4M7RNj.js`),__vite__mapDeps([43,1,2,17,18,27,28,29,30,38,39,10,11,44])),meta:{title:`بنرها`}},{path:`internal-messages`,name:`internal-messages`,component:()=>$(()=>import(`./InternalMessagesView-BL4mP-qn.js`),__vite__mapDeps([45,1,2,17,18,29,30,46])),meta:{title:`پیام‌های داخلی`}},{path:`catalogs`,name:`catalogs`,component:()=>$(()=>import(`./CatalogsView-CErlF6z4.js`),__vite__mapDeps([47,1,2,17,18,27,28,29,30,38,39,10,11,31,48])),meta:{title:`کالیته‌ها`}},{path:`catalog-requests`,name:`catalog-requests`,component:()=>$(()=>import(`./CatalogRequestsView-DXqH8XSn.js`),__vite__mapDeps([49,1,2,17,18,29,30,10,11,50])),meta:{title:`درخواست کالیته فیزیکی`}},{path:`brands`,name:`brands`,component:()=>$(()=>import(`./BrandsView-C7Jx2472.js`),__vite__mapDeps([51,1,2,17,18,27,28,29,30,52])),meta:{title:`برندها`}},{path:`suggestions`,name:`suggestions`,component:()=>$(()=>import(`./SuggestionsView-DhHRi7XZ.js`),__vite__mapDeps([53,1,2,17,18,29,30,10,11,54])),meta:{title:`پیشنهاد محصول`}},{path:`stock-alerts`,name:`stock-alerts`,component:()=>$(()=>import(`./StockAlertsView-Vd1IBphB.js`),__vite__mapDeps([55,1,2,17,18,29,30,56])),meta:{title:`خبر موجودی`}},{path:`levels`,name:`levels`,component:()=>$(()=>import(`./LevelsView-BT4Elzxf.js`),__vite__mapDeps([57,1,2,17,18,29,30,58])),meta:{title:`سطوح مشتری`}},{path:`cash-payments`,name:`cash-payments`,component:()=>$(()=>import(`./CashPaymentsView-BDQ_HOSo.js`),__vite__mapDeps([59,1,2,17,18,10,11,12,13,14,60])),meta:{title:`پرداخت‌های نقدی`}},{path:`shipping`,name:`shipping`,component:()=>$(()=>import(`./ShippingView-BkidKjch.js`),__vite__mapDeps([61,1,2,17,18,10,11,14,6,62])),meta:{title:`ارسال و باربری`}},{path:`reports`,name:`reports`,component:()=>$(()=>import(`./ReportsView-mBlbgBE5.js`),__vite__mapDeps([63,1,2,17,18,64])),meta:{title:`گزارش‌ها`}},{path:`settings`,name:`settings`,component:()=>$(()=>import(`./SettingsView-CKijJhFP.js`),__vite__mapDeps([65,1,2,17,18,66])),meta:{title:`تنظیمات`}},{path:`sms-tariff`,name:`sms-tariff`,component:()=>$(()=>import(`./SmsTariffView-BQ0goHy2.js`),__vite__mapDeps([67,1,2,17,18,27,28,19,20,68])),meta:{title:`تعرفه پیامک‌ها`,smsWalletOwner:!0}},{path:`users`,name:`users`,component:()=>$(()=>import(`./UsersView-By1IH79j.js`),__vite__mapDeps([69,1,2,17,18,27,28,29,30,10,11,14,31,70])),meta:{title:`کاربران و دسترسی‌ها`}}]},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>$(()=>import(`./NotFoundView-DBzokouR.js`),__vite__mapDeps([71,1,72]))}]});po.beforeEach(async e=>{let t=kr();return await t.hydrate(),e.meta.public?t.isAuthenticated&&e.name===`login`?{name:`dashboard`}:!0:e.matched.some(e=>e.meta.requiresAuth)&&!t.isAuthenticated?{name:`login`,query:{redirect:e.fullPath}}:e.meta.smsWalletOwner&&!pr(t.session?.phone)?{name:`dashboard`}:!0});var mo=fe(mt),ho=je();mo.use(ho),mo.use(po),da(ho),kr(ho).hydrate(),mo.mount(`#app`),`serviceWorker`in navigator&&window.addEventListener(`load`,()=>{navigator.serviceWorker.register(`/admin/sw.js`,{scope:`/admin/`})});export{Bi as A,Dt as B,vi as C,ji as D,Ci as E,kr as F,it as H,vr as I,Tr as L,Ri as M,ni as N,Oi as O,si as P,Y as R,Li as S,Ti as T,qe as U,ot as V,Ei as _,ta as a,Ai as b,qi as c,xi as d,Fi as f,Si as g,Pi as h,Ji as i,zi as j,yi as k,Hi as l,Di as m,ua as n,na as o,Ii as p,Ki as r,Yi as s,la as t,ki as u,bi as v,Mi as w,Ni as x,wi as y,Ot as z}; \ No newline at end of file diff --git a/dist/assets/index-SWzbcuqQ.js b/dist/assets/index-SWzbcuqQ.js new file mode 100644 index 0000000..bc1ea4d --- /dev/null +++ b/dist/assets/index-SWzbcuqQ.js @@ -0,0 +1,382 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-Z5zCxTv8.js","assets/_plugin-vue_export-helper-QrIvvHC8.js","assets/http-BjLkjdQu.js","assets/LoginView-D9TVA-2V.css","assets/DashboardView-Dd0CgoV5.js","assets/StatusBadge-jGFZVW4C.js","assets/orderStatus-CeC05Cv4.js","assets/StatusBadge-D4wGJ-Ud.css","assets/DashboardView-CFmOMgpM.css","assets/OrdersView-Di_Bxuhp.js","assets/AdminSelect-6a7SFr9x.js","assets/AdminSelect-DRq_EKw9.css","assets/AdminImageLightbox-CE3ZJ5-o.js","assets/AdminImageLightbox-DHLeZ8xo.css","assets/adminLabels-Cz9ccm1Z.js","assets/OrdersView-DGF4rYB0.css","assets/OrderPricingView-Ba_MCwwk.js","assets/AdminPageSkeleton-oWhHYjl4.js","assets/AdminPageSkeleton-Gm3IJwUK.css","assets/AdminCurrencyInput-BGwf-fv_.js","assets/AdminCurrencyInput-QPh70it7.css","assets/OrderPricingView-4hixJcG6.css","assets/ChecksListView-CCsj1dMX.js","assets/ChecksListView-DeOu1gFo.css","assets/CheckManagementView-Cegsi1VF.js","assets/CheckManagementView-C1ozixF5.css","assets/CompaniesView-C54y7vWA.js","assets/BaseSwitch-pJwnFBVo.js","assets/BaseSwitch-CCZjYqBV.css","assets/BaseEmptyState-Bzvl_pTa.js","assets/BaseEmptyState-Df57vCUi.css","assets/ActiveSwitchCell-DIBIZfO9.js","assets/CompaniesView-BubE_GYW.css","assets/BankAccountsView-D2HiabfV.js","assets/BankAccountsView-jIdT6saw.css","assets/CustomersView-DkeEBLgM.js","assets/CustomersView-DgDLPLAd.css","assets/ProductsView-CpaU9Oj4.js","assets/AdminImagePicker-DBOLHU6S.js","assets/AdminImagePicker-D0rHEosY.css","assets/ProductsView-CbVBTmyM.css","assets/CategoriesView-DB_2mVA7.js","assets/CategoriesView-D7xsOZr4.css","assets/BannersView-M2Tlryjc.js","assets/BannersView-TRKkvRxh.css","assets/InternalMessagesView-CjsukHYr.js","assets/InternalMessagesView-0lrPLnRU.css","assets/CatalogRequestsView-BEaJWR_M.js","assets/CatalogRequestsView-DmO_C6eq.css","assets/BrandsView-vL6Hgb4d.js","assets/BrandsView-C8jhktRT.css","assets/SuggestionsView-DvLSQunL.js","assets/SuggestionsView-ztSfUAsG.css","assets/LevelsView-B-ACzl3p.js","assets/LevelsView-Bwpvfee6.css","assets/CashPaymentsView-CBMJOEPX.js","assets/CashPaymentsView-GWpZx-gw.css","assets/ShippingView-C-VtAZgk.js","assets/ShippingView-G0QuXsX0.css","assets/ReportsView-_sppl77t.js","assets/ReportsView-dONYkP5k.css","assets/SettingsView-CJBaFKxk.js","assets/SettingsView-DoWxmKG-.css","assets/SmsTariffView-CoRp2-Fp.js","assets/SmsTariffView-DfW33peq.css","assets/UsersView-ie6UvRnF.js","assets/UsersView-DSH2HjHE.css","assets/NotFoundView-DBzokouR.js","assets/NotFoundView-CY2m4474.css"])))=>i.map(i=>d[i]); +import{$ as e,A as t,At as n,B as r,C as i,Dt as a,E as o,G as s,H as c,J as l,K as u,L as d,M as f,N as p,P as m,Q as h,V as g,W as _,X as v,Y as y,Z as b,_ as x,a as S,at as C,b as w,c as T,d as E,et as ee,g as D,h as O,it as te,k,l as A,m as ne,nt as re,ot as j,q as ie,r as M,rt as ae,s as N,st as P,t as F,tt as oe,u as I,w as se,x as L,y as R}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as ce,c as le,i as ue,m as z,n as B,o as de,r as fe,s as pe,t as me}from"./http-BjLkjdQu.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var he=typeof window<`u`,ge,_e=e=>ge=e,ve=Symbol();function ye(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var be=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function xe(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function Se(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){De(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Ce(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function we(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var Te=typeof navigator==`object`?navigator:{userAgent:``},Ee=/Macintosh/.test(Te.userAgent)&&/AppleWebKit/.test(Te.userAgent)&&!/Safari/.test(Te.userAgent),De=he?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!Ee?Oe:`msSaveOrOpenBlob`in Te?ke:Ae:()=>{};function Oe(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?we(r):Ce(r.href)?Se(e,t,n):(r.target=`_blank`,we(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){we(r)},0))}function ke(e,t=`download`,n){if(typeof e==`string`)if(Ce(e))Se(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){we(t)})}else navigator.msSaveOrOpenBlob(xe(e,n),t)}function Ae(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return Se(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(be.HTMLElement))||`safari`in be,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||Ee)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:je}=Object;function Me(){let t=s(!0),n=t.run(()=>e({})),r=[],i=[],a=y({install(e){_e(a),a._a=e,e.provide(ve,a),e.config.globalProperties.$pinia=a,i.forEach(e=>r.push(e)),i=[]},use(e){return this._a?r.push(e):i.push(e),this},_p:r,_a:null,_e:t,_s:new Map,state:n});return a}var Ne=()=>{};function Pe(e,t,n,r=Ne){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&u()&&v(i),i}function Fe(e,...t){e.forEach(e=>{e(...t)})}var Ie=e=>e(),Le=Symbol(),Re=Symbol();function ze(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];e[n]=ye(i)&&ye(r)&&Object.hasOwn(e,n)&&!l(r)&&!ie(r)?ze(i,r):r}return e}var Be=Symbol();function Ve(e){return!e||typeof e!=`object`||!Object.hasOwn(e,Be)}var{assign:V}=Object;function He(e){return!!(l(e)&&e.effect)}function Ue(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),V(C(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=y(N(()=>{_e(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=We(e,l,t,n,r,!0),c}function We(e,t,n={},i,a,o){let c,u=V({actions:{}},n),d={deep:!0},f,p,m=new Set,h=new Set,g,_=i.state.value[e];!o&&!_&&(i.state.value[e]={});let v;function y(t){let n;f=p=!1,typeof t==`function`?(t(i.state.value[e]),n={type:`patch function`,storeId:e,events:g}):(ze(i.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:g});let r=v=Symbol();se().then(()=>{v===r&&(f=!0)}),p=!0,Fe(m,n,i.state.value[e])}let x=o?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{V(e,t)})}:Ne;function S(){c.stop(),m.clear(),h.clear(),i._s.delete(e)}let C=(t,n=``)=>{if(Le in t)return t[Re]=n,t;let r=function(){_e(i);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}Fe(h,{args:n,name:r[Re],store:T,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:T,n)}catch(e){throw Fe(o,e),e}return l instanceof Promise?l.then(e=>(Fe(a,e),e)).catch(e=>(Fe(o,e),Promise.reject(e))):(Fe(a,l),l)};return r[Le]=!0,r[Re]=n,r},w={_p:i,$id:e,$onAction:Pe.bind(null,h),$patch:y,$reset:x,$subscribe(t,n={}){if(m.has(t))return Ne;let a=Pe(m,t,n.detached,()=>o()),o=c.run(()=>r(()=>i.state.value[e],r=>{(n.flush===`sync`?p:f)&&t({storeId:e,type:`direct`,events:g},r)},V({},d,n)));return a},$dispose:S},T=b(w);i._s.set(e,T);let E=(i._a&&i._a.runWithContext||Ie)(()=>i._e.run(()=>(c=s()).run(()=>t({action:C}))));for(let t in E){let n=E[t];l(n)&&!He(n)||ie(n)?o||(_&&Ve(n)&&(l(n)?n.value=_[t]:ze(n,_[t])),i.state.value[e][t]=n):typeof n==`function`&&(E[t]=C(n,t),u.actions[t]=n)}return V(T,E),V(ae(T),E),Object.defineProperty(T,"$state",{get:()=>i.state.value[e],set:e=>{y(t=>{V(t,e)})}}),i._p.forEach(e=>{let t=c.run(()=>e({store:T,app:i._a,pinia:i,options:u}));V(T,t)}),_&&o&&n.hydrate&&n.hydrate(T.$state,_),f=!0,p=!0,T}function Ge(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=w();return n||=o?L(ve,null):null,n&&_e(n),n=ge,n._s.has(e)||(i?We(e,t,r,n):Ue(e,r,n)),n._s.get(e)}return a.$id=e,a}var Ke={"vuesax-linear:add":` + + + +`,"vuesax-linear:arrow-down":` + + +`,"vuesax-linear:arrow-left-1":` + + +`,"vuesax-linear:arrow-right-1":` + + +`,"vuesax-linear:bag-2":` + + + + + +`,"vuesax-linear:bag-cross":` + + + + + + + +`,"vuesax-linear:box-1":` + + + + +`,"vuesax-linear:box-remove":` + + + + + + + +`,"vuesax-linear:box-search":` + + + + + + +`,"vuesax-linear:building":` + + + + + + + +`,"vuesax-linear:buildings":` + + + + + + + + +`,"vuesax-linear:calendar":` + + + + + + + + + + + +`,"vuesax-linear:call":` + + +`,"vuesax-linear:card":` + + + + + +`,"vuesax-linear:card-receive":` + + + + + + + +`,"vuesax-linear:category":` + + + + + +`,"vuesax-linear:chart-2":` + + + + +`,"vuesax-linear:clipboard-close":` + + + + + +`,"vuesax-linear:clock":` + + + + + +`,"vuesax-linear:close-circle":` + + + + +`,"vuesax-linear:cpu":` + + + + + + + + + + + + + + + +`,"vuesax-linear:diamonds":` + + + +`,"vuesax-linear:document-text":` + + + + + +`,"vuesax-linear:edit-2":` + + + + +`,"vuesax-linear:element-3":` + + + + + +`,"vuesax-linear:eye":` + + + +`,"vuesax-linear:eye-slash":` + + + + + + + +`,"vuesax-linear:filter":` + + + +`,"vuesax-linear:flash":` + + + + + +`,"vuesax-linear:headphone":` + + +`,"vuesax-linear:home":` + + + +`,"vuesax-linear:info-circle":` + + + + +`,"vuesax-linear:lamp-on":` + + + +`,"vuesax-linear:location":` + + + +`,"vuesax-linear:lock":` + + + + + + +`,"vuesax-linear:logout":` + + + + +`,"vuesax-linear:menu":` + + + + +`,"vuesax-linear:message":` + + + + + +`,"vuesax-linear:mobile":` + + + + +`,"vuesax-linear:money-4":` + + + + + + + +`,"vuesax-linear:monitor":` + + + + + +`,"vuesax-linear:moon":` + + +`,"vuesax-linear:more":` + + + + +`,"vuesax-linear:note-remove":` + + + + + + + + +`,"vuesax-linear:notification":` + + + + +`,"vuesax-linear:pen-add":` + + + + + + + + +`,"vuesax-linear:people":` + + + + + + + +`,"vuesax-linear:personalcard":` + + + + + + + +`,"vuesax-linear:printer":` + + + + + + +`,"vuesax-linear:profile-2user":` + + + + + +`,"vuesax-linear:profile-circle":` + + + + +`,"vuesax-linear:receipt-search":` + + + + + + +`,"vuesax-linear:search-normal":` + + + +`,"vuesax-linear:search-status":` + + + + + +`,"vuesax-linear:setting-2":` + + + +`,"vuesax-linear:shopping-bag":` + + + + +`,"vuesax-linear:sms":` + + + +`,"vuesax-linear:sun-1":` + + + +`,"vuesax-linear:tick-circle":` + + + +`,"vuesax-linear:timer-1":` + + + + +`,"vuesax-linear:trash":` + + + + + + +`,"vuesax-linear:truck-time":` + + + + + + + + +`,"vuesax-linear:verify":` + + + +`,"vuesax-linear:wallet":` + + + + +`,"vuesax-linear:warning-2":` + + + + +`},qe=[`aria-hidden`,`innerHTML`],Je=F(D({inheritAttrs:!1,__name:`BasicIcon`,props:{icon:{},color:{default:null},size:{default:24},strokeWidth:{default:1.5}},setup(e){le(e=>({v196ba43b:String(t.strokeWidth)}));let t=e,n=d(),r=N(()=>{let e=Ke[t.icon];if(!e)return``;let n=String(t.size);return e.replace(/\swidth="[^"]*"/,` width="${n}"`).replace(/\sheight="[^"]*"/,` height="${n}"`).replace(/stroke="#[^"]*"/g,`stroke="currentColor"`)}),a=N(()=>({color:t.color||void 0,width:`${t.size}px`,height:`${t.size}px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,lineHeight:0,flexShrink:0})),o=N(()=>n[`aria-hidden`]??!0);return(e,t)=>(k(),E(`span`,i({class:`basic-icon`},P(n),{style:a.value,"aria-hidden":o.value,innerHTML:r.value}),null,16,qe))}}),[[`__scopeId`,`data-v-159253ae`]]),Ye={class:`toast-container`,"aria-live":`polite`,"aria-relevant":`additions`},Xe={class:`toast__icon`,"aria-hidden":`true`},Ze={class:`toast__message`},Qe=[`onClick`],$e=F(D({__name:`ToastContainer`,setup(e){let{toasts:t,dismiss:r}=ce(),i={success:`vuesax-linear:tick-circle`,error:`vuesax-linear:close-circle`,warning:`vuesax-linear:warning-2`,info:`vuesax-linear:info-circle`};function o(e,t){t.preventDefault(),t.stopPropagation(),r(e)}return(e,r)=>(k(),E(`div`,Ye,[O(de,{name:`toast`,tag:`div`,class:`toast-container__list`},{default:c(()=>[(k(!0),E(M,null,f(P(t),e=>(k(),E(`div`,{key:e.id,class:a([`toast`,`toast--${e.tone}`]),role:`status`},[T(`span`,Xe,[O(Je,{icon:i[e.tone]||`vuesax-linear:info-circle`,size:20,"stroke-width":1.5},null,8,[`icon`])]),T(`p`,Ze,n(e.message),1),T(`button`,{type:`button`,class:`toast__close`,"aria-label":`بستن`,onClick:t=>o(e.id,t)},` × `,8,Qe)],2))),128))]),_:1})]))}}),[[`__scopeId`,`data-v-223aafac`]]),et=[`aria-label`],tt={class:`admin-modal__header`},nt={class:`admin-modal__title`},rt={class:`admin-modal__body`},it={key:0,class:`admin-modal__footer`},at=F(D({__name:`BaseModal`,props:{open:{type:Boolean},title:{},size:{}},emits:[`close`],setup(e,{emit:t}){let r=t;function i(e){e.target===e.currentTarget&&r(`close`)}return(t,o)=>(k(),A(S,{to:`body`},[e.open?(k(),E(`div`,{key:0,class:`admin-modal-backdrop`,role:`presentation`,onClick:i},[T(`div`,{class:a([`admin-modal`,{"admin-modal--lg":e.size===`lg`,"admin-modal--xl":e.size===`xl`}]),role:`dialog`,"aria-modal":`true`,"aria-label":e.title,onClick:o[1]||=z(()=>{},[`stop`])},[T(`header`,tt,[T(`h2`,nt,n(e.title),1),T(`button`,{type:`button`,class:`admin-modal__close`,"aria-label":`بستن`,onClick:o[0]||=e=>r(`close`)},` × `)]),T(`div`,rt,[p(t.$slots,`default`,{},void 0,!0)]),t.$slots.footer?(k(),E(`footer`,it,[p(t.$slots,`footer`,{},void 0,!0)])):I(``,!0)],10,et)])):I(``,!0)]))}}),[[`__scopeId`,`data-v-a52d3eeb`]]),H=b({open:!1,loading:!1,title:``,message:``,confirmLabel:`تأیید`,cancelLabel:`انصراف`,tone:`primary`,resolve:null});function ot(){return H}function st(e){return new Promise(t=>{Object.assign(H,{open:!0,loading:!1,title:e.title,message:e.message,confirmLabel:e.confirmLabel??`تأیید`,cancelLabel:e.cancelLabel??`انصراف`,tone:e.tone??`primary`,resolve:t})})}function ct(e){H.resolve?.(e),H.open=!1,H.loading=!1,H.resolve=null}function lt(e){H.loading=e}var ut={class:`confirm-dialog__message`},dt=[`disabled`],ft=[`disabled`],pt={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},mt=F(D({__name:`ConfirmDialog`,setup(e){let t=ot();function r(){ct(!1)}function i(){lt(!0),ct(!0)}return(e,o)=>(k(),A(at,{open:P(t).open,title:P(t).title,size:`md`,onClose:r},{footer:c(()=>[T(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,disabled:P(t).loading,onClick:r},n(P(t).cancelLabel),9,dt),T(`button`,{type:`button`,class:a([`admin-btn`,P(t).tone===`danger`?`admin-btn--danger`:`admin-btn--primary`]),disabled:P(t).loading,onClick:i},[P(t).loading?(k(),E(`span`,pt)):I(``,!0),ne(` `+n(P(t).confirmLabel),1)],10,ft)]),default:c(()=>[T(`p`,ut,n(P(t).message),1)]),_:1},8,[`open`,`title`]))}}),[[`__scopeId`,`data-v-47354e67`]]),ht=D({__name:`App`,setup(e){return(e,t)=>{let n=m(`RouterView`);return k(),E(M,null,[O(n),O($e),O(mt)],64)}}});function gt(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function _t(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&>(e.default)}var U=Object.assign;function vt(e,t){let n={};for(let r in t){let i=t[r];n[r]=W(i)?i.map(e):e(i)}return n}var yt=()=>{},W=Array.isArray;function bt(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var xt=Symbol(``);function St(e,t){return U(Error(),{type:e,[xt]:!0},t)}function G(e,t){return e instanceof Error&&xt in e&&(t==null||!!(e.type&t))}var Ct=Symbol(``),wt=Symbol(``),Tt=Symbol(``),Et=Symbol(``),Dt=Symbol(``);function Ot(){return L(Tt)}function kt(e){return L(Et)}var At=typeof document<`u`,jt=/#/g,Mt=/&/g,Nt=/\//g,Pt=/=/g,Ft=/\?/g,It=/\+/g,Lt=/%5B/g,Rt=/%5D/g,zt=/%5E/g,Bt=/%60/g,Vt=/%7B/g,Ht=/%7C/g,Ut=/%7D/g,Wt=/%20/g;function Gt(e){return e==null?``:encodeURI(``+e).replace(Ht,`|`).replace(Lt,`[`).replace(Rt,`]`)}function Kt(e){return Gt(e).replace(Vt,`{`).replace(Ut,`}`).replace(zt,`^`)}function qt(e){return Gt(e).replace(It,`%2B`).replace(Wt,`+`).replace(jt,`%23`).replace(Mt,`%26`).replace(Bt,"`").replace(Vt,`{`).replace(Ut,`}`).replace(zt,`^`)}function Jt(e){return qt(e).replace(Pt,`%3D`)}function Yt(e){return Gt(e).replace(jt,`%23`).replace(Ft,`%3F`)}function Xt(e){return Yt(e).replace(Nt,`%2F`)}function Zt(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Qt=/\/$/,$t=e=>e.replace(Qt,``);function en(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=ln(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:Zt(o)}}function tn(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function nn(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function rn(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&an(t.matched[r],n.matched[i])&&on(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function an(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function on(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!sn(e[n],t[n]))return!1;return!0}function sn(e,t){return W(e)?cn(e,t):W(t)?cn(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function cn(e,t){return W(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function ln(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var K={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function un(e){if(!e)if(At){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),$t(e)}var dn=/^[^#]+#/;function fn(e,t){return e.replace(dn,`#`)+t}function pn(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var mn=()=>({left:window.scrollX,top:window.scrollY});function hn(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=pn(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function gn(e,t){return(history.state?history.state.position-t:-1)+e}var _n=new Map;function vn(e,t){_n.set(e,t)}function yn(e){let t=_n.get(e);return _n.delete(e),t}function bn(e){return typeof e==`string`||e&&typeof e==`object`}function xn(e){return typeof e==`string`||typeof e==`symbol`}function Sn(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&qt(e)):[r&&qt(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function wn(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=W(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Tn(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function q(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(St(4,{from:n,to:t})):e instanceof Error?c(e):bn(e)?c(St(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function En(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(gt(s)){let c=(s.__vccOpts||s)[t];c&&a.push(q(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=_t(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&q(c,n,r,o,e,i)()}))}}return a}function Dn(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oan(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>an(e,s))||i.push(s))}return[n,r,i]}var On=()=>location.protocol+`//`+location.host;function kn(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),nn(n,``)}return nn(n,e)+r+i}function An(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=kn(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(U({},e.state,{scroll:mn()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function jn(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?mn():null}}function Mn(e){let{history:t,location:n}=window,r={value:kn(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:On()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,U({},t.state,jn(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=U({},i.value,t.state,{forward:e,scroll:mn()});a(o.current,o,!0),a(e,U({},jn(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Nn(e){e=un(e);let t=Mn(e),n=An(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=U({location:``,base:e,go:r,createHref:fn.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var Pn={type:0,value:``},Fn=/[a-zA-Z0-9_]/;function In(e){if(!e)return[[]];if(e===`/`)return[[Pn]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===80?1:-1:0}function Hn(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Wn={strict:!1,end:!0,sensitive:!1};function Gn(e,t,n){let r=U(Bn(In(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Kn(e,t){let n=[],r=new Map;t=bt(Wn,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Jn(e);s.aliasOf=r&&r.record;let l=bt(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Jn(U({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Gn(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!Xn(d)&&o(e.name)),er(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:yt}function o(e){if(xn(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Qn(e,n);n.splice(t,0,e),e.record.name&&!Xn(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw St(1,{location:e});s=i.record.name,a=U(qn(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&qn(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw St(1,{location:e,currentLocation:t});s=i.record.name,a=U({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Zn(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function qn(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Jn(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Yn(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Yn(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function Xn(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Zn(e){return e.reduce((e,t)=>U(e,t.meta),{})}function Qn(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Hn(e,t[i])<0?r=i:n=i+1}let i=$n(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function $n(e){let t=e;for(;t=t.parent;)if(er(t)&&Hn(e,t)===0)return t}function er({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function tr(e){let t=L(Tt),n=L(Et),r=N(()=>{let n=P(e.to);return t.resolve(n)}),i=N(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(an.bind(null,i));if(o>-1)return o;let s=or(e[t-2]);return t>1&&or(i)===s&&a[a.length-1].path!==s?a.findIndex(an.bind(null,e[t-2])):o}),a=N(()=>i.value>-1&&ar(n.params,r.value.params)),o=N(()=>i.value>-1&&i.value===n.matched.length-1&&on(n.params,r.value.params));function s(n={}){if(ir(n)){let n=t[P(e.replace)?`replace`:`push`](P(e.to)).catch(yt);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:N(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function nr(e){return e.length===1?e[0]:e}var rr=D({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:tr,setup(e,{slots:t}){let n=b(tr(e)),{options:r}=L(Tt),i=N(()=>({[sr(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[sr(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&nr(t.default(n));return e.custom?r:R(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function ir(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ar(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!W(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function or(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var sr=(e,t,n)=>e??t??n,cr=D({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(n,{attrs:i,slots:a}){let o=L(Dt),s=N(()=>n.route||o.value),c=L(wt,0),l=N(()=>{let e=P(c),{matched:t}=s.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),u=N(()=>s.value.matched[l.value]);t(wt,N(()=>l.value+1)),t(Ct,u),t(Dt,s);let d=e();return r(()=>[d.value,u.value,n.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!an(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=s.value,t=n.name,r=u.value,o=r&&r.components[t];if(!o)return lr(a.default,{Component:o,route:e});let c=r.props[t],l=c?c===!0?e.params:typeof c==`function`?c(e):c:null,f=R(o,U({},l,i,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(r.instances[t]=null)},ref:d}));return lr(a.default,{Component:f,route:e})||f}}});function lr(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var ur=cr;function dr(e){let t=Kn(e.routes,e),n=e.parseQuery||Sn,r=e.stringifyQuery||Cn,i=e.history,a=Tn(),o=Tn(),s=Tn(),c=re(K),l=K;At&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let u=vt.bind(null,e=>``+e),d=vt.bind(null,Xt),f=vt.bind(null,Zt);function p(e,n){let r,i;return xn(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function m(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function h(){return t.getRoutes().map(e=>e.record)}function g(e){return!!t.getRecordMatcher(e)}function _(e,a){if(a=U({},a||c.value),typeof e==`string`){let r=en(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return U(r,o,{params:f(o.params),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=U({},e,{path:en(n,e.path,a.path).path});else{let t=U({},e.params);for(let e in t)t[e]??delete t[e];o=U({},e,{params:d(t)}),a.params=d(a.params)}let s=t.resolve(o,a),l=e.hash||``;s.params=u(f(s.params));let p=tn(r,U({},e,{hash:Kt(l),path:s.path})),m=i.createHref(p);return U({fullPath:p,hash:l,query:r===Cn?wn(e.query):e.query||{}},s,{redirectedFrom:void 0,href:m})}function v(e){return typeof e==`string`?en(n,e,c.value.path):U({},e)}function y(e,t){if(l!==e)return St(8,{from:t,to:e})}function b(e){return C(e)}function x(e){return b(U(v(e),{replace:!0}))}function S(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=v(i):{path:i},i.params={}),U({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function C(e,t){let n=l=_(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,u=S(n,i);if(u)return C(U(v(u),{state:typeof u==`object`?U({},a,u.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&rn(r,i,n)&&(f=St(16,{to:d,from:i}),N(i,i,!0,!1)),(f?Promise.resolve(f):E(d,i)).catch(e=>G(e)?G(e,2)?e:ae(e):ie(e,d,i)).then(e=>{if(e){if(G(e,2))return C(U({replace:s},v(e.to),{state:typeof e.to==`object`?U({},a,e.to.state):a,force:o}),t||d)}else e=O(d,i,!0,s,a);return D(d,i,e),e})}function w(e,t){let n=y(e,t);return n?Promise.reject(n):Promise.resolve()}function T(e){let t=I.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function E(e,t){let n,[r,i,s]=Dn(e,t);n=En(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(q(r,e,t))});let c=w.bind(null,e,t);return n.push(c),R(n).then(()=>{n=[];for(let r of a.list())n.push(q(r,e,t));return n.push(c),R(n)}).then(()=>{n=En(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(q(r,e,t))});return n.push(c),R(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter)if(W(r.beforeEnter))for(let i of r.beforeEnter)n.push(q(i,e,t));else n.push(q(r.beforeEnter,e,t));return n.push(c),R(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=En(s,`beforeRouteEnter`,e,t,T),n.push(c),R(n))).then(()=>{n=[];for(let r of o.list())n.push(q(r,e,t));return n.push(c),R(n)}).catch(e=>G(e,8)?e:Promise.reject(e))}function D(e,t,n){s.list().forEach(r=>T(()=>r(e,t,n)))}function O(e,t,n,r,a){let o=y(e,t);if(o)return o;let s=t===K,l=At?history.state:{};n&&(r||s?i.replace(e.fullPath,U({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,N(e,t,n,s),ae()}let te;function k(){te||=i.listen((e,t,n)=>{if(!L.listening)return;let r=_(e),a=S(r,L.currentRoute.value);if(a){C(U(a,{replace:!0,force:!0}),r).catch(yt);return}l=r;let o=c.value;At&&vn(gn(o.fullPath,n.delta),mn()),E(r,o).catch(e=>G(e,12)?e:G(e,2)?(C(U(v(e.to),{force:!0}),r).then(e=>{G(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(yt),Promise.reject()):(n.delta&&i.go(-n.delta,!1),ie(e,r,o))).then(e=>{e||=O(r,o,!1),e&&(n.delta&&!G(e,8)?i.go(-n.delta,!1):n.type===`pop`&&G(e,20)&&i.go(-1,!1)),D(r,o,e)}).catch(yt)})}let A=Tn(),ne=Tn(),j;function ie(e,t,n){ae(e);let r=ne.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function M(){return j&&c.value!==K?Promise.resolve():new Promise((e,t)=>{A.add([e,t])})}function ae(e){return j||(j=!e,k(),A.list().forEach(([t,n])=>e?n(e):t()),A.reset()),e}function N(t,n,r,i){let{scrollBehavior:a}=e;if(!At||!a)return Promise.resolve();let o=!r&&yn(gn(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return se().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&hn(e)).catch(e=>t===c.value&&ie(e,t,n))}let F=e=>i.go(e),oe,I=new Set,L={currentRoute:c,listening:!0,addRoute:p,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:g,getRoutes:h,resolve:_,options:e,push:b,replace:x,go:F,back:()=>F(-1),forward:()=>F(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:ne.add,isReady:M,install(e){e.component(`RouterLink`,rr),e.component(`RouterView`,ur),e.config.globalProperties.$router=L,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>P(c)}),At&&!oe&&c.value===K&&(oe=!0,b(i.location).catch(e=>{}));let t={};for(let e in K)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(Tt,L),e.provide(Et,ee(t)),e.provide(Dt,c);let n=e.unmount;I.add(e),e.unmount=function(){I.delete(e),I.size<1&&(l=K,te&&te(),te=null,c.value=K,oe=!1,j=!1),n()}}};function R(e){return e.reduce((e,t)=>e.then(()=>T(t)),Promise.resolve())}return L}var fr=[{name:`dashboard`,label:`داشبورد`,path:`/`,icon:`home`},{name:`orders`,label:`سفارش‌ها`,path:`/orders`,icon:`orders`},{name:`customers`,label:`مشتریان و واسطه‌ها`,path:`/customers`,icon:`customers`},{name:`products`,label:`محصولات`,path:`/products`,icon:`products`},{name:`categories`,label:`دسته‌بندی‌ها`,path:`/categories`,icon:`catalogs`},{name:`banners`,label:`بنرها`,path:`/banners`,icon:`image`},{name:`internal-messages`,label:`پیام‌های داخلی`,path:`/internal-messages`,icon:`message`},{name:`catalog-requests`,label:`درخواست کالیته فیزیکی`,path:`/catalog-requests`,icon:`file`},{name:`brands`,label:`برندها`,path:`/brands`,icon:`building`},{name:`suggestions`,label:`پیشنهاد محصول`,path:`/suggestions`,icon:`cart`},{name:`levels`,label:`سطوح مشتری`,path:`/levels`,icon:`users`},{name:`companies`,label:`شرکت‌ها`,path:`/companies`,icon:`companies`},{name:`checks`,label:`چک‌ها`,path:`/checks`,icon:`checks`},{name:`cash-payments`,label:`پرداخت‌های نقدی`,path:`/cash-payments`,icon:`cash`},{name:`shipping`,label:`ارسال و باربری`,path:`/shipping`,icon:`shipping`},{name:`reports`,label:`گزارش‌ها`,path:`/reports`,icon:`reports`},{name:`settings`,label:`تنظیمات`,path:`/settings`,icon:`settings`},{name:`sms-tariff`,label:`تعرفه پیامک‌ها`,path:`/sms-tariff`,icon:`sms`},{name:`users`,label:`کاربران و دسترسی‌ها`,path:`/users`,icon:`users`}],pr=`09128081392`;function mr(e){if(!e)return!1;let t=e.replace(/\D/g,``);return t.startsWith(`98`)&&t.length===12&&(t=`0${t.slice(2)}`),t.length===10&&t.startsWith(`9`)&&(t=`0${t}`),t===pr}function hr(e){return mr(e)?fr:fr.filter(e=>e.name!==`sms-tariff`)}function gr(e,t){if(e===`/`)return t===`/`;if(/^\/orders\/[^/]+\/checks/.test(t)){if(e===`/checks`)return!0;if(e===`/orders`)return!1}return t===e||t.startsWith(`${e}/`)}var J=D({__name:`AdminIcon`,props:{name:{},size:{default:20},strokeWidth:{default:1.5},color:{default:null}},setup(e){let t=e,n={home:`vuesax-linear:home`,orders:`vuesax-linear:document-text`,customers:`vuesax-linear:profile-2user`,products:`vuesax-linear:box-1`,catalogs:`vuesax-linear:category`,image:`vuesax-linear:category`,companies:`vuesax-linear:buildings`,checks:`vuesax-linear:card-receive`,cash:`vuesax-linear:money-4`,shipping:`vuesax-linear:truck-time`,reports:`vuesax-linear:chart-2`,settings:`vuesax-linear:setting-2`,users:`vuesax-linear:people`,logout:`vuesax-linear:logout`,search:`vuesax-linear:search-normal`,bell:`vuesax-linear:notification`,message:`vuesax-linear:message`,calendar:`vuesax-linear:calendar`,menu:`vuesax-linear:menu`,filter:`vuesax-linear:filter`,more:`vuesax-linear:more`,"chevron-left":`vuesax-linear:arrow-left-1`,"chevron-right":`vuesax-linear:arrow-right-1`,"chevron-back":`vuesax-linear:arrow-right-1`,"chevron-down":`vuesax-linear:arrow-down`,print:`vuesax-linear:printer`,sms:`vuesax-linear:sms`,check:`vuesax-linear:tick-circle`,cart:`vuesax-linear:bag-2`,file:`vuesax-linear:document-text`,wallet:`vuesax-linear:wallet`,"check-circle":`vuesax-linear:tick-circle`,phone:`vuesax-linear:call`,"id-card":`vuesax-linear:personalcard`,lock:`vuesax-linear:lock`,eye:`vuesax-linear:eye`,"eye-off":`vuesax-linear:eye-slash`,user:`vuesax-linear:profile-circle`,building:`vuesax-linear:building`,trash:`vuesax-linear:trash`},r=N(()=>t.name.startsWith(`vuesax-linear:`)?t.name:n[t.name]??`vuesax-linear:info-circle`);return(t,n)=>(k(),A(Je,{icon:r.value,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`icon`,`size`,`stroke-width`,`color`]))}}),Y=`fabric-admin-session`,_r=`fabric-admin-token`,vr=!1,yr={phone:`09128081392`,password:`123456`,session:{id:`mock-admin-1`,fullName:`مدیر سیستم (موک)`,phone:`09128081392`,email:`admin@parche.ir`,role:`admin`}};function br(){try{let e=localStorage.getItem(Y)??sessionStorage.getItem(Y);return e?JSON.parse(e):null}catch{return null}}function xr(e,t){let n=JSON.stringify(e);localStorage.removeItem(Y),sessionStorage.removeItem(Y),t?localStorage.setItem(Y,n):sessionStorage.setItem(Y,n)}function Sr(){localStorage.removeItem(Y),sessionStorage.removeItem(Y)}function Cr(){return!!localStorage.getItem(_r)}function wr(e){return{id:e.id,fullName:e.fullName,phone:e.phone,email:e.email,role:e.role}}function Tr(){return br()}function Er(){return vr}async function Dr(e){let t=e.phone.trim(),n=e.password;if(!t||!n)return{success:!1,message:`شماره موبایل و رمز عبور الزامی است.`};try{let r=await B(`/admin/auth/login`,{method:`POST`,body:{phone:t,password:n},auth:!1});return ue(r.accessToken,e.remember),xr(wr(r.user),e.remember),{success:!0}}catch(e){return e instanceof me?{success:!1,message:e.message}:{success:!1,message:`ورود انجام نشد.`}}}async function Or(){let e=fe();if(!e)return Sr(),null;if(e===`mock-admin-token`){let e=br()??yr.session;return xr(e,Cr()),e}try{let e=wr(await B(`/auth/me`));return xr(e,Cr()),e}catch{return ue(null),Sr(),null}}function kr(){ue(null),Sr()}var Ar=Ge(`auth`,()=>{let t=e(Tr()),n=e(!1),r=e(null),i=N(()=>!!t.value),a=N(()=>t.value?.fullName??``),o=N(()=>t.value?{admin:`مدیر سیستم`,sales:`واحد فروش`,finance:`واحد مالی`,warehouse:`انبار`}[t.value.role]:``);function s(){r.value=null}async function c(){t.value=Tr(),t.value=await Or()}async function l(e,i,a){n.value=!0,r.value=null;let o=await Dr({phone:e,password:i,remember:a});return n.value=!1,o.success?(t.value=Tr(),!0):(r.value=o.message??`ورود انجام نشد.`,!1)}function u(){kr(),t.value=null,r.value=null}return{session:t,loading:n,error:r,isAuthenticated:i,fullName:a,roleLabel:o,clearError:s,hydrate:c,login:l,logout:u}}),jr={class:`admin-sidebar`,"aria-label":`ناوبری پنل مدیریت`},Mr={class:`admin-sidebar__nav`},Nr=[`onClick`],Pr=F(D({__name:`AdminSidebar`,setup(e){let t=kt(),r=Ot(),i=Ar(),o=N(()=>hr(i.session?.phone));function s(e){r.push(e)}function c(){i.logout(),r.push(`/login`)}return(e,r)=>(k(),E(`aside`,jr,[T(`div`,{class:`admin-sidebar__brand`},[T(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-sidebar__logo`}),r[0]||=T(`strong`,{class:`admin-sidebar__title`},`پارچه`,-1),r[1]||=T(`span`,{class:`admin-sidebar__subtitle`},`پنل مدیریت`,-1)]),T(`nav`,Mr,[(k(!0),E(M,null,f(o.value,e=>(k(),E(`button`,{key:e.name,type:`button`,class:a([`admin-sidebar__item`,{active:P(gr)(e.path,P(t).path)}]),onClick:t=>s(e.path)},[O(J,{name:e.icon,size:20},null,8,[`name`]),T(`span`,null,n(e.label),1)],10,Nr))),128))]),T(`button`,{type:`button`,class:`admin-sidebar__logout`,onClick:c},[O(J,{name:`logout`,size:20}),r[2]||=T(`span`,null,`خروج`,-1)])]))}}),[[`__scopeId`,`data-v-a8a62cb5`]]),Fr=new WeakMap,Ir=(...e)=>{let t=e[0],n=x()?.proxy??u();if(n==null&&!w())throw Error(`injectLocal must be called in setup`);return n&&Fr.has(n)&&t in Fr.get(n)?Fr.get(n)[t]:L(...e)},Lr=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Rr=Object.prototype.toString,zr=e=>Rr.call(e)===`[object Object]`,X=()=>{},Br=Vr();function Vr(){var e,t;return Lr&&!!((e=window)!=null&&(e=e.navigator)!=null&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)==null||(t=t.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function Hr(...t){if(t.length!==1)return te(...t);let n=t[0];return typeof n==`function`?h(_(()=>({get:n,set:X}))):e(n)}function Ur(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return`cancel`in e&&Object.assign(n,{cancel:e.cancel,flush:e.flush,isPending:e.isPending}),n}var Wr=e=>e();function Gr(e=Wr,t={}){let{initialState:n=`active`}=t,r=Hr(n===`active`);function i(){r.value=!1}function a(){r.value=!0}return{isActive:oe(r),pause:i,resume:a,eventFilter:(...t)=>{r.value&&e(...t)}}}function Kr(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function qr(e){return Array.isArray(e)?e:[e]}function Jr(e){return e||x()}function Yr(e,t,n={}){let{eventFilter:i=Wr,...a}=n;return r(e,Ur(i,t),a)}function Xr(e,t,n={}){let{eventFilter:r,initialState:i=`active`,...a}=n,{eventFilter:o,pause:s,resume:c,isActive:l}=Gr(r,{initialState:i});return{stop:Yr(e,t,{...a,eventFilter:o}),pause:s,resume:c,isActive:l}}function Zr(e,t=!0,n){Jr(n)?o(e,n):t?e():se(e)}function Qr(e,t,n){return r(e,t,{...n,immediate:!0})}var $r=Lr?window:void 0;Lr&&window.document,Lr&&window.navigator,Lr&&window.location;function ei(e){let t=j(e);return t?.$el??t}function Z(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=N(()=>{let t=qr(j(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return Qr(()=>[n.value?.map(e=>ei(e))??[$r].filter(e=>e!=null),qr(j(n.value?e[1]:e[0])),qr(P(n.value?e[2]:e[1])),j(n.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=zr(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}var ti=!1;function ni(e,t,n={}){let{window:r=$r,ignore:i=[],capture:a=!0,detectIframe:o=!1,controls:s=!1}=n;if(!r)return s?{stop:X,cancel:X,trigger:X}:X;if(Br&&!ti){ti=!0;let e={passive:!0};Array.from(r.document.body.children).forEach(t=>t.addEventListener(`click`,X,e)),r.document.documentElement.addEventListener(`click`,X,e)}let c=!0,l=e=>j(i).some(t=>{if(typeof t==`string`)return Array.from(r.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{let n=ei(t);return n&&(e.target===n||e.composedPath().includes(n))}});function u(e){let t=j(e);return t&&t.$.subTree.shapeFlag===16}function d(e,t){let n=j(e),r=n.$.subTree&&n.$.subTree.children;return r==null||!Array.isArray(r)?!1:r.some(e=>e.el===t.target||t.composedPath().includes(e.el))}let f=n=>{let r=ei(e);if(n.target!=null&&!(!(r instanceof Element)&&u(e)&&d(e,n))&&!(!r||r===n.target||n.composedPath().includes(r))){if(`detail`in n&&n.detail===0&&(c=!l(n)),!c){c=!0;return}t(n)}},p=!1,m=[Z(r,`click`,e=>{p||(p=!0,setTimeout(()=>{p=!1},0),f(e))},{passive:!0,capture:a}),Z(r,`pointerdown`,t=>{let n=ei(e);c=!l(t)&&!!(n&&!t.composedPath().includes(n))},{passive:!0}),o&&Z(r,`blur`,n=>{setTimeout(()=>{let i=ei(e),a=r.document.activeElement;for(;a?.shadowRoot;)a=a.shadowRoot.activeElement;a?.tagName===`IFRAME`&&!i?.contains(r.document.activeElement)&&t(n)},0)},{passive:!0})].filter(Boolean),h=()=>m.forEach(e=>e());return s?{stop:h,cancel:()=>{c=!1},trigger:e=>{c=!0,f(e),c=!1}}:h}function ri(){let e=re(!1),t=x();return t&&o(()=>{e.value=!0},t),e}function ii(e){let t=ri();return N(()=>(t.value,!!e()))}var ai=Symbol(`vueuse-ssr-width`);function oi(){let e=w()?Ir(ai,null):null;return typeof e==`number`?e:void 0}function si(e,t={}){let{window:n=$r,ssrWidth:r=oi()}=t,i=ii(()=>n&&`matchMedia`in n&&typeof n.matchMedia==`function`),a=re(typeof r==`number`),o=re(),s=re(!1);return g(()=>{if(a.value){a.value=!i.value;let t=j(e).split(`,`);s.value=t.some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||i);return n&&a&&(a=r>=Kr(n[1])),i&&a&&(a=r<=Kr(i[1])),t?!a:a});return}i.value&&(o.value=n.matchMedia(j(e)),s.value=o.value.matches)}),Z(o,`change`,e=>{s.value=e.matches},{passive:!0}),N(()=>s.value)}var ci=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:{},li=`__vueuse_ssr_handlers__`,ui=di();function di(){return li in ci||(ci[li]=ci[li]||{}),ci[li]}function fi(e,t){return ui[e]||t}function pi(e){return si(`(prefers-color-scheme: dark)`,e)}function mi(e){return e==null?`any`:e instanceof Set?`set`:e instanceof Map?`map`:e instanceof Date?`date`:typeof e==`boolean`?`boolean`:typeof e==`string`?`string`:typeof e==`object`?`object`:Number.isNaN(e)?`any`:`number`}var hi={boolean:{read:e=>e===`true`,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},gi=`vueuse-storage`;function _i(t,n,i,a={}){let{flush:o=`pre`,deep:s=!0,listenToStorageChanges:c=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:d,window:f=$r,eventFilter:p,onError:m=e=>{console.error(e)},initOnMounted:h}=a,g=(d?re:e)(typeof n==`function`?n():n),_=N(()=>j(t));if(!i)try{i=fi(`getDefaultStorage`,()=>$r?.localStorage)()}catch(e){m(e)}if(!i)return g;let v=j(n),y=mi(v),b=a.serializer??hi[y],{pause:x,resume:S}=Xr(g,e=>T(e),{flush:o,deep:s,eventFilter:p});r(_,()=>ee(),{flush:o});let C=!1;f&&c&&(i instanceof Storage?Z(f,`storage`,e=>{h&&!C||ee(e)},{passive:!0}):Z(f,gi,e=>{h&&!C||D(e)})),h?Zr(()=>{C=!0,ee()}):ee();function w(e,t){if(f){let n={key:_.value,oldValue:e,newValue:t,storageArea:i};f.dispatchEvent(i instanceof Storage?new StorageEvent(`storage`,n):new CustomEvent(gi,{detail:n}))}}function T(e){try{let t=i.getItem(_.value);if(e==null)w(t,null),i.removeItem(_.value);else{let n=b.write(e);t!==n&&(i.setItem(_.value,n),w(t,n))}}catch(e){m(e)}}function E(e){let t=e?e.newValue:i.getItem(_.value);if(t==null)return l&&v!=null&&i.setItem(_.value,b.write(v)),v;if(!e&&u){let e=b.read(t);return typeof u==`function`?u(e,v):y===`object`&&!Array.isArray(e)?{...v,...e}:e}return typeof t==`string`?b.read(t):t}function ee(e){if(!(e&&e.storageArea!==i)){if(e&&e.key==null){g.value=v;return}if(!(e&&e.key!==_.value)){x();try{let t=b.write(g.value);(e===void 0||e?.newValue!==t)&&(g.value=E(e))}catch(e){m(e)}finally{e?se(S):S()}}}}function D(e){ee(e.detail)}return g}function vi(e){return{...e,status:e.adminStatus??e.status,rawStatus:e.status,allowedTransitions:e.allowedTransitions??[],settlementMethod:e.settlementMethod??e.settlementType??null,meterage:e.meterage??e.totalMeterage??0}}function yi(e){return e.trim().toLowerCase().replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,``).replace(/-+/g,`-`).replace(/^-|-$/g,``)||`c-${Date.now()}`}var bi={list:e=>B(`/companies`,{query:{activeOnly:e?`true`:void 0}}),get:e=>B(`/companies/${e}`),create:e=>B(`/companies`,{body:e}),update:(e,t)=>B(`/companies/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>B(`/companies/${e}/active`,{method:`PATCH`,body:{isActive:t}})},xi={listByCompany:e=>B(`/companies/${e}/bank-accounts`),create:(e,t)=>B(`/companies/${e}/bank-accounts`,{body:t}),update:(e,t)=>B(`/bank-accounts/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>B(`/bank-accounts/${e}/active`,{method:`PATCH`,body:{isActive:t}})},Si={list:e=>B(`/products`,{query:{companyId:e?.companyId,activeOnly:e?.activeOnly?`true`:void 0}}),getById:e=>B(`/products/${e}`),create:e=>B(`/products`,{body:e,timeoutMs:9e4}),update:(e,t)=>B(`/products/${e}`,{method:`PATCH`,body:t,timeoutMs:9e4}),setActive:(e,t)=>B(`/products/${e}/active`,{method:`PATCH`,body:{isActive:t}})},Ci={list:(e,t)=>B(`/admin/customers`,{query:{q:e,appRole:t}}),create:e=>B(`/admin/customers`,{body:e}),update:(e,t)=>B(`/admin/customers/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>B(`/admin/customers/${e}/active`,{method:`PATCH`,body:{isActive:t}})},wi={list:e=>B(`/admin/orders`,{query:{status:e?.status,q:e?.q}}),get:e=>B(`/admin/orders/${e}`),create:e=>B(`/admin/orders`,{body:e}),updatePricing:(e,t)=>B(`/admin/orders/${e}/pricing`,{method:`PATCH`,body:t}),updateStatus:(e,t)=>B(`/admin/orders/${e}/status`,{method:`PATCH`,body:t})},Ti={list:e=>B(`/admin/checks`,{query:{status:e}}),listByOrder:e=>B(`/admin/orders/${e}/checks`),updateStatus:(e,t)=>B(`/admin/checks/${e}/status`,{method:`PATCH`,body:t})},Ei={list:e=>B(`/admin/cash-payments`,{query:{status:e}}),updateStatus:(e,t)=>B(`/admin/cash-payments/${e}/status`,{method:`PATCH`,body:t})},Di={list:e=>B(`/admin/shipments`,{query:{status:e}}),create:e=>B(`/admin/shipments`,{body:e}),update:(e,t)=>B(`/admin/shipments/${e}`,{method:`PATCH`,body:t}),advanceStatus:(e,t)=>B(`/admin/shipments/${e}/status`,{method:`PATCH`,body:t??{}})},Oi={list:()=>B(`/admin/users`),create:e=>B(`/admin/users`,{body:e}),update:(e,t)=>B(`/admin/users/${e}`,{method:`PATCH`,body:t}),setActive:(e,t)=>B(`/admin/users/${e}/active`,{method:`PATCH`,body:{isActive:t}})},ki={get:()=>B(`/admin/dashboard`),reports:()=>B(`/admin/reports`)},Ai={get:()=>B(`/admin/settings`),update:e=>B(`/admin/settings`,{method:`PATCH`,body:e})},ji={markRead:e=>B(`/admin/notifications/${e}/read`,{method:`PATCH`}),markAllRead:()=>B(`/admin/notifications/read-all`,{method:`PATCH`}),broadcast:e=>B(`/admin/notifications/broadcast`,{method:`POST`,body:e})},Mi={list:()=>B(`/admin/internal-messages`),create:e=>B(`/admin/internal-messages`,{body:e}),update:(e,t)=>B(`/admin/internal-messages/${e}`,{method:`PATCH`,body:t}),remove:e=>B(`/admin/internal-messages/${e}`,{method:`DELETE`}),markRead:e=>B(`/admin/internal-messages/${e}/read`,{method:`PATCH`}),markAllRead:()=>B(`/admin/internal-messages/read-all`,{method:`PATCH`})},Ni={list:e=>B(`/admin/catalog-requests`,{query:{status:e}}),updateStatus:(e,t)=>B(`/admin/catalog-requests/${e}/status`,{method:`PATCH`,body:{status:t}}),updateHolder:(e,t)=>B(`/admin/catalog-request-items/${e}/holder`,{method:`PATCH`,body:t})},Pi={list:e=>B(`/admin/banners`,{query:{slot:e}}),create:e=>B(`/admin/banners`,{body:e}),update:(e,t)=>B(`/admin/banners/${e}`,{method:`PATCH`,body:t}),remove:e=>B(`/admin/banners/${e}`,{method:`DELETE`})},Fi={list:()=>B(`/admin/brands`),create:e=>B(`/admin/brands`,{body:e}),update:(e,t)=>B(`/admin/brands/${e}`,{method:`PATCH`,body:t})},Ii={list:()=>B(`/admin/levels`),create:e=>B(`/admin/levels`,{body:e}),update:(e,t)=>B(`/admin/levels/${e}`,{method:`PATCH`,body:t})},Li={list:e=>B(`/admin/suggestions`,{query:{customerId:e}}),create:e=>B(`/admin/suggestions`,{body:e}),setActive:(e,t)=>B(`/admin/suggestions/${e}/active`,{method:`PATCH`,body:{isActive:t}})},Ri={summary:()=>B(`/admin/sms-wallet`),manage:()=>B(`/admin/sms-wallet/manage`),update:e=>B(`/admin/sms-wallet`,{method:`PATCH`,body:e}),charge:e=>B(`/admin/sms-wallet/charge`,{body:e})},zi=e(null);function Bi(){async function e(){zi.value=await Ri.summary()}return{summary:zi,refresh:e}}var Vi=`۰۱۲۳۴۵۶۷۸۹`,Hi=new Intl.NumberFormat(`fa-IR`,{useGrouping:!0});function Ui(e){return e.replace(/[۰-۹]/g,e=>String(Vi.indexOf(e)))}function Wi(e){return Ui(e).replace(/[^\d]/g,``)}function Gi(e){return Number.isFinite(e)?Hi.format(e):`—`}function Ki(e){return`${Gi(e)} تومان`}function qi(e){return`${Gi(e)} متر`}function Ji(e){return String(e).replace(/\d/g,e=>Vi[Number(e)])}var Yi=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`}),Xi=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`});function Zi(e){let t=Ui(e.trim()).replace(/-/g,`/`).match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/);if(!t)return!1;let n=Number(t[1]);return n>=1300&&n<=1500}function Qi(e){if(typeof e!=`string`)return e;let t=e.trim(),n=t.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(n&&Number(n[1])>=1700)return new Date(Number(n[1]),Number(n[2])-1,Number(n[3]));let r=new Date(t);return Number.isNaN(r.getTime())?new Date(NaN):r}function $i(e){if(!e)return`—`;if(typeof e==`string`&&Zi(e)){let t=Ui(e.trim()).replace(/-/g,`/`),n=t.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/);if(!n)return Ji(t);let[,r,i,a]=n;return Ji(`${r}/${i.padStart(2,`0`)}/${a.padStart(2,`0`)}`)}let t=Qi(e);return Number.isNaN(t.getTime())?`—`:Yi.format(t)}function ea(e){if(!e)return`—`;if(typeof e==`string`&&Zi(e)&&!/[T\s]\d/.test(e))return $i(e);let t=Qi(e);return Number.isNaN(t.getTime())?`—`:Xi.format(t)}var ta=/ORD-?\d{2,4}-?\d{2,6}/i,na=/^\/?(?:admin\/)?orders\/([^/?#]+)\/?$/i,ra=/^\/?(?:admin\/)?orders\/([^/?#]+)\/(pricing|checks)\/?$/i;function ia(e){let t=e.match(ta);if(!t?.[0])return null;let n=t[0].toUpperCase().replace(/^ORD-?/,``).replace(/-/g,``);return n.length<6?t[0].toUpperCase():`ORD-${n.slice(0,4)}-${n.slice(4)}`}function Q(e,t){return t.some(t=>t.test(e))}function aa(e){let t=e.trim();if(!t)return t;try{if(/^https?:\/\//i.test(t)){let e=new URL(t);t=`${e.pathname}${e.search}`}}catch{}t=t.replace(/^\/admin(?=\/)/,``),t.startsWith(`/`)||(t=`/${t}`);let n=t.match(ra);if(n?.[1]&&n[2])return`/orders/${n[1]}/${n[2]}`;let r=t.match(na);return r?.[1]?`/orders?order=${encodeURIComponent(r[1])}`:t}function oa(e){let t=e.link?.trim();if(t)return aa(t);let n=`${e.title?.trim()??``} ${e.body?.trim()??``}`,r=e.orderId?.trim()||null,i=ia(n),a=Q(n,[/پیامک/]),o=Q(n,[/چک/]),s=Q(n,[/قیمت/,/تخفیف/,/پیش[‌\s]?فاکتور/,/قیمت‌گذاری/,/اصلاح قیمت/]),c=!a&&Q(n,[/ارسال/,/باربری/,/حمل/,/بارنامه/]),l=Q(n,[/نقدی/,/پرداخت نقد/,/رسید پرداخت/]),u=Q(n,[/گزارش/]),d=Q(n,[/مشتری جدید/,/ثبت مشتری/]),f=Q(n,[/کالیته/]),p=Q(n,[/محصول/]),m=Q(n,[/شرکت/,/حساب بانکی/]),h=Q(n,[/سفارش/]),g=a||Q(n,[/پشتیبان/,/تنظیمات/]);return r?o?`/orders/${r}/checks`:s?`/orders/${r}/pricing`:c?`/shipping?order=${encodeURIComponent(r)}`:l?`/cash-payments?order=${encodeURIComponent(r)}`:`/orders?order=${encodeURIComponent(r)}`:i?o?`/orders?order=${encodeURIComponent(i)}&focus=checks`:s?`/orders?order=${encodeURIComponent(i)}&focus=pricing`:c?`/shipping?order=${encodeURIComponent(i)}`:l?`/cash-payments?order=${encodeURIComponent(i)}`:`/orders?order=${encodeURIComponent(i)}`:o?`/checks`:c?`/shipping`:l?`/cash-payments`:u?`/reports`:d?`/customers`:f||p?`/products`:m?`/companies`:g?`/settings`:s||h?`/orders`:null}function sa(e){return e.replace(/\D/g,``).replace(/(\d{4})(?=\d)/g,`$1 `).trim()}function ca(e){let t=e.replace(/[\s-]/g,``).toUpperCase(),n=t.startsWith(`IR`)?t.slice(2):t;if(n.length<2)return t;let r=n.slice(2).replace(/(.{4})/g,`$1 `).trim();return`IR${n.slice(0,2)} ${r}`.trim()}var la=Ge(`theme`,()=>{let e=_i(`ft_admin_theme`,`system`),t=pi(),n=N(()=>e.value===`system`?t.value?`dark`:`light`:e.value),r=N(()=>n.value===`dark`);g(()=>{let e=document.documentElement;e.classList.toggle(`dark`,r.value),e.style.colorScheme=n.value});function i(t){e.value=t}return{preference:e,resolved:n,isDark:r,setPreference:i}}),ua={class:`admin-header`},da={class:`admin-header__right`},fa=[`disabled`],pa={key:0},ma={class:`admin-header__dropdown`},ha=[`aria-label`,`aria-expanded`],ga={key:0,class:`admin-header__badge`,"aria-hidden":`true`},_a={class:`admin-header__panel-header`},va={key:0,class:`admin-header__panel-list`},ya=[`onClick`],ba={class:`admin-header__panel-item-top`},xa=[`datetime`],Sa={class:`admin-header__panel-item-sender`},Ca={class:`admin-header__panel-item-body`},wa={key:1,class:`admin-header__panel-empty`},Ta={class:`admin-header__dropdown`},Ea=[`aria-label`,`aria-expanded`],Da={key:0,class:`admin-header__badge`,"aria-hidden":`true`},Oa={class:`admin-header__panel-header`},ka={key:0,class:`admin-header__panel-list`},Aa=[`onClick`],ja={class:`admin-header__panel-item-top`},Ma=[`datetime`],Na={class:`admin-header__panel-item-body`},Pa={key:1,class:`admin-header__panel-empty`},Fa={class:`admin-header__dropdown`},Ia=[`aria-label`,`aria-expanded`],La={class:`admin-header__theme-glyph`,"aria-hidden":`true`},Ra={class:`admin-header__theme-list`},za=[`onClick`],Ba={class:`admin-header__theme-option-icon`,"aria-hidden":`true`},Va={class:`admin-header__theme-option-label`},Ha={class:`admin-header__user`},Ua={class:`admin-header__avatar`},Wa={class:`admin-header__user-info`},Ga={key:0,class:`sms-charge`},Ka={class:`sms-charge__row`},qa={dir:`ltr`},Ja={class:`sms-charge__row`},Ya={dir:`ltr`},Xa={class:`sms-charge__name`},Za=F(D({__name:`AdminHeader`,emits:[`menuClick`],setup(t){let r=Ot(),i=Ar(),s=la(),l=ce(),{summary:u,refresh:d}=Bi(),p=e(!1),m=e(null),h=e(null),g=e([]),_=e([]),v=N(()=>g.value.filter(e=>!e.isRead).length),y=N(()=>_.value.filter(e=>!e.isRead).length),b=[{value:`light`,label:`روشن`,icon:`vuesax-linear:sun-1`},{value:`dark`,label:`تاریک`,icon:`vuesax-linear:moon`},{value:`system`,label:`سیستم`,icon:`vuesax-linear:mobile`}],x=N(()=>b.find(e=>e.value===s.preference)?.label??`سیستم`),S=N(()=>b.find(e=>e.value===s.preference)?.icon??`vuesax-linear:sun-1`);ki.get().then(e=>{g.value=e.messages??[],_.value=e.notifications??[]}).catch(()=>{g.value=[],_.value=[]}),ni(h,()=>{m.value=null}),Z(document,`keydown`,e=>{e.key===`Escape`&&(m.value=null)});function C(e){m.value=m.value===e?null:e}function w(){m.value=null}function ee(e){e.isRead||(e.isRead=!0,Mi.markRead(e.id).catch(()=>{e.isRead=!1}))}function D(e){e.isRead||(e.isRead=!0,ji.markRead(e.id).catch(()=>{e.isRead=!1}))}function te(){let e=g.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),Mi.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function re(){let e=_.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),ji.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function j(e){w(),e&&r.push(e)}function ie(e){ee(e),j(oa({link:e.link||void 0,orderId:e.orderId,title:e.subject,body:e.preview}))}function ae(e){D(e),j(oa({link:e.link,orderId:e.orderId,title:e.title,body:e.body}))}function F(e){s.setPreference(e),w()}let oe=N(()=>{let e=u.value;return e?e.blocked||e.balanceToman<=e.redThreshold?`danger`:e.balanceToman<=e.yellowThreshold?`warn`:`ok`:`ok`});function se(){d().catch(()=>{})}o(se),Z(window,`focus`,se);async function L(e){try{await navigator.clipboard.writeText(e.replace(/\s/g,``)),l.success(`کپی شد.`)}catch{l.error(`کپی انجام نشد.`)}}return(e,t)=>(k(),E(M,null,[T(`header`,ua,[T(`div`,da,[T(`button`,{type:`button`,class:`admin-header__menu-btn compact-only`,"aria-label":`باز کردن منو`,onClick:t[0]||=t=>e.$emit(`menuClick`)},[O(J,{name:`menu`,size:22})])]),T(`div`,{ref_key:`actionsRef`,ref:h,class:`admin-header__left`},[T(`div`,{class:a([`sms-credit`,P(u)?`sms-credit--${oe.value}`:``])},[T(`button`,{type:`button`,class:`sms-credit__charge`,disabled:!P(u),onClick:t[1]||=e=>p.value=!0},` شارژ `,8,fa),T(`span`,null,`اعتبار پیامک: `+n(P(u)?P(Gi)(P(u).balanceRial):`—`)+` ریال`,1),P(u)?.blocked?(k(),E(`span`,pa,`مسدود`)):I(``,!0)],2),T(`div`,ma,[T(`button`,{type:`button`,class:a([`admin-header__icon-btn`,{"admin-header__icon-btn--active":m.value===`messages`}]),title:`پیام‌های داخلی`,"aria-label":`پیام‌های داخلی — ${v.value} پیام خوانده‌نشده`,"aria-expanded":m.value===`messages`,"aria-haspopup":`true`,onClick:t[2]||=z(e=>C(`messages`),[`stop`])},[O(J,{name:`message`,size:22}),v.value?(k(),E(`span`,ga,n(v.value),1)):I(``,!0),t[11]||=T(`span`,{class:`admin-header__icon-label`},`پیام`,-1)],10,ha),m.value===`messages`?(k(),E(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`پیام‌های داخلی`,onClick:t[3]||=z(()=>{},[`stop`])},[T(`div`,_a,[t[12]||=T(`h2`,{class:`admin-header__panel-title`},`پیام‌های داخلی`,-1),v.value?(k(),E(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:te},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):I(``,!0)]),g.value.length?(k(),E(`ul`,va,[(k(!0),E(M,null,f(g.value,e=>(k(),E(`li`,{key:e.id,class:a([`admin-header__panel-item`,{unread:!e.isRead}])},[T(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>ie(e)},[T(`span`,ba,[T(`strong`,null,n(e.subject),1),T(`time`,{datetime:e.sentAt},n(P(ea)(e.sentAt)),9,xa)]),T(`span`,Sa,`از `+n(e.senderName),1),T(`span`,Ca,n(e.preview),1)],8,ya)],2))),128))])):(k(),E(`p`,wa,`پیامی وجود ندارد.`))])):I(``,!0)]),T(`div`,Ta,[T(`button`,{type:`button`,class:a([`admin-header__icon-btn`,{"admin-header__icon-btn--active":m.value===`notifications`}]),title:`اعلان‌ها`,"aria-label":`اعلان‌ها — ${y.value} اعلان جدید`,"aria-expanded":m.value===`notifications`,"aria-haspopup":`true`,onClick:t[4]||=z(e=>C(`notifications`),[`stop`])},[O(J,{name:`bell`,size:22}),y.value?(k(),E(`span`,Da,n(y.value),1)):I(``,!0),t[13]||=T(`span`,{class:`admin-header__icon-label`},`اعلان`,-1)],10,Ea),m.value===`notifications`?(k(),E(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`اعلان‌ها`,onClick:t[5]||=z(()=>{},[`stop`])},[T(`div`,Oa,[t[14]||=T(`h2`,{class:`admin-header__panel-title`},`اعلان‌ها`,-1),y.value?(k(),E(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:re},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):I(``,!0)]),_.value.length?(k(),E(`ul`,ka,[(k(!0),E(M,null,f(_.value,e=>(k(),E(`li`,{key:e.id,class:a([`admin-header__panel-item`,[{unread:!e.isRead},e.tone?`admin-header__panel-item--${e.tone}`:``]])},[T(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>ae(e)},[T(`span`,ja,[T(`strong`,null,n(e.title),1),T(`time`,{datetime:e.sentAt},n(P(ea)(e.sentAt)),9,Ma)]),T(`span`,Na,n(e.body),1)],8,Aa)],2))),128))])):(k(),E(`p`,Pa,`اعلانی وجود ندارد.`))])):I(``,!0)]),T(`div`,Fa,[T(`button`,{type:`button`,class:a([`admin-header__icon-btn`,{"admin-header__icon-btn--active":m.value===`theme`}]),title:`حالت نمایش`,"aria-label":`حالت نمایش — ${x.value}`,"aria-expanded":m.value===`theme`,"aria-haspopup":`true`,onClick:t[6]||=z(e=>C(`theme`),[`stop`])},[T(`span`,La,[O(Je,{icon:S.value,size:20,"stroke-width":1.5},null,8,[`icon`])]),t[15]||=T(`span`,{class:`admin-header__icon-label`},`تم`,-1)],10,Ia),m.value===`theme`?(k(),E(`div`,{key:0,class:`admin-header__panel admin-header__panel--theme`,role:`dialog`,"aria-label":`انتخاب حالت نمایش`,onClick:t[7]||=z(()=>{},[`stop`])},[t[16]||=T(`div`,{class:`admin-header__panel-header`},[T(`h2`,{class:`admin-header__panel-title`},`حالت نمایش`)],-1),T(`ul`,Ra,[(k(),E(M,null,f(b,e=>T(`li`,{key:e.value},[T(`button`,{type:`button`,class:a([`admin-header__theme-option`,{"admin-header__theme-option--active":P(s).preference===e.value}]),onClick:t=>F(e.value)},[T(`span`,Ba,[O(Je,{icon:e.icon,size:18,"stroke-width":1.5},null,8,[`icon`])]),T(`span`,Va,n(e.label),1),P(s).preference===e.value?(k(),A(Je,{key:0,class:`admin-header__theme-option-check`,icon:`vuesax-linear:tick-circle`,size:16,"stroke-width":1.75})):I(``,!0)],10,za)])),64))])])):I(``,!0)]),T(`div`,Ha,[T(`div`,Ua,n(P(i).fullName.charAt(0)||`؟`),1),T(`div`,Wa,[T(`strong`,null,n(P(i).fullName||`مدیر`),1),T(`span`,null,n(P(i).roleLabel||`پنل مدیریت`),1)])])],512)]),O(at,{open:p.value,title:`شارژ اعتبار پیامک`,onClose:t[10]||=e=>p.value=!1},{default:c(()=>[P(u)?(k(),E(`div`,Ga,[t[20]||=T(`p`,{class:`sms-charge__note`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید. `,-1),T(`div`,Ka,[T(`button`,{type:`button`,class:`sms-charge__copy`,onClick:t[8]||=e=>L(P(u).deposit.cardNumber)},` کپی `),T(`div`,null,[t[17]||=T(`span`,null,`شماره کارت`,-1),T(`strong`,qa,n(P(Ji)(P(sa)(P(u).deposit.cardNumber))),1)])]),T(`div`,Ja,[T(`button`,{type:`button`,class:`sms-charge__copy sms-charge__copy--sheba`,onClick:t[9]||=e=>L(P(u).deposit.sheba)},` کپی `),T(`div`,null,[t[18]||=T(`span`,null,`شماره شبا`,-1),T(`strong`,Ya,n(P(Ji)(P(ca)(P(u).deposit.sheba))),1)])]),T(`p`,Xa,[t[19]||=ne(` به نام `,-1),T(`strong`,null,n(P(u).deposit.accountName),1)])])):I(``,!0)]),_:1},8,[`open`])],64))}}),[[`__scopeId`,`data-v-a733eff3`]]),Qa=[`aria-hidden`],$a={class:`admin-drawer__brand`},eo={class:`admin-drawer__nav`},to=[`onClick`],no=F(D({__name:`AdminMobileDrawer`,props:{open:{type:Boolean}},emits:[`close`],setup(e,{emit:t}){let r=t,i=kt(),o=Ot(),s=Ar(),c=N(()=>hr(s.session?.phone));function l(e){o.push(e),r(`close`)}function u(){s.logout(),o.push(`/login`),r(`close`)}return(t,o)=>(k(),E(M,null,[T(`div`,{class:a([`admin-drawer-backdrop`,{open:e.open}]),role:`presentation`,onClick:o[0]||=e=>r(`close`)},null,2),T(`aside`,{class:a([`admin-drawer`,{open:e.open}]),"aria-label":`منوی ناوبری`,"aria-hidden":!e.open},[T(`div`,$a,[T(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-drawer__logo`}),o[2]||=T(`strong`,null,`پارچه`,-1),o[3]||=T(`span`,null,`پنل مدیریت`,-1),T(`button`,{type:`button`,class:`admin-drawer__close`,"aria-label":`بستن منو`,onClick:o[1]||=e=>r(`close`)},` × `)]),T(`nav`,eo,[(k(!0),E(M,null,f(c.value,e=>(k(),E(`button`,{key:e.name,type:`button`,class:a([`admin-drawer__item`,{active:P(gr)(e.path,P(i).path)}]),onClick:t=>l(e.path)},[O(J,{name:e.icon,size:20},null,8,[`name`]),T(`span`,null,n(e.label),1)],10,to))),128))]),T(`button`,{type:`button`,class:`admin-drawer__logout`,onClick:u},[O(J,{name:`logout`,size:20}),o[4]||=T(`span`,null,`خروج`,-1)])],10,Qa)],64))}}),[[`__scopeId`,`data-v-72a66f9e`]]),ro={class:`admin-shell`},io={class:`admin-shell__main`},ao={class:`admin-shell__content`},oo=F(D({__name:`AdminShell`,setup(t){let n=kt(),i=e(!1);function a(){i.value=!0}function o(){i.value=!1}return r(()=>n.path,()=>{i.value=!1}),(e,t)=>{let n=m(`RouterView`);return k(),E(`div`,ro,[O(Pr,{class:`desktop-only admin-shell__sidebar`}),O(no,{open:i.value,onClose:o},null,8,[`open`]),T(`div`,io,[O(Za,{onMenuClick:a}),T(`main`,ao,[O(n)])])])}}}),[[`__scopeId`,`data-v-435fffac`]]),so=`modulepreload`,co=function(e){return`/admin/`+e},lo={},$=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=co(t,n),t=s(t),t in lo)return;lo[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:so,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},uo=dr({history:Nn(`/admin/`),routes:[{path:`/login`,name:`login`,component:()=>$(()=>import(`./LoginView-Z5zCxTv8.js`),__vite__mapDeps([0,1,2,3])),meta:{public:!0,title:`ورود به پنل مدیریت`}},{path:`/`,component:oo,meta:{requiresAuth:!0},children:[{path:``,name:`dashboard`,component:()=>$(()=>import(`./DashboardView-Dd0CgoV5.js`),__vite__mapDeps([4,1,2,5,6,7,8])),meta:{title:`داشبورد مدیریتی`}},{path:`orders`,name:`orders`,component:()=>$(()=>import(`./OrdersView-Di_Bxuhp.js`),__vite__mapDeps([9,1,2,10,11,12,13,14,6,5,7,15])),meta:{title:`سفارش‌ها`}},{path:`orders/:id/pricing`,name:`order-pricing`,component:()=>$(()=>import(`./OrderPricingView-Ba_MCwwk.js`),__vite__mapDeps([16,1,2,17,18,10,11,6,5,7,19,20,21])),meta:{title:`قیمت‌گذاری سفارش`}},{path:`checks`,name:`checks`,component:()=>$(()=>import(`./ChecksListView-CCsj1dMX.js`),__vite__mapDeps([22,1,2,17,18,10,11,5,6,7,23])),meta:{title:`چک‌ها`}},{path:`orders/:id/checks`,name:`order-checks`,component:()=>$(()=>import(`./CheckManagementView-Cegsi1VF.js`),__vite__mapDeps([24,1,2,6,5,7,25])),meta:{title:`مدیریت چک‌های سفارش`}},{path:`orders/:id`,name:`order-detail`,redirect:e=>({name:`orders`,query:{order:String(e.params.id)}})},{path:`companies`,name:`companies`,component:()=>$(()=>import(`./CompaniesView-C54y7vWA.js`),__vite__mapDeps([26,1,2,17,18,27,28,29,30,31,32])),meta:{title:`مدیریت شرکت‌ها`}},{path:`companies/:companyId/accounts`,name:`bank-accounts`,component:()=>$(()=>import(`./BankAccountsView-D2HiabfV.js`),__vite__mapDeps([33,1,2,27,28,29,30,31,34])),meta:{title:`حساب‌های بانکی`}},{path:`customers`,name:`customers`,component:()=>$(()=>import(`./CustomersView-DkeEBLgM.js`),__vite__mapDeps([35,1,2,17,18,27,28,29,30,10,11,14,31,36])),meta:{title:`مشتریان و واسطه‌ها`}},{path:`products`,name:`products`,component:()=>$(()=>import(`./ProductsView-CpaU9Oj4.js`),__vite__mapDeps([37,1,2,17,18,27,28,29,30,38,39,10,11,31,19,20,40])),meta:{title:`محصولات`}},{path:`categories`,name:`categories`,component:()=>$(()=>import(`./CategoriesView-DB_2mVA7.js`),__vite__mapDeps([41,1,2,17,18,27,28,38,39,10,11,42])),meta:{title:`دسته‌بندی‌ها`}},{path:`banners`,name:`banners`,component:()=>$(()=>import(`./BannersView-M2Tlryjc.js`),__vite__mapDeps([43,1,2,17,18,27,28,29,30,38,39,10,11,44])),meta:{title:`بنرها`}},{path:`internal-messages`,name:`internal-messages`,component:()=>$(()=>import(`./InternalMessagesView-CjsukHYr.js`),__vite__mapDeps([45,1,2,17,18,29,30,46])),meta:{title:`پیام‌های داخلی`}},{path:`catalog-requests`,name:`catalog-requests`,component:()=>$(()=>import(`./CatalogRequestsView-BEaJWR_M.js`),__vite__mapDeps([47,1,2,17,18,29,30,10,11,48])),meta:{title:`درخواست کالیته فیزیکی`}},{path:`brands`,name:`brands`,component:()=>$(()=>import(`./BrandsView-vL6Hgb4d.js`),__vite__mapDeps([49,1,2,17,18,27,28,29,30,50])),meta:{title:`برندها`}},{path:`suggestions`,name:`suggestions`,component:()=>$(()=>import(`./SuggestionsView-DvLSQunL.js`),__vite__mapDeps([51,1,2,17,18,29,30,10,11,52])),meta:{title:`پیشنهاد محصول`}},{path:`levels`,name:`levels`,component:()=>$(()=>import(`./LevelsView-B-ACzl3p.js`),__vite__mapDeps([53,1,2,17,18,29,30,54])),meta:{title:`سطوح مشتری`}},{path:`cash-payments`,name:`cash-payments`,component:()=>$(()=>import(`./CashPaymentsView-CBMJOEPX.js`),__vite__mapDeps([55,1,2,17,18,10,11,12,13,14,56])),meta:{title:`پرداخت‌های نقدی`}},{path:`shipping`,name:`shipping`,component:()=>$(()=>import(`./ShippingView-C-VtAZgk.js`),__vite__mapDeps([57,1,2,17,18,10,11,14,6,58])),meta:{title:`ارسال و باربری`}},{path:`reports`,name:`reports`,component:()=>$(()=>import(`./ReportsView-_sppl77t.js`),__vite__mapDeps([59,1,2,17,18,60])),meta:{title:`گزارش‌ها`}},{path:`settings`,name:`settings`,component:()=>$(()=>import(`./SettingsView-CJBaFKxk.js`),__vite__mapDeps([61,1,2,17,18,62])),meta:{title:`تنظیمات`}},{path:`sms-tariff`,name:`sms-tariff`,component:()=>$(()=>import(`./SmsTariffView-CoRp2-Fp.js`),__vite__mapDeps([63,1,2,17,18,27,28,19,20,64])),meta:{title:`تعرفه پیامک‌ها`,smsWalletOwner:!0}},{path:`users`,name:`users`,component:()=>$(()=>import(`./UsersView-ie6UvRnF.js`),__vite__mapDeps([65,1,2,17,18,27,28,29,30,10,11,14,31,66])),meta:{title:`کاربران و دسترسی‌ها`}}]},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>$(()=>import(`./NotFoundView-DBzokouR.js`),__vite__mapDeps([67,1,68]))}]});uo.beforeEach(async e=>{let t=Ar();return await t.hydrate(),e.meta.public?t.isAuthenticated&&e.name===`login`?{name:`dashboard`}:!0:e.matched.some(e=>e.meta.requiresAuth)&&!t.isAuthenticated?{name:`login`,query:{redirect:e.fullPath}}:e.meta.smsWalletOwner&&!mr(t.session?.phone)?{name:`dashboard`}:!0});var fo=pe(ht),po=Me();fo.use(po),fo.use(uo),la(po),Ar(po).hydrate(),fo.mount(`#app`),`serviceWorker`in navigator&&window.addEventListener(`load`,()=>{navigator.serviceWorker.register(`/admin/sw.js`,{scope:`/admin/`})});export{Li as A,at as B,ji as C,Di as D,Ai as E,Er as F,J as I,kt as L,si as M,Ar as N,yi as O,yr as P,Ot as R,vi as S,Si as T,Je as V,bi as _,$i as a,Mi as b,Gi as c,xi as d,Pi as f,Ti as g,Ni as h,Ki as i,ni as j,Ri as k,Bi as l,Ei as m,ca as n,ea as o,Fi as p,Wi as r,qi as s,sa as t,Oi as u,Ci as v,wi as w,Ii as x,ki as y,st as z}; \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index d523b70..283b596 100644 --- a/dist/index.html +++ b/dist/index.html @@ -11,7 +11,7 @@ پنل مدیریت | پارچه - + diff --git a/src/components/ui/AdminImagePicker.vue b/src/components/ui/AdminImagePicker.vue index 0edfa8f..153b42e 100644 --- a/src/components/ui/AdminImagePicker.vue +++ b/src/components/ui/AdminImagePicker.vue @@ -2,10 +2,15 @@ import { ref } from 'vue' import { fileToCatalogImage, toCssBackgroundUrl } from '@/utils/catalogImage' -const props = defineProps<{ - modelValue?: string | null - label?: string -}>() +const props = withDefaults( + defineProps<{ + modelValue?: string | null + label?: string + /** دکمهٔ حذف تصویر (مثلاً برای رنگ‌بندی که فقط «حذف رنگ» داریم) */ + showRemove?: boolean + }>(), + { showRemove: true }, +) const emit = defineEmits<{ 'update:modelValue': [value: string | null] @@ -57,7 +62,7 @@ function remove() { {{ props.modelValue ? 'تغییر تصویر' : 'افزودن تصویر' }} + + + + + +
+ +

+ برای هر رنگ یک نام و یک تصویر بگذارید. تصویر رنگ در بخش رنگ‌بندی اپ نمایش داده می‌شود، نه در گالری عمومی.

@@ -666,6 +704,13 @@ function clearFilters() { width: min(260px, 100%); } +.admin-form__hint { + margin: 6px 0 0; + font-size: 0.75rem; + line-height: 1.5; + color: var(--color-text-muted); +} + .products-page__table { overflow: hidden; } @@ -695,6 +740,23 @@ function clearFilters() { line-height: 1.6; } +.general-images { + display: flex; + flex-direction: column; + gap: 12px; +} + +.general-images__row { + display: flex; + flex-wrap: wrap; + gap: 12px; + align-items: center; + padding: 10px; + border: 1px solid var(--color-border); + border-radius: 12px; + background: var(--color-bg, #f7f8f7); +} + .color-variant { display: flex; flex-wrap: wrap; diff --git a/src/views/settings/SettingsView.vue b/src/views/settings/SettingsView.vue index b7e2d20..c194ec4 100644 --- a/src/views/settings/SettingsView.vue +++ b/src/views/settings/SettingsView.vue @@ -204,7 +204,7 @@ async function sendBroadcast() {
- + -import { onMounted, ref } from 'vue' -import AdminPageSkeleton from '@/components/ui/AdminPageSkeleton.vue' -import BaseEmptyState from '@/components/ui/BaseEmptyState.vue' -import { stockAlertsApi, type StockAlert } from '@/services/api' -import { ApiError } from '@/services/http' -import { useToast } from '@/composables/useToast' - -const list = ref([]) -const loading = ref(true) -const toast = useToast() - -async function load() { - loading.value = true - try { - list.value = await stockAlertsApi.list() - } catch (err) { - toast.error(err instanceof ApiError ? err.message : 'بارگذاری ناموفق بود') - } finally { - loading.value = false - } -} - -async function notify(id: string) { - try { - await stockAlertsApi.notify(id) - toast.success('اعلان موجودی ارسال شد') - await load() - } catch (err) { - toast.error(err instanceof ApiError ? err.message : 'ارسال ناموفق بود') - } -} - -onMounted(() => { - void load() -}) - - - - -