diff --git a/dist/assets/ActiveSwitchCell-BQoMjcdH.js b/dist/assets/ActiveSwitchCell-CRUUEk77.js similarity index 96% rename from dist/assets/ActiveSwitchCell-BQoMjcdH.js rename to dist/assets/ActiveSwitchCell-CRUUEk77.js index 2a75ada..bf206ae 100644 --- a/dist/assets/ActiveSwitchCell-BQoMjcdH.js +++ b/dist/assets/ActiveSwitchCell-CRUUEk77.js @@ -1 +1 @@ -import{A as e,ct as t,et as n,g as r,l as i}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a}from"./http-CTjL79ty.js";import{B as o}from"./index-DWlOII4H.js";import{t as s}from"./BaseSwitch-Dz4ODUhf.js";function c(e=480){return new Promise(t=>{window.setTimeout(t,e)})}function l(e){let t=n(null),r=n(null),i=a();async function o(n,a){if(t.value)return a;let o=!a;if(!o&&e.confirmOff&&!await e.confirmOff())return a;t.value=n,r.value=null;let s=a;try{return await e.onPersist(o),i.success(e.successMessage?.(o)??(o?`وضعیت فعال شد.`:`وضعیت غیرفعال شد.`)),o}catch{return r.value=n,i.error(e.errorMessage??`به‌روزرسانی وضعیت انجام نشد.`),s}finally{t.value=null}}function s(e){return t.value===e}function c(e){return r.value===e}return{toggle:o,isLoading:s,hasError:c}}var u=r({__name:`ActiveSwitchCell`,props:{id:{},modelValue:{type:Boolean},entityName:{},entityType:{},persist:{type:Function}},emits:[`update:modelValue`],setup(n,{emit:r}){let a=n,u=r,{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(r,a)=>(e(),i(s,{"model-value":n.modelValue,loading:t(f)(n.id),error:t(p)(n.id),"onUpdate:modelValue":m},null,8,[`model-value`,`loading`,`error`]))}});export{u as t}; \ No newline at end of file +import{A as e,ct as t,et as n,g as r,l as i}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a}from"./http-CTjL79ty.js";import{B as o}from"./index-BWgYBNME.js";import{t as s}from"./BaseSwitch-Dz4ODUhf.js";function c(e=480){return new Promise(t=>{window.setTimeout(t,e)})}function l(e){let t=n(null),r=n(null),i=a();async function o(n,a){if(t.value)return a;let o=!a;if(!o&&e.confirmOff&&!await e.confirmOff())return a;t.value=n,r.value=null;let s=a;try{return await e.onPersist(o),i.success(e.successMessage?.(o)??(o?`وضعیت فعال شد.`:`وضعیت غیرفعال شد.`)),o}catch{return r.value=n,i.error(e.errorMessage??`به‌روزرسانی وضعیت انجام نشد.`),s}finally{t.value=null}}function s(e){return t.value===e}function c(e){return r.value===e}return{toggle:o,isLoading:s,hasError:c}}var u=r({__name:`ActiveSwitchCell`,props:{id:{},modelValue:{type:Boolean},entityName:{},entityType:{},persist:{type:Function}},emits:[`update:modelValue`],setup(n,{emit:r}){let a=n,u=r,{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(r,a)=>(e(),i(s,{"model-value":n.modelValue,loading:t(f)(n.id),error:t(p)(n.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-iQrtrYek.js b/dist/assets/AdminCurrencyInput-CpWvBhwh.js similarity index 93% rename from dist/assets/AdminCurrencyInput-iQrtrYek.js rename to dist/assets/AdminCurrencyInput-CpWvBhwh.js index f98c096..61be197 100644 --- a/dist/assets/AdminCurrencyInput-iQrtrYek.js +++ b/dist/assets/AdminCurrencyInput-CpWvBhwh.js @@ -1 +1 @@ -import{A as e,Ot as t,d as n,g as r,s as i,t as a}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{c as o,r as s}from"./index-DWlOII4H.js";var c=[`id`,`value`,`placeholder`,`disabled`],l=a(r({__name:`AdminCurrencyInput`,props:{modelValue:{default:null},placeholder:{default:``},disabled:{type:Boolean,default:!1},id:{},inputClass:{default:`admin-input`},allowEmpty:{type:Boolean,default:!0}},emits:[`update:modelValue`],setup(r,{emit:a}){let l=r,u=a,d=i(()=>l.modelValue==null||!Number.isFinite(l.modelValue)?``:o(l.modelValue));function f(e){let t=e.target,n=s(t.value);if(!n){u(`update:modelValue`,l.allowEmpty?null:0),t.value=``;return}let r=Number(n);u(`update:modelValue`,r),t.value=o(r)}return(i,a)=>(e(),n(`input`,{id:r.id,type:`text`,inputmode:`numeric`,dir:`ltr`,class:t([`admin-currency-input`,r.inputClass]),value:d.value,placeholder:r.placeholder,disabled:r.disabled,onInput:f},null,42,c))}}),[[`__scopeId`,`data-v-56435fc8`]]);export{l as t}; \ No newline at end of file +import{A as e,Ot as t,d as n,g as r,s as i,t as a}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{c as o,r as s}from"./index-BWgYBNME.js";var c=[`id`,`value`,`placeholder`,`disabled`],l=a(r({__name:`AdminCurrencyInput`,props:{modelValue:{default:null},placeholder:{default:``},disabled:{type:Boolean,default:!1},id:{},inputClass:{default:`admin-input`},allowEmpty:{type:Boolean,default:!0}},emits:[`update:modelValue`],setup(r,{emit:a}){let l=r,u=a,d=i(()=>l.modelValue==null||!Number.isFinite(l.modelValue)?``:o(l.modelValue));function f(e){let t=e.target,n=s(t.value);if(!n){u(`update:modelValue`,l.allowEmpty?null:0),t.value=``;return}let r=Number(n);u(`update:modelValue`,r),t.value=o(r)}return(i,a)=>(e(),n(`input`,{id:r.id,type:`text`,inputmode:`numeric`,dir:`ltr`,class:t([`admin-currency-input`,r.inputClass]),value:d.value,placeholder:r.placeholder,disabled:r.disabled,onInput:f},null,42,c))}}),[[`__scopeId`,`data-v-56435fc8`]]);export{l as t}; \ No newline at end of file diff --git a/dist/assets/AdminSelect-CWMyO8tk.js b/dist/assets/AdminSelect-hgn_nYC2.js similarity index 96% rename from dist/assets/AdminSelect-CWMyO8tk.js rename to dist/assets/AdminSelect-hgn_nYC2.js index c4deea1..fed6c56 100644 --- a/dist/assets/AdminSelect-CWMyO8tk.js +++ b/dist/assets/AdminSelect-hgn_nYC2.js @@ -1 +1 @@ -import{A as e,At as t,N as n,O as r,Ot as i,P as a,V as o,W as s,a as c,c as l,d as u,et as d,g as f,h as p,jt as m,l as h,r as g,s as _,t as v,u as y,w as b}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{d as x,m as S,p as C}from"./http-CTjL79ty.js";import{L as w,M as T}from"./index-DWlOII4H.js";import{n as E,r as D,t as O}from"./selectOptionSearch-BUIO0UgP.js";var k=[`id`],A=[`aria-label`,`aria-expanded`],j={class:`admin-select__trigger-content`},ee={class:`admin-select__value`},te={class:`admin-select__chevron`,"aria-hidden":`true`},M=[`aria-label`],N={key:0,class:`admin-select__search`,role:`presentation`},P=[`placeholder`],F={key:1,class:`admin-select__empty`,role:`presentation`},I=[`aria-selected`,`onClick`,`onKeydown`],L={class:`admin-select__option-label`},R=v(f({__name:`AdminSelect`,props:{modelValue:{},options:{},placeholder:{default:`انتخاب کنید`},ariaLabel:{default:`انتخاب`},block:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`جستجو…`},id:{default:void 0}},emits:[`update:modelValue`],setup(f,{emit:v}){let R=f,z=v,B=d(!1),V=d(``),H=d(null),U=d(null),W=d(null),G=d({});T(H,()=>{B.value=!1,V.value=``},{ignore:[U]});let K=_(()=>R.options.find(e=>e.value===R.modelValue)),q=_(()=>K.value?.label??R.placeholder),J=_(()=>O(R.options,V.value));function Y(e){e.key===`ArrowDown`?(e.preventDefault(),D(U.value,`first`)):e.key===`ArrowUp`&&(e.preventDefault(),D(U.value,`last`))}function X(e,t){let n=e.currentTarget;e.key===`ArrowDown`?(e.preventDefault(),E(n,1)):e.key===`ArrowUp`?(e.preventDefault(),E(n,-1)):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),$(t))}function Z(){let e=H.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));G.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 Q(e){e?(window.addEventListener(`resize`,Z),window.addEventListener(`scroll`,Z,!0)):(window.removeEventListener(`resize`,Z),window.removeEventListener(`scroll`,Z,!0))}async function ne(){B.value=!B.value,B.value&&(V.value=``,await b(),Z(),R.searchable&&(await b(),W.value?.focus()))}function $(e){z(`update:modelValue`,e),B.value=!1,V.value=``}return o(B,e=>{Q(e),e&&b(()=>Z())}),r(()=>{Q(!1)}),(r,o)=>(e(),u(`div`,{id:f.id,ref_key:`rootRef`,ref:H,class:i([`admin-select`,{"admin-select--open":B.value,"admin-select--block":f.block}])},[l(`button`,{type:`button`,class:`admin-select__trigger`,"aria-label":f.ariaLabel,"aria-expanded":B.value,"aria-haspopup":`listbox`,onClick:ne},[l(`span`,j,[a(r.$slots,`option-leading`,{option:K.value},void 0,!0),l(`span`,ee,m(q.value),1)]),l(`span`,te,[p(w,{name:`chevron-down`,size:16})])],8,A),(e(),h(c,{to:`body`},[B.value?(e(),u(`ul`,{key:0,ref_key:`menuRef`,ref:U,class:`admin-select__menu`,"data-select-menu":``,role:`listbox`,"aria-label":f.ariaLabel,style:t(G.value)},[f.searchable?(e(),u(`li`,N,[s(l(`input`,{ref_key:`searchInputRef`,ref:W,"onUpdate:modelValue":o[0]||=e=>V.value=e,type:`search`,class:`admin-select__search-input`,placeholder:f.searchPlaceholder,onClick:o[1]||=S(()=>{},[`stop`]),onKeydown:[o[2]||=C(S(e=>B.value=!1,[`stop`]),[`esc`]),Y]},null,40,P),[[x,V.value]])])):y(``,!0),J.value.length?y(``,!0):(e(),u(`li`,F,` موردی یافت نشد `)),(e(!0),u(g,null,n(J.value,t=>(e(),u(`li`,{key:t.value,role:`presentation`},[l(`button`,{type:`button`,class:i([`admin-select__option`,{"admin-select__option--active":t.value===f.modelValue}]),"data-select-option":``,role:`option`,"aria-selected":t.value===f.modelValue,onClick:e=>$(t.value),onKeydown:e=>X(e,t.value)},[l(`span`,L,[a(r.$slots,`option-leading`,{option:t},void 0,!0),l(`span`,null,m(t.label),1)]),t.value===f.modelValue?(e(),h(w,{key:0,name:`check`,size:16,class:`admin-select__check`})):y(``,!0)],42,I)]))),128))],12,M)):y(``,!0)]))],10,k))}}),[[`__scopeId`,`data-v-4ee349a1`]]);export{R as t}; \ No newline at end of file +import{A as e,At as t,N as n,O as r,Ot as i,P as a,V as o,W as s,a as c,c as l,d as u,et as d,g as f,h as p,jt as m,l as h,r as g,s as _,t as v,u as y,w as b}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{d as x,m as S,p as C}from"./http-CTjL79ty.js";import{L as w,M as T}from"./index-BWgYBNME.js";import{n as E,r as D,t as O}from"./selectOptionSearch-DNMc9NzZ.js";var k=[`id`],A=[`aria-label`,`aria-expanded`],j={class:`admin-select__trigger-content`},ee={class:`admin-select__value`},te={class:`admin-select__chevron`,"aria-hidden":`true`},M=[`aria-label`],N={key:0,class:`admin-select__search`,role:`presentation`},P=[`placeholder`],F={key:1,class:`admin-select__empty`,role:`presentation`},I=[`aria-selected`,`onClick`,`onKeydown`],L={class:`admin-select__option-label`},R=v(f({__name:`AdminSelect`,props:{modelValue:{},options:{},placeholder:{default:`انتخاب کنید`},ariaLabel:{default:`انتخاب`},block:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`جستجو…`},id:{default:void 0}},emits:[`update:modelValue`],setup(f,{emit:v}){let R=f,z=v,B=d(!1),V=d(``),H=d(null),U=d(null),W=d(null),G=d({});T(H,()=>{B.value=!1,V.value=``},{ignore:[U]});let K=_(()=>R.options.find(e=>e.value===R.modelValue)),q=_(()=>K.value?.label??R.placeholder),J=_(()=>O(R.options,V.value));function Y(e){e.key===`ArrowDown`?(e.preventDefault(),D(U.value,`first`)):e.key===`ArrowUp`&&(e.preventDefault(),D(U.value,`last`))}function X(e,t){let n=e.currentTarget;e.key===`ArrowDown`?(e.preventDefault(),E(n,1)):e.key===`ArrowUp`?(e.preventDefault(),E(n,-1)):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),$(t))}function Z(){let e=H.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));G.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 Q(e){e?(window.addEventListener(`resize`,Z),window.addEventListener(`scroll`,Z,!0)):(window.removeEventListener(`resize`,Z),window.removeEventListener(`scroll`,Z,!0))}async function ne(){B.value=!B.value,B.value&&(V.value=``,await b(),Z(),R.searchable&&(await b(),W.value?.focus()))}function $(e){z(`update:modelValue`,e),B.value=!1,V.value=``}return o(B,e=>{Q(e),e&&b(()=>Z())}),r(()=>{Q(!1)}),(r,o)=>(e(),u(`div`,{id:f.id,ref_key:`rootRef`,ref:H,class:i([`admin-select`,{"admin-select--open":B.value,"admin-select--block":f.block}])},[l(`button`,{type:`button`,class:`admin-select__trigger`,"aria-label":f.ariaLabel,"aria-expanded":B.value,"aria-haspopup":`listbox`,onClick:ne},[l(`span`,j,[a(r.$slots,`option-leading`,{option:K.value},void 0,!0),l(`span`,ee,m(q.value),1)]),l(`span`,te,[p(w,{name:`chevron-down`,size:16})])],8,A),(e(),h(c,{to:`body`},[B.value?(e(),u(`ul`,{key:0,ref_key:`menuRef`,ref:U,class:`admin-select__menu`,"data-select-menu":``,role:`listbox`,"aria-label":f.ariaLabel,style:t(G.value)},[f.searchable?(e(),u(`li`,N,[s(l(`input`,{ref_key:`searchInputRef`,ref:W,"onUpdate:modelValue":o[0]||=e=>V.value=e,type:`search`,class:`admin-select__search-input`,placeholder:f.searchPlaceholder,onClick:o[1]||=S(()=>{},[`stop`]),onKeydown:[o[2]||=C(S(e=>B.value=!1,[`stop`]),[`esc`]),Y]},null,40,P),[[x,V.value]])])):y(``,!0),J.value.length?y(``,!0):(e(),u(`li`,F,` موردی یافت نشد `)),(e(!0),u(g,null,n(J.value,t=>(e(),u(`li`,{key:t.value,role:`presentation`},[l(`button`,{type:`button`,class:i([`admin-select__option`,{"admin-select__option--active":t.value===f.modelValue}]),"data-select-option":``,role:`option`,"aria-selected":t.value===f.modelValue,onClick:e=>$(t.value),onKeydown:e=>X(e,t.value)},[l(`span`,L,[a(r.$slots,`option-leading`,{option:t},void 0,!0),l(`span`,null,m(t.label),1)]),t.value===f.modelValue?(e(),h(w,{key:0,name:`check`,size:16,class:`admin-select__check`})):y(``,!0)],42,I)]))),128))],12,M)):y(``,!0)]))],10,k))}}),[[`__scopeId`,`data-v-4ee349a1`]]);export{R as t}; \ No newline at end of file diff --git a/dist/assets/BankAccountsView-CVMQVc8t.js b/dist/assets/BankAccountsView-Kz0VmXxH.js similarity index 97% rename from dist/assets/BankAccountsView-CVMQVc8t.js rename to dist/assets/BankAccountsView-Kz0VmXxH.js index 1e40a2c..02aba28 100644 --- a/dist/assets/BankAccountsView-CVMQVc8t.js +++ b/dist/assets/BankAccountsView-Kz0VmXxH.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as ee,h as l,jt as u,l as te,m as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ne,d as g,m as _,t as v}from"./http-CTjL79ty.js";import{R as re,V as ie,p as y,v as ae,z as oe}from"./index-DWlOII4H.js";import{t as se}from"./BaseSwitch-Dz4ODUhf.js";import{t as b}from"./BaseEmptyState-B6cM4bRM.js";import{t as x}from"./ActiveSwitchCell-BQoMjcdH.js";var ce={class:`accounts-page`},le={key:0,class:`admin-card accounts-page__notice`,role:`status`},ue={class:`admin-page-header`},de={class:`admin-page-header__title`},fe={key:0,class:`admin-page-header__subtitle`},pe={class:`admin-action-group`},me={key:2,class:`accounts-page__table admin-card desktop-only`},he={class:`admin-table-wrap`},ge={class:`admin-table`},S={class:`status`},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={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`},_e={class:`admin-form__field`},ve=[`disabled`],L=m(ee({__name:`BankAccountsView`,setup(ee){let m=re(),L=oe(),R=ne(),z=c(null),B=c([]),V=c(!1),H=c(``),U=c(!1),W=p(()=>String(m.params.companyId)),G=p(()=>z.value?.isPaymentRecipient===!0||z.value?.slug===`nademitex`),K=p(()=>B.value),q=()=>({bankName:``,accountNumber:``,accountHolder:z.value?.name??``,cardNumber:``,iban:``,isActive:!0}),J=r(q()),Y=p(()=>J.bankName.trim().length>0&&J.accountNumber.trim().length>0&&J.accountHolder.trim().length>0);async function ye(){try{let e=await ae.get(W.value);if(z.value=e,e.isPaymentRecipient!==!0&&e.slug!==`nademitex`){B.value=[];return}B.value=await y.listByCompany(W.value)}catch(e){R.error(e instanceof v?e.message:`بارگذاری حساب‌ها انجام نشد.`)}}t(()=>{ye()});function X(){Object.assign(J,q()),H.value=``,V.value=!0}function Z(){V.value=!1,H.value=``}async function Q(){if(!G.value){H.value=`حساب بانکی فقط برای شرکت نادمی تکس (دریافت‌کننده پرداخت) ثبت می‌شود.`;return}if(!Y.value){H.value=`فیلدهای ستاره‌دار الزامی هستند.`;return}U.value=!0;try{let e=await y.create(W.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:B.value.length+1});B.value.push(e),R.success(`حساب بانکی جدید ثبت شد.`),Z()}catch(e){R.error(e instanceof v?e.message:`ثبت حساب انجام نشد.`)}finally{U.value=!1}}async function $(e,t){await y.setActive(e,t)}function be(){L.push(`/companies`)}return(t,r)=>(e(),s(`div`,ce,[z.value&&!G.value?(e(),s(`p`,le,` حساب‌های دریافت پرداخت مشتریان فقط برای شرکت نادمی تکس تعریف می‌شوند. شرکت‌های دیگر صرفاً برای مشخص‌کردن مالکیت محصول هستند و حساب بانکی مستقل ندارند. `)):h(``,!0),o(`div`,ue,[o(`div`,null,[o(`h1`,de,` مدیریت حساب‌های بانکی — `+u(z.value?.name??`…`),1),G.value?(e(),s(`p`,fe,` تمام پرداخت‌های اپ به این شرکت واریز می‌شود. `)):h(``,!0)]),o(`div`,pe,[G.value?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--primary`,onClick:X},` افزودن حساب `)):h(``,!0),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:be},` بازگشت `)])]),K.value.length?(e(),s(`div`,me,[o(`div`,he,[o(`table`,ge,[r[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`بانک`),o(`th`,null,`حساب بانکی`),o(`th`,null,`نام صاحب`),o(`th`,null,`شماره کارت`),o(`th`,null,`شماره شبا`),o(`th`,{class:`status`},`وضعیت`)])],-1),o(`tbody`,null,[(e(!0),s(f,null,n(K.value,t=>(e(),s(`tr`,{key:t.id},[o(`td`,null,u(t.bankName),1),o(`td`,null,u(t.accountNumber),1),o(`td`,null,u(t.accountHolder),1),o(`td`,null,u(t.cardNumber||`—`),1),o(`td`,null,u(t.iban||`—`),1),o(`td`,S,[l(x,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])])]))),128))])])])])):(e(),te(b,{key:1,class:`admin-card`,icon:`wallet`,title:G.value?`حساب بانکی ثبت نشده`:`حساب بانکی برای این شرکت تعریف نمی‌شود`,description:G.value?`هنوز حساب بانکی برای دریافت پرداخت ثبت نشده است.`:`از منوی شرکت‌ها، حساب‌های نادمی تکس را مدیریت کنید.`},{default:i(()=>[G.value?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:X},` افزودن حساب `)):h(``,!0)]),_:1},8,[`title`,`description`])),K.value.length?(e(),s(`div`,C,[(e(!0),s(f,null,n(K.value,t=>(e(),s(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,w,[o(`p`,T,`بانک `+u(t.bankName),1),l(x,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,E,[o(`span`,null,u(t.accountHolder),1),o(`span`,null,`حساب: `+u(t.accountNumber),1),t.cardNumber?(e(),s(`span`,D,`کارت: `+u(t.cardNumber),1)):h(``,!0),t.iban?(e(),s(`span`,O,u(t.iban),1)):h(``,!0)])]))),128))])):h(``,!0),l(ie,{open:V.value,title:`افزودن حساب بانکی`,size:`lg`,onClose:Z},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Y.value||U.value,onClick:Q},` ثبت حساب `,8,ve)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:_(Q,[`prevent`])},[H.value?(e(),s(`p`,k,u(H.value),1)):h(``,!0),o(`div`,A,[o(`div`,j,[r[7]||=o(`label`,{for:`bank-name`},[d(`نام بانک `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`bank-name`,"onUpdate:modelValue":r[0]||=e=>J.bankName=e,type:`text`,class:`admin-input`,placeholder:`مثال: ملت`},null,512),[[g,J.bankName]])]),o(`div`,M,[r[8]||=o(`label`,{for:`account-number`},[d(` شماره حساب `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`account-number`,"onUpdate:modelValue":r[1]||=e=>J.accountNumber=e,type:`text`,class:`admin-input`,placeholder:`1234567890`,inputmode:`numeric`,dir:`ltr`},null,512),[[g,J.accountNumber]])])]),o(`div`,N,[r[9]||=o(`label`,{for:`account-holder`},[d(` نام صاحب حساب `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`account-holder`,"onUpdate:modelValue":r[2]||=e=>J.accountHolder=e,type:`text`,class:`admin-input`},null,512),[[g,J.accountHolder]])]),o(`div`,P,[o(`div`,F,[r[10]||=o(`label`,{for:`card-number`},`شماره کارت`,-1),a(o(`input`,{id:`card-number`,"onUpdate:modelValue":r[3]||=e=>J.cardNumber=e,type:`text`,class:`admin-input`,placeholder:`6104 3378 0077 1234`,inputmode:`numeric`,dir:`ltr`},null,512),[[g,J.cardNumber]])]),o(`div`,I,[r[11]||=o(`label`,{for:`iban`},`شماره شبا`,-1),a(o(`input`,{id:`iban`,"onUpdate:modelValue":r[4]||=e=>J.iban=e,type:`text`,class:`admin-input`,placeholder:`IR...`,dir:`ltr`},null,512),[[g,J.iban]])])]),o(`div`,_e,[l(se,{modelValue:J.isActive,"onUpdate:modelValue":r[5]||=e=>J.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-cb49a72f`]]);export{L as default}; \ No newline at end of file +import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as ee,h as l,jt as u,l as te,m as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ne,d as g,m as _,t as v}from"./http-CTjL79ty.js";import{R as re,V as ie,p as y,v as ae,z as oe}from"./index-BWgYBNME.js";import{t as se}from"./BaseSwitch-Dz4ODUhf.js";import{t as b}from"./BaseEmptyState-88fQ29rO.js";import{t as x}from"./ActiveSwitchCell-CRUUEk77.js";var ce={class:`accounts-page`},le={key:0,class:`admin-card accounts-page__notice`,role:`status`},ue={class:`admin-page-header`},de={class:`admin-page-header__title`},fe={key:0,class:`admin-page-header__subtitle`},pe={class:`admin-action-group`},me={key:2,class:`accounts-page__table admin-card desktop-only`},he={class:`admin-table-wrap`},ge={class:`admin-table`},S={class:`status`},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={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`},_e={class:`admin-form__field`},ve=[`disabled`],L=m(ee({__name:`BankAccountsView`,setup(ee){let m=re(),L=oe(),R=ne(),z=c(null),B=c([]),V=c(!1),H=c(``),U=c(!1),W=p(()=>String(m.params.companyId)),G=p(()=>z.value?.isPaymentRecipient===!0||z.value?.slug===`nademitex`),K=p(()=>B.value),q=()=>({bankName:``,accountNumber:``,accountHolder:z.value?.name??``,cardNumber:``,iban:``,isActive:!0}),J=r(q()),Y=p(()=>J.bankName.trim().length>0&&J.accountNumber.trim().length>0&&J.accountHolder.trim().length>0);async function ye(){try{let e=await ae.get(W.value);if(z.value=e,e.isPaymentRecipient!==!0&&e.slug!==`nademitex`){B.value=[];return}B.value=await y.listByCompany(W.value)}catch(e){R.error(e instanceof v?e.message:`بارگذاری حساب‌ها انجام نشد.`)}}t(()=>{ye()});function X(){Object.assign(J,q()),H.value=``,V.value=!0}function Z(){V.value=!1,H.value=``}async function Q(){if(!G.value){H.value=`حساب بانکی فقط برای شرکت نادمی تکس (دریافت‌کننده پرداخت) ثبت می‌شود.`;return}if(!Y.value){H.value=`فیلدهای ستاره‌دار الزامی هستند.`;return}U.value=!0;try{let e=await y.create(W.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:B.value.length+1});B.value.push(e),R.success(`حساب بانکی جدید ثبت شد.`),Z()}catch(e){R.error(e instanceof v?e.message:`ثبت حساب انجام نشد.`)}finally{U.value=!1}}async function $(e,t){await y.setActive(e,t)}function be(){L.push(`/companies`)}return(t,r)=>(e(),s(`div`,ce,[z.value&&!G.value?(e(),s(`p`,le,` حساب‌های دریافت پرداخت مشتریان فقط برای شرکت نادمی تکس تعریف می‌شوند. شرکت‌های دیگر صرفاً برای مشخص‌کردن مالکیت محصول هستند و حساب بانکی مستقل ندارند. `)):h(``,!0),o(`div`,ue,[o(`div`,null,[o(`h1`,de,` مدیریت حساب‌های بانکی — `+u(z.value?.name??`…`),1),G.value?(e(),s(`p`,fe,` تمام پرداخت‌های اپ به این شرکت واریز می‌شود. `)):h(``,!0)]),o(`div`,pe,[G.value?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--primary`,onClick:X},` افزودن حساب `)):h(``,!0),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:be},` بازگشت `)])]),K.value.length?(e(),s(`div`,me,[o(`div`,he,[o(`table`,ge,[r[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`بانک`),o(`th`,null,`حساب بانکی`),o(`th`,null,`نام صاحب`),o(`th`,null,`شماره کارت`),o(`th`,null,`شماره شبا`),o(`th`,{class:`status`},`وضعیت`)])],-1),o(`tbody`,null,[(e(!0),s(f,null,n(K.value,t=>(e(),s(`tr`,{key:t.id},[o(`td`,null,u(t.bankName),1),o(`td`,null,u(t.accountNumber),1),o(`td`,null,u(t.accountHolder),1),o(`td`,null,u(t.cardNumber||`—`),1),o(`td`,null,u(t.iban||`—`),1),o(`td`,S,[l(x,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])])]))),128))])])])])):(e(),te(b,{key:1,class:`admin-card`,icon:`wallet`,title:G.value?`حساب بانکی ثبت نشده`:`حساب بانکی برای این شرکت تعریف نمی‌شود`,description:G.value?`هنوز حساب بانکی برای دریافت پرداخت ثبت نشده است.`:`از منوی شرکت‌ها، حساب‌های نادمی تکس را مدیریت کنید.`},{default:i(()=>[G.value?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:X},` افزودن حساب `)):h(``,!0)]),_:1},8,[`title`,`description`])),K.value.length?(e(),s(`div`,C,[(e(!0),s(f,null,n(K.value,t=>(e(),s(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,w,[o(`p`,T,`بانک `+u(t.bankName),1),l(x,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.bankName,"entity-type":`حساب بانکی`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,E,[o(`span`,null,u(t.accountHolder),1),o(`span`,null,`حساب: `+u(t.accountNumber),1),t.cardNumber?(e(),s(`span`,D,`کارت: `+u(t.cardNumber),1)):h(``,!0),t.iban?(e(),s(`span`,O,u(t.iban),1)):h(``,!0)])]))),128))])):h(``,!0),l(ie,{open:V.value,title:`افزودن حساب بانکی`,size:`lg`,onClose:Z},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Y.value||U.value,onClick:Q},` ثبت حساب `,8,ve)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:_(Q,[`prevent`])},[H.value?(e(),s(`p`,k,u(H.value),1)):h(``,!0),o(`div`,A,[o(`div`,j,[r[7]||=o(`label`,{for:`bank-name`},[d(`نام بانک `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`bank-name`,"onUpdate:modelValue":r[0]||=e=>J.bankName=e,type:`text`,class:`admin-input`,placeholder:`مثال: ملت`},null,512),[[g,J.bankName]])]),o(`div`,M,[r[8]||=o(`label`,{for:`account-number`},[d(` شماره حساب `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`account-number`,"onUpdate:modelValue":r[1]||=e=>J.accountNumber=e,type:`text`,class:`admin-input`,placeholder:`1234567890`,inputmode:`numeric`,dir:`ltr`},null,512),[[g,J.accountNumber]])])]),o(`div`,N,[r[9]||=o(`label`,{for:`account-holder`},[d(` نام صاحب حساب `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`account-holder`,"onUpdate:modelValue":r[2]||=e=>J.accountHolder=e,type:`text`,class:`admin-input`},null,512),[[g,J.accountHolder]])]),o(`div`,P,[o(`div`,F,[r[10]||=o(`label`,{for:`card-number`},`شماره کارت`,-1),a(o(`input`,{id:`card-number`,"onUpdate:modelValue":r[3]||=e=>J.cardNumber=e,type:`text`,class:`admin-input`,placeholder:`6104 3378 0077 1234`,inputmode:`numeric`,dir:`ltr`},null,512),[[g,J.cardNumber]])]),o(`div`,I,[r[11]||=o(`label`,{for:`iban`},`شماره شبا`,-1),a(o(`input`,{id:`iban`,"onUpdate:modelValue":r[4]||=e=>J.iban=e,type:`text`,class:`admin-input`,placeholder:`IR...`,dir:`ltr`},null,512),[[g,J.iban]])])]),o(`div`,_e,[l(se,{modelValue:J.isActive,"onUpdate:modelValue":r[5]||=e=>J.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-cb49a72f`]]);export{L as default}; \ No newline at end of file diff --git a/dist/assets/BannersView-FOIP0eDe.js b/dist/assets/BannersView-Dy7y-V0q.js similarity index 97% rename from dist/assets/BannersView-FOIP0eDe.js rename to dist/assets/BannersView-Dy7y-V0q.js index 4f4f6b5..c7d932b 100644 --- a/dist/assets/BannersView-FOIP0eDe.js +++ b/dist/assets/BannersView-Dy7y-V0q.js @@ -1 +1 @@ -import{A as e,At as t,D as n,N as r,Ot as ee,Q as i,U as a,W as o,c as s,d as c,et as l,g as u,h as d,jt as f,l as p,m,r as h,s as g,t as _,u as v}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as y,t as b}from"./http-CTjL79ty.js";import{V as x,m as S}from"./index-DWlOII4H.js";import{t as C}from"./AdminPageSkeleton-DacAHji8.js";import{t as w}from"./BaseSwitch-Dz4ODUhf.js";import{t as ne}from"./BaseEmptyState-B6cM4bRM.js";import{t as re}from"./AdminImagePicker-DhyB3HhH.js";import{t as T}from"./AdminSelect-CWMyO8tk.js";function E(e){let t=e.trim();if(!t)return!0;if(t.startsWith(`/`))return/^\/[^\s]*$/.test(t);try{let e=new URL(t);return e.protocol===`http:`||e.protocol===`https:`}catch{return!1}}var D={class:`banners-page`},O={key:2,class:`admin-card`},k={class:`admin-table`},A={key:0,class:`banner-sub`},j={class:`actions`},M=[`onClick`],N=[`onClick`],P={class:`field`},F={class:`field`},I={class:`field__head`},L={class:`field`},R={class:`field__head`},z={class:`field`},ie={class:`field__head`},B={class:`field`},V={class:`field`},H={class:`field`},U=[`disabled`],W=_(u({__name:`BannersView`,setup(u){let _=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دسته‌بندی‌ها`}],W=l([]),G=l(!0),K=l(!1),q=l(!1),J=l(null),Y=te(),X=i({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,bannerLink:``,imageUrl:null,displayOrder:0,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),Z=g(()=>J.value?`ویرایش بنر`:`افزودن بنر`);function ae(e){return _.find(t=>t.value===e)?.label??e}async function Q(){G.value=!0;try{W.value=await S.list()}catch(e){Y.error(e instanceof b?e.message:`بارگذاری بنرها ناموفق بود.`)}finally{G.value=!1}}function $(){J.value=null,Object.assign(X,{slot:`home_hero`,title:``,subtitle:``,ctaLabel:`مشاهده کالکشن`,ctaLink:`/categories`,bannerLink:``,imageUrl:null,displayOrder:W.value.length,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),q.value=!0}function oe(e){J.value=e.id,Object.assign(X,{slot:e.slot,title:e.title,subtitle:e.subtitle,ctaLabel:e.ctaLabel,ctaLink:e.ctaLink||`/categories`,bannerLink:e.bannerLink||``,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 se(){if(X.title.trim()){if(!E(X.bannerLink)){Y.error(`لینک بنر معتبر نیست. مسیر داخلی (مثل /categories) یا آدرس https وارد کنید.`);return}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,bannerLink:X.bannerLink.trim()||null,imageUrl:X.imageUrl,displayOrder:X.displayOrder,isActive:X.isActive,showTitle:X.showTitle,showSubtitle:X.showSubtitle,showCta:X.showCta};J.value?await S.update(J.value,e):await S.create(e),q.value=!1,Y.success(`بنر ذخیره شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`ذخیره بنر ناموفق بود.`)}finally{K.value=!1}}}async function ce(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await S.remove(e.id),Y.success(`بنر حذف شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`حذف بنر ناموفق بود.`)}}return n(()=>{Q()}),(n,i)=>(e(),c(`div`,D,[s(`div`,{class:`admin-page-header`},[i[14]||=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?(e(),p(C,{key:0,variant:`table`})):W.value.length?(e(),c(`div`,O,[s(`table`,k,[i[15]||=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,[(e(!0),c(h,null,r(W.value,n=>(e(),c(`tr`,{key:n.id},[s(`td`,null,[s(`span`,{class:ee([`banner-thumb`,{"banner-thumb--empty":!n.imageUrl}]),style:t(n.imageUrl?{backgroundImage:`url(${n.imageUrl})`}:void 0)},null,6)]),s(`td`,null,[s(`strong`,null,f(n.title),1),n.subtitle?(e(),c(`p`,A,f(n.subtitle),1)):v(``,!0)]),s(`td`,null,f(ae(n.slot)),1),s(`td`,null,f(n.ctaLabel||`—`),1),s(`td`,null,f(n.isActive?`بله`:`خیر`),1),s(`td`,j,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>oe(n)},` ویرایش `,8,M),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ce(n)},` حذف `,8,N)])]))),128))])])])):(e(),p(ne,{key:1,title:`بنری ثبت نشده`,description:`اولین بنر خانه را اضافه کنید.`},{default:a(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:$},` افزودن بنر `)]),_:1})),d(x,{open:q.value,title:Z.value,onClose:i[13]||=e=>q.value=!1},{footer:a(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:i[12]||=e=>q.value=!1},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.title.trim()||K.value,onClick:se},f(K.value?`در حال ذخیره...`:`ذخیره`),9,U)]),default:a(()=>[s(`label`,P,[i[16]||=m(` بخش نمایش `,-1),d(T,{modelValue:X.slot,"onUpdate:modelValue":i[0]||=e=>X.slot=e,options:_},null,8,[`modelValue`])]),s(`div`,F,[s(`span`,I,[i[17]||=m(` عنوان `,-1),d(w,{modelValue:X.showTitle,"onUpdate:modelValue":i[1]||=e=>X.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(s(`input`,{"onUpdate:modelValue":i[2]||=e=>X.title=e,class:`admin-input`},null,512),[[y,X.title]])]),s(`div`,L,[s(`span`,R,[i[18]||=m(` زیرعنوان `,-1),d(w,{modelValue:X.showSubtitle,"onUpdate:modelValue":i[3]||=e=>X.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(s(`input`,{"onUpdate:modelValue":i[4]||=e=>X.subtitle=e,class:`admin-input`},null,512),[[y,X.subtitle]])]),s(`div`,z,[s(`span`,ie,[i[19]||=m(` متن دکمه `,-1),d(w,{modelValue:X.showCta,"onUpdate:modelValue":i[5]||=e=>X.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(s(`input`,{"onUpdate:modelValue":i[6]||=e=>X.ctaLabel=e,class:`admin-input`},null,512),[[y,X.ctaLabel]])]),s(`label`,B,[i[20]||=m(` لینک دکمه `,-1),o(s(`input`,{"onUpdate:modelValue":i[7]||=e=>X.ctaLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories`},null,512),[[y,X.ctaLink]])]),s(`label`,V,[i[21]||=m(` لینک بنر `,-1),o(s(`input`,{"onUpdate:modelValue":i[8]||=e=>X.bannerLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories یا https://...`},null,512),[[y,X.bannerLink]]),i[22]||=s(`span`,{class:`field-hint`},`با کلیک روی تصویر بنر در اپ؛ خالی = بدون لینک روی تصویر`,-1)]),s(`label`,H,[i[23]||=m(`ترتیب نمایش`,-1),o(s(`input`,{"onUpdate:modelValue":i[9]||=e=>X.displayOrder=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[y,X.displayOrder,void 0,{number:!0}]])]),d(re,{modelValue:X.imageUrl,"onUpdate:modelValue":i[10]||=e=>X.imageUrl=e,label:`تصویر بنر`},null,8,[`modelValue`]),d(w,{modelValue:X.isActive,"onUpdate:modelValue":i[11]||=e=>X.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-2c8696f3`]]);export{W as default}; \ No newline at end of file +import{A as e,At as t,D as n,N as r,Ot as ee,Q as i,U as a,W as o,c as s,d as c,et as l,g as u,h as d,jt as f,l as p,m,r as h,s as g,t as _,u as v}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as y,t as b}from"./http-CTjL79ty.js";import{V as x,m as S}from"./index-BWgYBNME.js";import{t as C}from"./AdminPageSkeleton-DacAHji8.js";import{t as w}from"./BaseSwitch-Dz4ODUhf.js";import{t as ne}from"./BaseEmptyState-88fQ29rO.js";import{t as re}from"./AdminImagePicker-DhyB3HhH.js";import{t as T}from"./AdminSelect-hgn_nYC2.js";function E(e){let t=e.trim();if(!t)return!0;if(t.startsWith(`/`))return/^\/[^\s]*$/.test(t);try{let e=new URL(t);return e.protocol===`http:`||e.protocol===`https:`}catch{return!1}}var D={class:`banners-page`},O={key:2,class:`admin-card`},k={class:`admin-table`},A={key:0,class:`banner-sub`},j={class:`actions`},M=[`onClick`],N=[`onClick`],P={class:`field`},F={class:`field`},I={class:`field__head`},L={class:`field`},R={class:`field__head`},z={class:`field`},ie={class:`field__head`},B={class:`field`},V={class:`field`},H={class:`field`},U=[`disabled`],W=_(u({__name:`BannersView`,setup(u){let _=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دسته‌بندی‌ها`}],W=l([]),G=l(!0),K=l(!1),q=l(!1),J=l(null),Y=te(),X=i({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,bannerLink:``,imageUrl:null,displayOrder:0,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),Z=g(()=>J.value?`ویرایش بنر`:`افزودن بنر`);function ae(e){return _.find(t=>t.value===e)?.label??e}async function Q(){G.value=!0;try{W.value=await S.list()}catch(e){Y.error(e instanceof b?e.message:`بارگذاری بنرها ناموفق بود.`)}finally{G.value=!1}}function $(){J.value=null,Object.assign(X,{slot:`home_hero`,title:``,subtitle:``,ctaLabel:`مشاهده کالکشن`,ctaLink:`/categories`,bannerLink:``,imageUrl:null,displayOrder:W.value.length,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),q.value=!0}function oe(e){J.value=e.id,Object.assign(X,{slot:e.slot,title:e.title,subtitle:e.subtitle,ctaLabel:e.ctaLabel,ctaLink:e.ctaLink||`/categories`,bannerLink:e.bannerLink||``,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 se(){if(X.title.trim()){if(!E(X.bannerLink)){Y.error(`لینک بنر معتبر نیست. مسیر داخلی (مثل /categories) یا آدرس https وارد کنید.`);return}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,bannerLink:X.bannerLink.trim()||null,imageUrl:X.imageUrl,displayOrder:X.displayOrder,isActive:X.isActive,showTitle:X.showTitle,showSubtitle:X.showSubtitle,showCta:X.showCta};J.value?await S.update(J.value,e):await S.create(e),q.value=!1,Y.success(`بنر ذخیره شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`ذخیره بنر ناموفق بود.`)}finally{K.value=!1}}}async function ce(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await S.remove(e.id),Y.success(`بنر حذف شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`حذف بنر ناموفق بود.`)}}return n(()=>{Q()}),(n,i)=>(e(),c(`div`,D,[s(`div`,{class:`admin-page-header`},[i[14]||=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?(e(),p(C,{key:0,variant:`table`})):W.value.length?(e(),c(`div`,O,[s(`table`,k,[i[15]||=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,[(e(!0),c(h,null,r(W.value,n=>(e(),c(`tr`,{key:n.id},[s(`td`,null,[s(`span`,{class:ee([`banner-thumb`,{"banner-thumb--empty":!n.imageUrl}]),style:t(n.imageUrl?{backgroundImage:`url(${n.imageUrl})`}:void 0)},null,6)]),s(`td`,null,[s(`strong`,null,f(n.title),1),n.subtitle?(e(),c(`p`,A,f(n.subtitle),1)):v(``,!0)]),s(`td`,null,f(ae(n.slot)),1),s(`td`,null,f(n.ctaLabel||`—`),1),s(`td`,null,f(n.isActive?`بله`:`خیر`),1),s(`td`,j,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>oe(n)},` ویرایش `,8,M),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ce(n)},` حذف `,8,N)])]))),128))])])])):(e(),p(ne,{key:1,title:`بنری ثبت نشده`,description:`اولین بنر خانه را اضافه کنید.`},{default:a(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:$},` افزودن بنر `)]),_:1})),d(x,{open:q.value,title:Z.value,onClose:i[13]||=e=>q.value=!1},{footer:a(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:i[12]||=e=>q.value=!1},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!X.title.trim()||K.value,onClick:se},f(K.value?`در حال ذخیره...`:`ذخیره`),9,U)]),default:a(()=>[s(`label`,P,[i[16]||=m(` بخش نمایش `,-1),d(T,{modelValue:X.slot,"onUpdate:modelValue":i[0]||=e=>X.slot=e,options:_},null,8,[`modelValue`])]),s(`div`,F,[s(`span`,I,[i[17]||=m(` عنوان `,-1),d(w,{modelValue:X.showTitle,"onUpdate:modelValue":i[1]||=e=>X.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(s(`input`,{"onUpdate:modelValue":i[2]||=e=>X.title=e,class:`admin-input`},null,512),[[y,X.title]])]),s(`div`,L,[s(`span`,R,[i[18]||=m(` زیرعنوان `,-1),d(w,{modelValue:X.showSubtitle,"onUpdate:modelValue":i[3]||=e=>X.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(s(`input`,{"onUpdate:modelValue":i[4]||=e=>X.subtitle=e,class:`admin-input`},null,512),[[y,X.subtitle]])]),s(`div`,z,[s(`span`,ie,[i[19]||=m(` متن دکمه `,-1),d(w,{modelValue:X.showCta,"onUpdate:modelValue":i[5]||=e=>X.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`])]),o(s(`input`,{"onUpdate:modelValue":i[6]||=e=>X.ctaLabel=e,class:`admin-input`},null,512),[[y,X.ctaLabel]])]),s(`label`,B,[i[20]||=m(` لینک دکمه `,-1),o(s(`input`,{"onUpdate:modelValue":i[7]||=e=>X.ctaLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories`},null,512),[[y,X.ctaLink]])]),s(`label`,V,[i[21]||=m(` لینک بنر `,-1),o(s(`input`,{"onUpdate:modelValue":i[8]||=e=>X.bannerLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories یا https://...`},null,512),[[y,X.bannerLink]]),i[22]||=s(`span`,{class:`field-hint`},`با کلیک روی تصویر بنر در اپ؛ خالی = بدون لینک روی تصویر`,-1)]),s(`label`,H,[i[23]||=m(`ترتیب نمایش`,-1),o(s(`input`,{"onUpdate:modelValue":i[9]||=e=>X.displayOrder=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[y,X.displayOrder,void 0,{number:!0}]])]),d(re,{modelValue:X.imageUrl,"onUpdate:modelValue":i[10]||=e=>X.imageUrl=e,label:`تصویر بنر`},null,8,[`modelValue`]),d(w,{modelValue:X.isActive,"onUpdate:modelValue":i[11]||=e=>X.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-2c8696f3`]]);export{W as default}; \ No newline at end of file diff --git a/dist/assets/BaseEmptyState-B6cM4bRM.js b/dist/assets/BaseEmptyState-88fQ29rO.js similarity index 92% rename from dist/assets/BaseEmptyState-B6cM4bRM.js rename to dist/assets/BaseEmptyState-88fQ29rO.js index fd367e9..a1c3cdc 100644 --- a/dist/assets/BaseEmptyState-B6cM4bRM.js +++ b/dist/assets/BaseEmptyState-88fQ29rO.js @@ -1 +1 @@ -import{A as e,Ot as t,P as n,c as r,d as i,g as a,h as o,jt as s,t as c,u as l}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{L as u}from"./index-DWlOII4H.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)=>(e(),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,s(a.title),1),a.description?(e(),i(`p`,p,s(a.description),1)):l(``,!0),c.$slots.default||c.$slots.secondary?(e(),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{A as e,Ot as t,P as n,c as r,d as i,g as a,h as o,jt as s,t as c,u as l}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{L as u}from"./index-BWgYBNME.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)=>(e(),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,s(a.title),1),a.description?(e(),i(`p`,p,s(a.description),1)):l(``,!0),c.$slots.default||c.$slots.secondary?(e(),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/CashPaymentsView-BuU9uTEt.js b/dist/assets/CashPaymentsView-Dxi7IlxW.js similarity index 98% rename from dist/assets/CashPaymentsView-BuU9uTEt.js rename to dist/assets/CashPaymentsView-Dxi7IlxW.js index 3978674..16748b9 100644 --- a/dist/assets/CashPaymentsView-BuU9uTEt.js +++ b/dist/assets/CashPaymentsView-Dxi7IlxW.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Ot as r,W as ee,c as i,ct as a,d as o,et as s,g as te,h as c,jt as l,l as u,r as d,s as ne,t as f,u as p}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,d as ie,t as m}from"./http-CTjL79ty.js";import{L as ae,R as oe,T as h,h as g,i as _,o as v}from"./index-DWlOII4H.js";import{t as se}from"./AdminPageSkeleton-DacAHji8.js";import{t as ce}from"./AdminSelect-CWMyO8tk.js";import{t as le}from"./AdminImageLightbox-BbQANbIb.js";import{n as y,t as b}from"./adminLabels-jYlObVqa.js";var ue={class:`cash-payments-page`},de={class:`cash-payments-page__filters admin-card`},fe={class:`cash-payments-page__search`},x={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=f(te({__name:`CashPaymentsView`,setup(te){let f=oe(),V=s([]),H=s(f.query.order??``),U=s(`all`),W=s(!0),G=re(),K=s(null),q=s(!1),J=s(``);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=ne(()=>{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 g.list()}catch(e){G.error(e instanceof m?e.message:`بارگذاری پرداخت‌ها انجام نشد.`)}finally{W.value=!1}}t(()=>{_e()});async function Z(e){K.value=e.id;try{let t=await g.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 m?e.message:`تأیید پرداخت انجام نشد.`)}finally{K.value=null}}async function Q(e){K.value=e.id;try{await h.updateStatus(e.orderId,{status:`final_approved`,note:`تأیید نهایی پس از تأیید رسید نقدی`}),G.success(`سفارش ${e.orderNumber} تأیید نهایی شد.`)}catch(e){G.error(e instanceof m?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=null}}async function $(e){K.value=e.id;try{let t=await g.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 m?e.message:`رد پرداخت انجام نشد.`)}finally{K.value=null}}return(t,s)=>(e(),o(`div`,ue,[s[4]||=i(`div`,{class:`admin-page-header`},[i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`پرداخت‌های نقدی`)])],-1),i(`div`,de,[i(`div`,fe,[c(ae,{name:`search`,size:18}),ee(i(`input`,{"onUpdate:modelValue":s[0]||=e=>H.value=e,type:`search`,class:`cash-payments-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، پیگیری...`},null,512),[[ie,H.value]])]),c(ce,{modelValue:U.value,"onUpdate:modelValue":s[1]||=e=>U.value=e,class:`cash-payments-page__status-select`,"aria-label":`فیلتر وضعیت پرداخت`,options:ge},null,8,[`modelValue`])]),W.value?(e(),u(se,{key:0,variant:`table`})):(e(),o(d,{key:1},[i(`div`,x,[i(`div`,S,[i(`table`,C,[s[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,`رسید`),i(`th`,null,`عملیات`)])],-1),i(`tbody`,null,[(e(!0),o(d,null,n(X.value,t=>(e(),o(`tr`,{key:t.id},[i(`td`,null,l(t.orderNumber),1),i(`td`,null,l(t.customerName),1),i(`td`,null,l(a(_)(t.amount)),1),i(`td`,null,l(t.paidAmount?a(_)(t.paidAmount):`—`),1),i(`td`,null,l(t.transferDate?a(v)(t.transferDate):`—`),1),i(`td`,w,l(t.trackingCode),1),i(`td`,null,l(a(v)(t.expiresAt)),1),i(`td`,null,[i(`span`,{class:r([`admin-badge`,a(b)[t.status]])},l(a(y)[t.status]),3)]),i(`td`,null,[t.receiptImage?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Y(t.receiptImage)},` مشاهده `,8,T)):(e(),o(`span`,E,`—`))]),i(`td`,null,[t.status===`pending_review`?(e(),o(`div`,D,[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Z(t)},` تأیید `,8,O),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===t.id,onClick:e=>$(t)},` رد `,8,k)])):t.status===`approved`?(e(),o(`div`,A,[i(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Q(t)},` تأیید نهایی سفارش `,8,j)])):(e(),o(`span`,M,`—`))])]))),128))])])])]),i(`div`,N,[(e(!0),o(d,null,n(X.value,t=>(e(),o(`article`,{key:t.id,class:`admin-card-item`},[i(`div`,P,[i(`p`,F,l(t.orderNumber),1),i(`span`,{class:r([`admin-badge`,a(b)[t.status]])},l(a(y)[t.status]),3)]),i(`div`,I,[i(`span`,null,l(t.customerName),1),i(`span`,null,l(a(_)(t.amount)),1),t.paidAmount==null?p(``,!0):(e(),o(`span`,pe,`پرداختی: `+l(a(_)(t.paidAmount)),1)),i(`span`,L,l(t.trackingCode),1)]),t.receiptImage?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs cash-payments-page__receipt-btn`,onClick:e=>Y(t.receiptImage)},` مشاهده تصویر رسید `,8,R)):p(``,!0),t.status===`pending_review`||t.status===`approved`?(e(),o(`div`,z,[t.status===`pending_review`?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Z(t)},` تأیید `,8,B)):p(``,!0),t.status===`pending_review`?(e(),o(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===t.id,onClick:e=>$(t)},` رد `,8,me)):p(``,!0),t.status===`approved`?(e(),o(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Q(t)},` تأیید نهایی سفارش `,8,he)):p(``,!0)])):p(``,!0)]))),128))])],64)),J.value?(e(),u(le,{key:2,modelValue:q.value,"onUpdate:modelValue":s[2]||=e=>q.value=e,src:J.value,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):p(``,!0)]))}}),[[`__scopeId`,`data-v-367bdef1`]]);export{V as default}; \ No newline at end of file +import{A as e,D as t,N as n,Ot as r,W as ee,c as i,ct as a,d as o,et as s,g as te,h as c,jt as l,l as u,r as d,s as ne,t as f,u as p}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,d as ie,t as m}from"./http-CTjL79ty.js";import{L as ae,R as oe,T as h,h as g,i as _,o as v}from"./index-BWgYBNME.js";import{t as se}from"./AdminPageSkeleton-DacAHji8.js";import{t as ce}from"./AdminSelect-hgn_nYC2.js";import{t as le}from"./AdminImageLightbox-BbQANbIb.js";import{n as y,t as b}from"./adminLabels-jYlObVqa.js";var ue={class:`cash-payments-page`},de={class:`cash-payments-page__filters admin-card`},fe={class:`cash-payments-page__search`},x={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=f(te({__name:`CashPaymentsView`,setup(te){let f=oe(),V=s([]),H=s(f.query.order??``),U=s(`all`),W=s(!0),G=re(),K=s(null),q=s(!1),J=s(``);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=ne(()=>{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 g.list()}catch(e){G.error(e instanceof m?e.message:`بارگذاری پرداخت‌ها انجام نشد.`)}finally{W.value=!1}}t(()=>{_e()});async function Z(e){K.value=e.id;try{let t=await g.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 m?e.message:`تأیید پرداخت انجام نشد.`)}finally{K.value=null}}async function Q(e){K.value=e.id;try{await h.updateStatus(e.orderId,{status:`final_approved`,note:`تأیید نهایی پس از تأیید رسید نقدی`}),G.success(`سفارش ${e.orderNumber} تأیید نهایی شد.`)}catch(e){G.error(e instanceof m?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=null}}async function $(e){K.value=e.id;try{let t=await g.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 m?e.message:`رد پرداخت انجام نشد.`)}finally{K.value=null}}return(t,s)=>(e(),o(`div`,ue,[s[4]||=i(`div`,{class:`admin-page-header`},[i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`پرداخت‌های نقدی`)])],-1),i(`div`,de,[i(`div`,fe,[c(ae,{name:`search`,size:18}),ee(i(`input`,{"onUpdate:modelValue":s[0]||=e=>H.value=e,type:`search`,class:`cash-payments-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، پیگیری...`},null,512),[[ie,H.value]])]),c(ce,{modelValue:U.value,"onUpdate:modelValue":s[1]||=e=>U.value=e,class:`cash-payments-page__status-select`,"aria-label":`فیلتر وضعیت پرداخت`,options:ge},null,8,[`modelValue`])]),W.value?(e(),u(se,{key:0,variant:`table`})):(e(),o(d,{key:1},[i(`div`,x,[i(`div`,S,[i(`table`,C,[s[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,`رسید`),i(`th`,null,`عملیات`)])],-1),i(`tbody`,null,[(e(!0),o(d,null,n(X.value,t=>(e(),o(`tr`,{key:t.id},[i(`td`,null,l(t.orderNumber),1),i(`td`,null,l(t.customerName),1),i(`td`,null,l(a(_)(t.amount)),1),i(`td`,null,l(t.paidAmount?a(_)(t.paidAmount):`—`),1),i(`td`,null,l(t.transferDate?a(v)(t.transferDate):`—`),1),i(`td`,w,l(t.trackingCode),1),i(`td`,null,l(a(v)(t.expiresAt)),1),i(`td`,null,[i(`span`,{class:r([`admin-badge`,a(b)[t.status]])},l(a(y)[t.status]),3)]),i(`td`,null,[t.receiptImage?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Y(t.receiptImage)},` مشاهده `,8,T)):(e(),o(`span`,E,`—`))]),i(`td`,null,[t.status===`pending_review`?(e(),o(`div`,D,[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Z(t)},` تأیید `,8,O),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===t.id,onClick:e=>$(t)},` رد `,8,k)])):t.status===`approved`?(e(),o(`div`,A,[i(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Q(t)},` تأیید نهایی سفارش `,8,j)])):(e(),o(`span`,M,`—`))])]))),128))])])])]),i(`div`,N,[(e(!0),o(d,null,n(X.value,t=>(e(),o(`article`,{key:t.id,class:`admin-card-item`},[i(`div`,P,[i(`p`,F,l(t.orderNumber),1),i(`span`,{class:r([`admin-badge`,a(b)[t.status]])},l(a(y)[t.status]),3)]),i(`div`,I,[i(`span`,null,l(t.customerName),1),i(`span`,null,l(a(_)(t.amount)),1),t.paidAmount==null?p(``,!0):(e(),o(`span`,pe,`پرداختی: `+l(a(_)(t.paidAmount)),1)),i(`span`,L,l(t.trackingCode),1)]),t.receiptImage?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs cash-payments-page__receipt-btn`,onClick:e=>Y(t.receiptImage)},` مشاهده تصویر رسید `,8,R)):p(``,!0),t.status===`pending_review`||t.status===`approved`?(e(),o(`div`,z,[t.status===`pending_review`?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Z(t)},` تأیید `,8,B)):p(``,!0),t.status===`pending_review`?(e(),o(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:K.value===t.id,onClick:e=>$(t)},` رد `,8,me)):p(``,!0),t.status===`approved`?(e(),o(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--primary admin-btn--xs`,disabled:K.value===t.id,onClick:e=>Q(t)},` تأیید نهایی سفارش `,8,he)):p(``,!0)])):p(``,!0)]))),128))])],64)),J.value?(e(),u(le,{key:2,modelValue:q.value,"onUpdate:modelValue":s[2]||=e=>q.value=e,src:J.value,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):p(``,!0)]))}}),[[`__scopeId`,`data-v-367bdef1`]]);export{V as default}; \ No newline at end of file diff --git a/dist/assets/CatalogRequestsView-FLyRwYeA.js b/dist/assets/CatalogRequestsView-DCDaxKkD.js similarity index 98% rename from dist/assets/CatalogRequestsView-FLyRwYeA.js rename to dist/assets/CatalogRequestsView-DCDaxKkD.js index d4011c8..3a7838c 100644 --- a/dist/assets/CatalogRequestsView-FLyRwYeA.js +++ b/dist/assets/CatalogRequestsView-DCDaxKkD.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Ot as r,T as i,V as a,W as o,c as s,ct as c,d as l,et as u,g as d,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as b,d as x,f as S,m as C,t as w}from"./http-CTjL79ty.js";import{L as T,a as E,g as D,u as O}from"./index-DWlOII4H.js";import{t as k}from"./AdminPageSkeleton-DacAHji8.js";import{t as ee}from"./BaseEmptyState-B6cM4bRM.js";import{t as A}from"./AdminSelect-CWMyO8tk.js";import{r as j}from"./adminLabels-jYlObVqa.js";var M=[-61,9,38,199,426,686,756,818,1111,1181,1210,1635,2060,2097,2192,2262,2324,2394,2456,3178],N=M[0],P=M[M.length-1]-1;function F(e,t,n){return e instanceof Date?W(G(e.getFullYear(),e.getMonth()+1,e.getDate())):W(G(e,t,n))}function I(e,t,n){return te(V(e,t,n))}function L(e){return ne(e)===0}function R(e,t){return t<=6?31:t<=11||L(e)?30:29}function z(e){let{gy:t,march:n,jump:r,n:i}=K(e);return{leap:q(r,i),gy:t,march:n}}function B(e){let{gy:t,march:n}=K(e);return{gy:t,march:n}}function V(e,t,n){let r=B(e);return G(r.gy,3,r.march)+(t-1)*31-J(t,7)*(t-7)+n-1}var H=V(N,1,1),U=V(P,12,R(P,12));function W(e){if(eU)throw RangeError(`Invalid Julian Day number ${e}: outside the supported Jalaali range [${N}, ${P}]`);let t=te(e).gy,n=Math.min(t-621,P),r=z(n),i=e-G(r.gy,3,r.march);if(i>=0){if(i<=185)return{jy:n,jm:1+J(i,31),jd:Y(i,31)+1};i-=186}else--n,i+=179,r.leap===1&&(i+=1);return{jy:n,jm:7+J(i,30),jd:Y(i,30)+1}}function G(e,t,n){let r=J((e+J(t-8,6)+100100)*1461,4)+J(153*Y(t+9,12)+2,5)+n-34840408;return r=r-J(J(e+100100+J(t-8,6),100)*3,4)+752,r}function te(e){let t=4*e+139361631;t=t+J(J(4*e+183187720,146097)*3,4)*4-3908;let n=J(Y(t,1461),4)*5+308,r=J(Y(n,153),5)+1,i=Y(J(n,153),12)+1;return{gy:J(t,1461)-100100+J(8-i,6),gm:i,gd:r}}function K(e){if(!Number.isFinite(e)||eP)throw RangeError(`Invalid Jalaali year ${e}: must be a finite number between ${N} and ${P} (inclusive)`);let t=e+621,n=-14,r=M[0],i=0,a=0;for(let t=1;tP)throw RangeError(`Invalid Jalaali year ${e}: must be a finite number between ${N} and ${P} (inclusive)`);let t=M[0],n=0,r=0;for(let i=1;ire[Number(e)])}var Z=[`فروردین`,`اردیبهشت`,`خرداد`,`تیر`,`مرداد`,`شهریور`,`مهر`,`آبان`,`آذر`,`دی`,`بهمن`,`اسفند`],ie=[`ش`,`ی`,`د`,`س`,`چ`,`پ`,`ج`];function ae(e){let t=e.trim().match(/^(\d{4})-(\d{2})-(\d{2})/);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));let n=new Date(e);return Number.isNaN(n.getTime())?new Date(NaN):new Date(n.getFullYear(),n.getMonth(),n.getDate())}function oe(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Q(e){let{jy:t,jm:n,jd:r}=F(e.getFullYear(),e.getMonth()+1,e.getDate());return{jy:t,jm:n,jd:r}}function se(e,t,n){let{gy:r,gm:i,gd:a}=I(e,t,n);return new Date(r,i-1,a)}function ce(e){return e?Q(ae(e)):null}function le(e,t,n){return oe(se(e,t,n))}function ue(e,t,n){return`${X(String(n))} ${Z[t-1]} ${X(String(e))}`}function de(e,t,n){let{gy:r,gm:i,gd:a}=I(e,t,n);return(new Date(r,i-1,a).getDay()+1)%7}function fe(e,t){return R(e,t)}function pe(e,t){let n=fe(e,t),r=de(e,t,1),i=Array.from({length:r},()=>null);for(let e=1;e<=n;e+=1)i.push(e);for(;i.length%7!=0;)i.push(null);return i}function $(){return Q(new Date)}var me={key:0,class:`form-label`},he=[`disabled`],ge={class:`persian-date-input__header`},_e={class:`persian-date-input__month`},ve={class:`persian-date-input__weekdays`},ye={class:`persian-date-input__grid`},be={key:0,class:`persian-date-input__cell persian-date-input__cell--empty`},xe=[`onClick`],Se={key:2,class:`input-error-text`},Ce={key:3,class:`form-hint`},we=v(d({__name:`PersianDateInput`,props:{modelValue:{},label:{},placeholder:{},hint:{},error:{},disabled:{type:Boolean},compact:{type:Boolean}},emits:[`update:modelValue`],setup(o,{emit:d}){let f=o,m=d,h=u(null),v=u(!1),b=u($().jy),x=u($().jm),S=_(()=>ce(f.modelValue??``)),w=_(()=>{if(!S.value)return``;let{jy:e,jm:t,jd:n}=S.value;return ue(e,t,n)}),T=_(()=>pe(b.value,x.value)),E=_(()=>`${Z[x.value-1]} ${O(String(b.value))}`);a(()=>f.modelValue,e=>{let t=ce(e??``);t&&(b.value=t.jy,x.value=t.jm)},{immediate:!0});function D(){f.disabled||(v.value=!v.value)}function k(){v.value=!1}function ee(e){m(`update:modelValue`,le(b.value,x.value,e)),k()}function A(e){let t=x.value+e,n=b.value;t>12?(t=1,n+=1):t<1&&(t=12,--n),x.value=t,b.value=n}function j(){let e=$();b.value=e.jy,x.value=e.jm,m(`update:modelValue`,le(e.jy,e.jm,e.jd)),k()}function M(e){if(!S.value)return!1;let{jy:t,jm:n,jd:r}=S.value;return t===b.value&&n===x.value&&r===e}function N(e){let t=$();return t.jy===b.value&&t.jm===x.value&&t.jd===e}function P(e){h.value?.contains(e.target)||k()}return t(()=>{document.addEventListener(`click`,P)}),i(()=>{document.removeEventListener(`click`,P)}),(t,i)=>(e(),l(`div`,{ref_key:`rootRef`,ref:h,class:r([`form-group persian-date-input`,{"persian-date-input--compact":o.compact}])},[o.label?(e(),l(`label`,me,p(o.label),1)):y(``,!0),s(`button`,{type:`button`,class:r([`input persian-date-input__trigger`,{"input-error":o.error,"is-open":v.value}]),disabled:o.disabled,onClick:C(D,[`stop`])},[s(`span`,{class:r({"persian-date-input__placeholder":!w.value})},p(w.value||o.placeholder||`انتخاب تاریخ`),3),i[3]||=s(`span`,{class:`persian-date-input__icon`,"aria-hidden":`true`},[s(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`},[s(`rect`,{x:`3`,y:`5`,width:`18`,height:`16`,rx:`2`,stroke:`currentColor`,"stroke-width":`1.5`}),s(`path`,{d:`M8 3v4M16 3v4M3 10h18`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})])],-1)],10,he),v.value?(e(),l(`div`,{key:1,class:`persian-date-input__panel`,onClick:i[2]||=C(()=>{},[`stop`])},[s(`div`,ge,[s(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:i[0]||=e=>A(-1)},`‹`),s(`strong`,_e,p(E.value),1),s(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:i[1]||=e=>A(1)},`›`)]),s(`div`,ve,[(e(!0),l(g,null,n(c(ie),t=>(e(),l(`span`,{key:t},p(t),1))),128))]),s(`div`,ye,[(e(!0),l(g,null,n(T.value,(t,n)=>(e(),l(g,{key:n},[t===null?(e(),l(`span`,be)):(e(),l(`button`,{key:1,type:`button`,class:r([`persian-date-input__cell`,{"persian-date-input__cell--selected":M(t),"persian-date-input__cell--today":N(t)}]),onClick:e=>ee(t)},p(c(O)(String(t))),11,xe))],64))),128))]),s(`button`,{type:`button`,class:`persian-date-input__today`,onClick:j},`امروز`)])):y(``,!0),o.error?(e(),l(`p`,Se,p(o.error),1)):o.hint?(e(),l(`p`,Ce,p(o.hint),1)):y(``,!0)],2))}}),[[`__scopeId`,`data-v-fc20b5a1`]]);function Te(e){return e?.trim()&&(e.match(/آدرس:\s*(.+)/)?.[1]??e).trim()||`—`}function Ee(e){let t=new Map;for(let n of e){let e=Te(n.note),r=t.get(n.customerId);r?r.address===`—`&&e!==`—`&&(r.address=e):(r={customerId:n.customerId,customerName:n.customerName,customerPhone:n.customerPhone,address:e,lines:[]},t.set(n.customerId,r));for(let e of n.items)r.lines.push({lineKey:`${n.id}:${e.id}`,requestId:n.id,createdAt:n.createdAt,status:n.status,productName:e.productName,productCode:e.productCode})}return[...t.values()].sort((e,t)=>{let n=e.lines[0]?.createdAt??``;return(t.lines[0]?.createdAt??``).localeCompare(n)})}var De=/^(\d{4})-(\d{2})-(\d{2})$/;function Oe(e){return new Intl.DateTimeFormat(`en-CA`,{timeZone:`Asia/Tehran`,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(new Date(e))}function ke(e,t){let n=t?.trim();return!n||!De.test(n)?e:e.filter(e=>Oe(e.createdAt)===n)}var Ae={class:`admin-page catalog-requests-page`},je={class:`catalog-requests-page__toolbar admin-card`},Me={class:`catalog-requests-page__search`},Ne={class:`catalog-requests-page__filters`},Pe={class:`catalog-requests-page__date-wrap`},Fe={key:2,class:`catalog-requests-page__list`},Ie=[`aria-expanded`,`onClick`],Le={class:`customer-card__chevron`,"aria-hidden":`true`},Re={class:`customer-card__toggle-main`},ze={class:`customer-card__identity`},Be={class:`customer-card__name`},Ve={class:`customer-card__phone`,dir:`ltr`},He={class:`customer-card__badge`},Ue={key:0,class:`customer-card__address`},We={class:`customer-card__table-wrap`},Ge={class:`customer-card__table`},Ke={class:`customer-card__date`},qe={dir:`ltr`,class:`customer-card__code`},Je={class:`customer-card__status`},Ye=v(d({__name:`CatalogRequestsView`,setup(i){let a=[{value:``,label:`همه وضعیت‌ها`},{value:`new`,label:j.new},{value:`approved`,label:j.approved},{value:`ready_to_ship`,label:j.ready_to_ship},{value:`delivered`,label:j.delivered},{value:`returned`,label:j.returned},{value:`cancelled`,label:j.cancelled}],d=a.filter(e=>e.value),v=u([]),C=u(``),O=u(``),M=u(``),N=u(!0),P=b(),F=u(new Set),I=_(()=>ke(v.value,O.value)),L=_(()=>Ee(I.value)),R=_(()=>{let e=M.value.trim();return e?L.value.filter(t=>t.customerName.includes(e)||t.customerPhone.includes(e)):L.value}),z=_(()=>!!(C.value||O.value||M.value.trim()));function B(e){return!F.value.has(e)}function V(e){let t=new Set(F.value);t.has(e)?t.delete(e):t.add(e),F.value=t}async function H(){N.value=!0;try{v.value=await D.list({status:C.value||void 0,registeredOn:O.value||void 0})}catch(e){P.error(e instanceof w?e.message:`بارگذاری انجام نشد`)}finally{N.value=!1}}async function U(e,t){try{await D.updateStatus(e,t),P.success(`وضعیت به‌روز شد`),await H()}catch(e){P.error(e instanceof w?e.message:`به‌روزرسانی ناموفق بود`)}}function W(){O.value=``,H()}return t(()=>{H()}),(t,i)=>(e(),l(`div`,Ae,[i[5]||=s(`header`,{class:`catalog-requests-page__head`},[s(`div`,null,[s(`h1`,null,`درخواست کالیته فیزیکی`),s(`p`,null,`درخواست‌های هر مشتری در یک کارت`)])],-1),s(`div`,je,[s(`div`,Me,[f(T,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":i[0]||=e=>M.value=e,type:`search`,class:`catalog-requests-page__search-input`,placeholder:`جستجو در نام یا شماره مشتری...`,autocomplete:`off`},null,512),[[x,M.value]])]),s(`div`,Ne,[s(`div`,Pe,[f(we,{modelValue:O.value,"onUpdate:modelValue":[i[1]||=e=>O.value=e,H],class:`catalog-requests-page__date`,compact:``,placeholder:`انتخاب روز`},null,8,[`modelValue`]),O.value?(e(),l(`button`,{key:0,type:`button`,class:`catalog-requests-page__date-clear`,"aria-label":`پاک کردن تاریخ`,title:`پاک کردن تاریخ`,onClick:W},` × `)):y(``,!0)]),f(A,{modelValue:C.value,"onUpdate:modelValue":[i[2]||=e=>C.value=e,H],class:`catalog-requests-page__status`,"aria-label":`فیلتر وضعیت`,options:a},null,8,[`modelValue`])])]),N.value?(e(),m(k,{key:0,variant:`cards`})):R.value.length?(e(),l(`div`,Fe,[(e(!0),l(g,null,n(R.value,t=>(e(),l(`article`,{key:t.customerId,class:r([`customer-card`,{"customer-card--collapsed":!B(t.customerId)}])},[s(`button`,{type:`button`,class:`customer-card__toggle`,"aria-expanded":B(t.customerId),onClick:e=>V(t.customerId)},[s(`span`,Le,p(B(t.customerId)?`▾`:`◂`),1),s(`span`,Re,[s(`span`,ze,[s(`strong`,Be,p(t.customerName),1),s(`span`,Ve,p(t.customerPhone),1)]),s(`span`,He,p(t.lines.length)+` درخواست`,1)])],8,Ie),B(t.customerId)?(e(),l(`p`,Ue,[i[3]||=s(`span`,{class:`customer-card__address-label`},`آدرس:`,-1),h(` `+p(t.address),1)])):y(``,!0),o(s(`div`,We,[s(`table`,Ge,[i[4]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تاریخ ثبت`),s(`th`,null,`محصول`),s(`th`,null,`کد`),s(`th`,null,`وضعیت`)])],-1),s(`tbody`,null,[(e(!0),l(g,null,n(t.lines,t=>(e(),l(`tr`,{key:t.lineKey},[s(`td`,Ke,p(c(E)(t.createdAt)),1),s(`td`,null,p(t.productName),1),s(`td`,qe,p(t.productCode),1),s(`td`,Je,[f(A,{"model-value":t.status,class:`customer-card__status-select`,options:c(d),"onUpdate:modelValue":e=>U(t.requestId,String(e))},null,8,[`model-value`,`options`,`onUpdate:modelValue`])])]))),128))])])],512),[[S,B(t.customerId)]])],2))),128))])):(e(),m(ee,{key:1,title:z.value?M.value.trim()?`مشتری با این جستجو پیدا نشد`:`درخواستی برای این فیلتر نیست`:`درخواستی نیست`,description:z.value?M.value.trim()?`عبارت جستجو یا فیلترها را تغییر دهید.`:`تاریخ یا وضعیت را تغییر دهید.`:void 0},null,8,[`title`,`description`]))]))}}),[[`__scopeId`,`data-v-01bfcf4e`]]);export{Ye as default}; \ No newline at end of file +import{A as e,D as t,N as n,Ot as r,T as i,V as a,W as o,c as s,ct as c,d as l,et as u,g as d,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as b,d as x,f as S,m as C,t as w}from"./http-CTjL79ty.js";import{L as T,a as E,g as D,u as O}from"./index-BWgYBNME.js";import{t as k}from"./AdminPageSkeleton-DacAHji8.js";import{t as ee}from"./BaseEmptyState-88fQ29rO.js";import{t as A}from"./AdminSelect-hgn_nYC2.js";import{r as j}from"./adminLabels-jYlObVqa.js";var M=[-61,9,38,199,426,686,756,818,1111,1181,1210,1635,2060,2097,2192,2262,2324,2394,2456,3178],N=M[0],P=M[M.length-1]-1;function F(e,t,n){return e instanceof Date?W(G(e.getFullYear(),e.getMonth()+1,e.getDate())):W(G(e,t,n))}function I(e,t,n){return te(V(e,t,n))}function L(e){return ne(e)===0}function R(e,t){return t<=6?31:t<=11||L(e)?30:29}function z(e){let{gy:t,march:n,jump:r,n:i}=K(e);return{leap:q(r,i),gy:t,march:n}}function B(e){let{gy:t,march:n}=K(e);return{gy:t,march:n}}function V(e,t,n){let r=B(e);return G(r.gy,3,r.march)+(t-1)*31-J(t,7)*(t-7)+n-1}var H=V(N,1,1),U=V(P,12,R(P,12));function W(e){if(eU)throw RangeError(`Invalid Julian Day number ${e}: outside the supported Jalaali range [${N}, ${P}]`);let t=te(e).gy,n=Math.min(t-621,P),r=z(n),i=e-G(r.gy,3,r.march);if(i>=0){if(i<=185)return{jy:n,jm:1+J(i,31),jd:Y(i,31)+1};i-=186}else--n,i+=179,r.leap===1&&(i+=1);return{jy:n,jm:7+J(i,30),jd:Y(i,30)+1}}function G(e,t,n){let r=J((e+J(t-8,6)+100100)*1461,4)+J(153*Y(t+9,12)+2,5)+n-34840408;return r=r-J(J(e+100100+J(t-8,6),100)*3,4)+752,r}function te(e){let t=4*e+139361631;t=t+J(J(4*e+183187720,146097)*3,4)*4-3908;let n=J(Y(t,1461),4)*5+308,r=J(Y(n,153),5)+1,i=Y(J(n,153),12)+1;return{gy:J(t,1461)-100100+J(8-i,6),gm:i,gd:r}}function K(e){if(!Number.isFinite(e)||eP)throw RangeError(`Invalid Jalaali year ${e}: must be a finite number between ${N} and ${P} (inclusive)`);let t=e+621,n=-14,r=M[0],i=0,a=0;for(let t=1;tP)throw RangeError(`Invalid Jalaali year ${e}: must be a finite number between ${N} and ${P} (inclusive)`);let t=M[0],n=0,r=0;for(let i=1;ire[Number(e)])}var Z=[`فروردین`,`اردیبهشت`,`خرداد`,`تیر`,`مرداد`,`شهریور`,`مهر`,`آبان`,`آذر`,`دی`,`بهمن`,`اسفند`],ie=[`ش`,`ی`,`د`,`س`,`چ`,`پ`,`ج`];function ae(e){let t=e.trim().match(/^(\d{4})-(\d{2})-(\d{2})/);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));let n=new Date(e);return Number.isNaN(n.getTime())?new Date(NaN):new Date(n.getFullYear(),n.getMonth(),n.getDate())}function oe(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Q(e){let{jy:t,jm:n,jd:r}=F(e.getFullYear(),e.getMonth()+1,e.getDate());return{jy:t,jm:n,jd:r}}function se(e,t,n){let{gy:r,gm:i,gd:a}=I(e,t,n);return new Date(r,i-1,a)}function ce(e){return e?Q(ae(e)):null}function le(e,t,n){return oe(se(e,t,n))}function ue(e,t,n){return`${X(String(n))} ${Z[t-1]} ${X(String(e))}`}function de(e,t,n){let{gy:r,gm:i,gd:a}=I(e,t,n);return(new Date(r,i-1,a).getDay()+1)%7}function fe(e,t){return R(e,t)}function pe(e,t){let n=fe(e,t),r=de(e,t,1),i=Array.from({length:r},()=>null);for(let e=1;e<=n;e+=1)i.push(e);for(;i.length%7!=0;)i.push(null);return i}function $(){return Q(new Date)}var me={key:0,class:`form-label`},he=[`disabled`],ge={class:`persian-date-input__header`},_e={class:`persian-date-input__month`},ve={class:`persian-date-input__weekdays`},ye={class:`persian-date-input__grid`},be={key:0,class:`persian-date-input__cell persian-date-input__cell--empty`},xe=[`onClick`],Se={key:2,class:`input-error-text`},Ce={key:3,class:`form-hint`},we=v(d({__name:`PersianDateInput`,props:{modelValue:{},label:{},placeholder:{},hint:{},error:{},disabled:{type:Boolean},compact:{type:Boolean}},emits:[`update:modelValue`],setup(o,{emit:d}){let f=o,m=d,h=u(null),v=u(!1),b=u($().jy),x=u($().jm),S=_(()=>ce(f.modelValue??``)),w=_(()=>{if(!S.value)return``;let{jy:e,jm:t,jd:n}=S.value;return ue(e,t,n)}),T=_(()=>pe(b.value,x.value)),E=_(()=>`${Z[x.value-1]} ${O(String(b.value))}`);a(()=>f.modelValue,e=>{let t=ce(e??``);t&&(b.value=t.jy,x.value=t.jm)},{immediate:!0});function D(){f.disabled||(v.value=!v.value)}function k(){v.value=!1}function ee(e){m(`update:modelValue`,le(b.value,x.value,e)),k()}function A(e){let t=x.value+e,n=b.value;t>12?(t=1,n+=1):t<1&&(t=12,--n),x.value=t,b.value=n}function j(){let e=$();b.value=e.jy,x.value=e.jm,m(`update:modelValue`,le(e.jy,e.jm,e.jd)),k()}function M(e){if(!S.value)return!1;let{jy:t,jm:n,jd:r}=S.value;return t===b.value&&n===x.value&&r===e}function N(e){let t=$();return t.jy===b.value&&t.jm===x.value&&t.jd===e}function P(e){h.value?.contains(e.target)||k()}return t(()=>{document.addEventListener(`click`,P)}),i(()=>{document.removeEventListener(`click`,P)}),(t,i)=>(e(),l(`div`,{ref_key:`rootRef`,ref:h,class:r([`form-group persian-date-input`,{"persian-date-input--compact":o.compact}])},[o.label?(e(),l(`label`,me,p(o.label),1)):y(``,!0),s(`button`,{type:`button`,class:r([`input persian-date-input__trigger`,{"input-error":o.error,"is-open":v.value}]),disabled:o.disabled,onClick:C(D,[`stop`])},[s(`span`,{class:r({"persian-date-input__placeholder":!w.value})},p(w.value||o.placeholder||`انتخاب تاریخ`),3),i[3]||=s(`span`,{class:`persian-date-input__icon`,"aria-hidden":`true`},[s(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`},[s(`rect`,{x:`3`,y:`5`,width:`18`,height:`16`,rx:`2`,stroke:`currentColor`,"stroke-width":`1.5`}),s(`path`,{d:`M8 3v4M16 3v4M3 10h18`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})])],-1)],10,he),v.value?(e(),l(`div`,{key:1,class:`persian-date-input__panel`,onClick:i[2]||=C(()=>{},[`stop`])},[s(`div`,ge,[s(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:i[0]||=e=>A(-1)},`‹`),s(`strong`,_e,p(E.value),1),s(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:i[1]||=e=>A(1)},`›`)]),s(`div`,ve,[(e(!0),l(g,null,n(c(ie),t=>(e(),l(`span`,{key:t},p(t),1))),128))]),s(`div`,ye,[(e(!0),l(g,null,n(T.value,(t,n)=>(e(),l(g,{key:n},[t===null?(e(),l(`span`,be)):(e(),l(`button`,{key:1,type:`button`,class:r([`persian-date-input__cell`,{"persian-date-input__cell--selected":M(t),"persian-date-input__cell--today":N(t)}]),onClick:e=>ee(t)},p(c(O)(String(t))),11,xe))],64))),128))]),s(`button`,{type:`button`,class:`persian-date-input__today`,onClick:j},`امروز`)])):y(``,!0),o.error?(e(),l(`p`,Se,p(o.error),1)):o.hint?(e(),l(`p`,Ce,p(o.hint),1)):y(``,!0)],2))}}),[[`__scopeId`,`data-v-fc20b5a1`]]);function Te(e){return e?.trim()&&(e.match(/آدرس:\s*(.+)/)?.[1]??e).trim()||`—`}function Ee(e){let t=new Map;for(let n of e){let e=Te(n.note),r=t.get(n.customerId);r?r.address===`—`&&e!==`—`&&(r.address=e):(r={customerId:n.customerId,customerName:n.customerName,customerPhone:n.customerPhone,address:e,lines:[]},t.set(n.customerId,r));for(let e of n.items)r.lines.push({lineKey:`${n.id}:${e.id}`,requestId:n.id,createdAt:n.createdAt,status:n.status,productName:e.productName,productCode:e.productCode})}return[...t.values()].sort((e,t)=>{let n=e.lines[0]?.createdAt??``;return(t.lines[0]?.createdAt??``).localeCompare(n)})}var De=/^(\d{4})-(\d{2})-(\d{2})$/;function Oe(e){return new Intl.DateTimeFormat(`en-CA`,{timeZone:`Asia/Tehran`,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(new Date(e))}function ke(e,t){let n=t?.trim();return!n||!De.test(n)?e:e.filter(e=>Oe(e.createdAt)===n)}var Ae={class:`admin-page catalog-requests-page`},je={class:`catalog-requests-page__toolbar admin-card`},Me={class:`catalog-requests-page__search`},Ne={class:`catalog-requests-page__filters`},Pe={class:`catalog-requests-page__date-wrap`},Fe={key:2,class:`catalog-requests-page__list`},Ie=[`aria-expanded`,`onClick`],Le={class:`customer-card__chevron`,"aria-hidden":`true`},Re={class:`customer-card__toggle-main`},ze={class:`customer-card__identity`},Be={class:`customer-card__name`},Ve={class:`customer-card__phone`,dir:`ltr`},He={class:`customer-card__badge`},Ue={key:0,class:`customer-card__address`},We={class:`customer-card__table-wrap`},Ge={class:`customer-card__table`},Ke={class:`customer-card__date`},qe={dir:`ltr`,class:`customer-card__code`},Je={class:`customer-card__status`},Ye=v(d({__name:`CatalogRequestsView`,setup(i){let a=[{value:``,label:`همه وضعیت‌ها`},{value:`new`,label:j.new},{value:`approved`,label:j.approved},{value:`ready_to_ship`,label:j.ready_to_ship},{value:`delivered`,label:j.delivered},{value:`returned`,label:j.returned},{value:`cancelled`,label:j.cancelled}],d=a.filter(e=>e.value),v=u([]),C=u(``),O=u(``),M=u(``),N=u(!0),P=b(),F=u(new Set),I=_(()=>ke(v.value,O.value)),L=_(()=>Ee(I.value)),R=_(()=>{let e=M.value.trim();return e?L.value.filter(t=>t.customerName.includes(e)||t.customerPhone.includes(e)):L.value}),z=_(()=>!!(C.value||O.value||M.value.trim()));function B(e){return!F.value.has(e)}function V(e){let t=new Set(F.value);t.has(e)?t.delete(e):t.add(e),F.value=t}async function H(){N.value=!0;try{v.value=await D.list({status:C.value||void 0,registeredOn:O.value||void 0})}catch(e){P.error(e instanceof w?e.message:`بارگذاری انجام نشد`)}finally{N.value=!1}}async function U(e,t){try{await D.updateStatus(e,t),P.success(`وضعیت به‌روز شد`),await H()}catch(e){P.error(e instanceof w?e.message:`به‌روزرسانی ناموفق بود`)}}function W(){O.value=``,H()}return t(()=>{H()}),(t,i)=>(e(),l(`div`,Ae,[i[5]||=s(`header`,{class:`catalog-requests-page__head`},[s(`div`,null,[s(`h1`,null,`درخواست کالیته فیزیکی`),s(`p`,null,`درخواست‌های هر مشتری در یک کارت`)])],-1),s(`div`,je,[s(`div`,Me,[f(T,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":i[0]||=e=>M.value=e,type:`search`,class:`catalog-requests-page__search-input`,placeholder:`جستجو در نام یا شماره مشتری...`,autocomplete:`off`},null,512),[[x,M.value]])]),s(`div`,Ne,[s(`div`,Pe,[f(we,{modelValue:O.value,"onUpdate:modelValue":[i[1]||=e=>O.value=e,H],class:`catalog-requests-page__date`,compact:``,placeholder:`انتخاب روز`},null,8,[`modelValue`]),O.value?(e(),l(`button`,{key:0,type:`button`,class:`catalog-requests-page__date-clear`,"aria-label":`پاک کردن تاریخ`,title:`پاک کردن تاریخ`,onClick:W},` × `)):y(``,!0)]),f(A,{modelValue:C.value,"onUpdate:modelValue":[i[2]||=e=>C.value=e,H],class:`catalog-requests-page__status`,"aria-label":`فیلتر وضعیت`,options:a},null,8,[`modelValue`])])]),N.value?(e(),m(k,{key:0,variant:`cards`})):R.value.length?(e(),l(`div`,Fe,[(e(!0),l(g,null,n(R.value,t=>(e(),l(`article`,{key:t.customerId,class:r([`customer-card`,{"customer-card--collapsed":!B(t.customerId)}])},[s(`button`,{type:`button`,class:`customer-card__toggle`,"aria-expanded":B(t.customerId),onClick:e=>V(t.customerId)},[s(`span`,Le,p(B(t.customerId)?`▾`:`◂`),1),s(`span`,Re,[s(`span`,ze,[s(`strong`,Be,p(t.customerName),1),s(`span`,Ve,p(t.customerPhone),1)]),s(`span`,He,p(t.lines.length)+` درخواست`,1)])],8,Ie),B(t.customerId)?(e(),l(`p`,Ue,[i[3]||=s(`span`,{class:`customer-card__address-label`},`آدرس:`,-1),h(` `+p(t.address),1)])):y(``,!0),o(s(`div`,We,[s(`table`,Ge,[i[4]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تاریخ ثبت`),s(`th`,null,`محصول`),s(`th`,null,`کد`),s(`th`,null,`وضعیت`)])],-1),s(`tbody`,null,[(e(!0),l(g,null,n(t.lines,t=>(e(),l(`tr`,{key:t.lineKey},[s(`td`,Ke,p(c(E)(t.createdAt)),1),s(`td`,null,p(t.productName),1),s(`td`,qe,p(t.productCode),1),s(`td`,Je,[f(A,{"model-value":t.status,class:`customer-card__status-select`,options:c(d),"onUpdate:modelValue":e=>U(t.requestId,String(e))},null,8,[`model-value`,`options`,`onUpdate:modelValue`])])]))),128))])])],512),[[S,B(t.customerId)]])],2))),128))])):(e(),m(ee,{key:1,title:z.value?M.value.trim()?`مشتری با این جستجو پیدا نشد`:`درخواستی برای این فیلتر نیست`:`درخواستی نیست`,description:z.value?M.value.trim()?`عبارت جستجو یا فیلترها را تغییر دهید.`:`تاریخ یا وضعیت را تغییر دهید.`:void 0},null,8,[`title`,`description`]))]))}}),[[`__scopeId`,`data-v-01bfcf4e`]]);export{Ye as default}; \ No newline at end of file diff --git a/dist/assets/CategoriesView-DpJp6SIe.js b/dist/assets/CategoriesView-D47o28Jt.js similarity index 99% rename from dist/assets/CategoriesView-DpJp6SIe.js rename to dist/assets/CategoriesView-D47o28Jt.js index 3447d8c..1522582 100644 --- a/dist/assets/CategoriesView-DpJp6SIe.js +++ b/dist/assets/CategoriesView-D47o28Jt.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as l,h as u,jt as d,l as f,p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ee,d as v,t as y}from"./http-CTjL79ty.js";import{D as b,H as x}from"./index-DWlOII4H.js";import{t as te}from"./AdminPageSkeleton-DacAHji8.js";import{t as S}from"./BaseSwitch-Dz4ODUhf.js";import{t as C}from"./AdminImagePicker-DhyB3HhH.js";import{t as w}from"./AdminSelect-CWMyO8tk.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(t){let n=t,r={bolt:`vuesax-linear:flash`,feather:`vuesax-linear:pen-add`,diamond:`vuesax-linear:diamonds`,grid:`vuesax-linear:element-3`,bag:`vuesax-linear:shopping-bag`,weight:`vuesax-linear:shopping-bag`,"id-card":`vuesax-linear:personalcard`,catalog:`vuesax-linear:category`,headset:`vuesax-linear:headphone`,home:`vuesax-linear:home`},i=h(()=>r[n.name]);return(n,r)=>(e(),s(`span`,T,[i.value?(e(),f(x,{key:0,icon:i.value,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`icon`,`size`,`stroke-width`,`color`])):t.name===`shirt`?(e(),s(`svg`,{key:1,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":t.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[0]||=[o(`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),o(`path`,{d:`M12 7.75V18.5`},null,-1)]],8,E)):t.name===`suit`?(e(),s(`svg`,{key:2,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":t.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[1]||=[o(`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),o(`path`,{d:`M12 5.5v13`},null,-1),o(`path`,{d:`M7.5 9 12 11.75 16.5 9`},null,-1),o(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`},null,-1)]],8,D)):t.name===`trousers`?(e(),s(`svg`,{key:3,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":t.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[2]||=[o(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`},null,-1),o(`path`,{d:`M12 8.75v11`},null,-1),o(`path`,{d:`M8 7.25h8`},null,-1)]],8,O)):t.name===`ruler`?(e(),s(`svg`,{key:4,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[3]||=[p(``,5)]],8,k)):t.name===`composition`?(e(),s(`svg`,{key:5,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[4]||=[o(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,A)):t.name===`weave`?(e(),s(`svg`,{key:6,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":`1.6`,"stroke-linecap":`round`},[...r[5]||=[p(``,7)]],8,j)):_(``,!0)]))}}),[[`__scopeId`,`data-v-76e4dc13`]]),ne={class:`categories-admin`},re={class:`admin-page-header`},ie=[`disabled`],ae={key:1,class:`categories-admin__grid`},oe={class:`admin-card categories-panel`},se={class:`categories-panel__head`},ce={key:0,class:`categories-panel__add`},le={key:1,class:`categories-panel__empty`},ue={key:2,class:`categories-panel__list`},N={class:`category-row__fields`},P={class:`category-row__line`},F=[`onUpdate:modelValue`],I={class:`category-row__line`},L=[`onUpdate:modelValue`],R={class:`category-row__line`},z={class:`category-row__id`,dir:`ltr`},B=[`onClick`],V={class:`admin-card categories-panel`},H={class:`categories-panel__head`},U={key:0,class:`categories-panel__add`},W={key:1,class:`categories-panel__empty`},de={key:2,class:`categories-panel__list`},fe={class:`category-row__fields`},pe={class:`category-row__line`},me=[`onUpdate:modelValue`],he={class:`category-row__line`},ge=[`onUpdate:modelValue`],_e={class:`category-row__line`},ve=[`onUpdate:modelValue`],ye={class:`category-row__line`},be={class:`category-row__id`,dir:`ltr`},xe=[`onClick`],G=g(l({__name:`CategoriesView`,setup(l){let p=c([]),g=c([]),x=r({}),T=c(!0),E=c(!1),D=ee(),O=c(!1),k=c(!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=r({id:``,title:``,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0}),q=r({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 t(()=>{$()}),(t,r)=>(e(),s(`div`,ne,[o(`div`,re,[r[8]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`دسته‌بندی‌ها`),o(`p`,{class:`admin-page-header__sub`},` دسته‌های کاربرد و فصل را اضافه کنید. با کلید «نمایش / مخفی» مشخص کنید عنوان و توضیح در اپ کاربر دیده شود. `)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:E.value||T.value,onClick:Ee},d(E.value?`در حال ذخیره...`:`ثبت تغییرات`),9,ie)]),T.value?(e(),f(te,{key:0,variant:`cards`})):(e(),s(`div`,ae,[o(`section`,oe,[o(`div`,se,[o(`div`,null,[r[9]||=o(`h2`,null,`بر اساس کاربرد`,-1),o(`p`,null,d(p.value.length)+` دسته برای فیلتر محصول در اپ کاربر`,1)]),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[0]||=e=>O.value=!O.value},d(O.value?`بستن فرم`:`+ افزودن دسته`),1)]),O.value?(e(),s(`div`,ce,[a(o(`input`,{"onUpdate:modelValue":r[1]||=e=>K.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً پارچه‌های مانتویی)`},null,512),[[v,K.title]]),a(o(`input`,{"onUpdate:modelValue":r[2]||=e=>K.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً mantle)`},null,512),[[v,K.id]]),a(o(`input`,{"onUpdate:modelValue":r[3]||=e=>K.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,512),[[v,K.subtitle]]),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Se},`ثبت در لیست`)])):_(``,!0),p.value.length?(e(),s(`div`,ue,[(e(!0),s(m,null,n(p.value,t=>(e(),s(`article`,{key:t.id,class:`category-row`},[u(C,{"model-value":x[t.id],"onUpdate:modelValue":e=>x[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),o(`div`,N,[o(`div`,P,[a(o(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,F),[[v,t.title]]),u(S,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,I,[a(o(`input`,{"onUpdate:modelValue":e=>t.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,8,L),[[v,t.subtitle]]),u(S,{modelValue:t.showSubtitle,"onUpdate:modelValue":e=>t.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,R,[u(w,{modelValue:t.icon,"onUpdate:modelValue":e=>t.icon=e,options:A,"aria-label":`آیکون`,block:``},{"option-leading":i(({option:t})=>[t?(e(),f(M,{key:0,name:t.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`p`,z,d(t.id),1)]),o(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>we(t.id)},`حذف`,8,B)]))),128))])):(e(),s(`p`,le,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))]),o(`section`,V,[o(`div`,H,[o(`div`,null,[r[10]||=o(`h2`,null,`بر اساس فصل`,-1),o(`p`,null,d(g.value.length)+` دسته فصلی برای فیلتر محصول`,1)]),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[4]||=e=>k.value=!k.value},d(k.value?`بستن فرم`:`+ افزودن دسته`),1)]),k.value?(e(),s(`div`,U,[a(o(`input`,{"onUpdate:modelValue":r[5]||=e=>q.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً بهاره)`},null,512),[[v,q.title]]),a(o(`input`,{"onUpdate:modelValue":r[6]||=e=>q.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً spring)`},null,512),[[v,q.id]]),a(o(`input`,{"onUpdate:modelValue":r[7]||=e=>q.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,512),[[v,q.description]]),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Ce},`ثبت در لیست`)])):_(``,!0),g.value.length?(e(),s(`div`,de,[(e(!0),s(m,null,n(g.value,t=>(e(),s(`article`,{key:t.id,class:`category-row`},[u(C,{"model-value":x[t.id],"onUpdate:modelValue":e=>x[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),o(`div`,fe,[o(`div`,pe,[a(o(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,me),[[v,t.title]]),u(S,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,he,[a(o(`input`,{"onUpdate:modelValue":e=>t.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,8,ge),[[v,t.description]]),u(S,{modelValue:t.showDescription,"onUpdate:modelValue":e=>t.showDescription=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,_e,[a(o(`input`,{"onUpdate:modelValue":e=>t.ctaLabel=e,class:`admin-input`,type:`text`,placeholder:`متن لینک (مشاهده محصولات)`},null,8,ve),[[v,t.ctaLabel]]),u(S,{modelValue:t.showCta,"onUpdate:modelValue":e=>t.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,ye,[u(w,{modelValue:t.icon,"onUpdate:modelValue":e=>t.icon=e,options:A,"aria-label":`آیکون`,block:``},{"option-leading":i(({option:t})=>[t?(e(),f(M,{key:0,name:t.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`p`,be,d(t.id),1)]),o(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>Te(t.id)},`حذف`,8,xe)]))),128))])):(e(),s(`p`,W,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))])]))]))}}),[[`__scopeId`,`data-v-c42a22e0`]]);export{G as default}; \ No newline at end of file +import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as l,h as u,jt as d,l as f,p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ee,d as v,t as y}from"./http-CTjL79ty.js";import{D as b,H as x}from"./index-BWgYBNME.js";import{t as te}from"./AdminPageSkeleton-DacAHji8.js";import{t as S}from"./BaseSwitch-Dz4ODUhf.js";import{t as C}from"./AdminImagePicker-DhyB3HhH.js";import{t as w}from"./AdminSelect-hgn_nYC2.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(t){let n=t,r={bolt:`vuesax-linear:flash`,feather:`vuesax-linear:pen-add`,diamond:`vuesax-linear:diamonds`,grid:`vuesax-linear:element-3`,bag:`vuesax-linear:shopping-bag`,weight:`vuesax-linear:shopping-bag`,"id-card":`vuesax-linear:personalcard`,catalog:`vuesax-linear:category`,headset:`vuesax-linear:headphone`,home:`vuesax-linear:home`},i=h(()=>r[n.name]);return(n,r)=>(e(),s(`span`,T,[i.value?(e(),f(x,{key:0,icon:i.value,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`icon`,`size`,`stroke-width`,`color`])):t.name===`shirt`?(e(),s(`svg`,{key:1,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":t.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[0]||=[o(`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),o(`path`,{d:`M12 7.75V18.5`},null,-1)]],8,E)):t.name===`suit`?(e(),s(`svg`,{key:2,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":t.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[1]||=[o(`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),o(`path`,{d:`M12 5.5v13`},null,-1),o(`path`,{d:`M7.5 9 12 11.75 16.5 9`},null,-1),o(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`},null,-1)]],8,D)):t.name===`trousers`?(e(),s(`svg`,{key:3,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":t.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[2]||=[o(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`},null,-1),o(`path`,{d:`M12 8.75v11`},null,-1),o(`path`,{d:`M8 7.25h8`},null,-1)]],8,O)):t.name===`ruler`?(e(),s(`svg`,{key:4,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[3]||=[p(``,5)]],8,k)):t.name===`composition`?(e(),s(`svg`,{key:5,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...r[4]||=[o(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,A)):t.name===`weave`?(e(),s(`svg`,{key:6,width:t.size,height:t.size,viewBox:`0 0 24 24`,fill:`none`,stroke:t.color,"stroke-width":`1.6`,"stroke-linecap":`round`},[...r[5]||=[p(``,7)]],8,j)):_(``,!0)]))}}),[[`__scopeId`,`data-v-76e4dc13`]]),ne={class:`categories-admin`},re={class:`admin-page-header`},ie=[`disabled`],ae={key:1,class:`categories-admin__grid`},oe={class:`admin-card categories-panel`},se={class:`categories-panel__head`},ce={key:0,class:`categories-panel__add`},le={key:1,class:`categories-panel__empty`},ue={key:2,class:`categories-panel__list`},N={class:`category-row__fields`},P={class:`category-row__line`},F=[`onUpdate:modelValue`],I={class:`category-row__line`},L=[`onUpdate:modelValue`],R={class:`category-row__line`},z={class:`category-row__id`,dir:`ltr`},B=[`onClick`],V={class:`admin-card categories-panel`},H={class:`categories-panel__head`},U={key:0,class:`categories-panel__add`},W={key:1,class:`categories-panel__empty`},de={key:2,class:`categories-panel__list`},fe={class:`category-row__fields`},pe={class:`category-row__line`},me=[`onUpdate:modelValue`],he={class:`category-row__line`},ge=[`onUpdate:modelValue`],_e={class:`category-row__line`},ve=[`onUpdate:modelValue`],ye={class:`category-row__line`},be={class:`category-row__id`,dir:`ltr`},xe=[`onClick`],G=g(l({__name:`CategoriesView`,setup(l){let p=c([]),g=c([]),x=r({}),T=c(!0),E=c(!1),D=ee(),O=c(!1),k=c(!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=r({id:``,title:``,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0}),q=r({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 t(()=>{$()}),(t,r)=>(e(),s(`div`,ne,[o(`div`,re,[r[8]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`دسته‌بندی‌ها`),o(`p`,{class:`admin-page-header__sub`},` دسته‌های کاربرد و فصل را اضافه کنید. با کلید «نمایش / مخفی» مشخص کنید عنوان و توضیح در اپ کاربر دیده شود. `)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:E.value||T.value,onClick:Ee},d(E.value?`در حال ذخیره...`:`ثبت تغییرات`),9,ie)]),T.value?(e(),f(te,{key:0,variant:`cards`})):(e(),s(`div`,ae,[o(`section`,oe,[o(`div`,se,[o(`div`,null,[r[9]||=o(`h2`,null,`بر اساس کاربرد`,-1),o(`p`,null,d(p.value.length)+` دسته برای فیلتر محصول در اپ کاربر`,1)]),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[0]||=e=>O.value=!O.value},d(O.value?`بستن فرم`:`+ افزودن دسته`),1)]),O.value?(e(),s(`div`,ce,[a(o(`input`,{"onUpdate:modelValue":r[1]||=e=>K.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً پارچه‌های مانتویی)`},null,512),[[v,K.title]]),a(o(`input`,{"onUpdate:modelValue":r[2]||=e=>K.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً mantle)`},null,512),[[v,K.id]]),a(o(`input`,{"onUpdate:modelValue":r[3]||=e=>K.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,512),[[v,K.subtitle]]),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Se},`ثبت در لیست`)])):_(``,!0),p.value.length?(e(),s(`div`,ue,[(e(!0),s(m,null,n(p.value,t=>(e(),s(`article`,{key:t.id,class:`category-row`},[u(C,{"model-value":x[t.id],"onUpdate:modelValue":e=>x[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),o(`div`,N,[o(`div`,P,[a(o(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,F),[[v,t.title]]),u(S,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,I,[a(o(`input`,{"onUpdate:modelValue":e=>t.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,8,L),[[v,t.subtitle]]),u(S,{modelValue:t.showSubtitle,"onUpdate:modelValue":e=>t.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,R,[u(w,{modelValue:t.icon,"onUpdate:modelValue":e=>t.icon=e,options:A,"aria-label":`آیکون`,block:``},{"option-leading":i(({option:t})=>[t?(e(),f(M,{key:0,name:t.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`p`,z,d(t.id),1)]),o(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>we(t.id)},`حذف`,8,B)]))),128))])):(e(),s(`p`,le,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))]),o(`section`,V,[o(`div`,H,[o(`div`,null,[r[10]||=o(`h2`,null,`بر اساس فصل`,-1),o(`p`,null,d(g.value.length)+` دسته فصلی برای فیلتر محصول`,1)]),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[4]||=e=>k.value=!k.value},d(k.value?`بستن فرم`:`+ افزودن دسته`),1)]),k.value?(e(),s(`div`,U,[a(o(`input`,{"onUpdate:modelValue":r[5]||=e=>q.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً بهاره)`},null,512),[[v,q.title]]),a(o(`input`,{"onUpdate:modelValue":r[6]||=e=>q.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً spring)`},null,512),[[v,q.id]]),a(o(`input`,{"onUpdate:modelValue":r[7]||=e=>q.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,512),[[v,q.description]]),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Ce},`ثبت در لیست`)])):_(``,!0),g.value.length?(e(),s(`div`,de,[(e(!0),s(m,null,n(g.value,t=>(e(),s(`article`,{key:t.id,class:`category-row`},[u(C,{"model-value":x[t.id],"onUpdate:modelValue":e=>x[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),o(`div`,fe,[o(`div`,pe,[a(o(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,me),[[v,t.title]]),u(S,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,he,[a(o(`input`,{"onUpdate:modelValue":e=>t.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,8,ge),[[v,t.description]]),u(S,{modelValue:t.showDescription,"onUpdate:modelValue":e=>t.showDescription=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,_e,[a(o(`input`,{"onUpdate:modelValue":e=>t.ctaLabel=e,class:`admin-input`,type:`text`,placeholder:`متن لینک (مشاهده محصولات)`},null,8,ve),[[v,t.ctaLabel]]),u(S,{modelValue:t.showCta,"onUpdate:modelValue":e=>t.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`div`,ye,[u(w,{modelValue:t.icon,"onUpdate:modelValue":e=>t.icon=e,options:A,"aria-label":`آیکون`,block:``},{"option-leading":i(({option:t})=>[t?(e(),f(M,{key:0,name:t.value,size:18},null,8,[`name`])):_(``,!0)]),_:1},8,[`modelValue`,`onUpdate:modelValue`]),u(S,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`p`,be,d(t.id),1)]),o(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>Te(t.id)},`حذف`,8,xe)]))),128))])):(e(),s(`p`,W,`هنوز دسته‌ای ثبت نشده. با «افزودن دسته» شروع کنید.`))])]))]))}}),[[`__scopeId`,`data-v-c42a22e0`]]);export{G as default}; \ No newline at end of file diff --git a/dist/assets/CheckManagementView-bbhL2yRJ.js b/dist/assets/CheckManagementView-BycEGkcl.js similarity index 82% rename from dist/assets/CheckManagementView-bbhL2yRJ.js rename to dist/assets/CheckManagementView-BycEGkcl.js index 76c5869..41662df 100644 --- a/dist/assets/CheckManagementView-bbhL2yRJ.js +++ b/dist/assets/CheckManagementView-BycEGkcl.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Ot as r,a as ee,c as i,ct as a,d as o,et as s,g as te,h as c,jt as l,l as ne,m as u,r as d,s as f,t as p,u as m}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,m as h,t as g}from"./http-CTjL79ty.js";import{B as _,C as ie,R as ae,T as v,_ as y,a as b,i as x,o as oe,z as se}from"./index-DWlOII4H.js";import{s as S}from"./orderStatus-CeC05Cv4.js";import{t as C}from"./StatusBadge-BkaoX2rz.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=ae(),F=se(),I=re(),L=s(`info`),R=s(null),z=s([]),B=s(null),V=s(null),H=s(null),U=f(()=>R.value?ie(R.value):null),ze=f(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=f(()=>z.value.filter(e=>e.status===`pending_review`)),Be=f(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=f(()=>!Be.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=s(!1),q=f(()=>{let e=R.value?.statusHistory??[],t=new Set([`check_in_progress`,`awaiting_check_review`,`check_needs_fix`,`check_rejected`,`checks_approved`]),n=e.filter(e=>t.has(e.toStatus)||e.fromStatus&&t.has(e.fromStatus)||/چک/.test(e.note||``)||/چک/.test(e.reason||``));return[...n.length?n:e].sort((e,t)=>new Date(t.changedAt).getTime()-new Date(e.changedAt).getTime())}),J=f(()=>z.value.filter(e=>e.notes?.trim()).map(e=>({id:e.id,row:e.row,status:e.status,notes:e.notes,updatedAt:e.updatedAt})));async function Ve(){let e=String(p.params.id);try{let[t,n]=await Promise.all([v.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:`بارگذاری چک‌ها انجام نشد.`)}}t(()=>{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 v.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 _(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 _({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 _({title:`تأیید نهایی سفارش`,message:`با تأیید نهایی، سفارش از مرحله بررسی چک خارج می‌شود و وارد آماده‌سازی می‌گردد. ادامه می‌دهید؟`,tone:`primary`,confirmLabel:`تأیید نهایی`,cancelLabel:`انصراف`})){K.value=!0;try{let e=await v.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(t,s)=>(e(),o(`div`,ce,[i(`div`,le,[s[5]||=i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`مدیریت چک‌های سفارش`)],-1),U.value?(e(),o(`div`,ue,[c(C,{status:U.value.status},null,8,[`status`])])):m(``,!0)]),i(`div`,de,[i(`div`,fe,[s[6]||=i(`span`,null,`تعداد`,-1),i(`strong`,null,l(z.value.length),1)]),i(`div`,pe,[s[7]||=i(`span`,null,`راس`,-1),i(`strong`,null,l(R.value?.checkRassDays??`—`)+` روز`,1)]),i(`div`,me,[s[8]||=i(`span`,null,`مجموع چک`,-1),i(`strong`,null,l(a(x)(ze.value)),1)]),i(`div`,he,[s[9]||=i(`span`,null,`مبلغ سفارش`,-1),i(`strong`,null,l(U.value?.totalAmount?a(x)(U.value.totalAmount):`—`),1)])]),i(`div`,ge,[i(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`info`}]),onClick:s[0]||=e=>L.value=`info`},` چک‌ها (`+l(z.value.length)+`) `,3),i(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`history`}]),onClick:s[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(e(),o(d,{key:0},[z.value.length?(e(),o(`div`,ve,[(e(!0),o(d,null,n(z.value,t=>(e(),o(`div`,{key:t.id,class:r([`check-row`,{open:V.value===t.id}])},[i(`button`,{type:`button`,class:`check-row__main`,onClick:e=>Ge(t)},[i(`span`,be,l(V.value===t.id?`▾`:`◂`),1),t.frontImage||t.backImage?(e(),o(`span`,{key:0,class:`check-row__thumb`,onClick:h(e=>H.value=t.frontImage||t.backImage,[`stop`])},[i(`img`,{src:t.frontImage||t.backImage,alt:``},null,8,T)],8,w)):(e(),o(`span`,E,`بدون عکس`)),i(`span`,D,[i(`strong`,null,`چک `+l(t.row),1),i(`small`,null,[u(l(a(x)(t.amount))+` `,1),t.bankName?(e(),o(d,{key:0},[u(` · `+l(t.bankName),1)],64)):m(``,!0),u(` · `+l(a(b)(t.dueDate)),1)])]),c(C,{status:Y(t.status)},null,8,[`status`])],8,ye),i(`div`,{class:`check-row__actions`,onClick:s[2]||=h(()=>{},[`stop`])},[t.status===`pending_review`?(e(),o(d,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===t.id,onClick:e=>$(t,`approved`)},` تأیید `,8,O),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===t.id,onClick:e=>$(t,`rejected`)},` رد `,8,k)],64)):m(``,!0)]),V.value===t.id?(e(),o(`div`,A,[Z(t).length?(e(),o(`div`,j,[(e(!0),o(d,null,n(Z(t),t=>(e(),o(`div`,{key:t.label,class:`check-row__field`},[i(`span`,null,l(t.label),1),i(`strong`,{dir:t.ltr?`ltr`:void 0},l(t.value),9,M)]))),128))])):(e(),o(`p`,N,`جزئیات متنی بیشتری ثبت نشده است.`)),i(`div`,xe,[t.frontImage?(e(),o(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:e=>H.value=t.frontImage},[i(`img`,{src:t.frontImage,alt:`روی چک`},null,8,Ce),s[10]||=i(`span`,null,`روی`,-1)],8,Se)):m(``,!0),t.backImage?(e(),o(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:e=>H.value=t.backImage},[i(`img`,{src:t.backImage,alt:`پشت چک`},null,8,Te),s[11]||=i(`span`,null,`پشت`,-1)],8,we)):m(``,!0),!t.frontImage&&!t.backImage?(e(),o(`p`,Ee,` تصویری ثبت نشده. `)):m(``,!0)])])):m(``,!0)],2))),128))])):(e(),o(`div`,_e,` چکی برای این سفارش ثبت نشده است. `)),i(`div`,De,[i(`p`,Oe,[G.value?(e(),o(d,{key:0},[u(` همه چک‌ها تأیید شده‌اند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(e(),o(d,{key:1},[u(` راس: `+l(a(b)(R.value.checkRassDate)),1)],64)):(e(),o(d,{key:2},[u(`راس بر اساس تاریخ ثبت سفارش محاسبه می‌شود.`)],64))]),i(`div`,ke,[G.value?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:K.value,onClick:qe},l(K.value?`در حال ثبت…`:`تأیید نهایی سفارش`),9,Ae)):m(``,!0),W.value.length?(e(),o(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ke},` تأیید همه چک‌ها `)):m(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:He},` بازگشت `)])])],64)):(e(),o(d,{key:1},[!q.value.length&&!J.value.length?(e(),o(`div`,je,` هنوز تاریخچه‌ای ثبت نشده است. `)):(e(),o(`div`,Me,[(e(!0),o(d,null,n(q.value,t=>(e(),o(`article`,{key:t.id,class:`admin-card checks-page__history-item`},[i(`div`,P,[i(`strong`,null,l(t.fromStatus?a(S)(t.fromStatus):`—`)+` → `+l(a(S)(t.toStatus)),1),i(`span`,null,l(X(t.changedAt)),1)]),i(`p`,Ne,`توسط `+l(Ue(t.changedBy)),1),t.note?(e(),o(`p`,Pe,l(t.note),1)):m(``,!0),t.reason?(e(),o(`p`,Fe,`دلیل: `+l(t.reason),1)):m(``,!0)]))),128)),(e(!0),o(d,null,n(J.value,t=>(e(),o(`article`,{key:`note-${t.id}`,class:`admin-card checks-page__history-item`},[i(`div`,Ie,[i(`strong`,null,`یادداشت چک `+l(t.row),1),i(`span`,null,l(X(t.updatedAt)),1)]),c(C,{status:Y(t.status)},null,8,[`status`]),i(`p`,Le,l(t.notes),1)]))),128))]))],64)),(e(),ne(ee,{to:`body`},[H.value?(e(),o(`div`,{key:0,class:`checks-page__lightbox`,onClick:s[4]||=h(e=>H.value=null,[`self`])},[i(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:s[3]||=e=>H.value=null},` بستن `),i(`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{A as e,D as t,N as n,Ot as r,a as ee,c as i,ct as a,d as o,et as s,g as te,h as c,jt as l,l as ne,m as u,r as d,s as f,t as p,u as m}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,m as h,t as g}from"./http-CTjL79ty.js";import{B as _,C as ie,R as ae,T as v,_ as y,a as b,i as x,o as oe,z as se}from"./index-BWgYBNME.js";import{s as S}from"./orderStatus-CeC05Cv4.js";import{t as C}from"./StatusBadge-BkaoX2rz.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=ae(),F=se(),I=re(),L=s(`info`),R=s(null),z=s([]),B=s(null),V=s(null),H=s(null),U=f(()=>R.value?ie(R.value):null),ze=f(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=f(()=>z.value.filter(e=>e.status===`pending_review`)),Be=f(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=f(()=>!Be.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=s(!1),q=f(()=>{let e=R.value?.statusHistory??[],t=new Set([`check_in_progress`,`awaiting_check_review`,`check_needs_fix`,`check_rejected`,`checks_approved`]),n=e.filter(e=>t.has(e.toStatus)||e.fromStatus&&t.has(e.fromStatus)||/چک/.test(e.note||``)||/چک/.test(e.reason||``));return[...n.length?n:e].sort((e,t)=>new Date(t.changedAt).getTime()-new Date(e.changedAt).getTime())}),J=f(()=>z.value.filter(e=>e.notes?.trim()).map(e=>({id:e.id,row:e.row,status:e.status,notes:e.notes,updatedAt:e.updatedAt})));async function Ve(){let e=String(p.params.id);try{let[t,n]=await Promise.all([v.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:`بارگذاری چک‌ها انجام نشد.`)}}t(()=>{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 v.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 _(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 _({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 _({title:`تأیید نهایی سفارش`,message:`با تأیید نهایی، سفارش از مرحله بررسی چک خارج می‌شود و وارد آماده‌سازی می‌گردد. ادامه می‌دهید؟`,tone:`primary`,confirmLabel:`تأیید نهایی`,cancelLabel:`انصراف`})){K.value=!0;try{let e=await v.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(t,s)=>(e(),o(`div`,ce,[i(`div`,le,[s[5]||=i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`مدیریت چک‌های سفارش`)],-1),U.value?(e(),o(`div`,ue,[c(C,{status:U.value.status},null,8,[`status`])])):m(``,!0)]),i(`div`,de,[i(`div`,fe,[s[6]||=i(`span`,null,`تعداد`,-1),i(`strong`,null,l(z.value.length),1)]),i(`div`,pe,[s[7]||=i(`span`,null,`راس`,-1),i(`strong`,null,l(R.value?.checkRassDays??`—`)+` روز`,1)]),i(`div`,me,[s[8]||=i(`span`,null,`مجموع چک`,-1),i(`strong`,null,l(a(x)(ze.value)),1)]),i(`div`,he,[s[9]||=i(`span`,null,`مبلغ سفارش`,-1),i(`strong`,null,l(U.value?.totalAmount?a(x)(U.value.totalAmount):`—`),1)])]),i(`div`,ge,[i(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`info`}]),onClick:s[0]||=e=>L.value=`info`},` چک‌ها (`+l(z.value.length)+`) `,3),i(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`history`}]),onClick:s[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(e(),o(d,{key:0},[z.value.length?(e(),o(`div`,ve,[(e(!0),o(d,null,n(z.value,t=>(e(),o(`div`,{key:t.id,class:r([`check-row`,{open:V.value===t.id}])},[i(`button`,{type:`button`,class:`check-row__main`,onClick:e=>Ge(t)},[i(`span`,be,l(V.value===t.id?`▾`:`◂`),1),t.frontImage||t.backImage?(e(),o(`span`,{key:0,class:`check-row__thumb`,onClick:h(e=>H.value=t.frontImage||t.backImage,[`stop`])},[i(`img`,{src:t.frontImage||t.backImage,alt:``},null,8,T)],8,w)):(e(),o(`span`,E,`بدون عکس`)),i(`span`,D,[i(`strong`,null,`چک `+l(t.row),1),i(`small`,null,[u(l(a(x)(t.amount))+` `,1),t.bankName?(e(),o(d,{key:0},[u(` · `+l(t.bankName),1)],64)):m(``,!0),u(` · `+l(a(b)(t.dueDate)),1)])]),c(C,{status:Y(t.status)},null,8,[`status`])],8,ye),i(`div`,{class:`check-row__actions`,onClick:s[2]||=h(()=>{},[`stop`])},[t.status===`pending_review`?(e(),o(d,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===t.id,onClick:e=>$(t,`approved`)},` تأیید `,8,O),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===t.id,onClick:e=>$(t,`rejected`)},` رد `,8,k)],64)):m(``,!0)]),V.value===t.id?(e(),o(`div`,A,[Z(t).length?(e(),o(`div`,j,[(e(!0),o(d,null,n(Z(t),t=>(e(),o(`div`,{key:t.label,class:`check-row__field`},[i(`span`,null,l(t.label),1),i(`strong`,{dir:t.ltr?`ltr`:void 0},l(t.value),9,M)]))),128))])):(e(),o(`p`,N,`جزئیات متنی بیشتری ثبت نشده است.`)),i(`div`,xe,[t.frontImage?(e(),o(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:e=>H.value=t.frontImage},[i(`img`,{src:t.frontImage,alt:`روی چک`},null,8,Ce),s[10]||=i(`span`,null,`روی`,-1)],8,Se)):m(``,!0),t.backImage?(e(),o(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:e=>H.value=t.backImage},[i(`img`,{src:t.backImage,alt:`پشت چک`},null,8,Te),s[11]||=i(`span`,null,`پشت`,-1)],8,we)):m(``,!0),!t.frontImage&&!t.backImage?(e(),o(`p`,Ee,` تصویری ثبت نشده. `)):m(``,!0)])])):m(``,!0)],2))),128))])):(e(),o(`div`,_e,` چکی برای این سفارش ثبت نشده است. `)),i(`div`,De,[i(`p`,Oe,[G.value?(e(),o(d,{key:0},[u(` همه چک‌ها تأیید شده‌اند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(e(),o(d,{key:1},[u(` راس: `+l(a(b)(R.value.checkRassDate)),1)],64)):(e(),o(d,{key:2},[u(`راس نسبت به تاریخ صدور فاکتور ثابت است.`)],64))]),i(`div`,ke,[G.value?(e(),o(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:K.value,onClick:qe},l(K.value?`در حال ثبت…`:`تأیید نهایی سفارش`),9,Ae)):m(``,!0),W.value.length?(e(),o(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ke},` تأیید همه چک‌ها `)):m(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:He},` بازگشت `)])])],64)):(e(),o(d,{key:1},[!q.value.length&&!J.value.length?(e(),o(`div`,je,` هنوز تاریخچه‌ای ثبت نشده است. `)):(e(),o(`div`,Me,[(e(!0),o(d,null,n(q.value,t=>(e(),o(`article`,{key:t.id,class:`admin-card checks-page__history-item`},[i(`div`,P,[i(`strong`,null,l(t.fromStatus?a(S)(t.fromStatus):`—`)+` → `+l(a(S)(t.toStatus)),1),i(`span`,null,l(X(t.changedAt)),1)]),i(`p`,Ne,`توسط `+l(Ue(t.changedBy)),1),t.note?(e(),o(`p`,Pe,l(t.note),1)):m(``,!0),t.reason?(e(),o(`p`,Fe,`دلیل: `+l(t.reason),1)):m(``,!0)]))),128)),(e(!0),o(d,null,n(J.value,t=>(e(),o(`article`,{key:`note-${t.id}`,class:`admin-card checks-page__history-item`},[i(`div`,Ie,[i(`strong`,null,`یادداشت چک `+l(t.row),1),i(`span`,null,l(X(t.updatedAt)),1)]),c(C,{status:Y(t.status)},null,8,[`status`]),i(`p`,Le,l(t.notes),1)]))),128))]))],64)),(e(),ne(ee,{to:`body`},[H.value?(e(),o(`div`,{key:0,class:`checks-page__lightbox`,onClick:s[4]||=h(e=>H.value=null,[`self`])},[i(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:s[3]||=e=>H.value=null},` بستن `),i(`img`,{src:H.value,alt:`پیش‌نمایش`},null,8,Re)])):m(``,!0)]))]))}}),[[`__scopeId`,`data-v-6ad55e99`]]);export{F as default}; \ No newline at end of file diff --git a/dist/assets/CheckManagementView-C1ozixF5.css b/dist/assets/CheckManagementView-C1ozixF5.css deleted file mode 100644 index 9e49d46..0000000 --- a/dist/assets/CheckManagementView-C1ozixF5.css +++ /dev/null @@ -1 +0,0 @@ -.checks-page__order-meta[data-v-af5e25db]{align-items:center;gap:8px;display:flex}.checks-page__stats[data-v-af5e25db]{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px;display:grid}.checks-page__stat[data-v-af5e25db]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;gap:2px;padding:10px 12px;display:flex}.checks-page__stat span[data-v-af5e25db]{color:var(--color-text-muted);font-size:.75rem}.checks-page__stat strong[data-v-af5e25db]{font-size:.875rem;font-weight:700}.checks-page__list[data-v-af5e25db]{overflow:hidden}.check-row[data-v-af5e25db]{border-bottom:1px solid var(--color-border-light);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px;padding:8px 12px;display:grid}.check-row[data-v-af5e25db]:last-child{border-bottom:0}.check-row.open[data-v-af5e25db]{background:color-mix(in srgb, var(--color-primary-soft) 55%, transparent)}.check-row__main[data-v-af5e25db]{min-width:0;color:inherit;text-align:start;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:4px 0;display:flex}.check-row__chevron[data-v-af5e25db]{width:14px;color:var(--color-text-muted);flex-shrink:0;font-size:.75rem}.check-row__thumb[data-v-af5e25db]{border:1px solid var(--color-border);cursor:zoom-in;background:#111;border-radius:6px;flex-shrink:0;place-items:center;width:44px;height:32px;padding:0;display:grid;overflow:hidden}.check-row__thumb img[data-v-af5e25db]{object-fit:cover;width:100%;height:100%;display:block}.check-row__thumb--empty[data-v-af5e25db]{color:var(--color-text-muted);cursor:default;font-size:.625rem}.check-row__meta[data-v-af5e25db]{flex:1;gap:2px;min-width:0;display:grid}.check-row__meta strong[data-v-af5e25db]{font-size:.875rem;font-weight:700}.check-row__meta small[data-v-af5e25db]{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.check-row__actions[data-v-af5e25db]{flex-shrink:0;gap:6px;display:flex}.check-row__panel[data-v-af5e25db]{border-top:1px dashed var(--color-border);flex-wrap:wrap;grid-column:1/-1;align-items:flex-start;gap:12px 16px;padding:8px 0 4px 24px;display:flex}.check-row__fields[data-v-af5e25db]{flex-wrap:wrap;flex:1;gap:8px;min-width:200px;display:flex}.check-row__field[data-v-af5e25db]{background:var(--color-border-light);border-radius:999px;align-items:baseline;gap:6px;padding:4px 8px;font-size:.75rem;display:inline-flex}.check-row__field span[data-v-af5e25db]{color:var(--color-text-muted)}.check-row__field strong[data-v-af5e25db]{font-weight:600}.check-row__photos[data-v-af5e25db]{flex-shrink:0;gap:8px;display:flex}.check-row__photo[data-v-af5e25db]{border:1px solid var(--color-border);width:96px;color:inherit;cursor:zoom-in;text-align:center;background:0 0;border-radius:8px;padding:0;overflow:hidden}.check-row__photo img[data-v-af5e25db]{object-fit:cover;background:#111;width:100%;height:60px;display:block}.check-row__photo span[data-v-af5e25db]{color:var(--color-text-muted);padding:4px;font-size:.6875rem;display:block}.check-row__hint[data-v-af5e25db]{color:var(--color-text-muted);margin:0;font-size:.75rem}.checks-page__footer[data-v-af5e25db]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.checks-page__note[data-v-af5e25db]{color:var(--color-text-muted);margin:0;font-size:.75rem}.checks-page__history[data-v-af5e25db]{gap:8px;display:grid}.checks-page__history-item[data-v-af5e25db]{gap:6px;padding:12px;display:grid}.checks-page__history-item-head[data-v-af5e25db]{flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:.875rem;display:flex}.checks-page__history-meta[data-v-af5e25db],.checks-page__history-note[data-v-af5e25db]{margin:0;font-size:.8125rem;line-height:1.5}.checks-page__history-meta[data-v-af5e25db]{color:var(--color-text-muted)}.checks-page__lightbox[data-v-af5e25db]{z-index:300000;background:#000000d6;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.checks-page__lightbox img[data-v-af5e25db]{object-fit:contain;border-radius:8px;max-width:min(900px,100%);max-height:88vh}.checks-page__lightbox-close[data-v-af5e25db]{top:14px;cursor:pointer;border:0;border-radius:8px;padding:8px 12px;position:absolute;inset-inline-end:14px}@media (width<=800px){.checks-page__stats[data-v-af5e25db]{grid-template-columns:repeat(2,minmax(0,1fr))}.check-row[data-v-af5e25db]{grid-template-columns:1fr}.check-row__actions[data-v-af5e25db]{padding-inline-start:24px}.check-row__panel[data-v-af5e25db]{padding-inline-start:0}} diff --git a/dist/assets/CheckManagementView-TDxFBtlm.css b/dist/assets/CheckManagementView-TDxFBtlm.css new file mode 100644 index 0000000..a9d4c9b --- /dev/null +++ b/dist/assets/CheckManagementView-TDxFBtlm.css @@ -0,0 +1 @@ +.checks-page__order-meta[data-v-6ad55e99]{align-items:center;gap:8px;display:flex}.checks-page__stats[data-v-6ad55e99]{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px;display:grid}.checks-page__stat[data-v-6ad55e99]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;gap:2px;padding:10px 12px;display:flex}.checks-page__stat span[data-v-6ad55e99]{color:var(--color-text-muted);font-size:.75rem}.checks-page__stat strong[data-v-6ad55e99]{font-size:.875rem;font-weight:700}.checks-page__list[data-v-6ad55e99]{overflow:hidden}.check-row[data-v-6ad55e99]{border-bottom:1px solid var(--color-border-light);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px;padding:8px 12px;display:grid}.check-row[data-v-6ad55e99]:last-child{border-bottom:0}.check-row.open[data-v-6ad55e99]{background:color-mix(in srgb, var(--color-primary-soft) 55%, transparent)}.check-row__main[data-v-6ad55e99]{min-width:0;color:inherit;text-align:start;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:4px 0;display:flex}.check-row__chevron[data-v-6ad55e99]{width:14px;color:var(--color-text-muted);flex-shrink:0;font-size:.75rem}.check-row__thumb[data-v-6ad55e99]{border:1px solid var(--color-border);cursor:zoom-in;background:#111;border-radius:6px;flex-shrink:0;place-items:center;width:44px;height:32px;padding:0;display:grid;overflow:hidden}.check-row__thumb img[data-v-6ad55e99]{object-fit:cover;width:100%;height:100%;display:block}.check-row__thumb--empty[data-v-6ad55e99]{color:var(--color-text-muted);cursor:default;font-size:.625rem}.check-row__meta[data-v-6ad55e99]{flex:1;gap:2px;min-width:0;display:grid}.check-row__meta strong[data-v-6ad55e99]{font-size:.875rem;font-weight:700}.check-row__meta small[data-v-6ad55e99]{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.check-row__actions[data-v-6ad55e99]{flex-shrink:0;gap:6px;display:flex}.check-row__panel[data-v-6ad55e99]{border-top:1px dashed var(--color-border);flex-wrap:wrap;grid-column:1/-1;align-items:flex-start;gap:12px 16px;padding:8px 0 4px 24px;display:flex}.check-row__fields[data-v-6ad55e99]{flex-wrap:wrap;flex:1;gap:8px;min-width:200px;display:flex}.check-row__field[data-v-6ad55e99]{background:var(--color-border-light);border-radius:999px;align-items:baseline;gap:6px;padding:4px 8px;font-size:.75rem;display:inline-flex}.check-row__field span[data-v-6ad55e99]{color:var(--color-text-muted)}.check-row__field strong[data-v-6ad55e99]{font-weight:600}.check-row__photos[data-v-6ad55e99]{flex-shrink:0;gap:8px;display:flex}.check-row__photo[data-v-6ad55e99]{border:1px solid var(--color-border);width:96px;color:inherit;cursor:zoom-in;text-align:center;background:0 0;border-radius:8px;padding:0;overflow:hidden}.check-row__photo img[data-v-6ad55e99]{object-fit:cover;background:#111;width:100%;height:60px;display:block}.check-row__photo span[data-v-6ad55e99]{color:var(--color-text-muted);padding:4px;font-size:.6875rem;display:block}.check-row__hint[data-v-6ad55e99]{color:var(--color-text-muted);margin:0;font-size:.75rem}.checks-page__footer[data-v-6ad55e99]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.checks-page__note[data-v-6ad55e99]{color:var(--color-text-muted);margin:0;font-size:.75rem}.checks-page__history[data-v-6ad55e99]{gap:8px;display:grid}.checks-page__history-item[data-v-6ad55e99]{gap:6px;padding:12px;display:grid}.checks-page__history-item-head[data-v-6ad55e99]{flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:.875rem;display:flex}.checks-page__history-meta[data-v-6ad55e99],.checks-page__history-note[data-v-6ad55e99]{margin:0;font-size:.8125rem;line-height:1.5}.checks-page__history-meta[data-v-6ad55e99]{color:var(--color-text-muted)}.checks-page__lightbox[data-v-6ad55e99]{z-index:300000;background:#000000d6;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.checks-page__lightbox img[data-v-6ad55e99]{object-fit:contain;border-radius:8px;max-width:min(900px,100%);max-height:88vh}.checks-page__lightbox-close[data-v-6ad55e99]{top:14px;cursor:pointer;border:0;border-radius:8px;padding:8px 12px;position:absolute;inset-inline-end:14px}@media (width<=800px){.checks-page__stats[data-v-6ad55e99]{grid-template-columns:repeat(2,minmax(0,1fr))}.check-row[data-v-6ad55e99]{grid-template-columns:1fr}.check-row__actions[data-v-6ad55e99]{padding-inline-start:24px}.check-row__panel[data-v-6ad55e99]{padding-inline-start:0}} diff --git a/dist/assets/ChecksListView-C-Ay1N53.css b/dist/assets/ChecksListView-C-Ay1N53.css new file mode 100644 index 0000000..be6580b --- /dev/null +++ b/dist/assets/ChecksListView-C-Ay1N53.css @@ -0,0 +1 @@ +.checks-list-page__summary[data-v-5e24fa4b]{color:var(--color-text-muted);flex-direction:column;align-items:flex-end;gap:4px;font-size:.8125rem;display:flex}.checks-list-page__filters[data-v-5e24fa4b]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.checks-list-page__search[data-v-5e24fa4b]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-border-light);min-width:220px;color:var(--color-text-muted);flex:1;align-items:center;gap:10px;padding:8px 12px;display:flex}.checks-list-page__search-input[data-v-5e24fa4b]{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.checks-list-page__status-select[data-v-5e24fa4b]{flex:0 220px;width:220px}.check-groups[data-v-5e24fa4b]{flex-direction:column;gap:14px;display:flex}.check-group[data-v-5e24fa4b]{position:relative;overflow:hidden;container:check-group/inline-size}.check-group__head[data-v-5e24fa4b]{border-bottom:1px solid var(--color-border);background:color-mix(in srgb, var(--color-primary-soft) 70%, var(--color-surface));grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 28px;padding:14px 16px;display:grid}.check-group__col[data-v-5e24fa4b]{gap:8px;min-width:0;display:grid}.check-group__field[data-v-5e24fa4b]{grid-template-columns:8.25rem minmax(0,1fr);align-items:start;gap:8px;font-size:.8125rem;display:grid}.check-group__field>span[data-v-5e24fa4b]{color:var(--color-text-muted);padding-top:2px}.check-group__field strong[data-v-5e24fa4b]{overflow-wrap:anywhere;min-width:0;font-weight:700;line-height:1.5}.check-group__ltr[data-v-5e24fa4b]{text-align:right;direction:ltr;unicode-bidi:isolate}.check-group__summary[data-v-5e24fa4b]{width:100%;min-height:52px;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 14px 10px 52px;display:flex}.check-group.is-open .check-group__summary[data-v-5e24fa4b]{border-bottom:1px solid var(--color-border);background:color-mix(in srgb, var(--color-primary-soft) 45%, var(--color-surface))}.check-group__chevron[data-v-5e24fa4b]{color:var(--color-text-muted);flex-shrink:0}.check-group__summary-name[data-v-5e24fa4b]{font-size:.9375rem;font-weight:700}.check-group__summary-invoice[data-v-5e24fa4b]{direction:ltr;unicode-bidi:isolate;font-size:.8125rem;font-weight:700}.check-group__summary-meta[data-v-5e24fa4b]{color:var(--color-text-muted);font-size:.8125rem}.check-group__detail[data-v-5e24fa4b]{z-index:1;border:1px solid var(--color-border);background:var(--color-surface);width:32px;height:32px;color:var(--color-primary);cursor:pointer;border-radius:8px;place-items:center;display:grid;position:absolute;top:10px;left:10px}.check-group__detail[data-v-5e24fa4b]:hover{border-color:var(--color-primary)}.check-lines[data-v-5e24fa4b]{grid-template-columns:3rem repeat(5,minmax(0,1fr));column-gap:16px;display:grid}.check-line[data-v-5e24fa4b]{grid-template-columns:subgrid;border-bottom:1px solid var(--color-border-light);grid-column:1/-1;align-items:center;padding:10px 16px;display:grid}.check-line[data-v-5e24fa4b]:last-child{border-bottom:0}.check-line--head[data-v-5e24fa4b]{color:var(--color-text-muted);background:var(--color-border-light);padding-top:8px;padding-bottom:8px;font-size:.75rem}.check-line--head>span[data-v-5e24fa4b]{text-align:start}.check-line__row[data-v-5e24fa4b]{text-align:center;font-weight:700}.check-line__amount[data-v-5e24fa4b],.check-line__due[data-v-5e24fa4b]{gap:2px;min-width:0;display:grid;overflow:hidden}.check-line__amount strong[data-v-5e24fa4b],.check-line__due strong[data-v-5e24fa4b]{font-size:.875rem;font-weight:700}.check-line__amount small[data-v-5e24fa4b],.check-line__due small[data-v-5e24fa4b]{color:var(--color-text-muted);font-size:.75rem}.check-line__sayad[data-v-5e24fa4b]{text-align:right;text-overflow:ellipsis;white-space:nowrap;direction:ltr;unicode-bidi:isolate;display:block;overflow:hidden}.check-line__photo[data-v-5e24fa4b]{border:1px solid var(--color-border);background:var(--color-border-light);cursor:zoom-in;border-radius:6px;justify-self:start;width:48px;height:34px;padding:0;overflow:hidden}.check-line__photo img[data-v-5e24fa4b]{object-fit:cover;width:100%;height:100%;display:block}.check-line__photo--empty[data-v-5e24fa4b]{cursor:default}.check-line__foot[data-v-5e24fa4b]{display:contents}.check-line__actions[data-v-5e24fa4b]{flex-wrap:nowrap;justify-content:flex-start;gap:6px;display:flex}.check-line__actions .admin-btn[data-v-5e24fa4b]{flex:none}.check-line__status[data-v-5e24fa4b]{justify-self:start}.check-line__status[data-v-5e24fa4b] .admin-badge{white-space:normal;text-align:center;max-width:100%;line-height:1.35}.checks-list-page__empty[data-v-5e24fa4b]{text-align:center;color:var(--color-text-muted);margin:0;padding:24px;font-size:.875rem}.checks-list-page__lightbox[data-v-5e24fa4b]{z-index:300000;background:#000000d6;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.checks-list-page__lightbox img[data-v-5e24fa4b]{object-fit:contain;border-radius:8px;max-width:min(900px,100%);max-height:88vh}.checks-list-page__lightbox-close[data-v-5e24fa4b]{top:14px;cursor:pointer;border:0;border-radius:8px;padding:8px 12px;position:absolute;inset-inline-end:14px}@container check-group (width<=760px){.check-lines[data-v-5e24fa4b]{flex-direction:column;display:flex}.check-line--head[data-v-5e24fa4b]{display:none}.check-line[data-v-5e24fa4b]:not(.check-line--head){grid-column:auto;grid-template-columns:1.75rem minmax(0,1fr) 48px;grid-template-areas:"row amount photo""due due photo""foot foot foot";align-items:center;gap:6px 10px;padding-inline:16px}.check-line__foot[data-v-5e24fa4b]{grid-area:foot;justify-content:space-between;align-items:center;gap:8px;min-width:0;padding-top:2px;display:flex}.check-line__row[data-v-5e24fa4b]{text-align:start;grid-area:row}.check-line__amount[data-v-5e24fa4b]{grid-area:amount}.check-line__due[data-v-5e24fa4b]{grid-area:due}.check-line__photo[data-v-5e24fa4b]{grid-area:photo;place-self:center end}.check-line__actions[data-v-5e24fa4b]{margin-inline-start:auto}}@container check-group (width<=640px){.check-group__head[data-v-5e24fa4b]{grid-template-columns:minmax(0,1fr);gap:10px}}@container check-group (width<=420px){.check-group__summary[data-v-5e24fa4b]{padding:10px 12px 10px 48px}.check-line[data-v-5e24fa4b]{padding-inline:12px}.check-group__field[data-v-5e24fa4b]{grid-template-columns:6.25rem minmax(0,1fr);gap:6px}} diff --git a/dist/assets/ChecksListView-CCPYK4M9.js b/dist/assets/ChecksListView-CCPYK4M9.js new file mode 100644 index 0000000..0842718 --- /dev/null +++ b/dist/assets/ChecksListView-CCPYK4M9.js @@ -0,0 +1 @@ +import{A as e,D as t,N as n,Ot as r,W as i,a,c as o,ct as s,d as c,et as l,g as ee,h as u,jt as d,l as f,r as p,s as m,t as h,u as g}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as ne,m as _,t as v}from"./http-CTjL79ty.js";import{L as y,T as re,_ as b,a as x,c as ie,i as S,s as ae,u as C,z as oe}from"./index-BWgYBNME.js";import{t as se}from"./AdminPageSkeleton-DacAHji8.js";import{t as ce}from"./AdminSelect-hgn_nYC2.js";import{t as w}from"./StatusBadge-BkaoX2rz.js";var le={class:`checks-list-page`},ue={class:`admin-page-header`},de={class:`checks-list-page__summary`},fe={key:0},pe={class:`checks-list-page__filters admin-card`},me={class:`checks-list-page__search`},he={key:0,class:`check-groups`},ge=[`onClick`],T=[`aria-expanded`,`onClick`],E={class:`check-group__summary-name`},D={class:`check-group__summary-invoice`},O={class:`check-group__summary-meta`},k={class:`check-group__summary-meta`},A={class:`check-group__summary-meta`},j={key:0,class:`check-group__body`},M={class:`check-group__head`},N={class:`check-group__col`},P={class:`check-group__field`},F={class:`check-group__field`},I={class:`check-group__ltr`},L={class:`check-group__field`},_e={class:`check-group__col`},ve={class:`check-group__field`},ye={class:`check-group__field`},be={class:`check-group__field`},xe={class:`check-lines`},Se={class:`check-line__row`},Ce={class:`check-line__amount`},we={key:0},Te={class:`check-line__due`},Ee={key:0,class:`check-line__sayad`},De=[`onClick`],Oe=[`src`],ke={key:1,class:`check-line__photo check-line__photo--empty`,"aria-hidden":`true`},Ae={class:`check-line__foot`},je={class:`check-line__status`},Me={class:`check-line__actions`},Ne=[`disabled`,`onClick`],Pe=[`disabled`,`onClick`],Fe={key:1,class:`checks-list-page__empty admin-card`},Ie=[`src`],R=h(ee({__name:`ChecksListView`,setup(ee){let h=oe(),R=te(),z=l([]),B=l(new Map),V=l(!0),H=l(``),U=l(`all`),W=l(null),G=l(null),K=l({}),Le=[{value:`all`,label:`همه وضعیت‌ها`},{value:`pending_review`,label:`در انتظار بررسی`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`}],Re=m(()=>new Set(z.value.map(e=>e.orderId)).size),q=m(()=>z.value.filter(e=>e.status===`pending_review`).length),J=m(()=>Ve());function Y(e){return{orderNumber:e.orderNumber,customerName:e.customerName,invoiceAmount:e.finalAmount??e.totalAmount??null,rassDate:e.checkRassDate??null,rassDays:e.checkRassDays??null,goods:(e.items??[]).map(e=>({productName:e.productName,color:e.color,meterage:e.confirmedMeterage??e.requestedMeterage}))}}function ze(e){if(!e.length)return`—`;let t=e.slice(0,2).map(e=>{let t=[e.productName,e.color].filter(Boolean).join(` `);return e.meterage?`${t} (${ae(e.meterage)})`:t}),n=e.length-t.length;return n>0?`${t.join(` · `)} و ${C(n)} قلم دیگر`:t.join(` · `)}function Be(e,t){if(!t)return!0;let n=B.value.get(e.orderId),r=(n?.goods??[]).map(e=>`${e.productName} ${e.color}`).join(` `);return[e.orderNumber,n?.orderNumber,e.customerName,n?.customerName,e.bankName,e.sayadId,r].filter(Boolean).join(` `).toLowerCase().includes(t.toLowerCase())}function Ve(){let e=new Map;for(let t of z.value){let n=e.get(t.orderId)??[];n.push(t),e.set(t.orderId,n)}let t=H.value.trim(),n=[];for(let[r,i]of e){if(!i.some(e=>U.value!==`all`&&e.status!==U.value?!1:Be(e,t)))continue;let e=[...i].sort((e,t)=>e.row-t.row),a=B.value.get(r),o=e[0],s=Math.max(0,...e.map(e=>e.createdAt?new Date(e.createdAt).getTime():0));n.push({orderId:r,customerName:o.customerName||a?.customerName||``,orderNumber:o.orderNumber||a?.orderNumber||``,invoiceAmount:a?.invoiceAmount??null,rassDate:a?.rassDate??null,rassDays:a?.rassDays??null,goodsLabel:ze(a?.goods??[]),totalCheckAmount:e.reduce((e,t)=>e+t.amount,0),hasPending:e.some(e=>e.status===`pending_review`),latestAt:s,checks:e})}return n.sort((e,t)=>e.hasPending===t.hasPending?t.latestAt-e.latestAt:e.hasPending?-1:1),n}function X(e){return e.rassDate?x(e.rassDate):e.rassDays==null?`—`:`${ie(e.rassDays)} روز`}function He(e){return e.invoiceAmount==null?`—`:S(e.invoiceAmount)}function Z(e){return K.value[e]===!0}function Ue(e){K.value={...K.value,[e]:!K.value[e]}}function We(e){return e.checks.some(e=>e.status===`pending_review`)?`pending_check_review`:e.checks.some(e=>e.status===`rejected`)?`needs_correction`:`final_approval`}function Ge(e){return e===`approved`?`final_approval`:e===`rejected`?`needs_correction`:`pending_check_review`}function Q(e){return e.frontImage||e.backImage||null}function Ke(e){h.push({name:`orders`,query:{order:e,from:`checks`}})}async function qe(){V.value=!0;try{let[e,t]=await Promise.allSettled([b.list(),re.list()]),n=t.status===`fulfilled`?t.value:[],r=new Map;for(let e of n)r.set(e.id,Y(e));if(B.value=r,e.status===`fulfilled`){z.value=e.value.map(e=>{let t=r.get(e.orderId);return t?{...e,orderNumber:e.orderNumber||t.orderNumber,customerName:e.customerName||t.customerName}:e});return}if(t.status===`fulfilled`){z.value=n.flatMap(e=>(e.checks??[]).map(t=>({...t,orderNumber:e.orderNumber,customerName:e.customerName,orderStatus:e.status,settlementType:e.settlementMethod??e.settlementType??null})));return}let i=e.reason;R.error(i instanceof v?i.message:`بارگذاری چک‌ها انجام نشد.`)}finally{V.value=!1}}t(()=>{qe()});async function $(e,t){W.value=e.id;try{let n=await b.updateStatus(e.id,{status:t}),r=z.value.findIndex(t=>t.id===e.id);r!==-1&&(z.value[r]={...z.value[r],...n,orderNumber:e.orderNumber,customerName:e.customerName,orderStatus:e.orderStatus,settlementType:e.settlementType}),R.success(t===`approved`?`چک تأیید شد.`:`چک رد شد.`)}catch(e){R.error(e instanceof v?e.message:`به‌روزرسانی وضعیت چک انجام نشد.`)}finally{W.value=null}}return(t,l)=>(e(),c(`div`,le,[o(`div`,ue,[l[4]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`چک‌ها`)],-1),o(`div`,de,[o(`span`,null,d(s(C)(Re.value))+` فاکتور`,1),o(`span`,null,d(s(C)(z.value.length))+` چک`,1),q.value?(e(),c(`span`,fe,d(s(C)(q.value))+` در انتظار بررسی`,1)):g(``,!0)])]),o(`div`,pe,[o(`div`,me,[u(y,{name:`search`,size:18}),i(o(`input`,{"onUpdate:modelValue":l[0]||=e=>H.value=e,type:`search`,class:`checks-list-page__search-input`,placeholder:`جستجو در شماره فاکتور، مشتری، جنس، بانک، صیاد...`},null,512),[[ne,H.value]])]),u(ce,{modelValue:U.value,"onUpdate:modelValue":l[1]||=e=>U.value=e,class:`checks-list-page__status-select`,"aria-label":`فیلتر وضعیت چک`,options:Le},null,8,[`modelValue`])]),V.value?(e(),f(se,{key:0,variant:`table`})):(e(),c(p,{key:1},[J.value.length?(e(),c(`div`,he,[(e(!0),c(p,null,n(J.value,t=>(e(),c(`article`,{key:t.orderId,class:r([`check-group admin-card`,{"is-open":Z(t.orderId)}])},[o(`button`,{type:`button`,class:`check-group__detail`,"aria-label":`جزئیات سفارش`,title:`جزئیات سفارش`,onClick:_(e=>Ke(t.orderId),[`stop`])},[u(y,{name:`eye`,size:18})],8,ge),o(`button`,{type:`button`,class:`check-group__summary`,"aria-expanded":Z(t.orderId),onClick:e=>Ue(t.orderId)},[u(y,{class:`check-group__chevron`,name:Z(t.orderId)?`chevron-down`:`chevron-left`,size:16},null,8,[`name`]),o(`strong`,E,d(t.customerName||`—`),1),o(`span`,D,d(t.orderNumber||`—`),1),o(`span`,O,d(s(C)(t.checks.length))+` چک`,1),o(`span`,k,d(s(S)(t.totalCheckAmount)),1),o(`span`,A,`راس `+d(X(t)),1),u(w,{status:We(t)},null,8,[`status`])],8,T),Z(t.orderId)?(e(),c(`div`,j,[o(`header`,M,[o(`div`,N,[o(`div`,P,[l[5]||=o(`span`,null,`نام مشتری`,-1),o(`strong`,null,d(t.customerName||`—`),1)]),o(`div`,F,[l[6]||=o(`span`,null,`شماره فاکتور`,-1),o(`strong`,I,d(t.orderNumber||`—`),1)]),o(`div`,L,[l[7]||=o(`span`,null,`جنس سفارش`,-1),o(`strong`,null,d(t.goodsLabel),1)])]),o(`div`,_e,[o(`div`,ve,[l[8]||=o(`span`,null,`مبلغ فاکتور`,-1),o(`strong`,null,d(He(t)),1)]),o(`div`,ye,[l[9]||=o(`span`,null,`مبلغ مجموع چک‌ها`,-1),o(`strong`,null,d(s(S)(t.totalCheckAmount)),1)]),o(`div`,be,[l[10]||=o(`span`,null,`راس چک‌ها`,-1),o(`strong`,null,d(X(t)),1)])])]),o(`div`,xe,[l[11]||=o(`div`,{class:`check-line check-line--head`,"aria-hidden":`true`},[o(`span`,null,`ردیف`),o(`span`,null,`مبلغ`),o(`span`,null,`سررسید`),o(`span`,null,`عکس`),o(`span`,null,`وضعیت`),o(`span`,null,`عملیات`)],-1),(e(!0),c(p,null,n(t.checks,t=>(e(),c(`div`,{key:t.id,class:`check-line`},[o(`span`,Se,d(s(C)(t.row)),1),o(`span`,Ce,[o(`strong`,null,d(s(S)(t.amount)),1),t.bankName?(e(),c(`small`,we,d(t.bankName),1)):g(``,!0)]),o(`span`,Te,[o(`strong`,null,d(s(x)(t.dueDate)),1),t.sayadId?(e(),c(`small`,Ee,d(t.sayadId),1)):g(``,!0)]),Q(t)?(e(),c(`button`,{key:0,type:`button`,class:`check-line__photo`,"aria-label":`عکس چک`,onClick:e=>G.value=Q(t)},[o(`img`,{src:Q(t),alt:``},null,8,Oe)],8,De)):(e(),c(`span`,ke)),o(`div`,Ae,[o(`span`,je,[u(w,{status:Ge(t.status)},null,8,[`status`])]),o(`div`,Me,[t.status===`pending_review`?(e(),c(p,{key:0},[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:W.value===t.id,onClick:e=>$(t,`approved`)},` تأیید `,8,Ne),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:W.value===t.id,onClick:e=>$(t,`rejected`)},` رد `,8,Pe)],64)):g(``,!0)])])]))),128))])])):g(``,!0)],2))),128))])):(e(),c(`p`,Fe,`چکی با این فیلتر یافت نشد.`))],64)),(e(),f(a,{to:`body`},[G.value?(e(),c(`div`,{key:0,class:`checks-list-page__lightbox`,onClick:l[3]||=_(e=>G.value=null,[`self`])},[o(`button`,{type:`button`,class:`checks-list-page__lightbox-close`,onClick:l[2]||=e=>G.value=null},` بستن `),o(`img`,{src:G.value,alt:`عکس چک`},null,8,Ie)])):g(``,!0)]))]))}}),[[`__scopeId`,`data-v-5e24fa4b`]]);export{R as default}; \ No newline at end of file diff --git a/dist/assets/ChecksListView-DTK6LJF5.js b/dist/assets/ChecksListView-DTK6LJF5.js deleted file mode 100644 index dfb1630..0000000 --- a/dist/assets/ChecksListView-DTK6LJF5.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,D as t,N as n,W as r,c as i,ct as a,d as o,et as s,g as c,h as l,jt as u,l as d,r as f,s as p,t as m,u as h}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ee,d as te,t as g}from"./http-CTjL79ty.js";import{L as ne,T as re,_,i as v,o as y,z as ie}from"./index-DWlOII4H.js";import{t as ae}from"./AdminPageSkeleton-DacAHji8.js";import{t as oe}from"./AdminSelect-CWMyO8tk.js";import{t as b}from"./StatusBadge-BkaoX2rz.js";var se={class:`checks-list-page`},ce={class:`admin-page-header`},le={class:`checks-list-page__summary`},x={key:0},S={class:`checks-list-page__filters admin-card`},C={class:`checks-list-page__search`},w={class:`checks-list-page__table admin-card desktop-only`},T={class:`admin-table-wrap`},E={class:`admin-table`},D=[`onClick`],O={dir:`ltr`},k={class:`admin-action-group`},A=[`disabled`,`onClick`],j=[`disabled`,`onClick`],M=[`onClick`],N={key:0,class:`checks-list-page__empty`},P={class:`compact-only admin-card-list`},F={class:`admin-card-item__header`},ue={class:`admin-card-item__title`},I={class:`admin-card-item__meta`},L={key:0},R={class:`admin-card-item__actions`},z=[`disabled`,`onClick`],B=[`disabled`,`onClick`],V=[`onClick`],H={key:0,class:`checks-list-page__empty`},U=m(c({__name:`ChecksListView`,setup(c){let m=ie(),U=ee(),W=s([]),G=s(!0),K=s(``),q=s(`all`),J=s(null),de=[{value:`all`,label:`همه وضعیت‌ها`},{value:`pending_review`,label:`در انتظار بررسی`},{value:`approved`,label:`تأیید شده`},{value:`rejected`,label:`رد شده`}],Y=p(()=>{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=p(()=>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 re.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 _.list()}catch{try{await fe()}catch(e){U.error(e instanceof g?e.message:`بارگذاری چک‌ها انجام نشد.`)}}finally{G.value=!1}}t(()=>{pe()});function Q(e){m.push(`/orders/${e.orderId}/checks`)}async function $(e,t){J.value=e.id;try{let n=await _.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 g?e.message:`به‌روزرسانی وضعیت چک انجام نشد.`)}finally{J.value=null}}return(t,s)=>(e(),o(`div`,se,[i(`div`,ce,[s[2]||=i(`div`,null,[i(`h1`,{class:`admin-page-header__title`},`چک‌ها`)],-1),i(`div`,le,[i(`span`,null,u(W.value.length)+` چک`,1),X.value?(e(),o(`span`,x,u(X.value)+` در انتظار بررسی`,1)):h(``,!0)])]),i(`div`,S,[i(`div`,C,[l(ne,{name:`search`,size:18}),r(i(`input`,{"onUpdate:modelValue":s[0]||=e=>K.value=e,type:`search`,class:`checks-list-page__search-input`,placeholder:`جستجو در شماره سفارش، مشتری، بانک، صیاد...`},null,512),[[te,K.value]])]),l(oe,{modelValue:q.value,"onUpdate:modelValue":s[1]||=e=>q.value=e,class:`checks-list-page__status-select`,"aria-label":`فیلتر وضعیت چک`,options:de},null,8,[`modelValue`])]),G.value?(e(),d(ae,{key:0,variant:`table`})):(e(),o(f,{key:1},[i(`div`,w,[i(`div`,T,[i(`table`,E,[s[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,[(e(!0),o(f,null,n(Y.value,t=>(e(),o(`tr`,{key:t.id},[i(`td`,null,[i(`button`,{type:`button`,class:`checks-list-page__order-link`,onClick:e=>Q(t)},u(t.orderNumber||t.orderId),9,D)]),i(`td`,null,u(t.customerName||`—`),1),i(`td`,null,u(t.row),1),i(`td`,null,u(a(v)(t.amount)),1),i(`td`,null,u(t.bankName||`—`),1),i(`td`,O,u(t.sayadId||`—`),1),i(`td`,null,u(t.dueDate.slice(0,10)),1),i(`td`,null,[l(b,{status:Z(t.status)},null,8,[`status`])]),i(`td`,null,[i(`div`,k,[t.status===`pending_review`?(e(),o(f,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===t.id,onClick:e=>$(t,`approved`)},` تأیید `,8,A),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===t.id,onClick:e=>$(t,`rejected`)},` رد `,8,j)],64)):h(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(t)},` جزئیات سفارش `,8,M)])])]))),128))])])]),Y.value.length?h(``,!0):(e(),o(`p`,N,` چکی با این فیلتر یافت نشد. `))]),i(`div`,P,[(e(!0),o(f,null,n(Y.value,t=>(e(),o(`article`,{key:t.id,class:`admin-card-item`},[i(`div`,F,[i(`p`,ue,u(t.orderNumber||t.orderId)+` — چک `+u(t.row),1),l(b,{status:Z(t.status)},null,8,[`status`])]),i(`div`,I,[i(`span`,null,u(t.customerName||`—`),1),i(`span`,null,u(a(v)(t.amount)),1),i(`span`,null,u(t.bankName||`—`),1),i(`span`,null,`سررسید `+u(t.dueDate.slice(0,10)),1),t.createdAt?(e(),o(`span`,L,`ثبت `+u(a(y)(t.createdAt)),1)):h(``,!0)]),i(`div`,R,[t.status===`pending_review`?(e(),o(f,{key:0},[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:J.value===t.id,onClick:e=>$(t,`approved`)},` تأیید `,8,z),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:J.value===t.id,onClick:e=>$(t,`rejected`)},` رد `,8,B)],64)):h(``,!0),i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(t)},` جزئیات سفارش `,8,V)])]))),128)),Y.value.length?h(``,!0):(e(),o(`p`,H,` چکی با این فیلتر یافت نشد. `))])],64))]))}}),[[`__scopeId`,`data-v-09633f1f`]]);export{U as default}; \ No newline at end of file diff --git a/dist/assets/ChecksListView-DeOu1gFo.css b/dist/assets/ChecksListView-DeOu1gFo.css deleted file mode 100644 index d000bb6..0000000 --- a/dist/assets/ChecksListView-DeOu1gFo.css +++ /dev/null @@ -1 +0,0 @@ -.checks-list-page__summary[data-v-09633f1f]{color:var(--color-text-muted);flex-direction:column;align-items:flex-end;gap:4px;font-size:.8125rem;display:flex}.checks-list-page__filters[data-v-09633f1f]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.checks-list-page__search[data-v-09633f1f]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-border-light);min-width:220px;color:var(--color-text-muted);flex:1;align-items:center;gap:10px;padding:8px 12px;display:flex}.checks-list-page__search-input[data-v-09633f1f]{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.checks-list-page__status-select[data-v-09633f1f]{flex:0 220px;width:220px}.checks-list-page__table[data-v-09633f1f]{padding:0;overflow:hidden}.checks-list-page__order-link[data-v-09633f1f]{color:var(--color-primary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.checks-list-page__order-link[data-v-09633f1f]:hover{text-decoration:underline}.checks-list-page__empty[data-v-09633f1f]{text-align:center;color:var(--color-text-muted);margin:0;padding:24px;font-size:.875rem} diff --git a/dist/assets/CompaniesView-CEvMtbXg.js b/dist/assets/CompaniesView-CdqgGxqw.js similarity index 98% rename from dist/assets/CompaniesView-CEvMtbXg.js rename to dist/assets/CompaniesView-CdqgGxqw.js index 1f15352..6f97a39 100644 --- a/dist/assets/CompaniesView-CEvMtbXg.js +++ b/dist/assets/CompaniesView-CdqgGxqw.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as ee,h as l,jt 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-vx-p5QAT.js";import{a as te,d as _,m as ne,t as v}from"./http-CTjL79ty.js";import{B as re,V as ie,k as ae,v as y,z as oe}from"./index-DWlOII4H.js";import{t as se}from"./AdminPageSkeleton-DacAHji8.js";import{t as ce}from"./BaseSwitch-Dz4ODUhf.js";import{t as le}from"./BaseEmptyState-B6cM4bRM.js";import{t as b}from"./ActiveSwitchCell-BQoMjcdH.js";var ue={class:`companies-page`},de={key:2,class:`companies-page__table admin-card desktop-only`},fe={class:`admin-table-wrap`},pe={class:`admin-table`},me=[`src`,`alt`],he={key:1,class:`company-logo company-logo--fallback`},ge={class:`numeric`},_e={class:`status`},ve={class:`actions`},ye={class:`admin-action-group`},be=[`onClick`],xe=[`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`},N={class:`admin-form__field`},je=[`disabled`],Me=2097152,P=h(ee({__name:`CompaniesView`,setup(ee){let h=[`image/png`,`image/jpeg`,`image/webp`,`image/svg+xml`],P=oe(),F=te(),I=c([]),L=c(!0),R=c(null),z=c(null),B=c(null),V=c(null),H=c(!1);async function Ne(){L.value=!0;try{I.value=await y.list()}catch(e){F.error(e instanceof v?e.message:`بارگذاری شرکت‌ها انجام نشد.`)}finally{L.value=!1}}t(()=>{Ne()});let U=()=>({name:``,description:``,displayOrder:I.value.length+1,isActive:!0}),W=r(U()),G=c(``),Pe=m(()=>R.value!==null),Fe=m(()=>R.value===`edit`?`ویرایش شرکت`:`افزودن شرکت`),Ie=m(()=>R.value===`edit`?`ثبت تغییرات`:`ثبت شرکت`),Le=m(()=>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(!h.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 re({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 y.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 y.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 v?e.message:`ذخیره شرکت انجام نشد.`)}finally{H.value=!1}}async function Z(e,t){await y.setActive(e,t)}function Q(e){P.push(`/companies/${e}/accounts`)}function $(e){return e.trim().charAt(0)||`؟`}return(t,r)=>(e(),s(`div`,ue,[o(`div`,{class:`admin-page-header`},[r[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?(e(),d(se,{key:0,variant:`table`})):I.value.length?(e(),s(`div`,de,[o(`div`,fe,[o(`table`,pe,[r[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,[(e(!0),s(p,null,n(I.value,t=>(e(),s(`tr`,{key:t.id},[o(`td`,null,[t.logoUrl?(e(),s(`img`,{key:0,src:t.logoUrl,alt:`لوگوی ${t.name}`,class:`company-logo`},null,8,me)):(e(),s(`div`,he,u($(t.name)),1))]),o(`td`,ge,u(t.displayOrder),1),o(`td`,_e,[l(b,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`شرکت`,persist:Z},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,u(t.description),1),o(`td`,null,u(t.name),1),o(`td`,ve,[o(`div`,ye,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>J(t)},` ویرایش `,8,be),t.isPaymentRecipient||t.slug===`nademitex`?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(t.id)},` حساب‌های پرداخت `,8,xe)):g(``,!0)])])]))),128))])])])])):(e(),d(le,{key:1,class:`admin-card`,icon:`companies`,title:`شرکتی ثبت نشده`,description:`برای شروع، اولین شرکت را ثبت کنید.`},{default:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:q},` افزودن شرکت `)]),_:1})),!L.value&&I.value.length?(e(),s(`div`,x,[(e(!0),s(p,null,n(I.value,t=>(e(),s(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,S,[o(`div`,C,[t.logoUrl?(e(),s(`img`,{key:0,src:t.logoUrl,alt:`لوگوی ${t.name}`,class:`company-logo`},null,8,w)):(e(),s(`div`,T,u($(t.name)),1)),o(`div`,null,[o(`p`,E,u(t.name),1),o(`p`,D,u(t.description),1)])]),l(b,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`شرکت`,persist:Z},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,`ترتیب: `+u(t.displayOrder),1)]),o(`div`,k,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>J(t)},` ویرایش `,8,A),t.isPaymentRecipient||t.slug===`nademitex`?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(t.id)},` حساب‌های پرداخت `,8,j)):g(``,!0)])]))),128))])):g(``,!0),l(ie,{open:Pe.value,title:Fe.value,onClose:Y},{footer:i(()=>[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},u(Ie.value),9,je)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:ne(X,[`prevent`])},[G.value?(e(),s(`p`,M,u(G.value),1)):g(``,!0),o(`div`,Se,[r[8]||=o(`label`,null,[f(`لوگو `),o(`span`,{class:`admin-form__required`},`*`)],-1),o(`div`,Ce,[B.value?(e(),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},` حذف تصویر `)])):(e(),s(`label`,Ee,[...r[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?(e(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm logo-upload__change`,onClick:r[0]||=e=>V.value?.click()},` تغییر تصویر `)):g(``,!0)])]),o(`div`,De,[r[9]||=o(`label`,{for:`company-name`},[f(`نام شرکت `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`company-name`,"onUpdate:modelValue":r[1]||=e=>W.name=e,type:`text`,class:`admin-input`,placeholder:`مثال: شرکت پَر`,autocomplete:`off`},null,512),[[_,W.name]])]),o(`div`,Oe,[r[10]||=o(`label`,{for:`company-description`},`توضیحات`,-1),a(o(`textarea`,{id:`company-description`,"onUpdate:modelValue":r[2]||=e=>W.description=e,class:`admin-form__textarea`,placeholder:`تولید و عرضه انواع پارچه`,rows:`3`},null,512),[[_,W.description]])]),o(`div`,ke,[o(`div`,Ae,[r[11]||=o(`label`,{for:`company-order`},`ترتیب نمایش`,-1),a(o(`input`,{id:`company-order`,"onUpdate:modelValue":r[3]||=e=>W.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,W.displayOrder,void 0,{number:!0}]])]),o(`div`,N,[l(ce,{modelValue:W.isActive,"onUpdate:modelValue":r[4]||=e=>W.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-189e4d8e`]]);export{P as default}; \ No newline at end of file +import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as ee,h as l,jt 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-vx-p5QAT.js";import{a as te,d as _,m as ne,t as v}from"./http-CTjL79ty.js";import{B as re,V as ie,k as ae,v as y,z as oe}from"./index-BWgYBNME.js";import{t as se}from"./AdminPageSkeleton-DacAHji8.js";import{t as ce}from"./BaseSwitch-Dz4ODUhf.js";import{t as le}from"./BaseEmptyState-88fQ29rO.js";import{t as b}from"./ActiveSwitchCell-CRUUEk77.js";var ue={class:`companies-page`},de={key:2,class:`companies-page__table admin-card desktop-only`},fe={class:`admin-table-wrap`},pe={class:`admin-table`},me=[`src`,`alt`],he={key:1,class:`company-logo company-logo--fallback`},ge={class:`numeric`},_e={class:`status`},ve={class:`actions`},ye={class:`admin-action-group`},be=[`onClick`],xe=[`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`},N={class:`admin-form__field`},je=[`disabled`],Me=2097152,P=h(ee({__name:`CompaniesView`,setup(ee){let h=[`image/png`,`image/jpeg`,`image/webp`,`image/svg+xml`],P=oe(),F=te(),I=c([]),L=c(!0),R=c(null),z=c(null),B=c(null),V=c(null),H=c(!1);async function Ne(){L.value=!0;try{I.value=await y.list()}catch(e){F.error(e instanceof v?e.message:`بارگذاری شرکت‌ها انجام نشد.`)}finally{L.value=!1}}t(()=>{Ne()});let U=()=>({name:``,description:``,displayOrder:I.value.length+1,isActive:!0}),W=r(U()),G=c(``),Pe=m(()=>R.value!==null),Fe=m(()=>R.value===`edit`?`ویرایش شرکت`:`افزودن شرکت`),Ie=m(()=>R.value===`edit`?`ثبت تغییرات`:`ثبت شرکت`),Le=m(()=>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(!h.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 re({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 y.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 y.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 v?e.message:`ذخیره شرکت انجام نشد.`)}finally{H.value=!1}}async function Z(e,t){await y.setActive(e,t)}function Q(e){P.push(`/companies/${e}/accounts`)}function $(e){return e.trim().charAt(0)||`؟`}return(t,r)=>(e(),s(`div`,ue,[o(`div`,{class:`admin-page-header`},[r[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?(e(),d(se,{key:0,variant:`table`})):I.value.length?(e(),s(`div`,de,[o(`div`,fe,[o(`table`,pe,[r[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,[(e(!0),s(p,null,n(I.value,t=>(e(),s(`tr`,{key:t.id},[o(`td`,null,[t.logoUrl?(e(),s(`img`,{key:0,src:t.logoUrl,alt:`لوگوی ${t.name}`,class:`company-logo`},null,8,me)):(e(),s(`div`,he,u($(t.name)),1))]),o(`td`,ge,u(t.displayOrder),1),o(`td`,_e,[l(b,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`شرکت`,persist:Z},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,u(t.description),1),o(`td`,null,u(t.name),1),o(`td`,ve,[o(`div`,ye,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>J(t)},` ویرایش `,8,be),t.isPaymentRecipient||t.slug===`nademitex`?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(t.id)},` حساب‌های پرداخت `,8,xe)):g(``,!0)])])]))),128))])])])])):(e(),d(le,{key:1,class:`admin-card`,icon:`companies`,title:`شرکتی ثبت نشده`,description:`برای شروع، اولین شرکت را ثبت کنید.`},{default:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:q},` افزودن شرکت `)]),_:1})),!L.value&&I.value.length?(e(),s(`div`,x,[(e(!0),s(p,null,n(I.value,t=>(e(),s(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,S,[o(`div`,C,[t.logoUrl?(e(),s(`img`,{key:0,src:t.logoUrl,alt:`لوگوی ${t.name}`,class:`company-logo`},null,8,w)):(e(),s(`div`,T,u($(t.name)),1)),o(`div`,null,[o(`p`,E,u(t.name),1),o(`p`,D,u(t.description),1)])]),l(b,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`شرکت`,persist:Z},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,`ترتیب: `+u(t.displayOrder),1)]),o(`div`,k,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>J(t)},` ویرایش `,8,A),t.isPaymentRecipient||t.slug===`nademitex`?(e(),s(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>Q(t.id)},` حساب‌های پرداخت `,8,j)):g(``,!0)])]))),128))])):g(``,!0),l(ie,{open:Pe.value,title:Fe.value,onClose:Y},{footer:i(()=>[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},u(Ie.value),9,je)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:ne(X,[`prevent`])},[G.value?(e(),s(`p`,M,u(G.value),1)):g(``,!0),o(`div`,Se,[r[8]||=o(`label`,null,[f(`لوگو `),o(`span`,{class:`admin-form__required`},`*`)],-1),o(`div`,Ce,[B.value?(e(),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},` حذف تصویر `)])):(e(),s(`label`,Ee,[...r[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?(e(),s(`button`,{key:2,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm logo-upload__change`,onClick:r[0]||=e=>V.value?.click()},` تغییر تصویر `)):g(``,!0)])]),o(`div`,De,[r[9]||=o(`label`,{for:`company-name`},[f(`نام شرکت `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`company-name`,"onUpdate:modelValue":r[1]||=e=>W.name=e,type:`text`,class:`admin-input`,placeholder:`مثال: شرکت پَر`,autocomplete:`off`},null,512),[[_,W.name]])]),o(`div`,Oe,[r[10]||=o(`label`,{for:`company-description`},`توضیحات`,-1),a(o(`textarea`,{id:`company-description`,"onUpdate:modelValue":r[2]||=e=>W.description=e,class:`admin-form__textarea`,placeholder:`تولید و عرضه انواع پارچه`,rows:`3`},null,512),[[_,W.description]])]),o(`div`,ke,[o(`div`,Ae,[r[11]||=o(`label`,{for:`company-order`},`ترتیب نمایش`,-1),a(o(`input`,{id:`company-order`,"onUpdate:modelValue":r[3]||=e=>W.displayOrder=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,W.displayOrder,void 0,{number:!0}]])]),o(`div`,N,[l(ce,{modelValue:W.isActive,"onUpdate:modelValue":r[4]||=e=>W.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-189e4d8e`]]);export{P as default}; \ No newline at end of file diff --git a/dist/assets/CustomersView-D9xMDSjt.js b/dist/assets/CustomersView-x2GBkkE0.js similarity index 98% rename from dist/assets/CustomersView-D9xMDSjt.js rename to dist/assets/CustomersView-x2GBkkE0.js index 624e60e..3eba1bb 100644 --- a/dist/assets/CustomersView-D9xMDSjt.js +++ b/dist/assets/CustomersView-x2GBkkE0.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Ot as r,Q as i,U as a,V as ee,W as o,c as s,ct as c,d as l,et as u,g as d,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as b,d as x,m as S,t as C}from"./http-CTjL79ty.js";import{E as w,L as T,S as E,V as te,j as D,o as O,s as k,y as A}from"./index-DWlOII4H.js";import{t as ne}from"./AdminPageSkeleton-DacAHji8.js";import{t as re}from"./BaseSwitch-Dz4ODUhf.js";import{t as ie}from"./BaseEmptyState-B6cM4bRM.js";import{t as j}from"./AdminSelect-CWMyO8tk.js";import{i as M}from"./adminLabels-jYlObVqa.js";import{t as N}from"./ActiveSwitchCell-BQoMjcdH.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(d({__name:`CustomerSuggestionsPanel`,props:{customerId:{}},setup(i){let a=i,c=b(),d=u(!0),m=u(!1),v=u([]),S=u([]),T=u([]),E=u(``),te=_(()=>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(a.customerId){d.value=!0;try{let[e,t]=await Promise.all([D.list(a.customerId),w.list()]);v.value=e,S.value=t}catch(e){c.error(e instanceof C?e.message:`بارگذاری پیشنهادها ناموفق بود`)}finally{d.value=!1}}}async function k(){if(T.value.length){m.value=!0;try{for(let e of T.value)await D.create({customerId:a.customerId,productId:e,note:E.value.trim()||void 0});T.value=[],E.value=``,c.success(`پیشنهادها به صفحه خانه مشتری اضافه شد`),await O()}catch(e){c.error(e instanceof C?e.message:`ثبت پیشنهاد ناموفق بود`)}finally{m.value=!1}}}async function A(e){try{await D.setActive(e.id,!e.isActive),await O()}catch(e){c.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 ee(()=>a.customerId,()=>{O()}),t(()=>{O()}),(t,i)=>(e(),l(`section`,P,[i[4]||=s(`header`,{class:`suggestions-panel__head`},[s(`div`,null,[s(`h3`,{class:`suggestions-panel__title`},`پیشنهاد اختصاصی در اپ`),s(`p`,{class:`suggestions-panel__hint`},` محصولات انتخاب‌شده در بخش «پیشنهاد اختصاصی ما برای شما» در صفحه خانه مشتری نمایش داده می‌شوند. `)])],-1),d.value?(e(),l(`div`,F,`در حال بارگذاری...`)):(e(),l(g,{key:1},[s(`div`,I,[s(`label`,L,[i[1]||=h(` افزودن محصول (کد کالیته) `,-1),f(j,{"model-value":``,options:[{value:``,label:`انتخاب محصول...`},...te.value],"onUpdate:modelValue":ne},null,8,[`options`])]),T.value.length?(e(),l(`div`,R,[(e(!0),l(g,null,n(T.value,t=>(e(),l(`span`,{key:t,class:`suggestions-panel__chip`},[h(p(S.value.find(e=>e.id===t)?.productCode||t)+` `,1),s(`button`,{type:`button`,"aria-label":`حذف`,onClick:e=>re(t)},`×`,8,z)]))),128))])):y(``,!0),s(`label`,B,[i[2]||=h(` یادداشت (اختیاری) `,-1),o(s(`textarea`,{"onUpdate:modelValue":i[0]||=e=>E.value=e,class:`admin-input`,rows:`2`,placeholder:`دلیل پیشنهاد برای مشتری`},null,512),[[x,E.value]])]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!T.value.length||m.value,onClick:k},` افزودن به صفحه خانه مشتری `,8,V)]),v.value.length?(e(),l(`div`,H,[i[3]||=s(`h4`,{class:`suggestions-panel__sub`},`پیشنهادهای ثبت‌شده`,-1),s(`ul`,null,[(e(!0),l(g,null,n(v.value,t=>(e(),l(`li`,{key:t.id,class:`suggestions-panel__row`},[s(`div`,null,[s(`strong`,null,p(t.productName),1),s(`span`,U,`(`+p(t.productCode)+`)`,1),t.note?(e(),l(`p`,W,p(t.note),1)):y(``,!0)]),s(`div`,G,[s(`span`,{class:r(t.isActive?`on`:`off`)},p(t.isActive?`فعال`:`غیرفعال`),3),s(`button`,{type:`button`,class:`link`,onClick:e=>A(t)},p(t.isActive?`حذف از خانه`:`فعال‌سازی`),9,K)])]))),128))])])):(e(),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(d({__name:`CustomersView`,setup(ee){let d=u([]),v=u([]),w=u([]),D=u(``),P=u(`customer`),F=u(!0),I=u(null),L=u(null),R=u(``),z=u(!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=_(()=>[{value:``,label:`بدون سطح`},...v.value.map(e=>({value:e.id,label:e.label}))]),J=_(()=>[{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=i(Y()),it=_(()=>I.value!==null),at=_(()=>I.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),Z=_(()=>X.name.trim()&&X.phone.trim()&&X.nationalId.trim()),Q=_(()=>{let e=D.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 ot(){F.value=!0;try{d.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 st(e){P.value!==e&&(P.value=e,D.value=``,ot())}async function ct(){try{let[e,t]=await Promise.all([E.list(),A.list(void 0,`agent`)]);v.value=e,w.value=t}catch(e){B.error(e instanceof C?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}t(()=>{ot(),ct()});function lt(){I.value=`add`,L.value=null,Object.assign(X,Y()),X.appRole=P.value,R.value=``}function ut(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 $(){I.value=null,L.value=null,R.value=``}async function dt(){if(!Z.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`?`اطلاعات مشتری به‌روزرسانی شد.`:`مشتری جدید ثبت شد.`),$(),e.appRole===`agent`&&ct()}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(){D.value=``}return(t,i)=>(e(),l(`div`,oe,[s(`div`,se,[i[13]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`مشتریان و واسطه‌ها`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:lt},p(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1)]),s(`div`,ce,[s(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`customer`}]),"aria-selected":P.value===`customer`,onClick:i[0]||=e=>st(`customer`)},` مشتریان `,10,le),s(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`agent`}]),"aria-selected":P.value===`agent`,onClick:i[1]||=e=>st(`agent`)},` واسطه‌ها `,10,ue)]),s(`div`,de,[f(T,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":i[2]||=e=>D.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[x,D.value]])]),F.value?(e(),m(ne,{key:0,variant:`table`})):Q.value.length?(e(),l(`div`,fe,[s(`div`,pe,[s(`table`,me,[s(`thead`,null,[s(`tr`,null,[s(`th`,null,p(P.value===`agent`?`نام واسطه`:`نام مشتری`),1),i[14]||=s(`th`,null,`تلفن`,-1),i[15]||=s(`th`,null,`نقش`,-1),P.value===`agent`?(e(),l(`th`,he,`کد واسطه`)):y(``,!0),P.value===`customer`?(e(),l(`th`,ge,`نوع`)):y(``,!0),P.value===`customer`?(e(),l(`th`,_e,`سطح`)):y(``,!0),P.value===`customer`?(e(),l(`th`,ve,`واسطه`)):y(``,!0),P.value===`customer`?(e(),l(`th`,ye,`شرکت`)):y(``,!0),i[16]||=s(`th`,{class:`numeric`},`تعداد سفارش`,-1),i[17]||=s(`th`,{class:`numeric`},`مجموع متراژ`,-1),i[18]||=s(`th`,{class:`status`},`وضعیت`,-1),i[19]||=s(`th`,null,`تاریخ ثبت`,-1),i[20]||=s(`th`,{class:`actions`},`عملیات`,-1)])]),s(`tbody`,null,[(e(!0),l(g,null,n(Q.value,t=>(e(),l(`tr`,{key:t.id},[s(`td`,null,p(V(t.name)),1),s(`td`,null,p(V(t.phone)),1),s(`td`,null,p(K(t.appRole)),1),P.value===`agent`?(e(),l(`td`,be,p(V(t.agentCode)),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,xe,p(V(c(M)[t.customerType])),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,Se,p(V(t.levelLabel)),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,Ce,p(V(t.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,we,p(V(t.companyName)),1)):y(``,!0),s(`td`,Te,p(V(t.orderCount)),1),s(`td`,Ee,p(H(t.totalMeterage)),1),s(`td`,De,[f(N,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),s(`td`,null,p(V(c(O)(t.registeredAt))),1),s(`td`,Oe,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ut(t)},` ویرایش `,8,ke)])]))),128))])])])])):(e(),m(ie,{key:1,class:`admin-card`,icon:`customers`,title:D.value.trim()?`نتیجه‌ای یافت نشد`:P.value===`agent`?`واسطه‌ای ثبت نشده`:`مشتریان ثبت شده`,description:D.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:P.value===`agent`?`برای شروع، اولین واسطه را ثبت کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:a(()=>[D.value.trim()?(e(),l(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:pt},` پاک کردن جستجو `)):(e(),l(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:lt},p(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1))]),_:1},8,[`title`,`description`])),!F.value&&Q.value.length?(e(),l(`div`,Ae,[(e(!0),l(g,null,n(Q.value,t=>(e(),l(`article`,{key:t.id,class:`admin-card-item`},[s(`div`,je,[s(`p`,Me,p(V(t.name)),1),s(`div`,Ne,[f(N,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ut(t)},` ویرایش `,8,Pe)])]),s(`div`,Fe,[s(`span`,null,p(V(t.phone)),1),P.value===`agent`?(e(),l(`span`,Ie,`کد: `+p(V(t.agentCode)),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,Le,p(V(c(M)[t.customerType])),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,Re,p(V(t.levelLabel)),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,ze,`واسطه: `+p(V(t.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,Be,p(V(t.companyName)),1)):y(``,!0),s(`span`,null,p(V(t.orderCount))+` سفارش · `+p(H(t.totalMeterage)),1)])]))),128))])):y(``,!0),f(te,{open:it.value,title:at.value,size:`lg`,onClose:$},{footer:a(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:$},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Z.value||z.value,onClick:dt},[z.value?(e(),l(`span`,rt)):y(``,!0),h(` `+p(I.value===`edit`?`ثبت تغییرات`:X.appRole===`agent`?`ثبت واسطه`:`ثبت مشتری`),1)],8,nt)]),default:a(()=>[s(`form`,{class:`admin-form`,onSubmit:S(dt,[`prevent`])},[R.value?(e(),l(`p`,Ve,p(R.value),1)):y(``,!0),s(`div`,He,[i[21]||=s(`label`,{for:`customer-name`},[h(`نام مشتری `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`customer-name`,"onUpdate:modelValue":i[3]||=e=>X.name=e,type:`text`,class:`admin-input`},null,512),[[x,X.name]])]),s(`div`,Ue,[s(`div`,We,[i[22]||=s(`label`,{for:`customer-phone`},[h(`تلفن `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`customer-phone`,"onUpdate:modelValue":i[4]||=e=>X.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[x,X.phone]])]),s(`div`,Ge,[i[23]||=s(`label`,{for:`customer-national-id`},[h(`شناسه ملی `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`customer-national-id`,"onUpdate:modelValue":i[5]||=e=>X.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[x,X.nationalId]])])]),s(`div`,Ke,[s(`div`,qe,[i[24]||=s(`label`,null,`نوع مشتری`,-1),f(j,{modelValue:X.customerType,"onUpdate:modelValue":i[6]||=e=>X.customerType=e,block:``,"aria-label":`نوع مشتری`,options:U},null,8,[`modelValue`])]),s(`div`,Je,[i[25]||=s(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),o(s(`input`,{id:`customer-company`,"onUpdate:modelValue":i[7]||=e=>X.companyName=e,type:`text`,class:`admin-input`},null,512),[[x,X.companyName]])])]),s(`div`,Ye,[s(`div`,Xe,[i[26]||=s(`label`,null,`سطح`,-1),f(j,{modelValue:X.levelDefId,"onUpdate:modelValue":i[8]||=e=>X.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:q.value},null,8,[`modelValue`,`options`])]),s(`div`,Ze,[i[27]||=s(`label`,null,`واسطه`,-1),f(j,{modelValue:X.assignedAgentId,"onUpdate:modelValue":i[9]||=e=>X.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاص‌یافته`,options:J.value},null,8,[`modelValue`,`options`])])]),s(`div`,Qe,[s(`div`,$e,[i[28]||=s(`label`,null,`نقش در اپ`,-1),f(j,{modelValue:X.appRole,"onUpdate:modelValue":i[10]||=e=>X.appRole=e,block:``,"aria-label":`نقش در اپ`,options:W},null,8,[`modelValue`])]),X.appRole===`agent`?(e(),l(`div`,et,[i[29]||=s(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),o(s(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":i[11]||=e=>X.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[x,X.agentCode]])])):y(``,!0)]),s(`div`,tt,[f(re,{modelValue:X.isActive,"onUpdate:modelValue":i[12]||=e=>X.isActive=e,label:`وضعیت`},null,8,[`modelValue`])]),I.value===`edit`&&L.value&&X.appRole===`customer`?(e(),m(ae,{key:1,"customer-id":L.value},null,8,[`customer-id`])):y(``,!0)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-e7c35ad6`]]);export{J as default}; \ No newline at end of file +import{A as e,D as t,N as n,Ot as r,Q as i,U as a,V as ee,W as o,c as s,ct as c,d as l,et as u,g as d,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as b,d as x,m as S,t as C}from"./http-CTjL79ty.js";import{E as w,L as T,S as E,V as te,j as D,o as O,s as k,y as A}from"./index-BWgYBNME.js";import{t as ne}from"./AdminPageSkeleton-DacAHji8.js";import{t as re}from"./BaseSwitch-Dz4ODUhf.js";import{t as ie}from"./BaseEmptyState-88fQ29rO.js";import{t as j}from"./AdminSelect-hgn_nYC2.js";import{i as M}from"./adminLabels-jYlObVqa.js";import{t as N}from"./ActiveSwitchCell-CRUUEk77.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(d({__name:`CustomerSuggestionsPanel`,props:{customerId:{}},setup(i){let a=i,c=b(),d=u(!0),m=u(!1),v=u([]),S=u([]),T=u([]),E=u(``),te=_(()=>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(a.customerId){d.value=!0;try{let[e,t]=await Promise.all([D.list(a.customerId),w.list()]);v.value=e,S.value=t}catch(e){c.error(e instanceof C?e.message:`بارگذاری پیشنهادها ناموفق بود`)}finally{d.value=!1}}}async function k(){if(T.value.length){m.value=!0;try{for(let e of T.value)await D.create({customerId:a.customerId,productId:e,note:E.value.trim()||void 0});T.value=[],E.value=``,c.success(`پیشنهادها به صفحه خانه مشتری اضافه شد`),await O()}catch(e){c.error(e instanceof C?e.message:`ثبت پیشنهاد ناموفق بود`)}finally{m.value=!1}}}async function A(e){try{await D.setActive(e.id,!e.isActive),await O()}catch(e){c.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 ee(()=>a.customerId,()=>{O()}),t(()=>{O()}),(t,i)=>(e(),l(`section`,P,[i[4]||=s(`header`,{class:`suggestions-panel__head`},[s(`div`,null,[s(`h3`,{class:`suggestions-panel__title`},`پیشنهاد اختصاصی در اپ`),s(`p`,{class:`suggestions-panel__hint`},` محصولات انتخاب‌شده در بخش «پیشنهاد اختصاصی ما برای شما» در صفحه خانه مشتری نمایش داده می‌شوند. `)])],-1),d.value?(e(),l(`div`,F,`در حال بارگذاری...`)):(e(),l(g,{key:1},[s(`div`,I,[s(`label`,L,[i[1]||=h(` افزودن محصول (کد کالیته) `,-1),f(j,{"model-value":``,options:[{value:``,label:`انتخاب محصول...`},...te.value],"onUpdate:modelValue":ne},null,8,[`options`])]),T.value.length?(e(),l(`div`,R,[(e(!0),l(g,null,n(T.value,t=>(e(),l(`span`,{key:t,class:`suggestions-panel__chip`},[h(p(S.value.find(e=>e.id===t)?.productCode||t)+` `,1),s(`button`,{type:`button`,"aria-label":`حذف`,onClick:e=>re(t)},`×`,8,z)]))),128))])):y(``,!0),s(`label`,B,[i[2]||=h(` یادداشت (اختیاری) `,-1),o(s(`textarea`,{"onUpdate:modelValue":i[0]||=e=>E.value=e,class:`admin-input`,rows:`2`,placeholder:`دلیل پیشنهاد برای مشتری`},null,512),[[x,E.value]])]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!T.value.length||m.value,onClick:k},` افزودن به صفحه خانه مشتری `,8,V)]),v.value.length?(e(),l(`div`,H,[i[3]||=s(`h4`,{class:`suggestions-panel__sub`},`پیشنهادهای ثبت‌شده`,-1),s(`ul`,null,[(e(!0),l(g,null,n(v.value,t=>(e(),l(`li`,{key:t.id,class:`suggestions-panel__row`},[s(`div`,null,[s(`strong`,null,p(t.productName),1),s(`span`,U,`(`+p(t.productCode)+`)`,1),t.note?(e(),l(`p`,W,p(t.note),1)):y(``,!0)]),s(`div`,G,[s(`span`,{class:r(t.isActive?`on`:`off`)},p(t.isActive?`فعال`:`غیرفعال`),3),s(`button`,{type:`button`,class:`link`,onClick:e=>A(t)},p(t.isActive?`حذف از خانه`:`فعال‌سازی`),9,K)])]))),128))])])):(e(),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(d({__name:`CustomersView`,setup(ee){let d=u([]),v=u([]),w=u([]),D=u(``),P=u(`customer`),F=u(!0),I=u(null),L=u(null),R=u(``),z=u(!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=_(()=>[{value:``,label:`بدون سطح`},...v.value.map(e=>({value:e.id,label:e.label}))]),J=_(()=>[{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=i(Y()),it=_(()=>I.value!==null),at=_(()=>I.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),Z=_(()=>X.name.trim()&&X.phone.trim()&&X.nationalId.trim()),Q=_(()=>{let e=D.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 ot(){F.value=!0;try{d.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 st(e){P.value!==e&&(P.value=e,D.value=``,ot())}async function ct(){try{let[e,t]=await Promise.all([E.list(),A.list(void 0,`agent`)]);v.value=e,w.value=t}catch(e){B.error(e instanceof C?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}t(()=>{ot(),ct()});function lt(){I.value=`add`,L.value=null,Object.assign(X,Y()),X.appRole=P.value,R.value=``}function ut(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 $(){I.value=null,L.value=null,R.value=``}async function dt(){if(!Z.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`?`اطلاعات مشتری به‌روزرسانی شد.`:`مشتری جدید ثبت شد.`),$(),e.appRole===`agent`&&ct()}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(){D.value=``}return(t,i)=>(e(),l(`div`,oe,[s(`div`,se,[i[13]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`مشتریان و واسطه‌ها`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:lt},p(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1)]),s(`div`,ce,[s(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`customer`}]),"aria-selected":P.value===`customer`,onClick:i[0]||=e=>st(`customer`)},` مشتریان `,10,le),s(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`agent`}]),"aria-selected":P.value===`agent`,onClick:i[1]||=e=>st(`agent`)},` واسطه‌ها `,10,ue)]),s(`div`,de,[f(T,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":i[2]||=e=>D.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[x,D.value]])]),F.value?(e(),m(ne,{key:0,variant:`table`})):Q.value.length?(e(),l(`div`,fe,[s(`div`,pe,[s(`table`,me,[s(`thead`,null,[s(`tr`,null,[s(`th`,null,p(P.value===`agent`?`نام واسطه`:`نام مشتری`),1),i[14]||=s(`th`,null,`تلفن`,-1),i[15]||=s(`th`,null,`نقش`,-1),P.value===`agent`?(e(),l(`th`,he,`کد واسطه`)):y(``,!0),P.value===`customer`?(e(),l(`th`,ge,`نوع`)):y(``,!0),P.value===`customer`?(e(),l(`th`,_e,`سطح`)):y(``,!0),P.value===`customer`?(e(),l(`th`,ve,`واسطه`)):y(``,!0),P.value===`customer`?(e(),l(`th`,ye,`شرکت`)):y(``,!0),i[16]||=s(`th`,{class:`numeric`},`تعداد سفارش`,-1),i[17]||=s(`th`,{class:`numeric`},`مجموع متراژ`,-1),i[18]||=s(`th`,{class:`status`},`وضعیت`,-1),i[19]||=s(`th`,null,`تاریخ ثبت`,-1),i[20]||=s(`th`,{class:`actions`},`عملیات`,-1)])]),s(`tbody`,null,[(e(!0),l(g,null,n(Q.value,t=>(e(),l(`tr`,{key:t.id},[s(`td`,null,p(V(t.name)),1),s(`td`,null,p(V(t.phone)),1),s(`td`,null,p(K(t.appRole)),1),P.value===`agent`?(e(),l(`td`,be,p(V(t.agentCode)),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,xe,p(V(c(M)[t.customerType])),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,Se,p(V(t.levelLabel)),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,Ce,p(V(t.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(e(),l(`td`,we,p(V(t.companyName)),1)):y(``,!0),s(`td`,Te,p(V(t.orderCount)),1),s(`td`,Ee,p(H(t.totalMeterage)),1),s(`td`,De,[f(N,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),s(`td`,null,p(V(c(O)(t.registeredAt))),1),s(`td`,Oe,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ut(t)},` ویرایش `,8,ke)])]))),128))])])])])):(e(),m(ie,{key:1,class:`admin-card`,icon:`customers`,title:D.value.trim()?`نتیجه‌ای یافت نشد`:P.value===`agent`?`واسطه‌ای ثبت نشده`:`مشتریان ثبت شده`,description:D.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:P.value===`agent`?`برای شروع، اولین واسطه را ثبت کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:a(()=>[D.value.trim()?(e(),l(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:pt},` پاک کردن جستجو `)):(e(),l(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:lt},p(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1))]),_:1},8,[`title`,`description`])),!F.value&&Q.value.length?(e(),l(`div`,Ae,[(e(!0),l(g,null,n(Q.value,t=>(e(),l(`article`,{key:t.id,class:`admin-card-item`},[s(`div`,je,[s(`p`,Me,p(V(t.name)),1),s(`div`,Ne,[f(N,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>ut(t)},` ویرایش `,8,Pe)])]),s(`div`,Fe,[s(`span`,null,p(V(t.phone)),1),P.value===`agent`?(e(),l(`span`,Ie,`کد: `+p(V(t.agentCode)),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,Le,p(V(c(M)[t.customerType])),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,Re,p(V(t.levelLabel)),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,ze,`واسطه: `+p(V(t.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(e(),l(`span`,Be,p(V(t.companyName)),1)):y(``,!0),s(`span`,null,p(V(t.orderCount))+` سفارش · `+p(H(t.totalMeterage)),1)])]))),128))])):y(``,!0),f(te,{open:it.value,title:at.value,size:`lg`,onClose:$},{footer:a(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:$},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Z.value||z.value,onClick:dt},[z.value?(e(),l(`span`,rt)):y(``,!0),h(` `+p(I.value===`edit`?`ثبت تغییرات`:X.appRole===`agent`?`ثبت واسطه`:`ثبت مشتری`),1)],8,nt)]),default:a(()=>[s(`form`,{class:`admin-form`,onSubmit:S(dt,[`prevent`])},[R.value?(e(),l(`p`,Ve,p(R.value),1)):y(``,!0),s(`div`,He,[i[21]||=s(`label`,{for:`customer-name`},[h(`نام مشتری `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`customer-name`,"onUpdate:modelValue":i[3]||=e=>X.name=e,type:`text`,class:`admin-input`},null,512),[[x,X.name]])]),s(`div`,Ue,[s(`div`,We,[i[22]||=s(`label`,{for:`customer-phone`},[h(`تلفن `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`customer-phone`,"onUpdate:modelValue":i[4]||=e=>X.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[x,X.phone]])]),s(`div`,Ge,[i[23]||=s(`label`,{for:`customer-national-id`},[h(`شناسه ملی `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`customer-national-id`,"onUpdate:modelValue":i[5]||=e=>X.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[x,X.nationalId]])])]),s(`div`,Ke,[s(`div`,qe,[i[24]||=s(`label`,null,`نوع مشتری`,-1),f(j,{modelValue:X.customerType,"onUpdate:modelValue":i[6]||=e=>X.customerType=e,block:``,"aria-label":`نوع مشتری`,options:U},null,8,[`modelValue`])]),s(`div`,Je,[i[25]||=s(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),o(s(`input`,{id:`customer-company`,"onUpdate:modelValue":i[7]||=e=>X.companyName=e,type:`text`,class:`admin-input`},null,512),[[x,X.companyName]])])]),s(`div`,Ye,[s(`div`,Xe,[i[26]||=s(`label`,null,`سطح`,-1),f(j,{modelValue:X.levelDefId,"onUpdate:modelValue":i[8]||=e=>X.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:q.value},null,8,[`modelValue`,`options`])]),s(`div`,Ze,[i[27]||=s(`label`,null,`واسطه`,-1),f(j,{modelValue:X.assignedAgentId,"onUpdate:modelValue":i[9]||=e=>X.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاص‌یافته`,options:J.value},null,8,[`modelValue`,`options`])])]),s(`div`,Qe,[s(`div`,$e,[i[28]||=s(`label`,null,`نقش در اپ`,-1),f(j,{modelValue:X.appRole,"onUpdate:modelValue":i[10]||=e=>X.appRole=e,block:``,"aria-label":`نقش در اپ`,options:W},null,8,[`modelValue`])]),X.appRole===`agent`?(e(),l(`div`,et,[i[29]||=s(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),o(s(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":i[11]||=e=>X.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[x,X.agentCode]])])):y(``,!0)]),s(`div`,tt,[f(re,{modelValue:X.isActive,"onUpdate:modelValue":i[12]||=e=>X.isActive=e,label:`وضعیت`},null,8,[`modelValue`])]),I.value===`edit`&&L.value&&X.appRole===`customer`?(e(),m(ae,{key:1,"customer-id":L.value},null,8,[`customer-id`])):y(``,!0)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-e7c35ad6`]]);export{J as default}; \ No newline at end of file diff --git a/dist/assets/DashboardView-Bf5VLJQx.js b/dist/assets/DashboardView-x0R6D6hn.js similarity index 98% rename from dist/assets/DashboardView-Bf5VLJQx.js rename to dist/assets/DashboardView-x0R6D6hn.js index 9c9e03e..f0d3f77 100644 --- a/dist/assets/DashboardView-Bf5VLJQx.js +++ b/dist/assets/DashboardView-x0R6D6hn.js @@ -1 +1 @@ -import{A as e,At as t,D as n,F as r,N as i,Ot as a,U as o,c as s,ct as c,d as l,et as u,g as d,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as b,t as x}from"./http-CTjL79ty.js";import{C as S,L as C,b as w,c as T,i as E,o as D,z as O}from"./index-DWlOII4H.js";import{t as k}from"./StatusBadge-BkaoX2rz.js";var ee={class:`sales-chart`},A={key:0,class:`sales-chart__header`},j={key:0,class:`sales-chart__title`},M={key:1,class:`sales-chart__subtitle`},N=[`viewBox`,`aria-label`],te=[`x1`,`x2`,`y1`,`y2`],P=[`points`],F=[`points`],I=[`x1`,`x2`,`y1`,`y2`],L=[`cx`,`cy`],R={class:`sales-chart__tooltip-label`},z={key:1,class:`sales-chart__axis`},B=320,V=120,H=v(d({__name:`SalesAreaChart`,props:{data:{},title:{},subtitle:{},height:{default:160},color:{default:`#091d36`},unit:{default:`میلیارد تومان`},labels:{}},setup(n){let r=n,a=u(null),o={top:12,right:8,bottom:8,left:8},d=_(()=>Math.max(...r.data,.001)),f=_(()=>{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/d.value*t,value:e,index:r}))}),m=_(()=>f.value.map(e=>`${e.x},${e.y}`).join(` `)),h=_(()=>{let e=V-o.bottom,t=f.value[0],n=f.value[f.value.length-1];return!t||!n?``:`${t.x},${e} ${m.value} ${n.x},${e}`}),v=_(()=>{let e=V-o.top-o.bottom;return[0,.5,1].map(t=>o.top+e*t)}),b=_(()=>a.value===null?null:f.value[a.value]??null);function x(e){let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*B,r=0,i=1/0;f.value.forEach(e=>{let t=Math.abs(e.x-n);t(e(),l(`div`,ee,[n.title||n.subtitle?(e(),l(`div`,A,[s(`div`,null,[n.title?(e(),l(`h3`,j,p(n.title),1)):y(``,!0),n.subtitle?(e(),l(`p`,M,p(n.subtitle),1)):y(``,!0)])])):y(``,!0),s(`div`,{class:`sales-chart__body`,style:t({height:`${n.height}px`})},[(e(),l(`svg`,{class:`sales-chart__svg`,viewBox:`0 0 ${B} ${V}`,preserveAspectRatio:`none`,role:`img`,"aria-label":n.title||`نمودار فروش`,onMousemove:x,onMouseleave:S},[(e(!0),l(g,null,i(v.value,(t,n)=>(e(),l(`line`,{key:n,x1:o.left,x2:B-o.right,y1:t,y2:t,class:`sales-chart__grid`},null,8,te))),128)),h.value?(e(),l(`polygon`,{key:0,points:h.value,class:`sales-chart__area`,style:t({fill:`${n.color}22`})},null,12,P)):y(``,!0),s(`polyline`,{points:m.value,class:`sales-chart__line`,style:t({stroke:n.color})},null,12,F),b.value?(e(),l(g,{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:t({fill:n.color})},null,12,L)],64)):y(``,!0)],40,N)),b.value?(e(),l(`div`,{key:0,class:`sales-chart__tooltip`,style:t({left:`${b.value.x/B*100}%`})},[s(`span`,R,p(n.labels?.[b.value.index]??`روز ${b.value.index+1}`),1),s(`strong`,null,p(c(T)(b.value.value))+` `+p(n.unit),1)],4)):y(``,!0)],4),n.labels?.length?(e(),l(`div`,z,[(e(!0),l(g,null,i(n.labels,(t,n)=>(e(),l(`span`,{key:n},p(t),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 e=O(),t=b(),r=u(G()),i=u([]),a=u(Array.from({length:28},()=>0)),o=u([`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`]),s=u([]),c=u(!1),l=_(()=>[{label:`سفارش‌های جدید`,value:r.value.newOrders,icon:`cart`,tone:`info`,link:`/orders`},{label:`در انتظار بررسی`,value:r.value.pendingReview,icon:`file`,tone:`warning`,link:`/orders?tab=pending_review`},{label:`بررسی چک`,value:r.value.pendingCheck,icon:`wallet`,tone:`purple`,link:`/orders?tab=pending_check`},{label:`تأیید نهایی شده`,value:r.value.finalApproval,icon:`check-circle`,tone:`success`,link:`/orders?tab=final_approval`}]),d=_(()=>{let e=a.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(){c.value=!0;try{let e=await w.get();r.value=e.stats,i.value=(e.recentOrders??[]).map(e=>S(e)),a.value=e.salesChartData?.length?e.salesChartData:Array.from({length:28},()=>0),o.value=e.chartAxisLabels?.length?e.chartAxisLabels:[`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`],s.value=e.checkDeadlines??[]}catch(e){t.error(e instanceof x?e.message:`بارگذاری داشبورد انجام نشد.`)}finally{c.value=!1}}n(()=>{f()});function p(){e.push(`/orders`)}return{checkDeadlines:s,dashboardStats:r,recentOrders:i,chartPoints:d,salesChartData:a,chartAxisLabels:o,statCards:l,loading:c,goOrders:p,loadDashboard:f}}var q={class:`dashboard`},J={class:`dashboard__toolbar`},Y={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},X={class:`dashboard__stats`},Z={class:`admin-stat-card__label`},Q={class:`admin-stat-card__value`},ne={class:`dashboard__sales-card admin-stat-card`},re={class:`dashboard__sales-header`},ie={class:`admin-stat-card__value dashboard__sales-value`},ae={class:`dashboard__sales-growth`},oe={class:`dashboard__grid`},se={class:`dashboard__chart-card admin-card`},ce={class:`dashboard__orders-card admin-card`},le={class:`admin-table-wrap`},ue={class:`admin-table admin-table--compact`},de={class:`dashboard__card-footer`},fe={class:`dashboard__checks-card admin-card`},pe={class:`dashboard__deadline-list`},me={class:`dashboard__deadline-count`},he={class:`dashboard__deadline-amount`},ge={class:`dashboard__card-footer`},_e=v(d({__name:`DesktopDashboard`,setup(n){let{checkDeadlines:u,dashboardStats:d,recentOrders:m,salesChartData:_,chartAxisLabels:v,goOrders:y,statCards:b}=K();return(n,x)=>{let S=r(`RouterLink`);return e(),l(`div`,q,[s(`div`,J,[s(`button`,Y,[f(C,{name:`calendar`,size:16}),x[1]||=h(` امروز `,-1)])]),s(`div`,X,[(e(!0),l(g,null,i(c(b),n=>(e(),l(`div`,{key:n.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(C,{name:n.icon,size:20},null,8,[`name`])],4),s(`p`,Z,p(n.label),1),s(`p`,Q,p(n.value),1),f(S,{to:n.link,class:`admin-stat-card__link`},{default:o(()=>[...x[2]||=[h(`مشاهده سفارش‌ها`,-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,p(c(E)(c(d).todaySales)),1),s(`span`,ae,` +`+p(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)]),f(C,{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,[f(H,{title:`فروش ماه جاری`,subtitle:c(E)(c(d).monthSales),data:c(_),labels:c(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,[(e(!0),l(g,null,i(c(m),t=>(e(),l(`tr`,{key:t.id},[s(`td`,null,p(t.orderNumber),1),s(`td`,null,p(t.customerName),1),s(`td`,null,p(t.companyName),1),s(`td`,null,[f(k,{status:t.status},null,8,[`status`])]),s(`td`,null,p(c(D)(t.createdAt)),1)]))),128))])])]),s(`div`,de,[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>c(y)&&c(y)(...e)},[x[6]||=h(` مشاهده همه سفارش‌ها `,-1),f(C,{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,[(e(!0),l(g,null,i(c(u),t=>(e(),l(`li`,{key:t.id,class:`dashboard__deadline-item`},[s(`span`,{class:a([`admin-badge`,{"admin-badge--danger":t.tone===`danger`,"admin-badge--warning":t.tone===`warning`,"admin-badge--neutral":t.tone===`neutral`}])},p(t.label),3),s(`span`,me,p(t.count)+` فقره`,1),s(`span`,he,p(c(E)(t.amount)),1)]))),128))]),s(`div`,ge,[f(S,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm`},{default:o(()=>[x[8]||=h(` مشاهده همه `,-1),f(C,{name:`chevron-left`,size:16})]),_:1})])])])])}}}),[[`__scopeId`,`data-v-bf2ebdae`]]),ve={class:`compact-dashboard page-shell`},ye={class:`flex justify-end mb-3`},be={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},xe={class:`compact-stats-grid`},Se={class:`admin-stat-card__label`},Ce={class:`admin-stat-card__value`},we={class:`admin-stat-card col-span-full`},$={class:`admin-stat-card__value`},Te={class:`text-xs font-semibold text-success`},Ee={class:`compact-section-grid`},De={class:`compact-section-card admin-panel`},Oe={class:`compact-section-card admin-panel`},ke={class:`admin-card-list`},Ae={class:`admin-card-item__header`},je={class:`admin-card-item__title`},Me={class:`admin-card-item__meta`},Ne={class:`compact-section-card admin-panel`},Pe={class:`m-0 p-0 list-none flex flex-col gap-2.5`},Fe={class:`mr-auto text-xs`},Ie=d({__name:`CompactDashboard`,setup(n){let{checkDeadlines:u,dashboardStats:d,recentOrders:_,salesChartData:v,chartAxisLabels:y,goOrders:b,statCards:x}=K();return(n,S)=>{let w=r(`RouterLink`);return e(),l(`div`,ve,[s(`div`,ye,[s(`button`,be,[f(C,{name:`calendar`,size:16}),S[1]||=h(` امروز `,-1)])]),s(`div`,xe,[(e(!0),l(g,null,i(c(x),n=>(e(),l(`div`,{key:n.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(C,{name:n.icon,size:20},null,8,[`name`])],4),s(`p`,Se,p(n.label),1),s(`p`,Ce,p(n.value),1),f(w,{to:n.link,class:`admin-stat-card__link`},{default:o(()=>[...S[2]||=[h(`مشاهده`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,we,[S[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,$,p(c(E)(c(d).todaySales)),1),s(`span`,Te,` +`+p(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)])]),s(`div`,Ee,[s(`section`,De,[f(H,{title:`فروش ماه جاری`,subtitle:c(E)(c(d).monthSales),data:c(v),labels:c(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,[(e(!0),l(g,null,i(c(_),t=>(e(),m(w,{key:t.id,to:`/orders`,class:`admin-card-item block no-underline text-inherit`},{default:o(()=>[s(`div`,Ae,[s(`p`,je,p(t.orderNumber),1),f(k,{status:t.status},null,8,[`status`])]),s(`div`,Me,[s(`span`,null,p(t.customerName),1),s(`span`,null,p(c(D)(t.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)=>c(b)&&c(b)(...e)},[S[4]||=h(` مشاهده همه سفارش‌ها `,-1),f(C,{name:`chevron-left`,size:16})])]),s(`section`,Ne,[S[7]||=s(`h2`,{class:`compact-section-card__title`},`سررسید چک‌ها`,-1),s(`ul`,Pe,[(e(!0),l(g,null,i(c(u),t=>(e(),l(`li`,{key:t.id,class:`flex flex-wrap items-center gap-2 text-sm`},[s(`span`,{class:a([`admin-badge`,{"admin-badge--danger":t.tone===`danger`,"admin-badge--warning":t.tone===`warning`,"admin-badge--neutral":t.tone===`neutral`}])},p(t.label),3),s(`span`,null,p(t.count)+` فقره`,1),s(`strong`,Fe,p(c(E)(t.amount)),1)]))),128))]),f(w,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm inline-flex mt-3 no-underline`},{default:o(()=>[S[6]||=h(` مشاهده همه `,-1),f(C,{name:`chevron-left`,size:16})]),_:1})])])])}}}),Le=d({__name:`DashboardView`,setup(t){return(t,n)=>(e(),l(g,null,[f(_e,{class:`desktop-only`}),f(Ie,{class:`compact-only`})],64))}});export{Le as default}; \ No newline at end of file +import{A as e,At as t,D as n,F as r,N as i,Ot as a,U as o,c as s,ct as c,d as l,et as u,g as d,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as b,t as x}from"./http-CTjL79ty.js";import{C as S,L as C,b as w,c as T,i as E,o as D,z as O}from"./index-BWgYBNME.js";import{t as k}from"./StatusBadge-BkaoX2rz.js";var ee={class:`sales-chart`},A={key:0,class:`sales-chart__header`},j={key:0,class:`sales-chart__title`},M={key:1,class:`sales-chart__subtitle`},N=[`viewBox`,`aria-label`],te=[`x1`,`x2`,`y1`,`y2`],P=[`points`],F=[`points`],I=[`x1`,`x2`,`y1`,`y2`],L=[`cx`,`cy`],R={class:`sales-chart__tooltip-label`},z={key:1,class:`sales-chart__axis`},B=320,V=120,H=v(d({__name:`SalesAreaChart`,props:{data:{},title:{},subtitle:{},height:{default:160},color:{default:`#091d36`},unit:{default:`میلیارد تومان`},labels:{}},setup(n){let r=n,a=u(null),o={top:12,right:8,bottom:8,left:8},d=_(()=>Math.max(...r.data,.001)),f=_(()=>{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/d.value*t,value:e,index:r}))}),m=_(()=>f.value.map(e=>`${e.x},${e.y}`).join(` `)),h=_(()=>{let e=V-o.bottom,t=f.value[0],n=f.value[f.value.length-1];return!t||!n?``:`${t.x},${e} ${m.value} ${n.x},${e}`}),v=_(()=>{let e=V-o.top-o.bottom;return[0,.5,1].map(t=>o.top+e*t)}),b=_(()=>a.value===null?null:f.value[a.value]??null);function x(e){let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*B,r=0,i=1/0;f.value.forEach(e=>{let t=Math.abs(e.x-n);t(e(),l(`div`,ee,[n.title||n.subtitle?(e(),l(`div`,A,[s(`div`,null,[n.title?(e(),l(`h3`,j,p(n.title),1)):y(``,!0),n.subtitle?(e(),l(`p`,M,p(n.subtitle),1)):y(``,!0)])])):y(``,!0),s(`div`,{class:`sales-chart__body`,style:t({height:`${n.height}px`})},[(e(),l(`svg`,{class:`sales-chart__svg`,viewBox:`0 0 ${B} ${V}`,preserveAspectRatio:`none`,role:`img`,"aria-label":n.title||`نمودار فروش`,onMousemove:x,onMouseleave:S},[(e(!0),l(g,null,i(v.value,(t,n)=>(e(),l(`line`,{key:n,x1:o.left,x2:B-o.right,y1:t,y2:t,class:`sales-chart__grid`},null,8,te))),128)),h.value?(e(),l(`polygon`,{key:0,points:h.value,class:`sales-chart__area`,style:t({fill:`${n.color}22`})},null,12,P)):y(``,!0),s(`polyline`,{points:m.value,class:`sales-chart__line`,style:t({stroke:n.color})},null,12,F),b.value?(e(),l(g,{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:t({fill:n.color})},null,12,L)],64)):y(``,!0)],40,N)),b.value?(e(),l(`div`,{key:0,class:`sales-chart__tooltip`,style:t({left:`${b.value.x/B*100}%`})},[s(`span`,R,p(n.labels?.[b.value.index]??`روز ${b.value.index+1}`),1),s(`strong`,null,p(c(T)(b.value.value))+` `+p(n.unit),1)],4)):y(``,!0)],4),n.labels?.length?(e(),l(`div`,z,[(e(!0),l(g,null,i(n.labels,(t,n)=>(e(),l(`span`,{key:n},p(t),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 e=O(),t=b(),r=u(G()),i=u([]),a=u(Array.from({length:28},()=>0)),o=u([`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`]),s=u([]),c=u(!1),l=_(()=>[{label:`سفارش‌های جدید`,value:r.value.newOrders,icon:`cart`,tone:`info`,link:`/orders`},{label:`در انتظار بررسی`,value:r.value.pendingReview,icon:`file`,tone:`warning`,link:`/orders?tab=pending_review`},{label:`بررسی چک`,value:r.value.pendingCheck,icon:`wallet`,tone:`purple`,link:`/orders?tab=pending_check`},{label:`تأیید نهایی شده`,value:r.value.finalApproval,icon:`check-circle`,tone:`success`,link:`/orders?tab=final_approval`}]),d=_(()=>{let e=a.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(){c.value=!0;try{let e=await w.get();r.value=e.stats,i.value=(e.recentOrders??[]).map(e=>S(e)),a.value=e.salesChartData?.length?e.salesChartData:Array.from({length:28},()=>0),o.value=e.chartAxisLabels?.length?e.chartAxisLabels:[`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`],s.value=e.checkDeadlines??[]}catch(e){t.error(e instanceof x?e.message:`بارگذاری داشبورد انجام نشد.`)}finally{c.value=!1}}n(()=>{f()});function p(){e.push(`/orders`)}return{checkDeadlines:s,dashboardStats:r,recentOrders:i,chartPoints:d,salesChartData:a,chartAxisLabels:o,statCards:l,loading:c,goOrders:p,loadDashboard:f}}var q={class:`dashboard`},J={class:`dashboard__toolbar`},Y={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},X={class:`dashboard__stats`},Z={class:`admin-stat-card__label`},Q={class:`admin-stat-card__value`},ne={class:`dashboard__sales-card admin-stat-card`},re={class:`dashboard__sales-header`},ie={class:`admin-stat-card__value dashboard__sales-value`},ae={class:`dashboard__sales-growth`},oe={class:`dashboard__grid`},se={class:`dashboard__chart-card admin-card`},ce={class:`dashboard__orders-card admin-card`},le={class:`admin-table-wrap`},ue={class:`admin-table admin-table--compact`},de={class:`dashboard__card-footer`},fe={class:`dashboard__checks-card admin-card`},pe={class:`dashboard__deadline-list`},me={class:`dashboard__deadline-count`},he={class:`dashboard__deadline-amount`},ge={class:`dashboard__card-footer`},_e=v(d({__name:`DesktopDashboard`,setup(n){let{checkDeadlines:u,dashboardStats:d,recentOrders:m,salesChartData:_,chartAxisLabels:v,goOrders:y,statCards:b}=K();return(n,x)=>{let S=r(`RouterLink`);return e(),l(`div`,q,[s(`div`,J,[s(`button`,Y,[f(C,{name:`calendar`,size:16}),x[1]||=h(` امروز `,-1)])]),s(`div`,X,[(e(!0),l(g,null,i(c(b),n=>(e(),l(`div`,{key:n.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(C,{name:n.icon,size:20},null,8,[`name`])],4),s(`p`,Z,p(n.label),1),s(`p`,Q,p(n.value),1),f(S,{to:n.link,class:`admin-stat-card__link`},{default:o(()=>[...x[2]||=[h(`مشاهده سفارش‌ها`,-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,p(c(E)(c(d).todaySales)),1),s(`span`,ae,` +`+p(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)]),f(C,{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,[f(H,{title:`فروش ماه جاری`,subtitle:c(E)(c(d).monthSales),data:c(_),labels:c(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,[(e(!0),l(g,null,i(c(m),t=>(e(),l(`tr`,{key:t.id},[s(`td`,null,p(t.orderNumber),1),s(`td`,null,p(t.customerName),1),s(`td`,null,p(t.companyName),1),s(`td`,null,[f(k,{status:t.status},null,8,[`status`])]),s(`td`,null,p(c(D)(t.createdAt)),1)]))),128))])])]),s(`div`,de,[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>c(y)&&c(y)(...e)},[x[6]||=h(` مشاهده همه سفارش‌ها `,-1),f(C,{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,[(e(!0),l(g,null,i(c(u),t=>(e(),l(`li`,{key:t.id,class:`dashboard__deadline-item`},[s(`span`,{class:a([`admin-badge`,{"admin-badge--danger":t.tone===`danger`,"admin-badge--warning":t.tone===`warning`,"admin-badge--neutral":t.tone===`neutral`}])},p(t.label),3),s(`span`,me,p(t.count)+` فقره`,1),s(`span`,he,p(c(E)(t.amount)),1)]))),128))]),s(`div`,ge,[f(S,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm`},{default:o(()=>[x[8]||=h(` مشاهده همه `,-1),f(C,{name:`chevron-left`,size:16})]),_:1})])])])])}}}),[[`__scopeId`,`data-v-bf2ebdae`]]),ve={class:`compact-dashboard page-shell`},ye={class:`flex justify-end mb-3`},be={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},xe={class:`compact-stats-grid`},Se={class:`admin-stat-card__label`},Ce={class:`admin-stat-card__value`},we={class:`admin-stat-card col-span-full`},$={class:`admin-stat-card__value`},Te={class:`text-xs font-semibold text-success`},Ee={class:`compact-section-grid`},De={class:`compact-section-card admin-panel`},Oe={class:`compact-section-card admin-panel`},ke={class:`admin-card-list`},Ae={class:`admin-card-item__header`},je={class:`admin-card-item__title`},Me={class:`admin-card-item__meta`},Ne={class:`compact-section-card admin-panel`},Pe={class:`m-0 p-0 list-none flex flex-col gap-2.5`},Fe={class:`mr-auto text-xs`},Ie=d({__name:`CompactDashboard`,setup(n){let{checkDeadlines:u,dashboardStats:d,recentOrders:_,salesChartData:v,chartAxisLabels:y,goOrders:b,statCards:x}=K();return(n,S)=>{let w=r(`RouterLink`);return e(),l(`div`,ve,[s(`div`,ye,[s(`button`,be,[f(C,{name:`calendar`,size:16}),S[1]||=h(` امروز `,-1)])]),s(`div`,xe,[(e(!0),l(g,null,i(c(x),n=>(e(),l(`div`,{key:n.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(C,{name:n.icon,size:20},null,8,[`name`])],4),s(`p`,Se,p(n.label),1),s(`p`,Ce,p(n.value),1),f(w,{to:n.link,class:`admin-stat-card__link`},{default:o(()=>[...S[2]||=[h(`مشاهده`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,we,[S[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,$,p(c(E)(c(d).todaySales)),1),s(`span`,Te,` +`+p(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)])]),s(`div`,Ee,[s(`section`,De,[f(H,{title:`فروش ماه جاری`,subtitle:c(E)(c(d).monthSales),data:c(v),labels:c(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,[(e(!0),l(g,null,i(c(_),t=>(e(),m(w,{key:t.id,to:`/orders`,class:`admin-card-item block no-underline text-inherit`},{default:o(()=>[s(`div`,Ae,[s(`p`,je,p(t.orderNumber),1),f(k,{status:t.status},null,8,[`status`])]),s(`div`,Me,[s(`span`,null,p(t.customerName),1),s(`span`,null,p(c(D)(t.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)=>c(b)&&c(b)(...e)},[S[4]||=h(` مشاهده همه سفارش‌ها `,-1),f(C,{name:`chevron-left`,size:16})])]),s(`section`,Ne,[S[7]||=s(`h2`,{class:`compact-section-card__title`},`سررسید چک‌ها`,-1),s(`ul`,Pe,[(e(!0),l(g,null,i(c(u),t=>(e(),l(`li`,{key:t.id,class:`flex flex-wrap items-center gap-2 text-sm`},[s(`span`,{class:a([`admin-badge`,{"admin-badge--danger":t.tone===`danger`,"admin-badge--warning":t.tone===`warning`,"admin-badge--neutral":t.tone===`neutral`}])},p(t.label),3),s(`span`,null,p(t.count)+` فقره`,1),s(`strong`,Fe,p(c(E)(t.amount)),1)]))),128))]),f(w,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm inline-flex mt-3 no-underline`},{default:o(()=>[S[6]||=h(` مشاهده همه `,-1),f(C,{name:`chevron-left`,size:16})]),_:1})])])])}}}),Le=d({__name:`DashboardView`,setup(t){return(t,n)=>(e(),l(g,null,[f(_e,{class:`desktop-only`}),f(Ie,{class:`compact-only`})],64))}});export{Le as default}; \ No newline at end of file diff --git a/dist/assets/InternalMessagesView-3aHnvpBW.js b/dist/assets/InternalMessagesView-DmrHtqcC.js similarity index 96% rename from dist/assets/InternalMessagesView-3aHnvpBW.js rename to dist/assets/InternalMessagesView-DmrHtqcC.js index ca68a0a..16f54ad 100644 --- a/dist/assets/InternalMessagesView-3aHnvpBW.js +++ b/dist/assets/InternalMessagesView-DmrHtqcC.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,ct as s,d as c,et as l,g as u,h as d,jt as f,l as p,m,r as h,s as g,t as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as v,d as y,t as b}from"./http-CTjL79ty.js";import{P as x,V as S,o as C,x as w}from"./index-DWlOII4H.js";import{t as T}from"./AdminPageSkeleton-DacAHji8.js";import{t as E}from"./BaseEmptyState-B6cM4bRM.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=_(u({__name:`InternalMessagesView`,setup(u){let _=x(),B=l([]),V=l(!0),H=l(!1),U=l(!1),W=l(null),G=v(),K=r({senderName:``,subject:``,preview:``,link:``}),q=g(()=>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 t(()=>{J()}),(t,r)=>(e(),c(`div`,D,[o(`div`,{class:`admin-page-header`},[r[6]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`پیام‌های داخلی`),o(`p`,{class:`admin-page-header__sub`},` پیام برای تیم پشتیبانی در آیکن نامه بالای پنل نمایش داده می‌شود. با کلیک روی پیام، در صورت تعیین لینک به همان صفحه می‌روید. `)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},`پیام جدید`)]),V.value?(e(),p(T,{key:0,variant:`table`})):B.value.length?(e(),c(`div`,O,[o(`table`,k,[r[7]||=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`,{class:`actions`},`عملیات`)])],-1),o(`tbody`,null,[(e(!0),c(h,null,n(B.value,t=>(e(),c(`tr`,{key:t.id},[o(`td`,null,[o(`strong`,null,f(t.subject),1)]),o(`td`,null,f(t.senderName),1),o(`td`,A,f(t.preview),1),o(`td`,j,f(t.link||`—`),1),o(`td`,null,f(s(C)(t.sentAt)),1),o(`td`,null,f(t.isRead?`بله`:`خیر`),1),o(`td`,M,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,N),o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>Q(t)},` حذف `,8,P)])]))),128))])])])):(e(),p(E,{key:1,title:`پیامی ثبت نشده`,description:`اولین پیام داخلی را برای تیم ارسال کنید.`},{default:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` پیام جدید `)]),_:1})),d(S,{open:U.value,title:q.value,size:`md`,onClose:r[5]||=e=>U.value=!1},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[4]||=e=>U.value=!1},`انصراف`),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:H.value,onClick:Z},f(H.value?`در حال ذخیره…`:`ذخیره`),9,z)]),default:i(()=>[o(`label`,F,[r[8]||=m(` نام فرستنده `,-1),a(o(`input`,{"onUpdate:modelValue":r[0]||=e=>K.senderName=e,type:`text`,class:`admin-input`},null,512),[[y,K.senderName]])]),o(`label`,I,[r[9]||=m(` موضوع `,-1),a(o(`input`,{"onUpdate:modelValue":r[1]||=e=>K.subject=e,type:`text`,class:`admin-input`},null,512),[[y,K.subject]])]),o(`label`,L,[r[10]||=m(` متن پیام (خلاصه در لیست نامه) `,-1),a(o(`textarea`,{"onUpdate:modelValue":r[2]||=e=>K.preview=e,class:`admin-input`,rows:`4`},null,512),[[y,K.preview]])]),o(`label`,R,[r[11]||=m(` لینک (اختیاری) `,-1),a(o(`input`,{"onUpdate:modelValue":r[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{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,ct as s,d as c,et as l,g as u,h as d,jt as f,l as p,m,r as h,s as g,t as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as v,d as y,t as b}from"./http-CTjL79ty.js";import{P as x,V as S,o as C,x as w}from"./index-BWgYBNME.js";import{t as T}from"./AdminPageSkeleton-DacAHji8.js";import{t as E}from"./BaseEmptyState-88fQ29rO.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=_(u({__name:`InternalMessagesView`,setup(u){let _=x(),B=l([]),V=l(!0),H=l(!1),U=l(!1),W=l(null),G=v(),K=r({senderName:``,subject:``,preview:``,link:``}),q=g(()=>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 t(()=>{J()}),(t,r)=>(e(),c(`div`,D,[o(`div`,{class:`admin-page-header`},[r[6]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`پیام‌های داخلی`),o(`p`,{class:`admin-page-header__sub`},` پیام برای تیم پشتیبانی در آیکن نامه بالای پنل نمایش داده می‌شود. با کلیک روی پیام، در صورت تعیین لینک به همان صفحه می‌روید. `)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},`پیام جدید`)]),V.value?(e(),p(T,{key:0,variant:`table`})):B.value.length?(e(),c(`div`,O,[o(`table`,k,[r[7]||=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`,{class:`actions`},`عملیات`)])],-1),o(`tbody`,null,[(e(!0),c(h,null,n(B.value,t=>(e(),c(`tr`,{key:t.id},[o(`td`,null,[o(`strong`,null,f(t.subject),1)]),o(`td`,null,f(t.senderName),1),o(`td`,A,f(t.preview),1),o(`td`,j,f(t.link||`—`),1),o(`td`,null,f(s(C)(t.sentAt)),1),o(`td`,null,f(t.isRead?`بله`:`خیر`),1),o(`td`,M,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,N),o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>Q(t)},` حذف `,8,P)])]))),128))])])])):(e(),p(E,{key:1,title:`پیامی ثبت نشده`,description:`اولین پیام داخلی را برای تیم ارسال کنید.`},{default:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` پیام جدید `)]),_:1})),d(S,{open:U.value,title:q.value,size:`md`,onClose:r[5]||=e=>U.value=!1},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:r[4]||=e=>U.value=!1},`انصراف`),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:H.value,onClick:Z},f(H.value?`در حال ذخیره…`:`ذخیره`),9,z)]),default:i(()=>[o(`label`,F,[r[8]||=m(` نام فرستنده `,-1),a(o(`input`,{"onUpdate:modelValue":r[0]||=e=>K.senderName=e,type:`text`,class:`admin-input`},null,512),[[y,K.senderName]])]),o(`label`,I,[r[9]||=m(` موضوع `,-1),a(o(`input`,{"onUpdate:modelValue":r[1]||=e=>K.subject=e,type:`text`,class:`admin-input`},null,512),[[y,K.subject]])]),o(`label`,L,[r[10]||=m(` متن پیام (خلاصه در لیست نامه) `,-1),a(o(`textarea`,{"onUpdate:modelValue":r[2]||=e=>K.preview=e,class:`admin-input`,rows:`4`},null,512),[[y,K.preview]])]),o(`label`,R,[r[11]||=m(` لینک (اختیاری) `,-1),a(o(`input`,{"onUpdate:modelValue":r[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-D6NkWOXN.js b/dist/assets/LevelsView-DIcXZhsN.js similarity index 96% rename from dist/assets/LevelsView-D6NkWOXN.js rename to dist/assets/LevelsView-DIcXZhsN.js index a37d81c..5670f8d 100644 --- a/dist/assets/LevelsView-D6NkWOXN.js +++ b/dist/assets/LevelsView-DIcXZhsN.js @@ -1,3 +1,3 @@ -import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as l,h as u,jt as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as _,d as v,t as y}from"./http-CTjL79ty.js";import{S as b,V as x}from"./index-DWlOII4H.js";import{t as S}from"./AdminPageSkeleton-DacAHji8.js";import{t as C}from"./BaseEmptyState-B6cM4bRM.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=c([]),N=c(!0),P=c(!1),F=c(null),I=_(),L=r({code:``,label:``,sortOrder:0,benefitsText:``}),R=h(()=>F.value?`ویرایش سطح`:`سطح جدید`);function z(e){return e.split(` +import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as l,h as u,jt as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as _,d as v,t as y}from"./http-CTjL79ty.js";import{S as b,V as x}from"./index-BWgYBNME.js";import{t as S}from"./AdminPageSkeleton-DacAHji8.js";import{t as C}from"./BaseEmptyState-88fQ29rO.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=c([]),N=c(!0),P=c(!1),F=c(null),I=_(),L=r({code:``,label:``,sortOrder:0,benefitsText:``}),R=h(()=>F.value?`ویرایش سطح`:`سطح جدید`);function z(e){return e.split(` `).map(e=>e.trim()).filter(Boolean).map(e=>({title:e}))}async function B(){N.value=!0;try{g.value=await b.list()}catch(e){I.error(e instanceof 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 b.update(F.value,e):await b.create(e),P.value=!1,I.success(`ذخیره شد`),await B()}catch(e){I.error(e instanceof y?e.message:`ذخیره ناموفق بود`)}}return t(()=>{B()}),(t,r)=>(e(),s(`div`,w,[o(`header`,{class:`admin-page__head`},[r[5]||=o(`div`,null,[o(`h1`,null,`سطوح و مزایای مشتری`),o(`p`,null,`تعریف Level داخلی CRM و مزایای هر سطح (نمایش فقط در ادمین)`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:V},`سطح جدید`)]),N.value?(e(),f(S,{key:0,variant:`table`})):g.value.length?(e(),s(`table`,T,[r[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`کد`),o(`th`,null,`عنوان`),o(`th`,null,`مزایا`),o(`th`,null,`مشتریان`),o(`th`)])],-1),o(`tbody`,null,[(e(!0),s(m,null,n(g.value,t=>(e(),s(`tr`,{key:t.id},[o(`td`,E,d(t.code),1),o(`td`,null,d(t.label),1),o(`td`,null,d(t.benefits.map(e=>e.title).join(`، `)||`—`),1),o(`td`,null,d(t.customersCount),1),o(`td`,null,[o(`button`,{type:`button`,class:`link`,onClick:e=>H(t)},`ویرایش`,8,D)])]))),128))])])):(e(),f(C,{key:1,title:`سطحی تعریف نشده`})),u(x,{open:P.value,title:R.value,onClose:r[4]||=e=>P.value=!1},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!L.code.trim()||!L.label.trim(),onClick:U},` ذخیره `,8,M)]),default:i(()=>[o(`label`,O,[r[7]||=p(`کد`,-1),a(o(`input`,{"onUpdate:modelValue":r[0]||=e=>L.code=e,class:`admin-input`,dir:`ltr`},null,512),[[v,L.code]])]),o(`label`,k,[r[8]||=p(`عنوان`,-1),a(o(`input`,{"onUpdate:modelValue":r[1]||=e=>L.label=e,class:`admin-input`},null,512),[[v,L.label]])]),o(`label`,A,[r[9]||=p(`ترتیب`,-1),a(o(`input`,{"onUpdate:modelValue":r[2]||=e=>L.sortOrder=e,type:`number`,class:`admin-input`},null,512),[[v,L.sortOrder,void 0,{number:!0}]])]),o(`label`,j,[r[10]||=p(` مزایا (هر خط یک مورد) `,-1),a(o(`textarea`,{"onUpdate:modelValue":r[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-DPf5yyji.js b/dist/assets/LoginView-CVnc757a.js similarity index 98% rename from dist/assets/LoginView-DPf5yyji.js rename to dist/assets/LoginView-CVnc757a.js index d1839b9..ee15e17 100644 --- a/dist/assets/LoginView-DPf5yyji.js +++ b/dist/assets/LoginView-CVnc757a.js @@ -1 +1 @@ -import{A as e,W as t,c as n,ct as r,d as i,et as a,g as o,h as s,jt as c,m as l,s as u,t as d,u as f}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as p,d as m,l as h,m as g,u as _}from"./http-CTjL79ty.js";import{F as v,I as y,L as b,P as x,R as S,z as C}from"./index-DWlOII4H.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(o({__name:`LoginView`,setup(o){let d=C(),U=S(),W=x(),G=p(),K=a(y()?v.phone:``),q=a(y()?v.password:``),J=a(!0),Y=a(!1),X=y(),Z=u(()=>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(a,o)=>(e(),i(`div`,w,[n(`div`,T,[n(`div`,E,[n(`div`,D,[o[8]||=n(`h2`,{class:`login-page__title`},`ورود به پنل مدیریت`,-1),o[9]||=n(`p`,{class:`login-page__subtitle`},`برای ادامه، اطلاعات حساب کاربری خود را وارد کنید.`,-1),r(X)?(e(),i(`p`,O,[o[6]||=l(` حالت موک فعال است — `,-1),n(`span`,k,c(r(v).phone),1),o[7]||=l(` / `,-1),n(`span`,A,c(r(v).password),1)])):f(``,!0)]),n(`form`,{class:`admin-form login-page__form`,onSubmit:g($,[`prevent`])},[r(W).error?(e(),i(`p`,j,c(r(W).error),1)):f(``,!0),n(`div`,M,[o[10]||=n(`label`,{for:`login-phone`},`شماره موبایل`,-1),n(`div`,N,[n(`span`,P,[s(b,{name:`phone`,size:18})]),t(n(`input`,{id:`login-phone`,"onUpdate:modelValue":o[0]||=e=>K.value=e,type:`tel`,class:`admin-input login-page__input`,placeholder:`۰۹۱۲۱۱۱۱۲۲۲۲`,autocomplete:`username`,inputmode:`tel`,dir:`ltr`,onInput:o[1]||=e=>r(W).clearError()},null,544),[[m,K.value]])])]),n(`div`,F,[o[11]||=n(`label`,{for:`login-password`},`رمز عبور`,-1),n(`div`,I,[n(`span`,L,[s(b,{name:`lock`,size:18})]),t(n(`input`,{id:`login-password`,"onUpdate:modelValue":o[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:o[3]||=e=>r(W).clearError()},null,40,R),[[_,q.value]]),n(`button`,{type:`button`,class:`login-page__toggle-password`,"aria-label":Y.value?`پنهان کردن رمز`:`نمایش رمز`,onClick:o[4]||=e=>Y.value=!Y.value},[s(b,{name:Y.value?`eye-off`:`eye`,size:18},null,8,[`name`])],8,z)])]),n(`label`,B,[t(n(`input`,{"onUpdate:modelValue":o[5]||=e=>J.value=e,type:`checkbox`},null,512),[[h,J.value]]),o[12]||=n(`span`,null,`مرا به خاطر بسپار`,-1)]),n(`button`,{type:`submit`,class:`admin-btn admin-btn--primary login-page__submit`,disabled:!Z.value||r(W).loading},[r(W).loading?(e(),i(`span`,H)):f(``,!0),o[13]||=l(` ورود به پنل `,-1)],8,V)],32)])]),n(`div`,{class:`login-page__brand`},[n(`div`,{class:`login-page__brand-inner`},[n(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`login-page__brand-logo`}),o[14]||=n(`p`,{class:`login-page__brand-badge`},`پارچه`,-1),o[15]||=n(`h1`,{class:`login-page__brand-title`},`پنل مدیریت سفارش‌های عمده`,-1),o[16]||=n(`p`,{class:`login-page__brand-text`},` مدیریت سفارش‌ها، مشتریان، قیمت‌گذاری، چک‌ها و گزارش‌های فروش در یک محیط یکپارچه. `,-1)])])]))}}),[[`__scopeId`,`data-v-e708878f`]]);export{U as default}; \ No newline at end of file +import{A as e,W as t,c as n,ct as r,d as i,et as a,g as o,h as s,jt as c,m as l,s as u,t as d,u as f}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as p,d as m,l as h,m as g,u as _}from"./http-CTjL79ty.js";import{F as v,I as y,L as b,P as x,R as S,z as C}from"./index-BWgYBNME.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(o({__name:`LoginView`,setup(o){let d=C(),U=S(),W=x(),G=p(),K=a(y()?v.phone:``),q=a(y()?v.password:``),J=a(!0),Y=a(!1),X=y(),Z=u(()=>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(a,o)=>(e(),i(`div`,w,[n(`div`,T,[n(`div`,E,[n(`div`,D,[o[8]||=n(`h2`,{class:`login-page__title`},`ورود به پنل مدیریت`,-1),o[9]||=n(`p`,{class:`login-page__subtitle`},`برای ادامه، اطلاعات حساب کاربری خود را وارد کنید.`,-1),r(X)?(e(),i(`p`,O,[o[6]||=l(` حالت موک فعال است — `,-1),n(`span`,k,c(r(v).phone),1),o[7]||=l(` / `,-1),n(`span`,A,c(r(v).password),1)])):f(``,!0)]),n(`form`,{class:`admin-form login-page__form`,onSubmit:g($,[`prevent`])},[r(W).error?(e(),i(`p`,j,c(r(W).error),1)):f(``,!0),n(`div`,M,[o[10]||=n(`label`,{for:`login-phone`},`شماره موبایل`,-1),n(`div`,N,[n(`span`,P,[s(b,{name:`phone`,size:18})]),t(n(`input`,{id:`login-phone`,"onUpdate:modelValue":o[0]||=e=>K.value=e,type:`tel`,class:`admin-input login-page__input`,placeholder:`۰۹۱۲۱۱۱۱۲۲۲۲`,autocomplete:`username`,inputmode:`tel`,dir:`ltr`,onInput:o[1]||=e=>r(W).clearError()},null,544),[[m,K.value]])])]),n(`div`,F,[o[11]||=n(`label`,{for:`login-password`},`رمز عبور`,-1),n(`div`,I,[n(`span`,L,[s(b,{name:`lock`,size:18})]),t(n(`input`,{id:`login-password`,"onUpdate:modelValue":o[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:o[3]||=e=>r(W).clearError()},null,40,R),[[_,q.value]]),n(`button`,{type:`button`,class:`login-page__toggle-password`,"aria-label":Y.value?`پنهان کردن رمز`:`نمایش رمز`,onClick:o[4]||=e=>Y.value=!Y.value},[s(b,{name:Y.value?`eye-off`:`eye`,size:18},null,8,[`name`])],8,z)])]),n(`label`,B,[t(n(`input`,{"onUpdate:modelValue":o[5]||=e=>J.value=e,type:`checkbox`},null,512),[[h,J.value]]),o[12]||=n(`span`,null,`مرا به خاطر بسپار`,-1)]),n(`button`,{type:`submit`,class:`admin-btn admin-btn--primary login-page__submit`,disabled:!Z.value||r(W).loading},[r(W).loading?(e(),i(`span`,H)):f(``,!0),o[13]||=l(` ورود به پنل `,-1)],8,V)],32)])]),n(`div`,{class:`login-page__brand`},[n(`div`,{class:`login-page__brand-inner`},[n(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`login-page__brand-logo`}),o[14]||=n(`p`,{class:`login-page__brand-badge`},`پارچه`,-1),o[15]||=n(`h1`,{class:`login-page__brand-title`},`پنل مدیریت سفارش‌های عمده`,-1),o[16]||=n(`p`,{class:`login-page__brand-text`},` مدیریت سفارش‌ها، مشتریان، قیمت‌گذاری، چک‌ها و گزارش‌های فروش در یک محیط یکپارچه. `,-1)])])]))}}),[[`__scopeId`,`data-v-e708878f`]]);export{U as default}; \ No newline at end of file diff --git a/dist/assets/OrderPricingView-Dk4I3rky.js b/dist/assets/OrderPricingView-qx1u60xK.js similarity index 98% rename from dist/assets/OrderPricingView-Dk4I3rky.js rename to dist/assets/OrderPricingView-qx1u60xK.js index b0d59a7..49c0ed4 100644 --- a/dist/assets/OrderPricingView-Dk4I3rky.js +++ b/dist/assets/OrderPricingView-qx1u60xK.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Q as r,U as i,V as ee,W as a,c as o,ct as s,d as c,et as l,g as te,h as u,jt as d,l as ne,m as f,r as p,s as m,t as h,u as g}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,d as _,m as ie,t as v}from"./http-CTjL79ty.js";import{B as y,C as ae,E as oe,L as b,R as se,T as x,V as ce,c as S,i as C,z as le}from"./index-DWlOII4H.js";import{t as ue}from"./AdminPageSkeleton-DacAHji8.js";import{t as de}from"./AdminSelect-CWMyO8tk.js";import{r as fe}from"./orderStatus-CeC05Cv4.js";import{t as pe}from"./StatusBadge-BkaoX2rz.js";import{t as w}from"./AdminCurrencyInput-iQrtrYek.js";var me={class:`pricing-page`},he={class:`admin-page-header`},ge={class:`admin-action-group`},_e=[`disabled`],ve=[`disabled`],ye={class:`pricing-page__summary admin-card`},be={class:`pricing-page__order-meta`},xe={class:`pricing-page__order-id`},Se={class:`pricing-page__customer`},Ce={class:`admin-summary-grid`},we={class:`admin-summary-item`},Te={class:`admin-summary-item__value`},Ee={class:`admin-summary-item`},De={class:`admin-summary-item__value`},T={class:`admin-summary-item`},E={class:`admin-summary-item__value`},Oe={class:`pricing-page__table admin-card desktop-only`},ke={class:`admin-table-wrap`},Ae={class:`admin-table`},je=[`onUpdate:modelValue`],Me=[`onClick`],Ne={class:`compact-only admin-card-list pricing-page__compact-items`},Pe={class:`admin-card-item__header`},Fe={class:`admin-card-item__title`},Ie={class:`pricing-page__item-index`},Le={class:`admin-card-item__meta`},Re={key:0},ze={class:`pricing-page__compact-fields`},Be=[`onUpdate:modelValue`],Ve={key:0,class:`pricing-page__line-total`},He={class:`admin-card-item__actions`},Ue=[`onClick`],We={class:`admin-form-grid`},Ge={class:`admin-form-field`},Ke={class:`admin-form-field`},qe={class:`admin-footer-actions`},Je=[`disabled`],Ye=[`disabled`],D={class:`pricing-page__invoice-hint`},Xe={key:0,class:`admin-form__error`,role:`alert`},Ze={class:`admin-form__field`},Qe={class:`admin-form__row`},$e={class:`admin-form__field`},et={class:`admin-form__field`},tt=[`disabled`],O=h(te({__name:`OrderPricingView`,setup(te){let h=se(),O=le(),k=re(),A=l(null),j=l([]),M=l(0),N=l(``),P=l(!1),F=l(``),I=l(!1),L=l(!1),R=l(!0),z=l([]),B=l([]),V=()=>({productId:``,requestedMeterage:50,confirmedMeterage:50}),H=r(V()),nt=m(()=>z.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=m(()=>H.productId.length>0&&H.requestedMeterage>0),W=m(()=>A.value?ae(A.value):null),G=m(()=>A.value?!fe.includes(A.value.status):!1),K=m(()=>!!A.value?.finalAmount&&!G.value);async function rt(){R.value=!0;try{let e=await x.get(String(h.params.id));A.value=e,j.value=(e.items??[]).map(q),M.value=e.shippingCost??0,B.value=[],z.value=await oe.list({activeOnly:!0})}catch(e){k.error(e instanceof v?e.message:`بارگذاری سفارش انجام نشد.`)}finally{R.value=!1}}t(()=>{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 y({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))}ee(()=>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 x.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 y({title:`ارسال فاکتور برای مشتری`,message:`فاکتور ${C(A.value.finalAmount)} برای مشتری ارسال می‌شود و او روش تسویه را انتخاب می‌کند. ادامه می‌دهید؟`,confirmLabel:`ارسال فاکتور`,cancelLabel:`انصراف`})){L.value=!0;try{let e=await x.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(t,r)=>(e(),c(`div`,me,[o(`div`,he,[r[5]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`قیمت‌گذاری سفارش`)],-1),o(`div`,ge,[o(`button`,{type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:I.value||R.value,onClick:Q},d(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,_e),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!K.value||L.value||I.value,onClick:$},d(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,ve),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:it},` بازگشت `)])]),R.value?(e(),ne(ue,{key:0,variant:`detail`})):W.value?(e(),c(p,{key:1},[o(`div`,ye,[o(`div`,be,[o(`div`,null,[o(`strong`,xe,d(W.value.orderNumber),1),o(`p`,Se,d(W.value.customerName),1),u(pe,{status:W.value.status},null,8,[`status`])])]),o(`div`,Ce,[o(`div`,we,[r[6]||=o(`p`,{class:`admin-summary-item__label`},`مجموع مبلغ`,-1),o(`p`,Te,d(W.value.totalAmount?s(C)(W.value.totalAmount):`—`),1)]),o(`div`,Ee,[r[7]||=o(`p`,{class:`admin-summary-item__label`},`هزینه حمل`,-1),o(`p`,De,d(s(C)(M.value)),1)]),o(`div`,T,[r[8]||=o(`p`,{class:`admin-summary-item__label`},`مبلغ نهایی`,-1),o(`p`,E,d(A.value?.finalAmount?s(C)(A.value.finalAmount):`—`),1)])])]),o(`div`,Oe,[o(`div`,ke,[o(`table`,Ae,[r[9]||=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,[(e(!0),c(p,null,n(j.value,(t,n)=>(e(),c(`tr`,{key:t.id},[o(`td`,null,d(n+1),1),o(`td`,null,d(t.companyName||A.value?.companyName||`—`),1),o(`td`,null,d(t.catalogCode),1),o(`td`,null,d(t.productName),1),o(`td`,null,d(t.color),1),o(`td`,null,d(s(S)(t.requestedMeterage)),1),o(`td`,null,[a(o(`input`,{"onUpdate:modelValue":e=>t.confirmedMeterage=e,type:`number`,class:`admin-input admin-input--sm`},null,8,je),[[_,t.confirmedMeterage,void 0,{number:!0}]])]),o(`td`,null,[u(w,{modelValue:t.supplyPrice,"onUpdate:modelValue":e=>t.supplyPrice=e,"input-class":`admin-input admin-input--sm`,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`td`,null,d(t.totalAmount?s(C)(t.totalAmount):`—`),1),o(`td`,null,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>J(t.id)},` حذف `,8,Me)])]))),128))])])]),o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost pricing-page__add-btn`,onClick:Y},[u(b,{name:`products`,size:16}),r[10]||=f(` افزودن محصول `,-1)])]),o(`div`,Ne,[(e(!0),c(p,null,n(j.value,(t,n)=>(e(),c(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,Pe,[o(`p`,Fe,d(t.productName),1),o(`span`,Ie,`#`+d(n+1),1)]),o(`div`,Le,[t.companyName||A.value?.companyName?(e(),c(`span`,Re,d(t.companyName||A.value?.companyName),1)):g(``,!0),o(`span`,null,`کالیته `+d(t.catalogCode),1),o(`span`,null,d(t.color),1),o(`span`,null,`درخواست: `+d(s(S)(t.requestedMeterage))+` متر`,1)]),o(`div`,ze,[o(`label`,null,[r[11]||=f(` متراژ تأیید شده `,-1),a(o(`input`,{"onUpdate:modelValue":e=>t.confirmedMeterage=e,type:`number`,class:`admin-input`},null,8,Be),[[_,t.confirmedMeterage,void 0,{number:!0}]])]),o(`label`,null,[r[12]||=f(` قیمت هر متر (تومان) `,-1),u(w,{modelValue:t.supplyPrice,"onUpdate:modelValue":e=>t.supplyPrice=e,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),t.totalAmount?(e(),c(`p`,Ve,` مبلغ کل: `+d(s(C)(t.totalAmount)),1)):g(``,!0)]),o(`div`,He,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>J(t.id)},` حذف `,8,Ue)])]))),128)),o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost`,onClick:Y},[u(b,{name:`products`,size:16}),r[13]||=f(` افزودن محصول `,-1)])]),o(`div`,We,[o(`div`,Ge,[r[14]||=o(`label`,null,`هزینه حمل (تومان)`,-1),u(w,{modelValue:M.value,"onUpdate:modelValue":r[0]||=e=>M.value=e,"allow-empty":!1},null,8,[`modelValue`])]),o(`div`,Ke,[r[15]||=o(`label`,null,`توضیحات برای مشتری`,-1),a(o(`textarea`,{"onUpdate:modelValue":r[1]||=e=>N.value=e,placeholder:`توضیحات خود را وارد کنید...`},null,512),[[_,N.value]])])]),o(`div`,qe,[o(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:I.value,onClick:Q},d(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,Je),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||L.value||I.value,onClick:$},d(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,Ye)]),o(`p`,D,[G.value?(e(),c(p,{key:0},[f(` فاکتور این سفارش برای مشتری ارسال شده است؛ انتخاب روش تسویه در اختیار اوست. `)],64)):K.value?(e(),c(p,{key:1},[f(` مبلغ نهایی آماده است. با ارسال فاکتور، مشتری برای انتخاب نقدی یا چک مطلع می‌شود. `)],64)):(e(),c(p,{key:2},[f(` ابتدا قیمت واحد اقلام و هزینه حمل را ذخیره کنید تا مبلغ نهایی فاکتور ساخته شود. `)],64))])],64)):g(``,!0),u(ce,{open:P.value,title:`افزودن محصول`,size:`lg`,onClose:X},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!U.value,onClick:Z},` افزودن به سفارش `,8,tt)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:ie(Z,[`prevent`])},[F.value?(e(),c(`p`,Xe,d(F.value),1)):g(``,!0),o(`div`,Ze,[r[16]||=o(`label`,null,[f(`محصول `),o(`span`,{class:`admin-form__required`},`*`)],-1),u(de,{modelValue:H.productId,"onUpdate:modelValue":r[2]||=e=>H.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:nt.value},null,8,[`modelValue`,`options`])]),o(`div`,Qe,[o(`div`,$e,[r[17]||=o(`label`,{for:`requested-meterage`},[f(` متراژ درخواستی `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`requested-meterage`,"onUpdate:modelValue":r[3]||=e=>H.requestedMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,H.requestedMeterage,void 0,{number:!0}]])]),o(`div`,et,[r[18]||=o(`label`,{for:`confirmed-meterage`},`متراژ تأیید شده`,-1),a(o(`input`,{id:`confirmed-meterage`,"onUpdate:modelValue":r[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 +import{A as e,D as t,N as n,Q as r,U as i,V as ee,W as a,c as o,ct as s,d as c,et as l,g as te,h as u,jt as d,l as ne,m as f,r as p,s as m,t as h,u as g}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,d as _,m as ie,t as v}from"./http-CTjL79ty.js";import{B as y,C as ae,E as oe,L as b,R as se,T as x,V as ce,c as S,i as C,z as le}from"./index-BWgYBNME.js";import{t as ue}from"./AdminPageSkeleton-DacAHji8.js";import{t as de}from"./AdminSelect-hgn_nYC2.js";import{r as fe}from"./orderStatus-CeC05Cv4.js";import{t as pe}from"./StatusBadge-BkaoX2rz.js";import{t as w}from"./AdminCurrencyInput-CpWvBhwh.js";var me={class:`pricing-page`},he={class:`admin-page-header`},ge={class:`admin-action-group`},_e=[`disabled`],ve=[`disabled`],ye={class:`pricing-page__summary admin-card`},be={class:`pricing-page__order-meta`},xe={class:`pricing-page__order-id`},Se={class:`pricing-page__customer`},Ce={class:`admin-summary-grid`},we={class:`admin-summary-item`},Te={class:`admin-summary-item__value`},Ee={class:`admin-summary-item`},De={class:`admin-summary-item__value`},T={class:`admin-summary-item`},E={class:`admin-summary-item__value`},Oe={class:`pricing-page__table admin-card desktop-only`},ke={class:`admin-table-wrap`},Ae={class:`admin-table`},je=[`onUpdate:modelValue`],Me=[`onClick`],Ne={class:`compact-only admin-card-list pricing-page__compact-items`},Pe={class:`admin-card-item__header`},Fe={class:`admin-card-item__title`},Ie={class:`pricing-page__item-index`},Le={class:`admin-card-item__meta`},Re={key:0},ze={class:`pricing-page__compact-fields`},Be=[`onUpdate:modelValue`],Ve={key:0,class:`pricing-page__line-total`},He={class:`admin-card-item__actions`},Ue=[`onClick`],We={class:`admin-form-grid`},Ge={class:`admin-form-field`},Ke={class:`admin-form-field`},qe={class:`admin-footer-actions`},Je=[`disabled`],Ye=[`disabled`],D={class:`pricing-page__invoice-hint`},Xe={key:0,class:`admin-form__error`,role:`alert`},Ze={class:`admin-form__field`},Qe={class:`admin-form__row`},$e={class:`admin-form__field`},et={class:`admin-form__field`},tt=[`disabled`],O=h(te({__name:`OrderPricingView`,setup(te){let h=se(),O=le(),k=re(),A=l(null),j=l([]),M=l(0),N=l(``),P=l(!1),F=l(``),I=l(!1),L=l(!1),R=l(!0),z=l([]),B=l([]),V=()=>({productId:``,requestedMeterage:50,confirmedMeterage:50}),H=r(V()),nt=m(()=>z.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=m(()=>H.productId.length>0&&H.requestedMeterage>0),W=m(()=>A.value?ae(A.value):null),G=m(()=>A.value?!fe.includes(A.value.status):!1),K=m(()=>!!A.value?.finalAmount&&!G.value);async function rt(){R.value=!0;try{let e=await x.get(String(h.params.id));A.value=e,j.value=(e.items??[]).map(q),M.value=e.shippingCost??0,B.value=[],z.value=await oe.list({activeOnly:!0})}catch(e){k.error(e instanceof v?e.message:`بارگذاری سفارش انجام نشد.`)}finally{R.value=!1}}t(()=>{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 y({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))}ee(()=>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 x.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 y({title:`ارسال فاکتور برای مشتری`,message:`فاکتور ${C(A.value.finalAmount)} برای مشتری ارسال می‌شود و او روش تسویه را انتخاب می‌کند. ادامه می‌دهید؟`,confirmLabel:`ارسال فاکتور`,cancelLabel:`انصراف`})){L.value=!0;try{let e=await x.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(t,r)=>(e(),c(`div`,me,[o(`div`,he,[r[5]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`قیمت‌گذاری سفارش`)],-1),o(`div`,ge,[o(`button`,{type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:I.value||R.value,onClick:Q},d(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,_e),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!K.value||L.value||I.value,onClick:$},d(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,ve),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:it},` بازگشت `)])]),R.value?(e(),ne(ue,{key:0,variant:`detail`})):W.value?(e(),c(p,{key:1},[o(`div`,ye,[o(`div`,be,[o(`div`,null,[o(`strong`,xe,d(W.value.orderNumber),1),o(`p`,Se,d(W.value.customerName),1),u(pe,{status:W.value.status},null,8,[`status`])])]),o(`div`,Ce,[o(`div`,we,[r[6]||=o(`p`,{class:`admin-summary-item__label`},`مجموع مبلغ`,-1),o(`p`,Te,d(W.value.totalAmount?s(C)(W.value.totalAmount):`—`),1)]),o(`div`,Ee,[r[7]||=o(`p`,{class:`admin-summary-item__label`},`هزینه حمل`,-1),o(`p`,De,d(s(C)(M.value)),1)]),o(`div`,T,[r[8]||=o(`p`,{class:`admin-summary-item__label`},`مبلغ نهایی`,-1),o(`p`,E,d(A.value?.finalAmount?s(C)(A.value.finalAmount):`—`),1)])])]),o(`div`,Oe,[o(`div`,ke,[o(`table`,Ae,[r[9]||=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,[(e(!0),c(p,null,n(j.value,(t,n)=>(e(),c(`tr`,{key:t.id},[o(`td`,null,d(n+1),1),o(`td`,null,d(t.companyName||A.value?.companyName||`—`),1),o(`td`,null,d(t.catalogCode),1),o(`td`,null,d(t.productName),1),o(`td`,null,d(t.color),1),o(`td`,null,d(s(S)(t.requestedMeterage)),1),o(`td`,null,[a(o(`input`,{"onUpdate:modelValue":e=>t.confirmedMeterage=e,type:`number`,class:`admin-input admin-input--sm`},null,8,je),[[_,t.confirmedMeterage,void 0,{number:!0}]])]),o(`td`,null,[u(w,{modelValue:t.supplyPrice,"onUpdate:modelValue":e=>t.supplyPrice=e,"input-class":`admin-input admin-input--sm`,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),o(`td`,null,d(t.totalAmount?s(C)(t.totalAmount):`—`),1),o(`td`,null,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>J(t.id)},` حذف `,8,Me)])]))),128))])])]),o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost pricing-page__add-btn`,onClick:Y},[u(b,{name:`products`,size:16}),r[10]||=f(` افزودن محصول `,-1)])]),o(`div`,Ne,[(e(!0),c(p,null,n(j.value,(t,n)=>(e(),c(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,Pe,[o(`p`,Fe,d(t.productName),1),o(`span`,Ie,`#`+d(n+1),1)]),o(`div`,Le,[t.companyName||A.value?.companyName?(e(),c(`span`,Re,d(t.companyName||A.value?.companyName),1)):g(``,!0),o(`span`,null,`کالیته `+d(t.catalogCode),1),o(`span`,null,d(t.color),1),o(`span`,null,`درخواست: `+d(s(S)(t.requestedMeterage))+` متر`,1)]),o(`div`,ze,[o(`label`,null,[r[11]||=f(` متراژ تأیید شده `,-1),a(o(`input`,{"onUpdate:modelValue":e=>t.confirmedMeterage=e,type:`number`,class:`admin-input`},null,8,Be),[[_,t.confirmedMeterage,void 0,{number:!0}]])]),o(`label`,null,[r[12]||=f(` قیمت هر متر (تومان) `,-1),u(w,{modelValue:t.supplyPrice,"onUpdate:modelValue":e=>t.supplyPrice=e,placeholder:`—`},null,8,[`modelValue`,`onUpdate:modelValue`])]),t.totalAmount?(e(),c(`p`,Ve,` مبلغ کل: `+d(s(C)(t.totalAmount)),1)):g(``,!0)]),o(`div`,He,[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>J(t.id)},` حذف `,8,Ue)])]))),128)),o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost`,onClick:Y},[u(b,{name:`products`,size:16}),r[13]||=f(` افزودن محصول `,-1)])]),o(`div`,We,[o(`div`,Ge,[r[14]||=o(`label`,null,`هزینه حمل (تومان)`,-1),u(w,{modelValue:M.value,"onUpdate:modelValue":r[0]||=e=>M.value=e,"allow-empty":!1},null,8,[`modelValue`])]),o(`div`,Ke,[r[15]||=o(`label`,null,`توضیحات برای مشتری`,-1),a(o(`textarea`,{"onUpdate:modelValue":r[1]||=e=>N.value=e,placeholder:`توضیحات خود را وارد کنید...`},null,512),[[_,N.value]])])]),o(`div`,qe,[o(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:I.value,onClick:Q},d(I.value?`در حال ذخیره…`:`ذخیره قیمت‌گذاری`),9,Je),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||L.value||I.value,onClick:$},d(L.value?`در حال ارسال…`:`ارسال فاکتور برای مشتری`),9,Ye)]),o(`p`,D,[G.value?(e(),c(p,{key:0},[f(` فاکتور این سفارش برای مشتری ارسال شده است؛ انتخاب روش تسویه در اختیار اوست. `)],64)):K.value?(e(),c(p,{key:1},[f(` مبلغ نهایی آماده است. با ارسال فاکتور، مشتری برای انتخاب نقدی یا چک مطلع می‌شود. `)],64)):(e(),c(p,{key:2},[f(` ابتدا قیمت واحد اقلام و هزینه حمل را ذخیره کنید تا مبلغ نهایی فاکتور ساخته شود. `)],64))])],64)):g(``,!0),u(ce,{open:P.value,title:`افزودن محصول`,size:`lg`,onClose:X},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},` انصراف `),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!U.value,onClick:Z},` افزودن به سفارش `,8,tt)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:ie(Z,[`prevent`])},[F.value?(e(),c(`p`,Xe,d(F.value),1)):g(``,!0),o(`div`,Ze,[r[16]||=o(`label`,null,[f(`محصول `),o(`span`,{class:`admin-form__required`},`*`)],-1),u(de,{modelValue:H.productId,"onUpdate:modelValue":r[2]||=e=>H.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:nt.value},null,8,[`modelValue`,`options`])]),o(`div`,Qe,[o(`div`,$e,[r[17]||=o(`label`,{for:`requested-meterage`},[f(` متراژ درخواستی `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`requested-meterage`,"onUpdate:modelValue":r[3]||=e=>H.requestedMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[_,H.requestedMeterage,void 0,{number:!0}]])]),o(`div`,et,[r[18]||=o(`label`,{for:`confirmed-meterage`},`متراژ تأیید شده`,-1),a(o(`input`,{id:`confirmed-meterage`,"onUpdate:modelValue":r[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/OrdersView-pnWnD3c9.css b/dist/assets/OrdersView-BvKCgD_N.css similarity index 79% rename from dist/assets/OrdersView-pnWnD3c9.css rename to dist/assets/OrdersView-BvKCgD_N.css index 7e92b00..7bbe78e 100644 --- a/dist/assets/OrdersView-pnWnD3c9.css +++ b/dist/assets/OrdersView-BvKCgD_N.css @@ -1 +1 @@ -.order-detail[data-v-bef42197]{flex-direction:column;gap:16px;display:flex}.order-detail__hero[data-v-bef42197]{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-bef42197]{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:0;font-size:1rem;display:flex}.order-detail__id strong[data-v-bef42197]{line-height:1.3}.order-detail__raw-status[data-v-bef42197]{color:var(--color-text-muted);margin:0;font-size:.75rem}.order-detail__actions[data-v-bef42197]{flex-wrap:wrap;gap:8px;display:flex}.order-detail__actions .admin-btn[data-v-bef42197]{min-height:40px}.order-detail__panels[data-v-bef42197]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.order-detail__section[data-v-bef42197]{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-bef42197]{color:var(--color-text);margin:0 0 12px;font-size:.8125rem;font-weight:700}.order-detail__info[data-v-bef42197]{gap:10px;display:grid}.order-detail__info-row[data-v-bef42197]{grid-template-columns:auto minmax(72px,auto) 1fr;align-items:center;gap:8px;font-size:.8125rem;display:grid}.order-detail__info-row[data-v-bef42197]:not(:has(svg)){grid-template-columns:minmax(72px,auto) 1fr}.order-detail__info-label[data-v-bef42197]{color:var(--color-text-muted)}.order-detail__info-value[data-v-bef42197]{color:var(--color-text);word-break:break-word;font-weight:600}.order-detail__info-value--phone[data-v-bef42197]{text-align:right;justify-self:stretch}.order-detail__table[data-v-bef42197]{overflow-x:auto}.order-detail__items[data-v-bef42197]{gap:8px;margin:0;padding:0;list-style:none;display:grid}.order-detail__item[data-v-bef42197]{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-bef42197]{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:.875rem;display:flex}.order-detail__item-head span[data-v-bef42197]{color:var(--color-text-muted);font-size:.75rem}.order-detail__item-meta[data-v-bef42197]{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 12px;font-size:.75rem;display:flex}.order-detail__item-total[data-v-bef42197]{color:var(--color-text);margin-inline-start:auto;font-weight:700}.order-detail__receipt[data-v-bef42197]{flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;display:flex}.order-detail__receipt-thumb[data-v-bef42197]{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-bef42197]{object-fit:cover;width:120px;height:120px;display:block}.order-detail__status .order-detail__section-title[data-v-bef42197]{margin:0 0 8px}.order-detail__status-hint[data-v-bef42197]{color:var(--color-text-muted);margin:0 0 12px;font-size:.75rem;line-height:1.7}.order-detail__status-form[data-v-bef42197]{gap:12px;display:grid}@media (width<=639px){.order-detail__panels[data-v-bef42197]{grid-template-columns:1fr}.order-detail__hero[data-v-bef42197]{flex-direction:column}.order-detail__actions[data-v-bef42197]{width:100%}.order-detail__actions .admin-btn[data-v-bef42197]{flex:1}}.orders-page[data-v-15016f85]{min-height:calc(100dvh - var(--header-height) - 48px)}.orders-page__list-panel[data-v-15016f85]{min-width:0;padding:20px}.orders-page__list-header[data-v-15016f85]{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.orders-page__list-title[data-v-15016f85]{margin:0;font-size:1.125rem;font-weight:700}.orders-page__list-actions[data-v-15016f85]{gap:8px;display:flex}.orders-page__search[data-v-15016f85]{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-15016f85]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.orders-page__actions-cell[data-v-15016f85]{width:48px}.orders-page__more-btn[data-v-15016f85]{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-15016f85]:hover,.orders-page__more-btn[aria-expanded=true][data-v-15016f85]{color:var(--color-text);background:var(--color-border-light)}.admin-table tbody tr[data-v-15016f85]{cursor:pointer}.admin-table tbody tr.is-selected[data-v-15016f85]{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} +.order-detail[data-v-bef42197]{flex-direction:column;gap:16px;display:flex}.order-detail__hero[data-v-bef42197]{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-bef42197]{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:0;font-size:1rem;display:flex}.order-detail__id strong[data-v-bef42197]{line-height:1.3}.order-detail__raw-status[data-v-bef42197]{color:var(--color-text-muted);margin:0;font-size:.75rem}.order-detail__actions[data-v-bef42197]{flex-wrap:wrap;gap:8px;display:flex}.order-detail__actions .admin-btn[data-v-bef42197]{min-height:40px}.order-detail__panels[data-v-bef42197]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.order-detail__section[data-v-bef42197]{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-bef42197]{color:var(--color-text);margin:0 0 12px;font-size:.8125rem;font-weight:700}.order-detail__info[data-v-bef42197]{gap:10px;display:grid}.order-detail__info-row[data-v-bef42197]{grid-template-columns:auto minmax(72px,auto) 1fr;align-items:center;gap:8px;font-size:.8125rem;display:grid}.order-detail__info-row[data-v-bef42197]:not(:has(svg)){grid-template-columns:minmax(72px,auto) 1fr}.order-detail__info-label[data-v-bef42197]{color:var(--color-text-muted)}.order-detail__info-value[data-v-bef42197]{color:var(--color-text);word-break:break-word;font-weight:600}.order-detail__info-value--phone[data-v-bef42197]{text-align:right;justify-self:stretch}.order-detail__table[data-v-bef42197]{overflow-x:auto}.order-detail__items[data-v-bef42197]{gap:8px;margin:0;padding:0;list-style:none;display:grid}.order-detail__item[data-v-bef42197]{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-bef42197]{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:.875rem;display:flex}.order-detail__item-head span[data-v-bef42197]{color:var(--color-text-muted);font-size:.75rem}.order-detail__item-meta[data-v-bef42197]{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 12px;font-size:.75rem;display:flex}.order-detail__item-total[data-v-bef42197]{color:var(--color-text);margin-inline-start:auto;font-weight:700}.order-detail__receipt[data-v-bef42197]{flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;display:flex}.order-detail__receipt-thumb[data-v-bef42197]{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-bef42197]{object-fit:cover;width:120px;height:120px;display:block}.order-detail__status .order-detail__section-title[data-v-bef42197]{margin:0 0 8px}.order-detail__status-hint[data-v-bef42197]{color:var(--color-text-muted);margin:0 0 12px;font-size:.75rem;line-height:1.7}.order-detail__status-form[data-v-bef42197]{gap:12px;display:grid}@media (width<=639px){.order-detail__panels[data-v-bef42197]{grid-template-columns:1fr}.order-detail__hero[data-v-bef42197]{flex-direction:column}.order-detail__actions[data-v-bef42197]{width:100%}.order-detail__actions .admin-btn[data-v-bef42197]{flex:1}}.orders-page[data-v-14d7f12e]{min-height:calc(100dvh - var(--header-height) - 48px)}.orders-page__list-panel[data-v-14d7f12e]{min-width:0;padding:20px}.orders-page__list-header[data-v-14d7f12e]{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.orders-page__list-title[data-v-14d7f12e]{margin:0;font-size:1.125rem;font-weight:700}.orders-page__list-actions[data-v-14d7f12e]{gap:8px;display:flex}.orders-page__search[data-v-14d7f12e]{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-14d7f12e]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.orders-page__actions-cell[data-v-14d7f12e]{width:48px}.orders-page__more-btn[data-v-14d7f12e]{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-14d7f12e]:hover,.orders-page__more-btn[aria-expanded=true][data-v-14d7f12e]{color:var(--color-text);background:var(--color-border-light)}.admin-table tbody tr[data-v-14d7f12e]{cursor:pointer}.admin-table tbody tr.is-selected[data-v-14d7f12e]{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-49533541]{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-49533541]{color:var(--color-text-muted);align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;display:flex}.orders-page__search-input[data-v-49533541]{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.admin-btn--filter-active[data-v-49533541]{border-color:var(--color-primary);color:var(--color-primary)}.compact-orders__filter-dot[data-v-49533541]{background:var(--color-primary);border-radius:50%;width:6px;height:6px}.compact-orders__filter-chip[data-v-49533541]{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-49533541]{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-49533541]{flex-direction:column;gap:6px;display:flex}.compact-orders__filter-option[data-v-49533541]{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-49533541]{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-49533541]{font-size:.875rem}.admin-card-item[data-v-49533541]{cursor:pointer;text-align:right}.admin-detail-panel__inner[data-v-49533541]{background:var(--color-bg);flex-direction:column;height:100%;display:flex}@media (width>=768px){.compact-orders__mobile-panel[data-v-49533541]{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-CFhbQhLd.js b/dist/assets/OrdersView-CFhbQhLd.js deleted file mode 100644 index ef69ec5..0000000 --- a/dist/assets/OrdersView-CFhbQhLd.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,At as t,D as n,N as r,O as i,Ot as a,Q as o,U as s,V as c,W as l,Y as u,a as d,c as f,ct as p,d as m,et as h,g,h as _,j as v,jt as y,l as b,m as x,p as S,r as C,s as w,t as T,u as E,w as D,x as O}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as k,d as A,m as j,t as M}from"./http-CTjL79ty.js";import{C as N,D as P,E as F,L as I,N as L,R,T as z,V as B,c as V,i as H,o as ee,s as U,v as W,y as G,z as K}from"./index-DWlOII4H.js";import{t as q}from"./AdminSelect-CWMyO8tk.js";import{t as J}from"./AdminImageLightbox-BbQANbIb.js";import{i as Y,n as X}from"./adminLabels-jYlObVqa.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-BkaoX2rz.js";var ae=new Set([`awaiting_cash_payment`,`cash_invoice_issued`,`cash_in_progress`,`cash_payment_submitted`,`awaiting_cash_confirmation`]);function oe(e){return e?e===`check`?`چکی`:e===`cash_check`?`نقدی-چکی`:`نقدی`:`انتخاب‌نشده`}function se(e){let t=e.settlementMethod;return t?t===`cash`?e.rawStatus!==`cash_confirmed`:t===`cash_check`&&!!e.rawStatus&&ae.has(e.rawStatus):!1}function ce(e){let t=e.settlementMethod;return t===`check`||t===`cash_check`&&!!e.rawStatus&&!ae.has(e.rawStatus)}function le(){let e=R(),t=K(),r=k(),i=h([]),a=h([]),s=new Set(Z.map(e=>e.key));function l(){let t=typeof e.query.tab==`string`?e.query.tab:``;return s.has(t)?t:`all`}let u=h([]),d=h(l()),f=h(``),p=h(``),m=h(!1),g=h(!1),_=h(!1),v=h(``),y=h(!1),b=()=>({customerId:``,customerName:``,customerPhone:``,items:[]}),x=o(b()),S=w(()=>x.customerId.length>0&&x.items.length>0),C=w(()=>{let e=[...a.value];return e.sort((e,t)=>Number(t.isActive)-Number(e.isActive)||e.name.localeCompare(t.name,`fa`)),e});function T(e){let t=a.value.find(t=>t.id===e);x.customerId=e,x.customerName=t?.name??``,x.customerPhone=t?.phone??``}async function E(){try{a.value=await G.list()}catch(e){r.error(e instanceof M?e.message:`بارگذاری مشتریان انجام نشد.`)}}let D=w(()=>{let e=u.value;if(d.value!==`all`&&(e=e.filter(e=>e.status===d.value)),p.value.trim()){let t=p.value.trim();e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t))}return e}),O=w(()=>u.value.find(e=>e.id===f.value)??null);function A(e){let t=e.trim();if(t)return u.value.find(e=>e.id===t||e.orderNumber.toUpperCase()===t.toUpperCase())}async function j(){let n=typeof e.query.order==`string`?e.query.order:``;if(!n||!u.value.length)return;let r=A(n);if(!r){p.value=n;return}let i=typeof e.query.focus==`string`?e.query.focus:``;if(i===`pricing`){await t.replace(`/orders/${r.id}/pricing`);return}if(i===`checks`){await t.replace(`/orders/${r.id}/checks`);return}I(r),p.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)),i.value=t,a.value=n,await j()}catch(e){r.error(e instanceof M?e.message:`بارگذاری سفارش‌ها انجام نشد.`)}}n(()=>{P()}),c(()=>[e.query.order,e.query.focus],()=>{j()}),c(()=>e.query.tab,()=>{let e=l();d.value!==e&&(d.value=e)}),c(d,n=>{let r=typeof e.query.tab==`string`?e.query.tab:`all`,i=n===`all`?void 0:n;(r===`all`?void 0:r)!==i&&t.replace({query:{...e.query,tab:i}})});function F(e,t=!1){f.value=e.id,t&&(g.value=!0)}async function I(e){f.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 B(){_.value=!1}function V(e){return oe(e)}let H=h(!1);async function ee(e){if(H.value)return null;H.value=!0;try{let t=await z.updateStatus(e.orderId,{status:e.status,note:e.note}),n=N(t),i=u.value.findIndex(t=>t.id===e.orderId);return i>=0&&(u.value[i]={...u.value[i],...n}),r.success(`وضعیت سفارش به «${Q(e.status)}» تغییر کرد.`),n}catch(e){return r.error(e instanceof M?e.message:`تغییر وضعیت انجام نشد.`),null}finally{H.value=!1}}function U(e){t.push(`/orders/${e.id}/pricing`)}function q(e){t.push(`/orders/${e.id}/checks`)}function J(e){t.push({path:`/cash-payments`,query:{order:e.orderNumber}})}function Y(){Object.assign(x,b()),v.value=``,m.value=!0,E()}function X(){m.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),f.value=t.id,r.success(`سفارش جدید ثبت شد.`),X()}catch(e){r.error(e instanceof M?e.message:`ثبت سفارش انجام نشد.`)}finally{y.value=!1}}return{companies:i,customers:a,activeCustomers:C,applyCustomer:T,loadCustomers:E,orderList:u,activeTab:d,selectedOrderId:f,searchQuery:p,showAddModal:m,showDetailPanel:g,showDetailModal:_,formError:v,form:x,addFormItem:te,removeFormItem:ne,isFormValid:S,filteredOrders:D,selectedOrder:O,selectOrder:F,openOrderDetail:I,closeDetailPanel:L,closeDetailModal:B,settlementLabel:V,changeStatus:ee,statusSaving:H,goPricing:U,goChecks:q,goCashReceipt:J,openAddModal:Y,closeAddModal:X,submitAddOrder:re,saving:y}}var $=Symbol(`orders-page`);function ue(){let e=le();return v($,e),e}function de(){let e=O($);if(!e)throw Error(`Orders page context is missing`);return e}var fe={class:`order-detail__hero`},pe={class:`order-detail__hero-text`},me={class:`order-detail__id`},he={key:0,class:`order-detail__raw-status`},ge={class:`order-detail__actions no-print`},_e=[`disabled`],ve={class:`order-detail__panels`},ye={class:`order-detail__section`},be={class:`order-detail__info`},xe={class:`order-detail__info-row`},Se={class:`order-detail__info-value`},Ce={class:`order-detail__info-row`},we={class:`order-detail__info-value order-detail__info-value--phone`,dir:`ltr`},Te={class:`order-detail__info-row`},Ee={class:`order-detail__info-value`},De={class:`order-detail__info-row`},Oe={class:`order-detail__info-value`},ke={class:`order-detail__section`},Ae={class:`order-detail__info`},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={class:`order-detail__info-row`},Ie={class:`order-detail__info-value`},Le={class:`order-detail__info-row`},Re={class:`order-detail__info-value`},ze={key:0,class:`order-detail__section`},Be={key:0,class:`admin-table-wrap order-detail__table`},Ve={class:`admin-table admin-table--compact`},He={key:1,class:`order-detail__items`},Ue={class:`order-detail__item-head`},We={class:`order-detail__item-meta`},Ge={key:0},Ke={key:1},qe={key:2,class:`order-detail__item-total`},Je={key:1,class:`order-detail__section`},Ye={class:`order-detail__info`},Xe={class:`order-detail__info-row`},Ze={class:`order-detail__info-value`},Qe={class:`order-detail__info-row`},$e={class:`order-detail__info-value`},et={key:0,class:`order-detail__info-row`},tt={class:`order-detail__info-value`},nt={key:1,class:`order-detail__info-row`},rt={class:`order-detail__info-value`,dir:`ltr`},it={key:2,class:`order-detail__info-row`},at={class:`order-detail__info-value`},ot={key:0,class:`order-detail__receipt`},st=[`src`],ct={key:1,class:`order-detail__status-hint`},lt={class:`order-detail__section order-detail__status no-print`},ut={key:0,class:`order-detail__status-hint`},dt={key:1,class:`order-detail__status-form`},ft={class:`admin-form__field`},pt={class:`admin-form__field`},mt=[`disabled`],ht=T(g({__name:`OrderDetailContent`,props:{order:{},settlementLabel:{},layout:{default:`compact`},statusSaving:{type:Boolean}},emits:[`pricing`,`checks`,`cashReceipt`,`finalApprove`,`status`],setup(t,{emit:n}){let i=t,o=n,s=h(``),u=h(``),d=h(!1),g=w(()=>i.order.cashReceipt??null),v=w(()=>i.order.allowedTransitions??[]),S=w(()=>[...v.value]),T=w(()=>[{value:``,label:`انتخاب کنید…`},...S.value.map(e=>({value:e,label:Q(e)}))]),D=w(()=>!!s.value),O=w(()=>i.layout===`desktop`),k=w(()=>re[i.order.status]?.label??i.order.status),j=w(()=>{let e=Q(i.order.rawStatus);return!e||e===k.value?``:e}),M=w(()=>{let e=i.order.customerType;return e?Y[e]??i.order.customerType??`—`:`—`}),N=w(()=>ne(i.order)),P=w(()=>te(i.order)),F=w(()=>ce(i.order)&&!N.value),L=w(()=>se(i.order)&&!N.value),R=w(()=>N.value?`pricing`:P.value?`final`:F.value?`checks`:L.value?`cash`:null);c(()=>i.order.id,()=>{s.value=``,u.value=``});function z(){if(!s.value||!D.value)return;let e=u.value.trim()||void 0;o(`status`,{orderId:i.order.id,status:s.value,note:e}),s.value=``,u.value=``}function B(){if(g.value?.receiptImage){d.value=!0;return}o(`cashReceipt`)}return(n,i)=>(e(),m(`div`,{class:a([`order-detail`,`order-detail--${t.layout}`])},[f(`header`,fe,[f(`div`,pe,[f(`div`,me,[f(`strong`,null,y(t.order.orderNumber),1),_(ie,{status:t.order.status},null,8,[`status`])]),j.value?(e(),m(`p`,he,y(j.value),1)):E(``,!0)]),f(`div`,ge,[N.value?(e(),m(`button`,{key:0,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`pricing`?`admin-btn--primary`:`admin-btn--outline`]),onClick:i[0]||=e=>o(`pricing`)},` قیمت‌گذاری سفارش `,2)):E(``,!0),F.value?(e(),m(`button`,{key:1,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`checks`?`admin-btn--primary`:`admin-btn--outline`]),onClick:i[1]||=e=>o(`checks`)},` مدیریت چک‌ها `,2)):E(``,!0),L.value?(e(),m(`button`,{key:2,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`cash`?`admin-btn--primary`:`admin-btn--outline`]),onClick:B},y(g.value?.receiptImage?`مشاهده رسید`:`رسید پرداخت`),3)):E(``,!0),P.value?(e(),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:i[2]||=e=>o(`finalApprove`)},` تأیید نهایی `,10,_e)):E(``,!0)])]),f(`div`,ve,[f(`section`,ye,[i[12]||=f(`h3`,{class:`order-detail__section-title`},`اطلاعات مشتری`,-1),f(`div`,be,[f(`div`,xe,[_(I,{name:`building`,size:16}),i[8]||=f(`span`,{class:`order-detail__info-label`},`مشتری`,-1),f(`span`,Se,y(t.order.customerName),1)]),f(`div`,Ce,[_(I,{name:`phone`,size:16}),i[9]||=f(`span`,{class:`order-detail__info-label`},`تلفن`,-1),f(`span`,we,y(t.order.customerPhone??`—`),1)]),f(`div`,Te,[_(I,{name:`id-card`,size:16}),i[10]||=f(`span`,{class:`order-detail__info-label`},`شناسه ملی`,-1),f(`span`,Ee,y(t.order.customerNationalId??`—`),1)]),f(`div`,De,[_(I,{name:`user`,size:16}),i[11]||=f(`span`,{class:`order-detail__info-label`},`نوع مشتری`,-1),f(`span`,Oe,y(M.value),1)])])]),f(`section`,ke,[i[17]||=f(`h3`,{class:`order-detail__section-title`},`اطلاعات سفارش`,-1),f(`div`,Ae,[f(`div`,je,[i[13]||=f(`span`,{class:`order-detail__info-label`},`شرکت`,-1),f(`span`,Me,y(t.order.companyName),1)]),f(`div`,Ne,[i[14]||=f(`span`,{class:`order-detail__info-label`},`روش تسویه`,-1),f(`span`,Pe,y(t.settlementLabel(t.order.settlementMethod)),1)]),f(`div`,Fe,[i[15]||=f(`span`,{class:`order-detail__info-label`},`متراژ کل`,-1),f(`span`,Ie,y(p(U)(t.order.meterage)),1)]),f(`div`,Le,[i[16]||=f(`span`,{class:`order-detail__info-label`},`مبلغ کل`,-1),f(`span`,Re,y(t.order.totalAmount==null?`پس از قیمت‌گذاری`:p(H)(t.order.totalAmount)),1)])])])]),t.order.items?.length?(e(),m(`section`,ze,[i[19]||=f(`h3`,{class:`order-detail__section-title`},`محصولات سفارش`,-1),O.value?(e(),m(`div`,Be,[f(`table`,Ve,[i[18]||=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`شرکت`),f(`th`,null,`کالیته`),f(`th`,null,`محصول`),f(`th`,null,`رنگ`),f(`th`,null,`متراژ`),f(`th`,null,`قیمت هر متر`),f(`th`,null,`مبلغ کل`)])],-1),f(`tbody`,null,[(e(!0),m(C,null,r(t.order.items,n=>(e(),m(`tr`,{key:n.id},[f(`td`,null,y(n.companyName||t.order.companyName),1),f(`td`,null,y(n.catalogCode),1),f(`td`,null,y(n.productName),1),f(`td`,null,y(n.color),1),f(`td`,null,y(p(V)(n.confirmedMeterage??n.requestedMeterage)),1),f(`td`,null,y(n.supplyPrice==null?`—`:p(H)(n.supplyPrice)),1),f(`td`,null,y(n.totalAmount==null?`—`:p(H)(n.totalAmount)),1)]))),128))])])])):(e(),m(`ul`,He,[(e(!0),m(C,null,r(t.order.items,t=>(e(),m(`li`,{key:t.id,class:`order-detail__item`},[f(`div`,Ue,[f(`strong`,null,y(t.productName),1),f(`span`,null,y(t.catalogCode),1)]),f(`div`,We,[t.companyName?(e(),m(`span`,Ge,y(t.companyName),1)):E(``,!0),f(`span`,null,y(t.color),1),f(`span`,null,y(p(U)(t.confirmedMeterage??t.requestedMeterage)),1),t.supplyPrice==null?E(``,!0):(e(),m(`span`,Ke,y(p(H)(t.supplyPrice)),1)),t.totalAmount==null?E(``,!0):(e(),m(`span`,qe,y(p(H)(t.totalAmount)),1))])]))),128))]))])):E(``,!0),g.value?(e(),m(`section`,Je,[i[25]||=f(`h3`,{class:`order-detail__section-title`},`رسید پرداخت نقدی`,-1),f(`div`,Ye,[f(`div`,Xe,[i[20]||=f(`span`,{class:`order-detail__info-label`},`وضعیت`,-1),f(`span`,Ze,y(p(X)[g.value.status]),1)]),f(`div`,Qe,[i[21]||=f(`span`,{class:`order-detail__info-label`},`مبلغ واریزی`,-1),f(`span`,$e,y(g.value.paidAmount==null?p(H)(g.value.amount):p(H)(g.value.paidAmount)),1)]),g.value.transferDate?(e(),m(`div`,et,[i[22]||=f(`span`,{class:`order-detail__info-label`},`تاریخ واریز`,-1),f(`span`,tt,[x(y(p(ee)(g.value.transferDate))+` `,1),g.value.transferTime?(e(),m(C,{key:0},[x(` · `+y(g.value.transferTime),1)],64)):E(``,!0)])])):E(``,!0),g.value.trackingNumber||g.value.trackingCode?(e(),m(`div`,nt,[i[23]||=f(`span`,{class:`order-detail__info-label`},`پیگیری`,-1),f(`span`,rt,y(g.value.trackingNumber||g.value.trackingCode),1)])):E(``,!0),g.value.notes?(e(),m(`div`,it,[i[24]||=f(`span`,{class:`order-detail__info-label`},`یادداشت`,-1),f(`span`,at,y(g.value.notes),1)])):E(``,!0)]),g.value.receiptImage?(e(),m(`div`,ot,[f(`button`,{type:`button`,class:`order-detail__receipt-thumb`,onClick:i[3]||=e=>d.value=!0},[f(`img`,{src:g.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,st)]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:i[4]||=e=>d.value=!0},` مشاهده تصویر رسید `)])):(e(),m(`p`,ct,`تصویر رسید هنوز آپلود نشده است.`))])):E(``,!0),g.value?.receiptImage?(e(),b(J,{key:2,modelValue:d.value,"onUpdate:modelValue":i[5]||=e=>d.value=e,src:g.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):E(``,!0),f(`section`,lt,[i[28]||=f(`h3`,{class:`order-detail__section-title`},`تغییر وضعیت`,-1),S.value.length?E(``,!0):(e(),m(`p`,ut,` در این مرحله گذر مجازی از این بخش نیست؛ از اقدام‌های مرحله‌ای بالا (قیمت‌گذاری، چک، رسید نقدی و …) استفاده کنید. `)),S.value.length?(e(),m(`div`,dt,[f(`div`,ft,[i[26]||=f(`label`,null,`وضعیت بعدی`,-1),_(q,{modelValue:s.value,"onUpdate:modelValue":i[6]||=e=>s.value=e,block:``,"aria-label":`وضعیت بعدی`,placeholder:`انتخاب کنید…`,options:T.value},null,8,[`modelValue`,`options`])]),f(`div`,pt,[i[27]||=f(`label`,{for:`status-note`},`یادداشت (اختیاری)`,-1),l(f(`input`,{id:`status-note`,"onUpdate:modelValue":i[7]||=e=>u.value=e,type:`text`,class:`admin-input`,placeholder:`دلیل یا توضیح این تغییر`},null,512),[[A,u.value]])]),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!D.value||t.statusSaving,onClick:z},y(t.statusSaving?`در حال ثبت…`:`ثبت وضعیت`),9,mt)])):E(``,!0)])],2))}}),[[`__scopeId`,`data-v-bef42197`]]),gt={class:`orders-page`},_t={class:`orders-page__list-panel admin-card`},vt={class:`orders-page__list-header`},yt={class:`orders-page__list-actions`},bt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},xt={class:`orders-page__search`},St={class:`admin-tabs`},Ct=[`onClick`],wt={class:`admin-table-wrap`},Tt={class:`admin-table admin-table--compact`},Et=[`onClick`],Dt={class:`orders-page__actions-cell`},Ot=[`aria-expanded`,`onClick`],kt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},At=T(g({__name:`DesktopOrdersPage`,setup(o){let c=L(`(min-width: 1280px)`),{activeTab:g,selectedOrderId:v,searchQuery:w,filteredOrders:T,selectedOrder:O,showDetailModal:k,openOrderDetail:M,closeDetailModal:N,settlementLabel:P,goPricing:F,goChecks:R,goCashReceipt:z,changeStatus:V,statusSaving:W,openAddModal:G}=de(),K=h(null),q=h({});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()}n(()=>{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&&(N(),F(O.value))}function re(){O.value&&(N(),R(O.value))}function ae(){O.value&&(N(),z(O.value))}function oe(){O.value&&V({orderId:O.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}function le(){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`){M(t);return}if(e===`pricing`){F(t);return}if(e===`checks`){R(t);return}if(e===`final`){V({orderId:t.id,status:`final_approved`,note:`تأیید نهایی سفارش`});return}z(t)}}return(n,i)=>(e(),m(`div`,gt,[f(`div`,_t,[f(`div`,vt,[i[9]||=f(`div`,null,[f(`h2`,{class:`orders-page__list-title`},`سفارش‌ها`)],-1),f(`div`,yt,[f(`button`,bt,[_(I,{name:`filter`,size:16}),i[8]||=x(` فیلتر `,-1)]),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:i[0]||=(...e)=>p(G)&&p(G)(...e)},` سفارش جدید `)])]),f(`div`,xt,[_(I,{name:`search`,size:18}),l(f(`input`,{"onUpdate:modelValue":i[1]||=e=>u(w)?w.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[A,p(w)]])]),f(`div`,St,[(e(!0),m(C,null,r(p(Z),t=>(e(),m(`button`,{key:t.key,type:`button`,class:a([`admin-tab`,{active:p(g)===t.key}]),onClick:e=>g.value=t.key},[x(y(t.label)+` `,1),`count`in t&&t.count?(e(),m(C,{key:0},[x(` (`+y(t.count)+`)`,1)],64)):E(``,!0)],10,Ct))),128))]),f(`div`,wt,[f(`table`,Tt,[i[10]||=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`شماره سفارش`),f(`th`,null,`مشتری`),f(`th`,null,`روش تسویه`),f(`th`,null,`مبلغ کل`),f(`th`,null,`متراژ`),f(`th`,null,`وضعیت`),f(`th`,null,`تاریخ ثبت`),f(`th`,null,`عملیات`)])],-1),f(`tbody`,null,[(e(!0),m(C,null,r(p(T),t=>(e(),m(`tr`,{key:t.id,class:a({"is-selected":p(v)===t.id}),onClick:e=>p(M)(t)},[f(`td`,null,y(t.orderNumber),1),f(`td`,null,y(t.customerName),1),f(`td`,null,y(p(P)(t.settlementMethod)),1),f(`td`,null,y(t.totalAmount?p(H)(t.totalAmount):`—`),1),f(`td`,null,y(p(U)(t.meterage)),1),f(`td`,null,[_(ie,{status:t.status},null,8,[`status`])]),f(`td`,null,y(p(ee)(t.createdAt)),1),f(`td`,Dt,[f(`button`,{type:`button`,class:`orders-page__more-btn`,"aria-expanded":K.value?.id===t.id,"aria-haspopup":`menu`,"aria-label":`عملیات سفارش`,onClick:e=>Y(t,e)},[_(I,{name:`more`,size:18})],8,Ot)])],10,Et))),128))])])]),i[11]||=S(`
نمایش ۱ تا ۷ از ۱۰۳ سفارش
...
`,1)]),(e(),b(d,{to:`body`},[K.value?(e(),m(`div`,{key:0,class:`orders-page__menu`,role:`menu`,style:t(q.value),onClick:i[7]||=j(()=>{},[`stop`])},[f(`button`,{type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[2]||=e=>$(`detail`)},` جزئیات سفارش `),K.value&&p(ne)(K.value)?(e(),m(`button`,{key:0,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[3]||=e=>$(`pricing`)},` قیمت‌گذاری `)):E(``,!0),K.value&&p(ce)(K.value)?(e(),m(`button`,{key:1,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[4]||=e=>$(`checks`)},` مدیریت چک‌ها `)):E(``,!0),K.value&&p(se)(K.value)?(e(),m(`button`,{key:2,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[5]||=e=>$(`cash`)},` رسید پرداخت `)):E(``,!0),p(te)(K.value)?(e(),m(`button`,{key:3,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[6]||=e=>$(`final`)},` تأیید نهایی `)):E(``,!0)],4)):E(``,!0)])),_(B,{open:p(c)&&p(k)&&!!p(O),title:`جزئیات سفارش`,size:`xl`,onClose:p(N)},{footer:s(()=>[f(`button`,kt,[_(I,{name:`sms`,size:16}),i[12]||=x(` ارسال پیامک `,-1)]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:le},[_(I,{name:`print`,size:16}),i[13]||=x(` چاپ `,-1)])]),default:s(()=>[p(O)?(e(),b(ht,{key:0,order:p(O),layout:`desktop`,"settlement-label":p(P),"status-saving":p(W),onPricing:Q,onChecks:re,onCashReceipt:ae,onFinalApprove:oe,onStatus:p(V)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-15016f85`]]),jt={class:`compact-orders`},Mt={class:`compact-page-header`},Nt={class:`compact-page-header__row`},Pt={class:`compact-page-header__actions`},Ft={key:0,class:`compact-orders__filter-dot`,"aria-hidden":`true`},It={class:`orders-page__search admin-card`},Lt={key:0,class:`compact-orders__filter-chip admin-card`},Rt={key:1,class:`admin-tabs compact-orders__tabs`},zt=[`onClick`],Bt={class:`compact-orders__filter-form`,role:`listbox`,"aria-label":`وضعیت سفارش`},Vt=[`aria-selected`,`onClick`],Ht={key:0,class:`compact-orders__filter-check`,"aria-hidden":`true`},Ut={class:`admin-card-list`},Wt=[`onClick`],Gt={class:`admin-card-item__header`},Kt={class:`admin-card-item__title`},qt={class:`admin-card-item__meta`},Jt={key:0,class:`admin-detail-panel__inner`},Yt={class:`admin-detail-panel__header`},Xt={class:`admin-detail-panel__body`},Zt=T(g({__name:`CompactOrdersPage`,setup(t){let n=L(`(max-width: 767px)`),i=L(`(max-width: 1279px)`),{activeTab:o,selectedOrderId:c,searchQuery:d,filteredOrders:g,selectedOrder:v,showDetailPanel:S,showDetailModal:T,selectOrder:D,openOrderDetail:O,closeDetailPanel:k,closeDetailModal:j,settlementLabel:M,goPricing:N,goChecks:P,goCashReceipt:F,changeStatus:R,statusSaving:z,openAddModal:V}=de(),W=h(!1),G=w(()=>o.value!==`all`),K=w(()=>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(n.value){D(e,!0);return}O(e)}function ne(){v.value&&(j(),k(),N(v.value))}function Q(){v.value&&(j(),k(),P(v.value))}function re(){v.value&&(j(),k(),F(v.value))}function ae(){v.value&&R({orderId:v.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}return(t,h)=>(e(),m(`div`,jt,[f(`div`,Mt,[f(`div`,Nt,[h[4]||=f(`div`,null,[f(`h2`,{class:`compact-page-header__title`},`سفارش‌ها`)],-1),f(`div`,Pt,[f(`button`,{type:`button`,class:a([`admin-btn admin-btn--outline admin-btn--sm`,{"admin-btn--filter-active":G.value}]),onClick:q},[_(I,{name:`filter`,size:16}),h[3]||=x(` فیلتر `,-1),G.value?(e(),m(`span`,Ft)):E(``,!0)],2),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:h[0]||=(...e)=>p(V)&&p(V)(...e)},` سفارش جدید `)])])]),f(`div`,It,[_(I,{name:`search`,size:18}),l(f(`input`,{"onUpdate:modelValue":h[1]||=e=>u(d)?d.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[A,p(d)]])]),p(n)&&G.value?(e(),m(`div`,Lt,[f(`span`,null,`وضعیت: `+y(K.value),1),f(`button`,{type:`button`,class:`compact-orders__filter-clear`,onClick:Y},`پاک کردن`)])):E(``,!0),p(n)?E(``,!0):(e(),m(`div`,Rt,[(e(!0),m(C,null,r(p(Z),t=>(e(),m(`button`,{key:t.key,type:`button`,class:a([`admin-tab`,{active:p(o)===t.key}]),onClick:e=>o.value=t.key},[x(y(t.label)+` `,1),`count`in t&&t.count?(e(),m(C,{key:0},[x(` (`+y(t.count)+`)`,1)],64)):E(``,!0)],10,zt))),128))])),_(B,{open:W.value,title:`فیلتر سفارش‌ها`,onClose:J},{footer:s(()=>[f(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Y},` پاک کردن `),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:J},` بستن `)]),default:s(()=>[f(`div`,Bt,[(e(!0),m(C,null,r(p(Z),t=>(e(),m(`button`,{key:t.key,type:`button`,class:a([`compact-orders__filter-option`,{"is-active":p(o)===t.key}]),role:`option`,"aria-selected":p(o)===t.key,onClick:e=>X(t.key)},[f(`span`,null,y(t.label),1),p(o)===t.key?(e(),m(`span`,Ht,`✓`)):E(``,!0)],10,Vt))),128))])]),_:1},8,[`open`]),f(`div`,Ut,[(e(!0),m(C,null,r(p(g),t=>(e(),m(`button`,{key:t.id,type:`button`,class:a([`admin-card-item`,{selected:p(c)===t.id}]),onClick:e=>te(t)},[f(`div`,Gt,[f(`p`,Kt,y(t.orderNumber),1),_(ie,{status:t.status},null,8,[`status`])]),f(`div`,qt,[f(`span`,null,[h[5]||=f(`strong`,null,`مشتری:`,-1),x(` `+y(t.customerName),1)]),f(`span`,null,[h[6]||=f(`strong`,null,`متراژ:`,-1),x(` `+y(p(U)(t.meterage)),1)]),f(`span`,null,[h[7]||=f(`strong`,null,`مبلغ:`,-1),x(` `+y(t.totalAmount?p(H)(t.totalAmount):`—`),1)]),f(`span`,null,y(p(ee)(t.createdAt)),1)])],10,Wt))),128))]),f(`div`,{class:a([`admin-detail-panel compact-orders__mobile-panel`,{open:p(n)&&p(S)&&p(v)}])},[p(v)?(e(),m(`div`,Jt,[f(`div`,Yt,[f(`button`,{type:`button`,class:`admin-detail-panel__back`,"aria-label":`بازگشت به لیست`,onClick:h[2]||=(...e)=>p(k)&&p(k)(...e)},[_(I,{name:`chevron-back`,size:20})]),h[8]||=f(`h2`,{class:`admin-detail-panel__title`},`جزئیات سفارش`,-1)]),f(`div`,Xt,[_(ht,{order:p(v),"settlement-label":p(M),"status-saving":p(z),onPricing:ne,onChecks:Q,onCashReceipt:re,onFinalApprove:ae,onStatus:p(R)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])])])):E(``,!0)],2),_(B,{open:p(i)&&!p(n)&&p(T)&&!!p(v),title:`جزئیات سفارش`,size:`xl`,onClose:p(j)},{default:s(()=>[p(v)?(e(),b(ht,{key:0,order:p(v),"settlement-label":p(M),"status-saving":p(z),onPricing:ne,onChecks:Q,onCashReceipt:re,onFinalApprove:ae,onStatus:p(R)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-fe86c1c8`]]);function Qt(e){return e.rollMeters&&e.rollMeters>0?e.rollMeters:e.minMeterage>0?e.minMeterage:50}function $t(e){let t=e.orderMultiplier??e.orderStep;return t&&t>0?t:10}function en(e,t,n){return t===`roll`?n*Qt(e):n}function tn(e,t){let n=Qt(e);return n>0?t/n:0}function nn(e,t,n=1){if(!t||t<=0)return`مقدار باید بزرگ‌تر از صفر باشد.`;if(t1e-6)return`متراژ ${e.name} باید مضرب ${r} باشد`;let a=Qt(e),o=n>0?n:1;return t/a+1e-9g.value.map(e=>{let t=e.phone?` — ${e.phone}`:``,n=e.isActive===!1?` (غیرفعال)`:``;return{value:e.id,label:`${e.name}${t}${n}`}})),H=w(()=>I.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),ee=w(()=>I.value.find(e=>e.id===R.productId)??null),U=w(()=>R.quantityMode===`roll`?`تعداد طاقه`:`متراژ (متر)`);c(()=>u.customerId,e=>{if(!e){u.customerName=``,u.customerPhone=``;return}v(e)});function W(e,t){let n=L.value>0?L.value:1;if(t===`roll`)return n;let r=Qt(e);return Math.max(e.minMeterage||0,n*r)}c(n,async e=>{if(e){R.productId=``,R.quantityMode=`roll`,R.quantity=0,i.value=``;try{let[e,t]=await Promise.all([F.list({activeOnly:!0}),P.get().catch(()=>null)]);I.value=e,L.value=t?.minOrderRollsPerProduct??1}catch(e){N.error(e instanceof M?e.message:`بارگذاری محصولات انجام نشد.`)}}}),c(()=>[R.productId,R.quantityMode],([e,t])=>{let n=I.value.find(t=>t.id===e);n&&(R.quantity=W(n,t))});function G(){i.value=``;let e=ee.value;if(!e){i.value=`محصول را انتخاب کنید.`,N.error(i.value);return}if(!R.quantity||R.quantity<=0){i.value=`مقدار باید بزرگ‌تر از صفر باشد.`,N.error(i.value);return}let t=en(e,R.quantityMode,R.quantity),n=nn(e,t,L.value);if(n){i.value=n,N.error(n);return}if(!S({productId:e.id,productName:e.name,catalogCode:e.catalogCode??e.productCode,meterage:t})){N.error(i.value||`افزودن محصول انجام نشد.`);return}R.productId=``,R.quantityMode=`roll`,R.quantity=0}function K(e){let t=I.value.find(t=>t.id===e.productId);if(!t)return null;let n=tn(t,e.meterage);if(!Number.isFinite(n))return null;let r=Math.round(n*100)/100;return r%1,V(r)}return(t,o)=>(e(),b(B,{open:p(n),title:`پیش‌سفارش جدید`,size:`lg`,onClose:p(D)},{footer:s(()=>[f(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:o[6]||=(...e)=>p(D)&&p(D)(...e)},` انصراف `),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!p(d),onClick:o[7]||=(...e)=>p(O)&&p(O)(...e)},` ثبت پیش‌سفارش `,8,gn)]),default:s(()=>[f(`form`,{class:`admin-form`,onSubmit:o[5]||=j((...e)=>p(O)&&p(O)(...e),[`prevent`])},[p(i)?(e(),m(`p`,rn,y(p(i)),1)):E(``,!0),o[11]||=f(`p`,{class:`admin-form__hint`},` مثل سفارش مشتری: ابتدا اقلام ثبت می‌شود، قیمت‌گذاری و تسویه بعداً انجام می‌شود. `,-1),f(`div`,an,[o[8]||=f(`label`,{id:`order-customer-label`},[x(` مشتری `),f(`span`,{class:`admin-form__required`},`*`)],-1),_(q,{id:`order-customer`,modelValue:p(u).customerId,"onUpdate:modelValue":o[0]||=e=>p(u).customerId=e,block:``,searchable:``,"aria-label":`انتخاب مشتری از لیست`,placeholder:`انتخاب مشتری از لیست`,"search-placeholder":`جستجوی نام یا موبایل…`,options:z.value},null,8,[`modelValue`,`options`]),z.value.length?E(``,!0):(e(),m(`p`,on,` مشتری‌ای در سیستم نیست. ابتدا از بخش «مشتریان» یک مشتری ثبت کنید. `))]),f(`div`,sn,[o[9]||=f(`label`,null,`محصول`,-1),_(q,{modelValue:R.productId,"onUpdate:modelValue":o[1]||=e=>R.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:H.value},null,8,[`modelValue`,`options`])]),f(`div`,cn,[f(`div`,ln,[o[10]||=f(`span`,{class:`admin-form__label`},`واحد سفارش`,-1),f(`div`,un,[f(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`roll`}]),onClick:o[2]||=e=>R.quantityMode=`roll`},` طاقه `,2),f(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`meter`}]),onClick:o[3]||=e=>R.quantityMode=`meter`},` متراژ `,2)])]),f(`div`,dn,[f(`label`,fn,y(U.value),1),l(f(`input`,{id:`order-item-quantity`,"onUpdate:modelValue":o[4]||=e=>R.quantity=e,type:`number`,min:`0`,step:`any`,class:`admin-input`},null,512),[[A,R.quantity,void 0,{number:!0}]])])]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:G},` افزودن به اقلام `),p(u).items.length?(e(),m(`div`,pn,[(e(!0),m(C,null,r(p(u).items,t=>(e(),m(`div`,{key:t.productId,class:`order-add__item`},[f(`div`,null,[f(`strong`,null,y(t.productName),1),f(`span`,null,[x(` کالیته `+y(t.catalogCode)+` — `+y(p(V)(t.meterage))+` متر `,1),K(t)?(e(),m(C,{key:0},[x(` (`+y(K(t))+` طاقه) `,1)],64)):E(``,!0)])]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>p(T)(t.productId)},` حذف `,8,mn)]))),128))])):(e(),m(`p`,hn,`هنوز محصولی به پیش‌سفارش اضافه نشده است.`))],32)]),_:1},8,[`open`,`onClose`]))}}),[[`__scopeId`,`data-v-91be5fdc`]]),vn=g({__name:`OrdersView`,setup(t){return ue(),(t,n)=>(e(),m(C,null,[_(At,{class:`desktop-only`}),_(Zt,{class:`compact-only`}),_(_n)],64))}});export{vn as default}; \ No newline at end of file diff --git a/dist/assets/OrdersView-l4QUSOVE.js b/dist/assets/OrdersView-l4QUSOVE.js new file mode 100644 index 0000000..5bd2676 --- /dev/null +++ b/dist/assets/OrdersView-l4QUSOVE.js @@ -0,0 +1 @@ +import{A as e,At as t,D as n,N as r,O as i,Ot as a,Q as o,U as s,V as c,W as l,Y as u,a as d,c as f,ct as p,d as m,et as h,g,h as _,j as v,jt as y,l as b,m as x,p as S,r as C,s as w,t as T,u as E,w as D,x as O}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as k,d as A,m as j,t as M}from"./http-CTjL79ty.js";import{C as N,D as P,E as F,L as I,N as L,R,T as z,V as B,c as V,i as H,o as U,s as W,v as G,y as K,z as q}from"./index-BWgYBNME.js";import{t as J}from"./AdminSelect-hgn_nYC2.js";import{t as Y}from"./AdminImageLightbox-BbQANbIb.js";import{i as X,n as ee}from"./adminLabels-jYlObVqa.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-BkaoX2rz.js";var ae=new Set([`awaiting_cash_payment`,`cash_invoice_issued`,`cash_in_progress`,`cash_payment_submitted`,`awaiting_cash_confirmation`]);function oe(e){return e?e===`check`?`چکی`:e===`cash_check`?`نقدی-چکی`:`نقدی`:`انتخاب‌نشده`}function se(e){let t=e.settlementMethod;return t?t===`cash`?e.rawStatus!==`cash_confirmed`:t===`cash_check`&&!!e.rawStatus&&ae.has(e.rawStatus):!1}function ce(e){let t=e.settlementMethod;return t===`check`||t===`cash_check`&&!!e.rawStatus&&!ae.has(e.rawStatus)}function le(){let e=R(),t=q(),r=k(),i=h([]),a=h([]),s=new Set(Z.map(e=>e.key));function l(){let t=typeof e.query.tab==`string`?e.query.tab:``;return s.has(t)?t:`all`}let u=h([]),d=h(l()),f=h(``),p=h(``),m=h(!1),g=h(!1),_=h(!1),v=h(``),y=h(!1),b=()=>({customerId:``,customerName:``,customerPhone:``,items:[]}),x=o(b()),S=w(()=>x.customerId.length>0&&x.items.length>0),C=w(()=>{let e=[...a.value];return e.sort((e,t)=>Number(t.isActive)-Number(e.isActive)||e.name.localeCompare(t.name,`fa`)),e});function T(e){let t=a.value.find(t=>t.id===e);x.customerId=e,x.customerName=t?.name??``,x.customerPhone=t?.phone??``}async function E(){try{a.value=await K.list()}catch(e){r.error(e instanceof M?e.message:`بارگذاری مشتریان انجام نشد.`)}}let D=w(()=>{let e=u.value;if(d.value!==`all`&&(e=e.filter(e=>e.status===d.value)),p.value.trim()){let t=p.value.trim();e=e.filter(e=>e.orderNumber.includes(t)||e.customerName.includes(t))}return e}),O=w(()=>u.value.find(e=>e.id===f.value)??null);function A(e){let t=e.trim();if(t)return u.value.find(e=>e.id===t||e.orderNumber.toUpperCase()===t.toUpperCase())}async function j(){let n=typeof e.query.order==`string`?e.query.order:``;if(!n||!u.value.length)return;let r=A(n);if(!r){p.value=n;return}let i=typeof e.query.focus==`string`?e.query.focus:``;if(i===`pricing`){await t.replace(`/orders/${r.id}/pricing`);return}if(i===`checks`){await t.replace(`/orders/${r.id}/checks`);return}I(r),p.value=r.orderNumber}async function P(){try{let[e,t,n]=await Promise.all([z.list(),G.list(),K.list()]);u.value=e.map(e=>N(e)),i.value=t,a.value=n,await j()}catch(e){r.error(e instanceof M?e.message:`بارگذاری سفارش‌ها انجام نشد.`)}}n(()=>{P()}),c(()=>[e.query.order,e.query.focus],()=>{j()}),c(()=>e.query.tab,()=>{let e=l();d.value!==e&&(d.value=e)}),c(d,n=>{let r=typeof e.query.tab==`string`?e.query.tab:`all`,i=n===`all`?void 0:n;(r===`all`?void 0:r)!==i&&t.replace({query:{...e.query,tab:i}})});function F(e,t=!1){f.value=e.id,t&&(g.value=!0)}async function I(e){f.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 B(){_.value=!1}function V(){let n=e.query.from===`checks`;if(_.value=!1,g.value=!1,n){if(typeof window.history.state?.back==`string`){t.back();return}t.replace({name:`checks`})}}function H(e){return oe(e)}let U=h(!1);async function W(e){if(U.value)return null;U.value=!0;try{let t=await z.updateStatus(e.orderId,{status:e.status,note:e.note}),n=N(t),i=u.value.findIndex(t=>t.id===e.orderId);return i>=0&&(u.value[i]={...u.value[i],...n}),r.success(`وضعیت سفارش به «${Q(e.status)}» تغییر کرد.`),n}catch(e){return r.error(e instanceof M?e.message:`تغییر وضعیت انجام نشد.`),null}finally{U.value=!1}}function J(e){t.push(`/orders/${e.id}/pricing`)}function Y(e){t.push(`/orders/${e.id}/checks`)}function X(e){t.push({path:`/cash-payments`,query:{order:e.orderNumber}})}function ee(){Object.assign(x,b()),v.value=``,m.value=!0,E()}function te(){m.value=!1,v.value=``}function ne(e){return x.items.some(t=>t.productId===e.productId)?(v.value=`این محصول قبلاً به سفارش اضافه شده است.`,!1):(x.items.push(e),v.value=``,!0)}function re(e){x.items=x.items.filter(t=>t.productId!==e)}async function ie(){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),f.value=t.id,r.success(`سفارش جدید ثبت شد.`),te()}catch(e){r.error(e instanceof M?e.message:`ثبت سفارش انجام نشد.`)}finally{y.value=!1}}return{companies:i,customers:a,activeCustomers:C,applyCustomer:T,loadCustomers:E,orderList:u,activeTab:d,selectedOrderId:f,searchQuery:p,showAddModal:m,showDetailPanel:g,showDetailModal:_,formError:v,form:x,addFormItem:ne,removeFormItem:re,isFormValid:S,filteredOrders:D,selectedOrder:O,selectOrder:F,openOrderDetail:I,closeDetailPanel:L,closeDetailModal:B,dismissOrderDetail:V,settlementLabel:H,changeStatus:W,statusSaving:U,goPricing:J,goChecks:Y,goCashReceipt:X,openAddModal:ee,closeAddModal:te,submitAddOrder:ie,saving:y}}var ue=Symbol(`orders-page`);function $(){let e=le();return v(ue,e),e}function de(){let e=O(ue);if(!e)throw Error(`Orders page context is missing`);return e}var fe={class:`order-detail__hero`},pe={class:`order-detail__hero-text`},me={class:`order-detail__id`},he={key:0,class:`order-detail__raw-status`},ge={class:`order-detail__actions no-print`},_e=[`disabled`],ve={class:`order-detail__panels`},ye={class:`order-detail__section`},be={class:`order-detail__info`},xe={class:`order-detail__info-row`},Se={class:`order-detail__info-value`},Ce={class:`order-detail__info-row`},we={class:`order-detail__info-value order-detail__info-value--phone`,dir:`ltr`},Te={class:`order-detail__info-row`},Ee={class:`order-detail__info-value`},De={class:`order-detail__info-row`},Oe={class:`order-detail__info-value`},ke={class:`order-detail__section`},Ae={class:`order-detail__info`},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={class:`order-detail__info-row`},Ie={class:`order-detail__info-value`},Le={class:`order-detail__info-row`},Re={class:`order-detail__info-value`},ze={key:0,class:`order-detail__section`},Be={key:0,class:`admin-table-wrap order-detail__table`},Ve={class:`admin-table admin-table--compact`},He={key:1,class:`order-detail__items`},Ue={class:`order-detail__item-head`},We={class:`order-detail__item-meta`},Ge={key:0},Ke={key:1},qe={key:2,class:`order-detail__item-total`},Je={key:1,class:`order-detail__section`},Ye={class:`order-detail__info`},Xe={class:`order-detail__info-row`},Ze={class:`order-detail__info-value`},Qe={class:`order-detail__info-row`},$e={class:`order-detail__info-value`},et={key:0,class:`order-detail__info-row`},tt={class:`order-detail__info-value`},nt={key:1,class:`order-detail__info-row`},rt={class:`order-detail__info-value`,dir:`ltr`},it={key:2,class:`order-detail__info-row`},at={class:`order-detail__info-value`},ot={key:0,class:`order-detail__receipt`},st=[`src`],ct={key:1,class:`order-detail__status-hint`},lt={class:`order-detail__section order-detail__status no-print`},ut={key:0,class:`order-detail__status-hint`},dt={key:1,class:`order-detail__status-form`},ft={class:`admin-form__field`},pt={class:`admin-form__field`},mt=[`disabled`],ht=T(g({__name:`OrderDetailContent`,props:{order:{},settlementLabel:{},layout:{default:`compact`},statusSaving:{type:Boolean}},emits:[`pricing`,`checks`,`cashReceipt`,`finalApprove`,`status`],setup(t,{emit:n}){let i=t,o=n,s=h(``),u=h(``),d=h(!1),g=w(()=>i.order.cashReceipt??null),v=w(()=>i.order.allowedTransitions??[]),S=w(()=>[...v.value]),T=w(()=>[{value:``,label:`انتخاب کنید…`},...S.value.map(e=>({value:e,label:Q(e)}))]),D=w(()=>!!s.value),O=w(()=>i.layout===`desktop`),k=w(()=>re[i.order.status]?.label??i.order.status),j=w(()=>{let e=Q(i.order.rawStatus);return!e||e===k.value?``:e}),M=w(()=>{let e=i.order.customerType;return e?X[e]??i.order.customerType??`—`:`—`}),N=w(()=>ne(i.order)),P=w(()=>te(i.order)),F=w(()=>ce(i.order)&&!N.value),L=w(()=>se(i.order)&&!N.value),R=w(()=>N.value?`pricing`:P.value?`final`:F.value?`checks`:L.value?`cash`:null);c(()=>i.order.id,()=>{s.value=``,u.value=``});function z(){if(!s.value||!D.value)return;let e=u.value.trim()||void 0;o(`status`,{orderId:i.order.id,status:s.value,note:e}),s.value=``,u.value=``}function B(){if(g.value?.receiptImage){d.value=!0;return}o(`cashReceipt`)}return(n,i)=>(e(),m(`div`,{class:a([`order-detail`,`order-detail--${t.layout}`])},[f(`header`,fe,[f(`div`,pe,[f(`div`,me,[f(`strong`,null,y(t.order.orderNumber),1),_(ie,{status:t.order.status},null,8,[`status`])]),j.value?(e(),m(`p`,he,y(j.value),1)):E(``,!0)]),f(`div`,ge,[N.value?(e(),m(`button`,{key:0,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`pricing`?`admin-btn--primary`:`admin-btn--outline`]),onClick:i[0]||=e=>o(`pricing`)},` قیمت‌گذاری سفارش `,2)):E(``,!0),F.value?(e(),m(`button`,{key:1,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`checks`?`admin-btn--primary`:`admin-btn--outline`]),onClick:i[1]||=e=>o(`checks`)},` مدیریت چک‌ها `,2)):E(``,!0),L.value?(e(),m(`button`,{key:2,type:`button`,class:a([`admin-btn admin-btn--sm`,R.value===`cash`?`admin-btn--primary`:`admin-btn--outline`]),onClick:B},y(g.value?.receiptImage?`مشاهده رسید`:`رسید پرداخت`),3)):E(``,!0),P.value?(e(),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:i[2]||=e=>o(`finalApprove`)},` تأیید نهایی `,10,_e)):E(``,!0)])]),f(`div`,ve,[f(`section`,ye,[i[12]||=f(`h3`,{class:`order-detail__section-title`},`اطلاعات مشتری`,-1),f(`div`,be,[f(`div`,xe,[_(I,{name:`building`,size:16}),i[8]||=f(`span`,{class:`order-detail__info-label`},`مشتری`,-1),f(`span`,Se,y(t.order.customerName),1)]),f(`div`,Ce,[_(I,{name:`phone`,size:16}),i[9]||=f(`span`,{class:`order-detail__info-label`},`تلفن`,-1),f(`span`,we,y(t.order.customerPhone??`—`),1)]),f(`div`,Te,[_(I,{name:`id-card`,size:16}),i[10]||=f(`span`,{class:`order-detail__info-label`},`شناسه ملی`,-1),f(`span`,Ee,y(t.order.customerNationalId??`—`),1)]),f(`div`,De,[_(I,{name:`user`,size:16}),i[11]||=f(`span`,{class:`order-detail__info-label`},`نوع مشتری`,-1),f(`span`,Oe,y(M.value),1)])])]),f(`section`,ke,[i[17]||=f(`h3`,{class:`order-detail__section-title`},`اطلاعات سفارش`,-1),f(`div`,Ae,[f(`div`,je,[i[13]||=f(`span`,{class:`order-detail__info-label`},`شرکت`,-1),f(`span`,Me,y(t.order.companyName),1)]),f(`div`,Ne,[i[14]||=f(`span`,{class:`order-detail__info-label`},`روش تسویه`,-1),f(`span`,Pe,y(t.settlementLabel(t.order.settlementMethod)),1)]),f(`div`,Fe,[i[15]||=f(`span`,{class:`order-detail__info-label`},`متراژ کل`,-1),f(`span`,Ie,y(p(W)(t.order.meterage)),1)]),f(`div`,Le,[i[16]||=f(`span`,{class:`order-detail__info-label`},`مبلغ کل`,-1),f(`span`,Re,y(t.order.totalAmount==null?`پس از قیمت‌گذاری`:p(H)(t.order.totalAmount)),1)])])])]),t.order.items?.length?(e(),m(`section`,ze,[i[19]||=f(`h3`,{class:`order-detail__section-title`},`محصولات سفارش`,-1),O.value?(e(),m(`div`,Be,[f(`table`,Ve,[i[18]||=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`شرکت`),f(`th`,null,`کالیته`),f(`th`,null,`محصول`),f(`th`,null,`رنگ`),f(`th`,null,`متراژ`),f(`th`,null,`قیمت هر متر`),f(`th`,null,`مبلغ کل`)])],-1),f(`tbody`,null,[(e(!0),m(C,null,r(t.order.items,n=>(e(),m(`tr`,{key:n.id},[f(`td`,null,y(n.companyName||t.order.companyName),1),f(`td`,null,y(n.catalogCode),1),f(`td`,null,y(n.productName),1),f(`td`,null,y(n.color),1),f(`td`,null,y(p(V)(n.confirmedMeterage??n.requestedMeterage)),1),f(`td`,null,y(n.supplyPrice==null?`—`:p(H)(n.supplyPrice)),1),f(`td`,null,y(n.totalAmount==null?`—`:p(H)(n.totalAmount)),1)]))),128))])])])):(e(),m(`ul`,He,[(e(!0),m(C,null,r(t.order.items,t=>(e(),m(`li`,{key:t.id,class:`order-detail__item`},[f(`div`,Ue,[f(`strong`,null,y(t.productName),1),f(`span`,null,y(t.catalogCode),1)]),f(`div`,We,[t.companyName?(e(),m(`span`,Ge,y(t.companyName),1)):E(``,!0),f(`span`,null,y(t.color),1),f(`span`,null,y(p(W)(t.confirmedMeterage??t.requestedMeterage)),1),t.supplyPrice==null?E(``,!0):(e(),m(`span`,Ke,y(p(H)(t.supplyPrice)),1)),t.totalAmount==null?E(``,!0):(e(),m(`span`,qe,y(p(H)(t.totalAmount)),1))])]))),128))]))])):E(``,!0),g.value?(e(),m(`section`,Je,[i[25]||=f(`h3`,{class:`order-detail__section-title`},`رسید پرداخت نقدی`,-1),f(`div`,Ye,[f(`div`,Xe,[i[20]||=f(`span`,{class:`order-detail__info-label`},`وضعیت`,-1),f(`span`,Ze,y(p(ee)[g.value.status]),1)]),f(`div`,Qe,[i[21]||=f(`span`,{class:`order-detail__info-label`},`مبلغ واریزی`,-1),f(`span`,$e,y(g.value.paidAmount==null?p(H)(g.value.amount):p(H)(g.value.paidAmount)),1)]),g.value.transferDate?(e(),m(`div`,et,[i[22]||=f(`span`,{class:`order-detail__info-label`},`تاریخ واریز`,-1),f(`span`,tt,[x(y(p(U)(g.value.transferDate))+` `,1),g.value.transferTime?(e(),m(C,{key:0},[x(` · `+y(g.value.transferTime),1)],64)):E(``,!0)])])):E(``,!0),g.value.trackingNumber||g.value.trackingCode?(e(),m(`div`,nt,[i[23]||=f(`span`,{class:`order-detail__info-label`},`پیگیری`,-1),f(`span`,rt,y(g.value.trackingNumber||g.value.trackingCode),1)])):E(``,!0),g.value.notes?(e(),m(`div`,it,[i[24]||=f(`span`,{class:`order-detail__info-label`},`یادداشت`,-1),f(`span`,at,y(g.value.notes),1)])):E(``,!0)]),g.value.receiptImage?(e(),m(`div`,ot,[f(`button`,{type:`button`,class:`order-detail__receipt-thumb`,onClick:i[3]||=e=>d.value=!0},[f(`img`,{src:g.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,st)]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:i[4]||=e=>d.value=!0},` مشاهده تصویر رسید `)])):(e(),m(`p`,ct,`تصویر رسید هنوز آپلود نشده است.`))])):E(``,!0),g.value?.receiptImage?(e(),b(Y,{key:2,modelValue:d.value,"onUpdate:modelValue":i[5]||=e=>d.value=e,src:g.value.receiptImage,alt:`تصویر رسید پرداخت`},null,8,[`modelValue`,`src`])):E(``,!0),f(`section`,lt,[i[28]||=f(`h3`,{class:`order-detail__section-title`},`تغییر وضعیت`,-1),S.value.length?E(``,!0):(e(),m(`p`,ut,` در این مرحله گذر مجازی از این بخش نیست؛ از اقدام‌های مرحله‌ای بالا (قیمت‌گذاری، چک، رسید نقدی و …) استفاده کنید. `)),S.value.length?(e(),m(`div`,dt,[f(`div`,ft,[i[26]||=f(`label`,null,`وضعیت بعدی`,-1),_(J,{modelValue:s.value,"onUpdate:modelValue":i[6]||=e=>s.value=e,block:``,"aria-label":`وضعیت بعدی`,placeholder:`انتخاب کنید…`,options:T.value},null,8,[`modelValue`,`options`])]),f(`div`,pt,[i[27]||=f(`label`,{for:`status-note`},`یادداشت (اختیاری)`,-1),l(f(`input`,{id:`status-note`,"onUpdate:modelValue":i[7]||=e=>u.value=e,type:`text`,class:`admin-input`,placeholder:`دلیل یا توضیح این تغییر`},null,512),[[A,u.value]])]),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!D.value||t.statusSaving,onClick:z},y(t.statusSaving?`در حال ثبت…`:`ثبت وضعیت`),9,mt)])):E(``,!0)])],2))}}),[[`__scopeId`,`data-v-bef42197`]]),gt={class:`orders-page`},_t={class:`orders-page__list-panel admin-card`},vt={class:`orders-page__list-header`},yt={class:`orders-page__list-actions`},bt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},xt={class:`orders-page__search`},St={class:`admin-tabs`},Ct=[`onClick`],wt={class:`admin-table-wrap`},Tt={class:`admin-table admin-table--compact`},Et=[`onClick`],Dt={class:`orders-page__actions-cell`},Ot=[`aria-expanded`,`onClick`],kt={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},At=T(g({__name:`DesktopOrdersPage`,setup(o){let c=L(`(min-width: 1280px)`),{activeTab:g,selectedOrderId:v,searchQuery:w,filteredOrders:T,selectedOrder:O,showDetailModal:k,openOrderDetail:M,closeDetailModal:N,dismissOrderDetail:P,settlementLabel:F,goPricing:R,goChecks:z,goCashReceipt:V,changeStatus:G,statusSaving:K,openAddModal:q}=de(),J=h(null),Y=h({});function X(){J.value=null}async function ee(e,t){if(t.stopPropagation(),J.value?.id===e.id){X();return}let n=t.currentTarget.getBoundingClientRect();J.value=e,await D();let r=Math.min(Math.max(8,n.right-168),window.innerWidth-168-8);Y.value={position:`fixed`,top:`${n.bottom+4}px`,left:`${r}px`,width:`168px`}}function Q(){X()}n(()=>{document.addEventListener(`click`,Q),window.addEventListener(`scroll`,X,!0),window.addEventListener(`resize`,X)}),i(()=>{document.removeEventListener(`click`,Q),window.removeEventListener(`scroll`,X,!0),window.removeEventListener(`resize`,X)});function re(){O.value&&(N(),R(O.value))}function ae(){O.value&&(N(),z(O.value))}function oe(){O.value&&(N(),V(O.value))}function le(){O.value&&G({orderId:O.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}function ue(){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=J.value;if(t){if(X(),e===`detail`){M(t);return}if(e===`pricing`){R(t);return}if(e===`checks`){z(t);return}if(e===`final`){G({orderId:t.id,status:`final_approved`,note:`تأیید نهایی سفارش`});return}V(t)}}return(n,i)=>(e(),m(`div`,gt,[f(`div`,_t,[f(`div`,vt,[i[9]||=f(`div`,null,[f(`h2`,{class:`orders-page__list-title`},`سفارش‌ها`)],-1),f(`div`,yt,[f(`button`,bt,[_(I,{name:`filter`,size:16}),i[8]||=x(` فیلتر `,-1)]),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:i[0]||=(...e)=>p(q)&&p(q)(...e)},` سفارش جدید `)])]),f(`div`,xt,[_(I,{name:`search`,size:18}),l(f(`input`,{"onUpdate:modelValue":i[1]||=e=>u(w)?w.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[A,p(w)]])]),f(`div`,St,[(e(!0),m(C,null,r(p(Z),t=>(e(),m(`button`,{key:t.key,type:`button`,class:a([`admin-tab`,{active:p(g)===t.key}]),onClick:e=>g.value=t.key},[x(y(t.label)+` `,1),`count`in t&&t.count?(e(),m(C,{key:0},[x(` (`+y(t.count)+`)`,1)],64)):E(``,!0)],10,Ct))),128))]),f(`div`,wt,[f(`table`,Tt,[i[10]||=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`شماره سفارش`),f(`th`,null,`مشتری`),f(`th`,null,`روش تسویه`),f(`th`,null,`مبلغ کل`),f(`th`,null,`متراژ`),f(`th`,null,`وضعیت`),f(`th`,null,`تاریخ ثبت`),f(`th`,null,`عملیات`)])],-1),f(`tbody`,null,[(e(!0),m(C,null,r(p(T),t=>(e(),m(`tr`,{key:t.id,class:a({"is-selected":p(v)===t.id}),onClick:e=>p(M)(t)},[f(`td`,null,y(t.orderNumber),1),f(`td`,null,y(t.customerName),1),f(`td`,null,y(p(F)(t.settlementMethod)),1),f(`td`,null,y(t.totalAmount?p(H)(t.totalAmount):`—`),1),f(`td`,null,y(p(W)(t.meterage)),1),f(`td`,null,[_(ie,{status:t.status},null,8,[`status`])]),f(`td`,null,y(p(U)(t.createdAt)),1),f(`td`,Dt,[f(`button`,{type:`button`,class:`orders-page__more-btn`,"aria-expanded":J.value?.id===t.id,"aria-haspopup":`menu`,"aria-label":`عملیات سفارش`,onClick:e=>ee(t,e)},[_(I,{name:`more`,size:18})],8,Ot)])],10,Et))),128))])])]),i[11]||=S(`
نمایش ۱ تا ۷ از ۱۰۳ سفارش
...
`,1)]),(e(),b(d,{to:`body`},[J.value?(e(),m(`div`,{key:0,class:`orders-page__menu`,role:`menu`,style:t(Y.value),onClick:i[7]||=j(()=>{},[`stop`])},[f(`button`,{type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[2]||=e=>$(`detail`)},` جزئیات سفارش `),J.value&&p(ne)(J.value)?(e(),m(`button`,{key:0,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[3]||=e=>$(`pricing`)},` قیمت‌گذاری `)):E(``,!0),J.value&&p(ce)(J.value)?(e(),m(`button`,{key:1,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[4]||=e=>$(`checks`)},` مدیریت چک‌ها `)):E(``,!0),J.value&&p(se)(J.value)?(e(),m(`button`,{key:2,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[5]||=e=>$(`cash`)},` رسید پرداخت `)):E(``,!0),p(te)(J.value)?(e(),m(`button`,{key:3,type:`button`,role:`menuitem`,class:`orders-page__menu-item`,onClick:i[6]||=e=>$(`final`)},` تأیید نهایی `)):E(``,!0)],4)):E(``,!0)])),_(B,{open:p(c)&&p(k)&&!!p(O),title:`جزئیات سفارش`,size:`xl`,onClose:p(P)},{footer:s(()=>[f(`button`,kt,[_(I,{name:`sms`,size:16}),i[12]||=x(` ارسال پیامک `,-1)]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:ue},[_(I,{name:`print`,size:16}),i[13]||=x(` چاپ `,-1)])]),default:s(()=>[p(O)?(e(),b(ht,{key:0,order:p(O),layout:`desktop`,"settlement-label":p(F),"status-saving":p(K),onPricing:re,onChecks:ae,onCashReceipt:oe,onFinalApprove:le,onStatus:p(G)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-14d7f12e`]]),jt={class:`compact-orders`},Mt={class:`compact-page-header`},Nt={class:`compact-page-header__row`},Pt={class:`compact-page-header__actions`},Ft={key:0,class:`compact-orders__filter-dot`,"aria-hidden":`true`},It={class:`orders-page__search admin-card`},Lt={key:0,class:`compact-orders__filter-chip admin-card`},Rt={key:1,class:`admin-tabs compact-orders__tabs`},zt=[`onClick`],Bt={class:`compact-orders__filter-form`,role:`listbox`,"aria-label":`وضعیت سفارش`},Vt=[`aria-selected`,`onClick`],Ht={key:0,class:`compact-orders__filter-check`,"aria-hidden":`true`},Ut={class:`admin-card-list`},Wt=[`onClick`],Gt={class:`admin-card-item__header`},Kt={class:`admin-card-item__title`},qt={class:`admin-card-item__meta`},Jt={key:0,class:`admin-detail-panel__inner`},Yt={class:`admin-detail-panel__header`},Xt={class:`admin-detail-panel__body`},Zt=T(g({__name:`CompactOrdersPage`,setup(t){let n=L(`(max-width: 767px)`),i=L(`(max-width: 1279px)`),{activeTab:o,selectedOrderId:c,searchQuery:d,filteredOrders:g,selectedOrder:v,showDetailPanel:S,showDetailModal:T,selectOrder:D,openOrderDetail:O,closeDetailPanel:k,closeDetailModal:j,dismissOrderDetail:M,settlementLabel:N,goPricing:P,goChecks:F,goCashReceipt:R,changeStatus:z,statusSaving:V,openAddModal:G}=de(),K=h(!1),q=w(()=>o.value!==`all`),J=w(()=>Z.find(e=>e.key===o.value)?.label??`همه`);function Y(){K.value=!0}function X(){K.value=!1}function ee(){o.value=`all`,K.value=!1}function te(e){o.value=e,K.value=!1}function ne(e){if(n.value){D(e,!0);return}O(e)}function Q(){v.value&&(j(),k(),P(v.value))}function re(){v.value&&(j(),k(),F(v.value))}function ae(){v.value&&(j(),k(),R(v.value))}function oe(){v.value&&z({orderId:v.value.id,status:`final_approved`,note:`تأیید نهایی سفارش`})}return(t,h)=>(e(),m(`div`,jt,[f(`div`,Mt,[f(`div`,Nt,[h[4]||=f(`div`,null,[f(`h2`,{class:`compact-page-header__title`},`سفارش‌ها`)],-1),f(`div`,Pt,[f(`button`,{type:`button`,class:a([`admin-btn admin-btn--outline admin-btn--sm`,{"admin-btn--filter-active":q.value}]),onClick:Y},[_(I,{name:`filter`,size:16}),h[3]||=x(` فیلتر `,-1),q.value?(e(),m(`span`,Ft)):E(``,!0)],2),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:h[0]||=(...e)=>p(G)&&p(G)(...e)},` سفارش جدید `)])])]),f(`div`,It,[_(I,{name:`search`,size:18}),l(f(`input`,{"onUpdate:modelValue":h[1]||=e=>u(d)?d.value=e:null,type:`search`,placeholder:`جستجو در شماره سفارش، مشتری...`,class:`orders-page__search-input`},null,512),[[A,p(d)]])]),p(n)&&q.value?(e(),m(`div`,Lt,[f(`span`,null,`وضعیت: `+y(J.value),1),f(`button`,{type:`button`,class:`compact-orders__filter-clear`,onClick:ee},`پاک کردن`)])):E(``,!0),p(n)?E(``,!0):(e(),m(`div`,Rt,[(e(!0),m(C,null,r(p(Z),t=>(e(),m(`button`,{key:t.key,type:`button`,class:a([`admin-tab`,{active:p(o)===t.key}]),onClick:e=>o.value=t.key},[x(y(t.label)+` `,1),`count`in t&&t.count?(e(),m(C,{key:0},[x(` (`+y(t.count)+`)`,1)],64)):E(``,!0)],10,zt))),128))])),_(B,{open:K.value,title:`فیلتر سفارش‌ها`,onClose:X},{footer:s(()=>[f(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:ee},` پاک کردن `),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:X},` بستن `)]),default:s(()=>[f(`div`,Bt,[(e(!0),m(C,null,r(p(Z),t=>(e(),m(`button`,{key:t.key,type:`button`,class:a([`compact-orders__filter-option`,{"is-active":p(o)===t.key}]),role:`option`,"aria-selected":p(o)===t.key,onClick:e=>te(t.key)},[f(`span`,null,y(t.label),1),p(o)===t.key?(e(),m(`span`,Ht,`✓`)):E(``,!0)],10,Vt))),128))])]),_:1},8,[`open`]),f(`div`,Ut,[(e(!0),m(C,null,r(p(g),t=>(e(),m(`button`,{key:t.id,type:`button`,class:a([`admin-card-item`,{selected:p(c)===t.id}]),onClick:e=>ne(t)},[f(`div`,Gt,[f(`p`,Kt,y(t.orderNumber),1),_(ie,{status:t.status},null,8,[`status`])]),f(`div`,qt,[f(`span`,null,[h[5]||=f(`strong`,null,`مشتری:`,-1),x(` `+y(t.customerName),1)]),f(`span`,null,[h[6]||=f(`strong`,null,`متراژ:`,-1),x(` `+y(p(W)(t.meterage)),1)]),f(`span`,null,[h[7]||=f(`strong`,null,`مبلغ:`,-1),x(` `+y(t.totalAmount?p(H)(t.totalAmount):`—`),1)]),f(`span`,null,y(p(U)(t.createdAt)),1)])],10,Wt))),128))]),f(`div`,{class:a([`admin-detail-panel compact-orders__mobile-panel`,{open:p(n)&&p(S)&&p(v)}])},[p(v)?(e(),m(`div`,Jt,[f(`div`,Yt,[f(`button`,{type:`button`,class:`admin-detail-panel__back`,"aria-label":`بازگشت به لیست`,onClick:h[2]||=(...e)=>p(M)&&p(M)(...e)},[_(I,{name:`chevron-back`,size:20})]),h[8]||=f(`h2`,{class:`admin-detail-panel__title`},`جزئیات سفارش`,-1)]),f(`div`,Xt,[_(ht,{order:p(v),"settlement-label":p(N),"status-saving":p(V),onPricing:Q,onChecks:re,onCashReceipt:ae,onFinalApprove:oe,onStatus:p(z)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])])])):E(``,!0)],2),_(B,{open:p(i)&&!p(n)&&p(T)&&!!p(v),title:`جزئیات سفارش`,size:`xl`,onClose:p(M)},{default:s(()=>[p(v)?(e(),b(ht,{key:0,order:p(v),"settlement-label":p(N),"status-saving":p(V),onPricing:Q,onChecks:re,onCashReceipt:ae,onFinalApprove:oe,onStatus:p(z)},null,8,[`order`,`settlement-label`,`status-saving`,`onStatus`])):E(``,!0)]),_:1},8,[`open`,`onClose`])]))}}),[[`__scopeId`,`data-v-49533541`]]);function Qt(e){return e.rollMeters&&e.rollMeters>0?e.rollMeters:e.minMeterage>0?e.minMeterage:50}function $t(e){let t=e.orderMultiplier??e.orderStep;return t&&t>0?t:10}function en(e,t,n){return t===`roll`?n*Qt(e):n}function tn(e,t){let n=Qt(e);return n>0?t/n:0}function nn(e,t,n=1){if(!t||t<=0)return`مقدار باید بزرگ‌تر از صفر باشد.`;if(t1e-6)return`متراژ ${e.name} باید مضرب ${r} باشد`;let a=Qt(e),o=n>0?n:1;return t/a+1e-9g.value.map(e=>{let t=e.phone?` — ${e.phone}`:``,n=e.isActive===!1?` (غیرفعال)`:``;return{value:e.id,label:`${e.name}${t}${n}`}})),H=w(()=>I.value.filter(e=>e.isActive!==!1).map(e=>({value:e.id,label:`${e.name} — ${e.catalogCode} (${e.companyName})`}))),U=w(()=>I.value.find(e=>e.id===R.productId)??null),W=w(()=>R.quantityMode===`roll`?`تعداد طاقه`:`متراژ (متر)`);c(()=>u.customerId,e=>{if(!e){u.customerName=``,u.customerPhone=``;return}v(e)});function G(e,t){let n=L.value>0?L.value:1;if(t===`roll`)return n;let r=Qt(e);return Math.max(e.minMeterage||0,n*r)}c(n,async e=>{if(e){R.productId=``,R.quantityMode=`roll`,R.quantity=0,i.value=``;try{let[e,t]=await Promise.all([F.list({activeOnly:!0}),P.get().catch(()=>null)]);I.value=e,L.value=t?.minOrderRollsPerProduct??1}catch(e){N.error(e instanceof M?e.message:`بارگذاری محصولات انجام نشد.`)}}}),c(()=>[R.productId,R.quantityMode],([e,t])=>{let n=I.value.find(t=>t.id===e);n&&(R.quantity=G(n,t))});function K(){i.value=``;let e=U.value;if(!e){i.value=`محصول را انتخاب کنید.`,N.error(i.value);return}if(!R.quantity||R.quantity<=0){i.value=`مقدار باید بزرگ‌تر از صفر باشد.`,N.error(i.value);return}let t=en(e,R.quantityMode,R.quantity),n=nn(e,t,L.value);if(n){i.value=n,N.error(n);return}if(!S({productId:e.id,productName:e.name,catalogCode:e.catalogCode??e.productCode,meterage:t})){N.error(i.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=tn(t,e.meterage);if(!Number.isFinite(n))return null;let r=Math.round(n*100)/100;return r%1,V(r)}return(t,o)=>(e(),b(B,{open:p(n),title:`پیش‌سفارش جدید`,size:`lg`,onClose:p(D)},{footer:s(()=>[f(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:o[6]||=(...e)=>p(D)&&p(D)(...e)},` انصراف `),f(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!p(d),onClick:o[7]||=(...e)=>p(O)&&p(O)(...e)},` ثبت پیش‌سفارش `,8,gn)]),default:s(()=>[f(`form`,{class:`admin-form`,onSubmit:o[5]||=j((...e)=>p(O)&&p(O)(...e),[`prevent`])},[p(i)?(e(),m(`p`,rn,y(p(i)),1)):E(``,!0),o[11]||=f(`p`,{class:`admin-form__hint`},` مثل سفارش مشتری: ابتدا اقلام ثبت می‌شود، قیمت‌گذاری و تسویه بعداً انجام می‌شود. `,-1),f(`div`,an,[o[8]||=f(`label`,{id:`order-customer-label`},[x(` مشتری `),f(`span`,{class:`admin-form__required`},`*`)],-1),_(J,{id:`order-customer`,modelValue:p(u).customerId,"onUpdate:modelValue":o[0]||=e=>p(u).customerId=e,block:``,searchable:``,"aria-label":`انتخاب مشتری از لیست`,placeholder:`انتخاب مشتری از لیست`,"search-placeholder":`جستجوی نام یا موبایل…`,options:z.value},null,8,[`modelValue`,`options`]),z.value.length?E(``,!0):(e(),m(`p`,on,` مشتری‌ای در سیستم نیست. ابتدا از بخش «مشتریان» یک مشتری ثبت کنید. `))]),f(`div`,sn,[o[9]||=f(`label`,null,`محصول`,-1),_(J,{modelValue:R.productId,"onUpdate:modelValue":o[1]||=e=>R.productId=e,block:``,searchable:``,"aria-label":`انتخاب محصول`,placeholder:`جستجو و انتخاب محصول`,"search-placeholder":`نام، کد یا کالیته…`,options:H.value},null,8,[`modelValue`,`options`])]),f(`div`,cn,[f(`div`,ln,[o[10]||=f(`span`,{class:`admin-form__label`},`واحد سفارش`,-1),f(`div`,un,[f(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`roll`}]),onClick:o[2]||=e=>R.quantityMode=`roll`},` طاقه `,2),f(`button`,{type:`button`,class:a([`order-add__mode-btn`,{"order-add__mode-btn--active":R.quantityMode===`meter`}]),onClick:o[3]||=e=>R.quantityMode=`meter`},` متراژ `,2)])]),f(`div`,dn,[f(`label`,fn,y(W.value),1),l(f(`input`,{id:`order-item-quantity`,"onUpdate:modelValue":o[4]||=e=>R.quantity=e,type:`number`,min:`0`,step:`any`,class:`admin-input`},null,512),[[A,R.quantity,void 0,{number:!0}]])])]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:K},` افزودن به اقلام `),p(u).items.length?(e(),m(`div`,pn,[(e(!0),m(C,null,r(p(u).items,t=>(e(),m(`div`,{key:t.productId,class:`order-add__item`},[f(`div`,null,[f(`strong`,null,y(t.productName),1),f(`span`,null,[x(` کالیته `+y(t.catalogCode)+` — `+y(p(V)(t.meterage))+` متر `,1),q(t)?(e(),m(C,{key:0},[x(` (`+y(q(t))+` طاقه) `,1)],64)):E(``,!0)])]),f(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>p(T)(t.productId)},` حذف `,8,mn)]))),128))])):(e(),m(`p`,hn,`هنوز محصولی به پیش‌سفارش اضافه نشده است.`))],32)]),_:1},8,[`open`,`onClose`]))}}),[[`__scopeId`,`data-v-91be5fdc`]]),vn=g({__name:`OrdersView`,setup(t){return $(),(t,n)=>(e(),m(C,null,[_(At,{class:`desktop-only`}),_(Zt,{class:`compact-only`}),_(_n)],64))}});export{vn as default}; \ No newline at end of file diff --git a/dist/assets/ProductsView-B78izKAQ.css b/dist/assets/ProductsView-B78izKAQ.css new file mode 100644 index 0000000..8e975d9 --- /dev/null +++ b/dist/assets/ProductsView-B78izKAQ.css @@ -0,0 +1 @@ +.products-page__filters[data-v-87b603ef]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.products-page__search[data-v-87b603ef]{min-width:200px;color:var(--color-text-muted);flex:1;align-items:center;gap:10px;display:flex}.products-page__search-input[data-v-87b603ef]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.products-page__catalog-filter[data-v-87b603ef]{width:min(260px,100%)}.admin-form__hint[data-v-87b603ef]{color:var(--color-text-muted);margin:6px 0 0;font-size:.75rem;line-height:1.5}.products-page__table[data-v-87b603ef]{overflow:hidden}.product-thumb[data-v-87b603ef]{background:#e8eceb 50%/cover no-repeat;border-radius:8px;width:44px;height:36px;display:block}.product-thumb--empty[data-v-87b603ef]{background:#eef1f0}.color-variants__hint[data-v-87b603ef]{color:var(--color-text-muted);margin:0 0 10px;font-size:.75rem;line-height:1.6}.general-images[data-v-87b603ef],.color-variants[data-v-87b603ef]{flex-direction:column;gap:10px;display:flex}.product-media-row[data-v-87b603ef]{border:1px solid var(--color-border);background:var(--color-elevated,#fff);border-radius:14px;grid-template-columns:1fr auto;align-items:center;gap:12px 14px;padding:12px 14px;display:grid;box-shadow:0 1px 2px #0f172a0a}.product-media-row--color[data-v-87b603ef]{grid-template-columns:auto 1fr auto;align-items:center}.product-media-row[data-v-87b603ef] .image-picker{min-width:0}.product-media-row__input[data-v-87b603ef]{min-width:0;height:44px}.product-media-row__delete[data-v-87b603ef]{width:40px;height:40px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s,border-color .15s;display:inline-flex}.product-media-row__delete[data-v-87b603ef]:hover{color:#c53030;background:#c5303014;border-color:#c530302e}.product-media-row__delete[data-v-87b603ef]:focus-visible{outline:2px solid var(--color-primary,#2d6a4f);outline-offset:2px}.product-media-add[data-v-87b603ef]{justify-content:center;align-self:stretch}@media (width<=520px){.product-media-row--color[data-v-87b603ef]{grid-template-rows:auto auto;grid-template-columns:1fr auto}.product-media-row--color[data-v-87b603ef] .image-picker{grid-column:1/-1}.product-media-row--color .product-media-row__delete[data-v-87b603ef]{grid-area:2/2}.product-media-row--color .product-media-row__input[data-v-87b603ef]{grid-area:2/1}} diff --git a/dist/assets/ProductsView-Bh5L6IKe.css b/dist/assets/ProductsView-Bh5L6IKe.css deleted file mode 100644 index a3bae1a..0000000 --- a/dist/assets/ProductsView-Bh5L6IKe.css +++ /dev/null @@ -1 +0,0 @@ -.products-page__filters[data-v-83a6f3f4]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.products-page__search[data-v-83a6f3f4]{min-width:200px;color:var(--color-text-muted);flex:1;align-items:center;gap:10px;display:flex}.products-page__search-input[data-v-83a6f3f4]{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.products-page__catalog-filter[data-v-83a6f3f4]{width:min(260px,100%)}.admin-form__hint[data-v-83a6f3f4]{color:var(--color-text-muted);margin:6px 0 0;font-size:.75rem;line-height:1.5}.products-page__table[data-v-83a6f3f4]{overflow:hidden}.product-thumb[data-v-83a6f3f4]{background:#e8eceb 50%/cover no-repeat;border-radius:8px;width:44px;height:36px;display:block}.product-thumb--empty[data-v-83a6f3f4]{background:#eef1f0}.color-variants__hint[data-v-83a6f3f4]{color:var(--color-text-muted);margin:0 0 10px;font-size:.75rem;line-height:1.6}.general-images[data-v-83a6f3f4],.color-variants[data-v-83a6f3f4]{flex-direction:column;gap:10px;display:flex}.product-media-row[data-v-83a6f3f4]{border:1px solid var(--color-border);background:var(--color-elevated,#fff);border-radius:14px;grid-template-columns:1fr auto;align-items:center;gap:12px 14px;padding:12px 14px;display:grid;box-shadow:0 1px 2px #0f172a0a}.product-media-row--color[data-v-83a6f3f4]{grid-template-columns:auto 1fr auto;align-items:center}.product-media-row[data-v-83a6f3f4] .image-picker{min-width:0}.product-media-row__input[data-v-83a6f3f4]{min-width:0;height:44px}.product-media-row__delete[data-v-83a6f3f4]{width:40px;height:40px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s,border-color .15s;display:inline-flex}.product-media-row__delete[data-v-83a6f3f4]:hover{color:#c53030;background:#c5303014;border-color:#c530302e}.product-media-row__delete[data-v-83a6f3f4]:focus-visible{outline:2px solid var(--color-primary,#2d6a4f);outline-offset:2px}.product-media-add[data-v-83a6f3f4]{justify-content:center;align-self:stretch}@media (width<=520px){.product-media-row--color[data-v-83a6f3f4]{grid-template-rows:auto auto;grid-template-columns:1fr auto}.product-media-row--color[data-v-83a6f3f4] .image-picker{grid-column:1/-1}.product-media-row--color .product-media-row__delete[data-v-83a6f3f4]{grid-area:2/2}.product-media-row--color .product-media-row__input[data-v-83a6f3f4]{grid-area:2/1}} diff --git a/dist/assets/ProductsView-CHAVTiZy.js b/dist/assets/ProductsView-CHAVTiZy.js new file mode 100644 index 0000000..ac7ae23 --- /dev/null +++ b/dist/assets/ProductsView-CHAVTiZy.js @@ -0,0 +1 @@ +import{A as e,At as t,D as n,N as r,Ot as i,Q as a,U as o,W as s,c,ct as l,d as u,et as d,g as ee,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as b,m as ne,t as x}from"./http-CTjL79ty.js";import{B as re,D as ie,E as S,L as C,V as ae,c as w,i as T,v as oe}from"./index-BWgYBNME.js";import{t as se}from"./AdminPageSkeleton-DacAHji8.js";import{t as E}from"./BaseSwitch-Dz4ODUhf.js";import{t as ce}from"./BaseEmptyState-88fQ29rO.js";import{n as le,t as D}from"./AdminImagePicker-DhyB3HhH.js";import{t as O}from"./AdminSelect-hgn_nYC2.js";import{t as k}from"./ActiveSwitchCell-CRUUEk77.js";function ue(e,t){let n=t.find(t=>t.id===e);return!n||n.slug===`nademitex`?``:e??``}function de(e){let t=e.trim();return t.length>0?t:void 0}var fe={class:`products-page`},pe={class:`products-page__filters admin-card`},me={class:`products-page__search`},he={key:2,class:`products-page__table admin-card desktop-only`},ge={class:`admin-table-wrap`},_e={class:`admin-table`},ve={class:`numeric`},ye={class:`numeric`},be={class:`numeric`},xe={class:`numeric`},Se={class:`status`},Ce={class:`actions`},A=[`onClick`],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=[`onClick`],je={class:`admin-card-item__meta`},Me={dir:`ltr`},Ne={key:0,class:`admin-form__error`,role:`alert`},Pe={class:`admin-form__field`},Fe={class:`general-images`},Ie=[`aria-label`],Le=[`onClick`],Re={class:`admin-form__field`},ze={class:`admin-form__field`},Be={class:`admin-form__field`},Ve={class:`admin-form__field`},He={class:`admin-form__field`},Ue={class:`admin-form__field`},We={class:`admin-form__field`},Ge={class:`admin-form__field`},Ke={class:`color-variants`},qe=[`aria-label`],Je=[`onUpdate:modelValue`,`placeholder`,`aria-label`],Ye=[`onClick`],Xe={class:`admin-form__row`},j={class:`admin-form__field`},Ze={class:`admin-form__field`},Qe={class:`admin-form__field`},$e={class:`admin-form__field`},et={class:`admin-form__field`},tt={class:`admin-form__field`},nt={class:`admin-form__field`},rt=[`disabled`],M=v(ee({__name:`ProductsView`,setup(ee){let v=d([]),M=d([]),N=d([{value:`trousers`,label:`شلوار`},{value:`suit`,label:`کت‌وشلوار`},{value:`shirt`,label:`پیراهن`},{value:`other`,label:`سایر`}]),P=d([{value:`summer`,label:`تابستان`},{value:`winter`,label:`زمستان`},{value:`all_season`,label:`چهارفصل`}]),F=d(``),I=d(`all`),L=d(!0),R=d(null),z=d(null),B=d(``),V=d(!1),H=te(),it=_(()=>[{value:`all`,label:`همه شرکت‌ها`},...M.value.map(e=>({value:e.id,label:e.name}))]),at=_(()=>{let e=[{value:``,label:`نادمی تکس (پیش‌فرض)`}];for(let t of M.value)!t.isActive||t.slug===`nademitex`||e.push({value:t.id,label:t.name});return e}),U=()=>({companyId:``,name:``,productCode:``,widthCm:null,weightGrams:null,inStock:!0,isActive:!0,usageCategory:`other`,season:`all_season`,composition:``,weaveType:``,specs:``,rollMeters:50,isNew:!1,generalImages:[],colorRows:[{id:crypto.randomUUID(),name:``,imageUrl:``}]}),W=a(U()),ot=_(()=>R.value!==null),st=_(()=>R.value===`edit`?`ویرایش محصول`:`افزودن محصول`),G=_(()=>W.name.trim().length>0&&W.rollMeters>0),K=_(()=>F.value.trim().length>0||I.value!==`all`),q=_(()=>{let e=v.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 ct(){L.value=!0;try{let[e,t,n]=await Promise.all([S.list(),oe.list(),ie.get().catch(()=>null)]);v.value=e,M.value=t,n?.categoryDefsJson?.usage?.length&&(N.value=[...n.categoryDefsJson.usage.map(e=>({value:e.id,label:e.title})),{value:`other`,label:`سایر`}]),n?.categoryDefsJson?.seasons?.length&&(P.value=n.categoryDefsJson.seasons.map(e=>({value:e.id,label:e.title})))}catch(e){H.error(e instanceof x?e.message:`بارگذاری محصولات انجام نشد.`)}finally{L.value=!1}}n(()=>{ct()});function J(){R.value=`add`,z.value=null,Object.assign(W,U()),B.value=``}async function Y(e){R.value=`edit`,z.value=e.id;try{e=await S.getById(e.id)}catch{}W.companyId=ue(e.companyId,M.value),W.name=e.name,W.productCode=e.productCode,W.widthCm=e.widthCm??null,W.weightGrams=e.weightGrams??null,W.inStock=e.internalStock==null||e.internalStock>0,W.isActive=e.isActive,W.usageCategory=e.usageCategory??`other`,W.season=e.season??`all_season`,W.composition=e.composition??``,W.weaveType=e.weaveType??``,W.specs=e.specs??``,W.rollMeters=e.rollMeters??50,W.isNew=e.isNew??!1,W.generalImages=[...e.imageUrls??[]];let t=e.colors?.length?e.colors:e.color?.trim()?[e.color.trim()]:[];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:``,imageUrl:``}],B.value=``}function lt(){W.colorRows.push({id:crypto.randomUUID(),name:``,imageUrl:``})}function ut(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 dt(){W.generalImages.push(``)}function ft(e){W.generalImages.splice(e,1)}function pt(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 mt(){let e=pt(W.generalImages),t=[];return W.colorRows.forEach((e,n)=>{let r=e.imageUrl.trim()||void 0,i=e.name.trim()||(r?`رنگ ${n+1}`:``);!i&&!r||i&&t.push({name:i,imageUrls:r?[r]:[],imageUrl:r})}),{colorEntries:t,imageUrls:e}}function X(){R.value=null,z.value=null,B.value=``}async function Z(){if(!G.value){B.value=`نام محصول و متراژ هر طاقه الزامی هستند.`;return}let e=de(W.companyId);if(W.companyId.trim()&&!M.value.find(e=>e.id===W.companyId)?.isActive){B.value=`شرکت معتبر انتخاب کنید.`;return}let{colorEntries:t,imageUrls:n}=mt(),r=W.rollMeters,i={usageCategory:W.usageCategory,season:W.season,composition:W.composition.trim()||null,weaveType:W.weaveType.trim()||null,specs:W.specs.trim()||void 0,rollMeters:r,widthCm:W.widthCm,weightGrams:W.weightGrams,isNew:W.isNew,colorsJson:t,imageUrlsJson:n},a=W.productCode.trim()||`PRD-${Date.now()}`,o=t[0]?.name||`—`,s={minMeterage:r,orderStep:r,orderMultiplier:r},c={internalStock:W.inStock?null:0};V.value=!0;try{if(R.value===`edit`&&z.value){await S.update(z.value,{companyId:e,name:W.name.trim(),color:o,code:a,productCode:a,...s,...c,isActive:W.isActive,...i});let t=await S.getById(z.value),n=v.value.findIndex(e=>e.id===z.value);n!==-1&&(v.value[n]=t),H.success(`اطلاعات محصول به‌روزرسانی شد.`)}else{let t=await S.create({companyId:e,name:W.name.trim(),color:o,code:a,productCode:a,...s,...c,isActive:W.isActive,...i});v.value.push(t),H.success(`محصول جدید ثبت شد.`)}X()}catch(e){e instanceof x&&e.status===0&&(B.value=e.message),H.error(e instanceof x?e.message:`ذخیره محصول انجام نشد.`)}finally{V.value=!1}}async function Q(e,t){await S.setActive(e,t)}async function $(e){if(await re({title:`حذف محصول`,message:`آیا از حذف دائمی «${e.name}» مطمئن هستید؟ این عمل قابل بازگشت نیست.`,confirmLabel:`حذف`,cancelLabel:`انصراف`,tone:`danger`}))try{await S.remove(e.id),v.value=v.value.filter(t=>t.id!==e.id),H.success(`محصول حذف شد.`)}catch(e){H.error(e instanceof x?e.message:`حذف محصول انجام نشد.`)}}function ht(){F.value=``,I.value=`all`}return(n,a)=>(e(),u(`div`,fe,[c(`div`,{class:`admin-page-header`},[a[16]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`محصولات`)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:J},` افزودن محصول `)]),c(`div`,pe,[c(`div`,me,[f(C,{name:`search`,size:18}),s(c(`input`,{"onUpdate:modelValue":a[0]||=e=>F.value=e,type:`search`,class:`products-page__search-input`,placeholder:`جستجو در نام، رنگ، کد...`},null,512),[[b,F.value]])]),f(O,{modelValue:I.value,"onUpdate:modelValue":a[1]||=e=>I.value=e,class:`products-page__catalog-filter`,"aria-label":`فیلتر شرکت`,options:it.value},null,8,[`modelValue`,`options`])]),L.value?(e(),m(se,{key:0,variant:`table`})):q.value.length?(e(),u(`div`,he,[c(`div`,ge,[c(`table`,_e,[a[17]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`تصویر`),c(`th`,null,`کد محصول`),c(`th`,null,`نام`),c(`th`,null,`رنگ`),c(`th`,null,`شرکت`),c(`th`,{class:`numeric`},`حداقل متراژ`),c(`th`,{class:`numeric`},`ضریب`),c(`th`,{class:`numeric`},`قیمت هر متر`),c(`th`,{class:`numeric`},`موجودی`),c(`th`,{class:`status`},`وضعیت`),c(`th`,{class:`actions`},`عملیات`)])],-1),c(`tbody`,null,[(e(!0),u(g,null,r(q.value,n=>(e(),u(`tr`,{key:n.id},[c(`td`,null,[c(`span`,{class:i([`product-thumb`,{"product-thumb--empty":!n.imageUrls?.[0]}]),style:t(n.imageUrls?.[0]?{backgroundImage:l(le)(n.imageUrls[0])}:void 0)},null,6)]),c(`td`,null,p(n.productCode),1),c(`td`,null,p(n.name),1),c(`td`,null,p(n.color),1),c(`td`,null,p(n.companyName),1),c(`td`,ve,p(l(w)(n.minMeterage))+` متر`,1),c(`td`,ye,p(l(w)(n.orderStep)),1),c(`td`,be,p(n.price?`${l(T)(n.price)} / متر`:`—`),1),c(`td`,xe,p(l(w)(n.internalStock))+` متر`,1),c(`td`,Se,[f(k,{id:n.id,modelValue:n.isActive,"onUpdate:modelValue":e=>n.isActive=e,"entity-name":n.name,"entity-type":`محصول`,persist:Q},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),c(`td`,Ce,[c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>Y(n)},` ویرایش `,8,A),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>$(n)},` حذف `,8,we)])]))),128))])])])])):(e(),m(ce,{key:1,class:`admin-card`,icon:`products`,title:K.value?`نتیجه‌ای یافت نشد`:`محصولی ثبت نشده`,description:K.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین محصول را ثبت کنید.`},{default:o(()=>[K.value?(e(),u(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:ht},` پاک کردن فیلترها `)):(e(),u(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:J},` افزودن محصول `))]),_:1},8,[`title`,`description`])),!L.value&&q.value.length?(e(),u(`div`,Te,[(e(!0),u(g,null,r(q.value,t=>(e(),u(`article`,{key:t.id,class:`admin-card-item`},[c(`div`,Ee,[c(`p`,De,p(t.name),1),c(`div`,Oe,[f(k,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`محصول`,persist:Q},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>Y(t)},` ویرایش `,8,ke),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>$(t)},` حذف `,8,Ae)])]),c(`div`,je,[c(`span`,null,p(t.productCode),1),c(`span`,null,p(t.color),1),c(`span`,Me,`کد `+p(t.productCode),1),c(`span`,null,p(t.price?`${l(T)(t.price)} / متر`:`بدون قیمت`),1)])]))),128))])):y(``,!0),f(ae,{open:ot.value,title:st.value,size:`lg`,onClose:X},{footer:o(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},`انصراف`),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!G.value||V.value,onClick:Z},p(R.value===`edit`?`ثبت تغییرات`:`ثبت محصول`),9,rt)]),default:o(()=>[c(`form`,{class:`admin-form`,onSubmit:ne(Z,[`prevent`])},[B.value?(e(),u(`p`,Ne,p(B.value),1)):y(``,!0),c(`div`,Pe,[a[18]||=c(`label`,null,`عکس اسلایدی محصول`,-1),a[19]||=c(`p`,{class:`color-variants__hint`},` تصاویر گالری اصلی در اپ کاربر. با «ثبت محصول» یا «ثبت تغییرات» ذخیره می‌شود. `,-1),c(`div`,Fe,[(e(!0),u(g,null,r(W.generalImages,(t,n)=>(e(),u(`div`,{key:`general-${n}`,class:`product-media-row`,role:`group`,"aria-label":`تصویر اسلاید ${n+1}`},[f(D,{compact:``,"show-remove":!1,"model-value":t||null,"onUpdate:modelValue":e=>W.generalImages[n]=e??``},null,8,[`model-value`,`onUpdate:modelValue`]),c(`button`,{type:`button`,class:`product-media-row__delete`,"aria-label":`حذف این ردیف تصویر`,title:`حذف این ردیف`,onClick:e=>ft(n)},[f(C,{name:`trash`,size:17})],8,Le)],8,Ie))),128)),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline product-media-add`,onClick:dt},` + افزودن تصویر اسلاید `)])]),c(`div`,Re,[a[20]||=c(`label`,{for:`product-name`},[h(`نام محصول `),c(`span`,{class:`admin-form__required`},`*`)],-1),s(c(`input`,{id:`product-name`,"onUpdate:modelValue":a[2]||=e=>W.name=e,type:`text`,class:`admin-input`},null,512),[[b,W.name]])]),c(`div`,ze,[a[21]||=c(`label`,{for:`product-code`},`کد محصول`,-1),s(c(`input`,{id:`product-code`,"onUpdate:modelValue":a[3]||=e=>W.productCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[b,W.productCode]])]),c(`div`,Be,[a[22]||=c(`label`,{for:`product-width`},`عرض (سانتی‌متر)`,-1),s(c(`input`,{id:`product-width`,"onUpdate:modelValue":a[4]||=e=>W.widthCm=e,type:`number`,min:`0`,step:`0.1`,class:`admin-input`,dir:`ltr`},null,512),[[b,W.widthCm,void 0,{number:!0}]])]),c(`div`,Ve,[a[23]||=c(`label`,{for:`product-weight`},`وزن (گرم)`,-1),s(c(`input`,{id:`product-weight`,"onUpdate:modelValue":a[5]||=e=>W.weightGrams=e,type:`number`,min:`0`,step:`1`,class:`admin-input`,dir:`ltr`},null,512),[[b,W.weightGrams,void 0,{number:!0}]])]),c(`div`,He,[a[24]||=c(`label`,{for:`product-composition`},`جنس`,-1),s(c(`input`,{id:`product-composition`,"onUpdate:modelValue":a[6]||=e=>W.composition=e,type:`text`,class:`admin-input`},null,512),[[b,W.composition]])]),c(`div`,Ue,[a[25]||=c(`label`,{for:`product-weave`},`نوع بافت`,-1),s(c(`input`,{id:`product-weave`,"onUpdate:modelValue":a[7]||=e=>W.weaveType=e,type:`text`,class:`admin-input`},null,512),[[b,W.weaveType]])]),c(`div`,We,[a[26]||=c(`label`,{for:`product-specs`},`توضیح اضافه و تکمیلی برای مشخصه فنی`,-1),a[27]||=c(`p`,{class:`admin-form__hint`},` در بخش «مشاهده همه مشخصات» صفحه محصول در اپ نمایش داده می‌شود. `,-1),s(c(`textarea`,{id:`product-specs`,"onUpdate:modelValue":a[8]||=e=>W.specs=e,class:`admin-form__textarea`,rows:`5`,placeholder:`نکات تکمیلی مشخصات فنی — هر خط یک بند`},null,512),[[b,W.specs]])]),c(`div`,Ge,[a[28]||=c(`label`,null,`رنگ‌بندی`,-1),a[29]||=c(`p`,{class:`color-variants__hint`},` برای هر رنگ یک نام و یک تصویر بگذارید. تصویر رنگ در بخش رنگ‌بندی اپ نمایش داده می‌شود. `,-1),c(`div`,Ke,[(e(!0),u(g,null,r(W.colorRows,(t,n)=>(e(),u(`div`,{key:t.id,class:`product-media-row product-media-row--color`,role:`group`,"aria-label":`رنگ ${n+1}`},[f(D,{compact:``,"show-remove":!1,"model-value":t.imageUrl||null,"onUpdate:modelValue":e=>t.imageUrl=e??``},null,8,[`model-value`,`onUpdate:modelValue`]),s(c(`input`,{"onUpdate:modelValue":e=>t.name=e,type:`text`,class:`admin-input product-media-row__input`,placeholder:`نام رنگ ${n+1}`,"aria-label":`نام رنگ ${n+1}`},null,8,Je),[[b,t.name]]),c(`button`,{type:`button`,class:`product-media-row__delete`,"aria-label":`حذف این رنگ`,title:`حذف این رنگ`,onClick:e=>ut(n)},[f(C,{name:`trash`,size:17})],8,Ye)],8,qe))),128)),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline product-media-add`,onClick:lt},` + افزودن رنگ `)])]),c(`div`,Xe,[c(`div`,j,[a[30]||=c(`label`,{for:`product-usage`},`دسته‌بندی`,-1),f(O,{id:`product-usage`,modelValue:W.usageCategory,"onUpdate:modelValue":a[9]||=e=>W.usageCategory=e,block:``,"aria-label":`دسته‌بندی محصول`,placeholder:`انتخاب دسته‌بندی`,options:N.value},null,8,[`modelValue`,`options`])]),c(`div`,Ze,[a[31]||=c(`label`,{for:`product-season`},`فصل`,-1),f(O,{id:`product-season`,modelValue:W.season,"onUpdate:modelValue":a[10]||=e=>W.season=e,block:``,"aria-label":`فصل محصول`,placeholder:`انتخاب فصل`,options:P.value},null,8,[`modelValue`,`options`])])]),c(`div`,Qe,[a[32]||=c(`label`,{for:`product-roll`},[h(`متراژ هر طاقه `),c(`span`,{class:`admin-form__required`},`*`)],-1),a[33]||=c(`p`,{class:`admin-form__hint`},` حداقل متراژ و ضریب سفارش به‌صورت خودکار برابر با همین مقدار تنظیم می‌شود. `,-1),s(c(`input`,{id:`product-roll`,"onUpdate:modelValue":a[11]||=e=>W.rollMeters=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[b,W.rollMeters,void 0,{number:!0}]])]),c(`div`,$e,[f(E,{modelValue:W.inStock,"onUpdate:modelValue":a[12]||=e=>W.inStock=e,label:`موجود در انبار`},null,8,[`modelValue`]),a[34]||=c(`p`,{class:`admin-form__hint`},`در صورت اتمام موجودی، خاموش کنید؛ نیازی به ثبت متراژ دقیق نیست.`,-1)]),c(`div`,et,[a[35]||=c(`label`,null,`شرکت مرتبط با محصول`,-1),f(O,{modelValue:W.companyId,"onUpdate:modelValue":a[13]||=e=>W.companyId=e,block:``,"aria-label":`انتخاب شرکت مرتبط با محصول`,placeholder:`نادمی تکس (پیش‌فرض)`,options:at.value},null,8,[`modelValue`,`options`])]),c(`div`,tt,[f(E,{modelValue:W.isNew,"onUpdate:modelValue":a[14]||=e=>W.isNew=e,label:`محصول جدید`},null,8,[`modelValue`])]),c(`div`,nt,[f(E,{modelValue:W.isActive,"onUpdate:modelValue":a[15]||=e=>W.isActive=e,label:`فعال در فروشگاه`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-87b603ef`]]);export{M as default}; \ No newline at end of file diff --git a/dist/assets/ProductsView-D5Z04HJa.js b/dist/assets/ProductsView-D5Z04HJa.js deleted file mode 100644 index e712f12..0000000 --- a/dist/assets/ProductsView-D5Z04HJa.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,At as t,D as n,N as r,Ot as i,Q as a,U as o,W as s,c,ct as l,d as u,et as d,g as ee,h as f,jt as p,l as m,m as te,r as h,s as g,t as _,u as v}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ne,d as y,m as re,t as b}from"./http-CTjL79ty.js";import{B as ie,D as ae,E as x,L as S,V as oe,c as C,i as w,v as se}from"./index-DWlOII4H.js";import{t as ce}from"./AdminPageSkeleton-DacAHji8.js";import{t as T}from"./BaseSwitch-Dz4ODUhf.js";import{t as le}from"./BaseEmptyState-B6cM4bRM.js";import{n as ue,t as E}from"./AdminImagePicker-DhyB3HhH.js";import{t as D}from"./AdminSelect-CWMyO8tk.js";import{t as O}from"./ActiveSwitchCell-BQoMjcdH.js";import{t as de}from"./AdminCurrencyInput-iQrtrYek.js";function fe(e,t){let n=t.find(t=>t.id===e);return!n||n.slug===`nademitex`?``:e??``}function pe(e){let t=e.trim();return t.length>0?t:void 0}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={class:`numeric`},xe={class:`numeric`},Se={class:`numeric`},Ce={class:`numeric`},k={class:`status`},A={class:`actions`},we=[`onClick`],Te=[`onClick`],Ee={key:3,class:`compact-only admin-card-list`},De={class:`admin-card-item__header`},Oe={class:`admin-card-item__title`},ke={class:`admin-card-item__header-actions`},Ae=[`onClick`],je=[`onClick`],Me={class:`admin-card-item__meta`},Ne={dir:`ltr`},Pe={key:0,class:`admin-form__error`,role:`alert`},Fe={class:`admin-form__field`},Ie={class:`admin-form__row`},Le={class:`admin-form__field`},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={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={class:`admin-form__field`},tt={class:`admin-form__field`},nt={class:`admin-form__field`},rt={class:`general-images`},j=[`aria-label`],it=[`onClick`],at={class:`admin-form__field`},ot={class:`color-variants`},st=[`aria-label`],ct=[`onUpdate:modelValue`,`placeholder`,`aria-label`],lt=[`onClick`],ut={class:`admin-form__field`},dt={class:`admin-form__field`},ft=[`disabled`],M=_(ee({__name:`ProductsView`,setup(ee){let _=d([]),M=d([]),N=d([{value:`trousers`,label:`شلوار`},{value:`suit`,label:`کت‌وشلوار`},{value:`shirt`,label:`پیراهن`},{value:`other`,label:`سایر`}]),P=d([{value:`summer`,label:`تابستان`},{value:`winter`,label:`زمستان`},{value:`all_season`,label:`چهارفصل`}]),F=d(``),I=d(`all`),L=d(!0),R=d(null),z=d(null),B=d(``),V=d(!1),H=ne(),pt=g(()=>[{value:`all`,label:`همه شرکت‌ها`},...M.value.map(e=>({value:e.id,label:e.name}))]),mt=g(()=>{let e=[{value:``,label:`نادمی تکس (پیش‌فرض)`}];for(let t of M.value)!t.isActive||t.slug===`nademitex`||e.push({value:t.id,label:t.name});return e}),U=()=>({companyId:``,name:``,color:``,productCode:``,minMeterage:100,orderStep:50,price:null,internalStock:0,isActive:!0,usageCategory:`other`,season:`all_season`,composition:``,weaveType:``,subtitle:``,specs:``,rollMeters:50,isNew:!1,generalImages:[],colorRows:[{id:crypto.randomUUID(),name:``,imageUrl:``}]}),W=a(U()),ht=g(()=>R.value!==null),gt=g(()=>R.value===`edit`?`ویرایش محصول`:`افزودن محصول`),G=g(()=>W.name.trim()&&W.minMeterage>0),K=g(()=>F.value.trim().length>0||I.value!==`all`),q=g(()=>{let e=_.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 _t(){L.value=!0;try{let[e,t,n]=await Promise.all([x.list(),se.list(),ae.get().catch(()=>null)]);_.value=e,M.value=t,n?.categoryDefsJson?.usage?.length&&(N.value=[...n.categoryDefsJson.usage.map(e=>({value:e.id,label:e.title})),{value:`other`,label:`سایر`}]),n?.categoryDefsJson?.seasons?.length&&(P.value=n.categoryDefsJson.seasons.map(e=>({value:e.id,label:e.title})))}catch(e){H.error(e instanceof b?e.message:`بارگذاری محصولات انجام نشد.`)}finally{L.value=!1}}n(()=>{_t()});function J(){R.value=`add`,z.value=null,Object.assign(W,U()),B.value=``}async function Y(e){R.value=`edit`,z.value=e.id;try{e=await x.getById(e.id)}catch{}W.companyId=fe(e.companyId,M.value),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.specs=e.specs??``,W.rollMeters=e.rollMeters??50,W.isNew=e.isNew??!1,W.generalImages=[...e.imageUrls??[]];let t=e.colors?.length?e.colors:e.color?.trim()?[e.color.trim()]:[];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:``,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 X(){R.value=null,z.value=null,B.value=``}async function Z(){if(!G.value){B.value=`نام محصول و حداقل متراژ الزامی هستند.`;return}let e=pe(W.companyId);if(W.companyId.trim()&&!M.value.find(e=>e.id===W.companyId)?.isActive){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,specs:W.specs.trim()||void 0,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,{companyId:e,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 n=await x.getById(z.value),a=_.value.findIndex(e=>e.id===z.value);a!==-1&&(_.value[a]=n),H.success(`اطلاعات محصول به‌روزرسانی شد.`)}else{let n=await x.create({companyId:e,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});_.value.push(n),H.success(`محصول جدید ثبت شد.`)}X()}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 Q(e,t){await x.setActive(e,t)}async function $(e){if(await ie({title:`حذف محصول`,message:`آیا از حذف دائمی «${e.name}» مطمئن هستید؟ این عمل قابل بازگشت نیست.`,confirmLabel:`حذف`,cancelLabel:`انصراف`,tone:`danger`}))try{await x.remove(e.id),_.value=_.value.filter(t=>t.id!==e.id),H.success(`محصول حذف شد.`)}catch(e){H.error(e instanceof b?e.message:`حذف محصول انجام نشد.`)}}function wt(){F.value=``,I.value=`all`}return(n,a)=>(e(),u(`div`,me,[c(`div`,{class:`admin-page-header`},[a[19]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`محصولات`)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:J},` افزودن محصول `)]),c(`div`,he,[c(`div`,ge,[f(S,{name:`search`,size:18}),s(c(`input`,{"onUpdate:modelValue":a[0]||=e=>F.value=e,type:`search`,class:`products-page__search-input`,placeholder:`جستجو در نام، رنگ، کد...`},null,512),[[y,F.value]])]),f(D,{modelValue:I.value,"onUpdate:modelValue":a[1]||=e=>I.value=e,class:`products-page__catalog-filter`,"aria-label":`فیلتر شرکت`,options:pt.value},null,8,[`modelValue`,`options`])]),L.value?(e(),m(ce,{key:0,variant:`table`})):q.value.length?(e(),u(`div`,_e,[c(`div`,ve,[c(`table`,ye,[a[20]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`تصویر`),c(`th`,null,`کد محصول`),c(`th`,null,`نام`),c(`th`,null,`رنگ`),c(`th`,null,`شرکت`),c(`th`,{class:`numeric`},`حداقل متراژ`),c(`th`,{class:`numeric`},`ضریب`),c(`th`,{class:`numeric`},`قیمت هر متر`),c(`th`,{class:`numeric`},`موجودی`),c(`th`,{class:`status`},`وضعیت`),c(`th`,{class:`actions`},`عملیات`)])],-1),c(`tbody`,null,[(e(!0),u(h,null,r(q.value,n=>(e(),u(`tr`,{key:n.id},[c(`td`,null,[c(`span`,{class:i([`product-thumb`,{"product-thumb--empty":!n.imageUrls?.[0]}]),style:t(n.imageUrls?.[0]?{backgroundImage:l(ue)(n.imageUrls[0])}:void 0)},null,6)]),c(`td`,null,p(n.productCode),1),c(`td`,null,p(n.name),1),c(`td`,null,p(n.color),1),c(`td`,null,p(n.companyName),1),c(`td`,be,p(l(C)(n.minMeterage))+` متر`,1),c(`td`,xe,p(l(C)(n.orderStep)),1),c(`td`,Se,p(n.price?`${l(w)(n.price)} / متر`:`—`),1),c(`td`,Ce,p(l(C)(n.internalStock))+` متر`,1),c(`td`,k,[f(O,{id:n.id,modelValue:n.isActive,"onUpdate:modelValue":e=>n.isActive=e,"entity-name":n.name,"entity-type":`محصول`,persist:Q},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),c(`td`,A,[c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>Y(n)},` ویرایش `,8,we),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>$(n)},` حذف `,8,Te)])]))),128))])])])])):(e(),m(le,{key:1,class:`admin-card`,icon:`products`,title:K.value?`نتیجه‌ای یافت نشد`:`محصولی ثبت نشده`,description:K.value?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین محصول را ثبت کنید.`},{default:o(()=>[K.value?(e(),u(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:wt},` پاک کردن فیلترها `)):(e(),u(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:J},` افزودن محصول `))]),_:1},8,[`title`,`description`])),!L.value&&q.value.length?(e(),u(`div`,Ee,[(e(!0),u(h,null,r(q.value,t=>(e(),u(`article`,{key:t.id,class:`admin-card-item`},[c(`div`,De,[c(`p`,Oe,p(t.name),1),c(`div`,ke,[f(O,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`محصول`,persist:Q},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>Y(t)},` ویرایش `,8,Ae),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,onClick:e=>$(t)},` حذف `,8,je)])]),c(`div`,Me,[c(`span`,null,p(t.productCode),1),c(`span`,null,p(t.color),1),c(`span`,Ne,`کد `+p(t.productCode),1),c(`span`,null,p(t.price?`${l(w)(t.price)} / متر`:`بدون قیمت`),1)])]))),128))])):v(``,!0),f(oe,{open:ht.value,title:gt.value,size:`lg`,onClose:X},{footer:o(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:X},`انصراف`),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!G.value||V.value,onClick:Z},p(R.value===`edit`?`ثبت تغییرات`:`ثبت محصول`),9,ft)]),default:o(()=>[c(`form`,{class:`admin-form`,onSubmit:re(Z,[`prevent`])},[B.value?(e(),u(`p`,Pe,p(B.value),1)):v(``,!0),c(`div`,Fe,[a[21]||=c(`label`,null,`شرکت مرتبط با محصول`,-1),f(D,{modelValue:W.companyId,"onUpdate:modelValue":a[2]||=e=>W.companyId=e,block:``,"aria-label":`انتخاب شرکت مرتبط با محصول`,placeholder:`نادمی تکس (پیش‌فرض)`,options:mt.value},null,8,[`modelValue`,`options`])]),c(`div`,Ie,[c(`div`,Le,[a[22]||=c(`label`,{for:`product-name`},[te(`نام محصول `),c(`span`,{class:`admin-form__required`},`*`)],-1),s(c(`input`,{id:`product-name`,"onUpdate:modelValue":a[3]||=e=>W.name=e,type:`text`,class:`admin-input`},null,512),[[y,W.name]])]),c(`div`,Re,[a[23]||=c(`label`,{for:`product-color`},`رنگ / نوع`,-1),s(c(`input`,{id:`product-color`,"onUpdate:modelValue":a[4]||=e=>W.color=e,type:`text`,class:`admin-input`},null,512),[[y,W.color]])])]),c(`div`,ze,[a[24]||=c(`label`,{for:`product-code`},`کد محصول`,-1),s(c(`input`,{id:`product-code`,"onUpdate:modelValue":a[5]||=e=>W.productCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[y,W.productCode]])]),c(`div`,Be,[c(`div`,Ve,[a[25]||=c(`label`,{for:`product-min`},`حداقل متراژ`,-1),s(c(`input`,{id:`product-min`,"onUpdate:modelValue":a[6]||=e=>W.minMeterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,W.minMeterage,void 0,{number:!0}]])]),c(`div`,He,[a[26]||=c(`label`,{for:`product-step`},`ضریب سفارش`,-1),s(c(`input`,{id:`product-step`,"onUpdate:modelValue":a[7]||=e=>W.orderStep=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,W.orderStep,void 0,{number:!0}]])])]),c(`div`,Ue,[c(`div`,We,[a[27]||=c(`label`,{for:`product-price`},`قیمت هر متر (تومان)`,-1),f(de,{id:`product-price`,modelValue:W.price,"onUpdate:modelValue":a[8]||=e=>W.price=e,placeholder:`مثلاً ۲۵۰٬۰۰۰`},null,8,[`modelValue`])]),c(`div`,Ge,[a[28]||=c(`label`,{for:`product-stock`},`موجودی داخلی (متر)`,-1),s(c(`input`,{id:`product-stock`,"onUpdate:modelValue":a[9]||=e=>W.internalStock=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[y,W.internalStock,void 0,{number:!0}]])])]),c(`div`,Ke,[c(`div`,qe,[a[29]||=c(`label`,{for:`product-usage`},`کاربرد`,-1),f(D,{id:`product-usage`,modelValue:W.usageCategory,"onUpdate:modelValue":a[10]||=e=>W.usageCategory=e,block:``,"aria-label":`کاربرد محصول`,placeholder:`انتخاب کاربرد`,options:N.value},null,8,[`modelValue`,`options`])]),c(`div`,Je,[a[30]||=c(`label`,{for:`product-season`},`فصل`,-1),f(D,{id:`product-season`,modelValue:W.season,"onUpdate:modelValue":a[11]||=e=>W.season=e,block:``,"aria-label":`فصل محصول`,placeholder:`انتخاب فصل`,options:P.value},null,8,[`modelValue`,`options`])])]),c(`div`,Ye,[c(`div`,Xe,[a[31]||=c(`label`,{for:`product-composition`},`جنس / ترکیب`,-1),s(c(`input`,{id:`product-composition`,"onUpdate:modelValue":a[12]||=e=>W.composition=e,type:`text`,class:`admin-input`},null,512),[[y,W.composition]])]),c(`div`,Ze,[a[32]||=c(`label`,{for:`product-weave`},`نوع بافت`,-1),s(c(`input`,{id:`product-weave`,"onUpdate:modelValue":a[13]||=e=>W.weaveType=e,type:`text`,class:`admin-input`},null,512),[[y,W.weaveType]])])]),c(`div`,Qe,[c(`div`,$e,[a[33]||=c(`label`,{for:`product-subtitle`},`زیرعنوان`,-1),s(c(`input`,{id:`product-subtitle`,"onUpdate:modelValue":a[14]||=e=>W.subtitle=e,type:`text`,class:`admin-input`},null,512),[[y,W.subtitle]])]),c(`div`,et,[a[34]||=c(`label`,{for:`product-roll`},`متراژ طاقه`,-1),s(c(`input`,{id:`product-roll`,"onUpdate:modelValue":a[15]||=e=>W.rollMeters=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[y,W.rollMeters,void 0,{number:!0}]])])]),c(`div`,tt,[a[35]||=c(`label`,{for:`product-specs`},`مشخصات محصول`,-1),a[36]||=c(`p`,{class:`admin-form__hint`},` متن آزاد؛ در بخش «مشاهده همه مشخصات» صفحه محصول در اپ نمایش داده می‌شود. `,-1),s(c(`textarea`,{id:`product-specs`,"onUpdate:modelValue":a[16]||=e=>W.specs=e,class:`admin-form__textarea`,rows:`5`,placeholder:`مثلاً جنس، عرض، وزن و نکات نگهداری — هر خط یک بند`},null,512),[[y,W.specs]])]),c(`div`,nt,[a[37]||=c(`label`,null,`تصاویر عمومی محصول`,-1),a[38]||=c(`p`,{class:`color-variants__hint`},` فقط برای گالری اصلی در اپ کاربر (بدون وابستگی به رنگ). با «ثبت تغییرات» ثبت می‌شود. `,-1),c(`div`,rt,[(e(!0),u(h,null,r(W.generalImages,(t,n)=>(e(),u(`div`,{key:`general-${n}`,class:`product-media-row`,role:`group`,"aria-label":`تصویر عمومی ${n+1}`},[f(E,{compact:``,"show-remove":!1,"model-value":t||null,"onUpdate:modelValue":e=>W.generalImages[n]=e??``},null,8,[`model-value`,`onUpdate:modelValue`]),c(`button`,{type:`button`,class:`product-media-row__delete`,"aria-label":`حذف این ردیف تصویر`,title:`حذف این ردیف`,onClick:e=>xt(n)},[f(S,{name:`trash`,size:17})],8,it)],8,j))),128)),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline product-media-add`,onClick:bt},` + افزودن تصویر عمومی `)])]),c(`div`,at,[a[39]||=c(`label`,null,`رنگ‌بندی‌ها`,-1),a[40]||=c(`p`,{class:`color-variants__hint`},` برای هر رنگ یک نام و یک تصویر بگذارید. تصویر رنگ در بخش رنگ‌بندی اپ نمایش داده می‌شود، نه در گالری عمومی. `,-1),c(`div`,ot,[(e(!0),u(h,null,r(W.colorRows,(t,n)=>(e(),u(`div`,{key:t.id,class:`product-media-row product-media-row--color`,role:`group`,"aria-label":`رنگ ${n+1}`},[f(E,{compact:``,"show-remove":!1,"model-value":t.imageUrl||null,"onUpdate:modelValue":e=>t.imageUrl=e??``},null,8,[`model-value`,`onUpdate:modelValue`]),s(c(`input`,{"onUpdate:modelValue":e=>t.name=e,type:`text`,class:`admin-input product-media-row__input`,placeholder:`نام رنگ ${n+1}`,"aria-label":`نام رنگ ${n+1}`},null,8,ct),[[y,t.name]]),c(`button`,{type:`button`,class:`product-media-row__delete`,"aria-label":`حذف این رنگ`,title:`حذف این رنگ`,onClick:e=>yt(n)},[f(S,{name:`trash`,size:17})],8,lt)],8,st))),128)),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline product-media-add`,onClick:vt},` + افزودن رنگ `)])]),c(`div`,ut,[f(T,{modelValue:W.isNew,"onUpdate:modelValue":a[17]||=e=>W.isNew=e,label:`محصول جدید`},null,8,[`modelValue`])]),c(`div`,dt,[f(T,{modelValue:W.isActive,"onUpdate:modelValue":a[18]||=e=>W.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-83a6f3f4`]]);export{M as default}; \ No newline at end of file diff --git a/dist/assets/ReportsView-BQeqHQaO.js b/dist/assets/ReportsView-COhsr222.js similarity index 99% rename from dist/assets/ReportsView-BQeqHQaO.js rename to dist/assets/ReportsView-COhsr222.js index c6a990a..ac9e3a0 100644 --- a/dist/assets/ReportsView-BQeqHQaO.js +++ b/dist/assets/ReportsView-COhsr222.js @@ -1 +1 @@ -import{A as e,D as t,N as n,c as r,ct as i,d as a,et as o,g as ee,h as te,jt as s,l as c,m as l,r as u,t as d,u as f}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ne,t as re}from"./http-CTjL79ty.js";import{L as ie,b as p,c as m,i as h,s as g}from"./index-DWlOII4H.js";import{t as ae}from"./AdminPageSkeleton-DacAHji8.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=o(!0),q=o({newOrders:0,pendingReview:0,pendingCheck:0,finalApproval:0,todaySales:0,todaySalesGrowth:0,monthSales:0}),J=o([]),Y=o([]),X=o([]),Z=o([]),Q=o([]),$=o(null);t(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(t,o)=>(e(),a(`div`,oe,[r(`div`,se,[o[1]||=r(`div`,null,[r(`h1`,{class:`admin-page-header__title`},`گزارش‌ها`)],-1),r(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:Te},[te(ie,{name:`print`,size:16}),o[0]||=l(` چاپ گزارش `,-1)])]),K.value?(e(),c(ae,{key:0,variant:`table`})):(e(),a(u,{key:1},[r(`div`,_,[r(`div`,v,[o[2]||=r(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),r(`p`,y,s(i(h)(q.value.todaySales)),1),r(`span`,b,`+`+s(q.value.todaySalesGrowth)+`% نسبت به دیروز`,1)]),r(`div`,x,[o[3]||=r(`p`,{class:`admin-stat-card__label`},`فروش ماه جاری`,-1),r(`p`,S,s(i(h)(q.value.monthSales)),1)]),r(`div`,C,[o[4]||=r(`p`,{class:`admin-stat-card__label`},`سفارش‌های جدید`,-1),r(`p`,w,s(i(m)(q.value.newOrders)),1)]),r(`div`,T,[o[5]||=r(`p`,{class:`admin-stat-card__label`},`در انتظار بررسی`,-1),r(`p`,E,s(i(m)(q.value.pendingReview)),1)])]),$.value?(e(),a(`div`,D,[r(`div`,O,[o[6]||=r(`p`,{class:`admin-stat-card__label`},`مشتریان فعال`,-1),r(`p`,k,s(i(m)($.value.active)),1)]),r(`div`,A,[o[7]||=r(`p`,{class:`admin-stat-card__label`},`غیرفعال`,-1),r(`p`,j,s(i(m)($.value.inactive)),1)]),r(`div`,M,[o[8]||=r(`p`,{class:`admin-stat-card__label`},`جدید ۳۰ روز`,-1),r(`p`,N,s(i(m)($.value.newLast30Days)),1)]),r(`div`,P,[o[9]||=r(`p`,{class:`admin-stat-card__label`},`بدون خرید`,-1),r(`p`,F,s(i(m)($.value.noPurchase)),1)]),r(`div`,I,[o[10]||=r(`p`,{class:`admin-stat-card__label`},`بدون خرید ۹۰ روز`,-1),r(`p`,L,s(i(m)($.value.noPurchase90Days)),1)]),r(`div`,R,[o[11]||=r(`p`,{class:`admin-stat-card__label`},`دارای واسطه`,-1),r(`p`,z,s(i(m)($.value.withAgent)),1)])])):f(``,!0),r(`div`,B,[r(`section`,V,[o[13]||=r(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک شرکت`,-1),r(`div`,H,[r(`table`,U,[o[12]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`شرکت`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`مجموع متراژ`),r(`th`,null,`مجموع مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(J.value,t=>(e(),a(`tr`,{key:t.companyName},[r(`td`,null,s(t.companyName),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.totalAmount)),1)]))),128))])])]),r(`div`,ce,[(e(!0),a(u,null,n(J.value,t=>(e(),a(`article`,{key:t.companyName,class:`admin-card-item`},[r(`p`,W,s(t.companyName),1),r(`div`,G,[r(`span`,null,s(t.orderCount)+` سفارش`,1),r(`span`,null,s(i(g)(t.meterage)),1),r(`span`,null,s(i(h)(t.totalAmount)),1)])]))),128))])]),r(`section`,le,[o[15]||=r(`h2`,{class:`reports-page__section-title`},`سفارش‌ها به تفکیک وضعیت`,-1),r(`div`,ue,[r(`table`,de,[o[14]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`وضعیت`),r(`th`,null,`تعداد`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(Y.value,t=>(e(),a(`tr`,{key:t.status},[r(`td`,null,s(t.status),1),r(`td`,null,s(i(m)(t.count)),1)]))),128))])])]),r(`ul`,fe,[(e(!0),a(u,null,n(Y.value,t=>(e(),a(`li`,{key:t.status},[r(`span`,null,s(t.status),1),r(`strong`,null,s(i(m)(t.count)),1)]))),128))])])]),X.value.length?(e(),a(`div`,pe,[r(`section`,me,[o[17]||=r(`h2`,{class:`reports-page__section-title`},`فروش ماهانه`,-1),r(`div`,he,[r(`table`,ge,[o[16]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`ماه`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`مجموع متراژ`),r(`th`,null,`مجموع مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(X.value,t=>(e(),a(`tr`,{key:t.month},[r(`td`,null,s(t.month),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.totalAmount)),1)]))),128))])])])])])):f(``,!0),Z.value.length||Q.value.length?(e(),a(`div`,_e,[Z.value.length?(e(),a(`section`,ve,[o[19]||=r(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک محصول`,-1),r(`div`,ye,[r(`table`,be,[o[18]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`محصول`),r(`th`,null,`کد`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`متراژ`),r(`th`,null,`مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(Z.value,t=>(e(),a(`tr`,{key:t.productId},[r(`td`,null,s(t.productName),1),r(`td`,xe,s(t.productCode),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.totalAmount)),1)]))),128))])])])])):f(``,!0),Q.value.length?(e(),a(`section`,Se,[o[21]||=r(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک مشتری`,-1),r(`div`,Ce,[r(`table`,we,[o[20]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`مشتری`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`متراژ`),r(`th`,null,`مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(Q.value,t=>(e(),a(`tr`,{key:t.customerName},[r(`td`,null,s(t.customerName),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.totalAmount)),1)]))),128))])])])])):f(``,!0)])):f(``,!0)],64))]))}}),[[`__scopeId`,`data-v-6618f331`]]);export{K as default}; \ No newline at end of file +import{A as e,D as t,N as n,c as r,ct as i,d as a,et as o,g as ee,h as te,jt as s,l as c,m as l,r as u,t as d,u as f}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as ne,t as re}from"./http-CTjL79ty.js";import{L as ie,b as p,c as m,i as h,s as g}from"./index-BWgYBNME.js";import{t as ae}from"./AdminPageSkeleton-DacAHji8.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=o(!0),q=o({newOrders:0,pendingReview:0,pendingCheck:0,finalApproval:0,todaySales:0,todaySalesGrowth:0,monthSales:0}),J=o([]),Y=o([]),X=o([]),Z=o([]),Q=o([]),$=o(null);t(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(t,o)=>(e(),a(`div`,oe,[r(`div`,se,[o[1]||=r(`div`,null,[r(`h1`,{class:`admin-page-header__title`},`گزارش‌ها`)],-1),r(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:Te},[te(ie,{name:`print`,size:16}),o[0]||=l(` چاپ گزارش `,-1)])]),K.value?(e(),c(ae,{key:0,variant:`table`})):(e(),a(u,{key:1},[r(`div`,_,[r(`div`,v,[o[2]||=r(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),r(`p`,y,s(i(h)(q.value.todaySales)),1),r(`span`,b,`+`+s(q.value.todaySalesGrowth)+`% نسبت به دیروز`,1)]),r(`div`,x,[o[3]||=r(`p`,{class:`admin-stat-card__label`},`فروش ماه جاری`,-1),r(`p`,S,s(i(h)(q.value.monthSales)),1)]),r(`div`,C,[o[4]||=r(`p`,{class:`admin-stat-card__label`},`سفارش‌های جدید`,-1),r(`p`,w,s(i(m)(q.value.newOrders)),1)]),r(`div`,T,[o[5]||=r(`p`,{class:`admin-stat-card__label`},`در انتظار بررسی`,-1),r(`p`,E,s(i(m)(q.value.pendingReview)),1)])]),$.value?(e(),a(`div`,D,[r(`div`,O,[o[6]||=r(`p`,{class:`admin-stat-card__label`},`مشتریان فعال`,-1),r(`p`,k,s(i(m)($.value.active)),1)]),r(`div`,A,[o[7]||=r(`p`,{class:`admin-stat-card__label`},`غیرفعال`,-1),r(`p`,j,s(i(m)($.value.inactive)),1)]),r(`div`,M,[o[8]||=r(`p`,{class:`admin-stat-card__label`},`جدید ۳۰ روز`,-1),r(`p`,N,s(i(m)($.value.newLast30Days)),1)]),r(`div`,P,[o[9]||=r(`p`,{class:`admin-stat-card__label`},`بدون خرید`,-1),r(`p`,F,s(i(m)($.value.noPurchase)),1)]),r(`div`,I,[o[10]||=r(`p`,{class:`admin-stat-card__label`},`بدون خرید ۹۰ روز`,-1),r(`p`,L,s(i(m)($.value.noPurchase90Days)),1)]),r(`div`,R,[o[11]||=r(`p`,{class:`admin-stat-card__label`},`دارای واسطه`,-1),r(`p`,z,s(i(m)($.value.withAgent)),1)])])):f(``,!0),r(`div`,B,[r(`section`,V,[o[13]||=r(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک شرکت`,-1),r(`div`,H,[r(`table`,U,[o[12]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`شرکت`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`مجموع متراژ`),r(`th`,null,`مجموع مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(J.value,t=>(e(),a(`tr`,{key:t.companyName},[r(`td`,null,s(t.companyName),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.totalAmount)),1)]))),128))])])]),r(`div`,ce,[(e(!0),a(u,null,n(J.value,t=>(e(),a(`article`,{key:t.companyName,class:`admin-card-item`},[r(`p`,W,s(t.companyName),1),r(`div`,G,[r(`span`,null,s(t.orderCount)+` سفارش`,1),r(`span`,null,s(i(g)(t.meterage)),1),r(`span`,null,s(i(h)(t.totalAmount)),1)])]))),128))])]),r(`section`,le,[o[15]||=r(`h2`,{class:`reports-page__section-title`},`سفارش‌ها به تفکیک وضعیت`,-1),r(`div`,ue,[r(`table`,de,[o[14]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`وضعیت`),r(`th`,null,`تعداد`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(Y.value,t=>(e(),a(`tr`,{key:t.status},[r(`td`,null,s(t.status),1),r(`td`,null,s(i(m)(t.count)),1)]))),128))])])]),r(`ul`,fe,[(e(!0),a(u,null,n(Y.value,t=>(e(),a(`li`,{key:t.status},[r(`span`,null,s(t.status),1),r(`strong`,null,s(i(m)(t.count)),1)]))),128))])])]),X.value.length?(e(),a(`div`,pe,[r(`section`,me,[o[17]||=r(`h2`,{class:`reports-page__section-title`},`فروش ماهانه`,-1),r(`div`,he,[r(`table`,ge,[o[16]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`ماه`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`مجموع متراژ`),r(`th`,null,`مجموع مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(X.value,t=>(e(),a(`tr`,{key:t.month},[r(`td`,null,s(t.month),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.totalAmount)),1)]))),128))])])])])])):f(``,!0),Z.value.length||Q.value.length?(e(),a(`div`,_e,[Z.value.length?(e(),a(`section`,ve,[o[19]||=r(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک محصول`,-1),r(`div`,ye,[r(`table`,be,[o[18]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`محصول`),r(`th`,null,`کد`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`متراژ`),r(`th`,null,`مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(Z.value,t=>(e(),a(`tr`,{key:t.productId},[r(`td`,null,s(t.productName),1),r(`td`,xe,s(t.productCode),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.totalAmount)),1)]))),128))])])])])):f(``,!0),Q.value.length?(e(),a(`section`,Se,[o[21]||=r(`h2`,{class:`reports-page__section-title`},`فروش به تفکیک مشتری`,-1),r(`div`,Ce,[r(`table`,we,[o[20]||=r(`thead`,null,[r(`tr`,null,[r(`th`,null,`مشتری`),r(`th`,null,`تعداد سفارش`),r(`th`,null,`متراژ`),r(`th`,null,`مبلغ`)])],-1),r(`tbody`,null,[(e(!0),a(u,null,n(Q.value,t=>(e(),a(`tr`,{key:t.customerName},[r(`td`,null,s(t.customerName),1),r(`td`,null,s(i(m)(t.orderCount)),1),r(`td`,null,s(i(g)(t.meterage)),1),r(`td`,null,s(i(h)(t.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-Bj0Fydai.js b/dist/assets/SettingsView-ArN3zech.js similarity index 99% rename from dist/assets/SettingsView-Bj0Fydai.js rename to dist/assets/SettingsView-ArN3zech.js index ac1f820..1dbebec 100644 --- a/dist/assets/SettingsView-Bj0Fydai.js +++ b/dist/assets/SettingsView-ArN3zech.js @@ -1 +1 @@ -import{A as e,At as t,D as n,N as r,O as i,Ot as a,Q as o,V as s,W as c,a as l,c as u,d,et as f,g as p,h as m,jt as h,l as g,r as _,s as v,t as y,u as b,w as x}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as S,d as C,m as w,p as T}from"./http-CTjL79ty.js";import{D as E,L as D,M as O,w as k,y as A}from"./index-DWlOII4H.js";import{t as j}from"./AdminPageSkeleton-DacAHji8.js";import{t as M}from"./BaseSwitch-Dz4ODUhf.js";import{n as N,r as P,t as F}from"./selectOptionSearch-BUIO0UgP.js";import{t as I}from"./AdminCurrencyInput-iQrtrYek.js";var L=[`id`],R=[`aria-label`,`aria-expanded`,`disabled`],z={class:`admin-multi-select__value`},B={class:`admin-multi-select__chevron`,"aria-hidden":`true`},V={key:0,class:`admin-multi-select__chips`},H={class:`admin-multi-select__chip-label`},U=[`onClick`],ee=[`aria-label`],te={key:0,class:`admin-multi-select__search`,role:`presentation`},ne=[`placeholder`],re={key:1,class:`admin-multi-select__empty`,role:`presentation`},ie=[`aria-selected`,`onClick`,`onKeydown`],ae={class:`admin-multi-select__option-label`},W=y(p({__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(n,{emit:o}){let p=n,y=o,S=f(!1),E=f(``),k=f(null),A=f(null),j=f(null),M=f({});function I(){S.value=!1,E.value=``}O(k,()=>{I()},{ignore:[A]});let W=v(()=>Array.isArray(p.modelValue)?p.modelValue:[]),G=v(()=>new Set(W.value)),K=v(()=>Array.isArray(p.options)?p.options:[]),q=v(()=>K.value.filter(e=>G.value.has(e.value))),J=v(()=>{let e=W.value.length;return e?e===1?q.value[0]?.label??p.placeholder:`${e} مورد انتخاب شده`:p.placeholder}),Y=v(()=>F(K.value,E.value));function X(e){e.key===`ArrowDown`?(e.preventDefault(),P(A.value,`first`)):e.key===`ArrowUp`&&(e.preventDefault(),P(A.value,`last`))}function oe(e,t){let n=e.currentTarget;e.key===`ArrowDown`?(e.preventDefault(),N(n,1)):e.key===`ArrowUp`?(e.preventDefault(),N(n,-1)):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),$(t))}function Z(){let e=k.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 Q(e){e?(window.addEventListener(`resize`,Z),window.addEventListener(`scroll`,Z,!0)):(window.removeEventListener(`resize`,Z),window.removeEventListener(`scroll`,Z,!0))}async function se(){p.disabled||(S.value=!S.value,S.value&&(E.value=``,await x(),Z(),p.searchable&&(await x(),j.value?.focus())))}function $(e){let t=new Set(W.value);t.has(e)?t.delete(e):t.add(e),y(`update:modelValue`,[...t])}function ce(e){y(`update:modelValue`,W.value.filter(t=>t!==e))}return s(S,e=>{Q(e),e&&x(()=>Z())}),s(()=>p.disabled,e=>{e&&I()}),i(()=>{I(),Q(!1)}),(i,o)=>(e(),d(`div`,{id:n.id,ref_key:`rootRef`,ref:k,class:a([`admin-multi-select`,{"admin-multi-select--open":S.value,"admin-multi-select--block":n.block,"admin-multi-select--disabled":n.disabled}])},[u(`button`,{type:`button`,class:`admin-multi-select__trigger`,"aria-label":n.ariaLabel,"aria-expanded":S.value,"aria-haspopup":`listbox`,disabled:n.disabled,onClick:se},[u(`span`,z,h(J.value),1),u(`span`,B,[m(D,{name:`chevron-down`,size:16})])],8,R),q.value.length&&!n.disabled?(e(),d(`ul`,V,[(e(!0),d(_,null,r(q.value,t=>(e(),d(`li`,{key:t.value,class:`admin-multi-select__chip`},[u(`span`,H,h(t.label),1),u(`button`,{type:`button`,class:`admin-multi-select__chip-remove`,"aria-label":`حذف`,onClick:e=>ce(t.value)},` × `,8,U)]))),128))])):b(``,!0),(e(),g(l,{to:`body`},[S.value&&!n.disabled?(e(),d(`ul`,{key:0,ref_key:`menuRef`,ref:A,class:`admin-multi-select__menu`,"data-select-menu":``,role:`listbox`,"aria-label":n.ariaLabel,style:t(M.value),"aria-multiselectable":`true`},[n.searchable?(e(),d(`li`,te,[c(u(`input`,{ref_key:`searchInputRef`,ref:j,"onUpdate:modelValue":o[0]||=e=>E.value=e,type:`search`,class:`admin-multi-select__search-input`,placeholder:n.searchPlaceholder,onClick:o[1]||=w(()=>{},[`stop`]),onKeydown:[o[2]||=T(w(e=>S.value=!1,[`stop`]),[`esc`]),X]},null,40,ne),[[C,E.value]])])):b(``,!0),Y.value.length?b(``,!0):(e(),d(`li`,re,` موردی یافت نشد `)),(e(!0),d(_,null,r(Y.value,t=>(e(),d(`li`,{key:t.value,role:`presentation`},[u(`button`,{type:`button`,class:a([`admin-multi-select__option`,{"admin-multi-select__option--active":G.value.has(t.value)}]),"data-select-option":``,role:`option`,"aria-selected":G.value.has(t.value),onClick:e=>$(t.value),onKeydown:e=>oe(e,t.value)},[u(`span`,ae,h(t.label),1),G.value.has(t.value)?(e(),g(D,{key:0,name:`check`,size:16,class:`admin-multi-select__check`})):b(``,!0)],42,ie)]))),128))],12,ee)):b(``,!0)]))],10,L))}}),[[`__scopeId`,`data-v-1164ddaa`]]),G={class:`settings-page`},K={class:`settings-page__header admin-page-header`},q=[`disabled`,`aria-busy`],J={key:1,class:`settings-page__body`},Y={class:`settings-nav`,"aria-label":`بخش‌های تنظیمات`},X=[`onClick`],oe={class:`settings-page__sections`},Z={id:`order-settings`,class:`settings-section admin-card`},Q={class:`settings-section__grid settings-section__grid--3`},se={class:`settings-field`},$={class:`settings-field`},ce={class:`settings-field`},le={class:`settings-toggles`},ue={class:`settings-toggle`},de={class:`settings-toggle`},fe={class:`settings-field settings-field--narrow`},pe={class:`settings-toggles settings-toggles--inline`},me={class:`settings-toggle settings-toggle--compact`},he={class:`settings-toggle settings-toggle--compact`},ge={class:`settings-toggle settings-toggle--compact`},_e={id:`sms-settings`,class:`settings-section admin-card`},ve={class:`settings-toggles`},ye={class:`settings-toggle`},be={class:`settings-toggle`},xe={class:`settings-toggle`},Se={class:`settings-toggle`},Ce={class:`settings-toggle`},we={id:`support-settings`,class:`settings-section admin-card`},Te={class:`settings-section__grid settings-section__grid--2`},Ee={class:`settings-field`},De={class:`settings-field`},Oe={class:`settings-field`},ke={class:`settings-field`},Ae={class:`settings-field`},je={id:`broadcast-settings`,class:`settings-section admin-card settings-section--broadcast`},Me={class:`settings-field`},Ne={class:`settings-field`},Pe={class:`settings-toggle settings-toggle--block`},Fe={key:0,class:`settings-field`},Ie=[`disabled`,`aria-busy`],Le={key:2,class:`settings-page__dirty-hint compact-only`,role:`status`},Re=y(p({__name:`SettingsView`,setup(t){let i=S(),s=o({maxMeteragePerInvoice:5e3,cashInvoiceValidityHours:8,smsOrderRegistered:!0,smsPricingReady:!0,smsPaymentReminder:!0,smsCheckReview:!0,smsShippingUpdate:!0,defaultSettlementCheck:!0,defaultSettlementCash:!0,defaultSettlementCashCheck:!1,minOrderRollsPerProduct:1,showCatalogPublicPrice:!1,allowAgentPricing:!1,agentMinUnitPrice:null,supportPhone:``,supportEmail:``,supportWhatsapp:``,supportTelegram:``,supportInstagram:``}),l=o({title:``,body:``}),p=f(!1),y=f([]),x=f([]),w=f(!1),T=f(!0),D=f(!1),O=f(``),N=[{id:`order-settings`,label:`سفارش و کاتالوگ`},{id:`sms-settings`,label:`پیامک`},{id:`support-settings`,label:`پشتیبانی`},{id:`broadcast-settings`,label:`اعلان هدفمند`}],P=f(N[0].id),F=v(()=>(Array.isArray(y.value)?y.value:[]).filter(e=>e.isActive).map(e=>({value:e.id,label:`${e.name} · ${e.phone}${e.appRole===`agent`?` (واسطه)`:``}`})));function L(){return JSON.stringify(s)}let R=v(()=>!T.value&&O.value!==``&&L()!==O.value);function z(e){w.value=e,e&&(x.value=[])}function B(){O.value=L()}n(async()=>{T.value=!0;try{let[e,t]=await Promise.all([E.get(),A.list()]);Object.assign(s,{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,defaultSettlementCashCheck:e.defaultSettlementCashCheck??!1,minOrderRollsPerProduct:e.minOrderRollsPerProduct??1,showCatalogPublicPrice:e.showCatalogPublicPrice??!1,allowAgentPricing:e.allowAgentPricing??!1,agentMinUnitPrice:e.agentMinUnitPrice??null,supportPhone:e.supportPhone??``,supportEmail:e.supportEmail??``,supportWhatsapp:e.supportWhatsapp??``,supportTelegram:e.supportTelegram??``,supportInstagram:e.supportInstagram??``}),y.value=t,B()}catch(e){i.error(e instanceof Error?e.message:`دریافت تنظیمات ناموفق بود.`)}finally{T.value=!1}});async function V(){if(!(D.value||!R.value)){D.value=!0;try{await E.update({...s}),B(),i.success(`تنظیمات با موفقیت ذخیره شد.`)}catch(e){i.error(e instanceof Error?e.message:`ذخیره تنظیمات ناموفق بود.`)}finally{D.value=!1}}}async function H(){if(p.value)return;let e=l.title.trim(),t=l.body.trim();if(!e||!t){i.error(`عنوان و متن اعلان را وارد کنید.`);return}if(!w.value&&!x.value.length){i.error(`حداقل یک مشتری انتخاب کنید یا «ارسال به همه مشتریان فعال» را فعال کنید.`);return}p.value=!0;try{let n={title:e,body:t};w.value?n.allActive=!0:n.customerIds=[...x.value];let r=await k.broadcast(n);if(!r.sent){i.warning(`هیچ مشتری فعالی برای ارسال پیدا نشد.`);return}i.success(`اعلان برای ${r.sent} مشتری ارسال شد.`),l.title=``,l.body=``,x.value=[],w.value=!1}catch(e){i.error(e instanceof Error?e.message:`ارسال اعلان ناموفق بود.`)}finally{p.value=!1}}function U(e){P.value=e,document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})}return(t,n)=>(e(),d(`div`,G,[u(`header`,K,[n[22]||=u(`div`,{class:`settings-page__header-text`},[u(`h1`,{class:`admin-page-header__title`},`تنظیمات`),u(`p`,{class:`admin-page-header__subtitle`},` مدیریت و پیکربندی سفارش، پیامک، پشتیبانی و اعلان‌های اپ `)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary settings-page__save`,disabled:T.value||D.value||!R.value,"aria-busy":D.value,onClick:V},h(D.value?`در حال ذخیره…`:`ذخیره تغییرات`),9,q)]),T.value?(e(),g(j,{key:0,variant:`form`,rows:10})):(e(),d(`div`,J,[u(`nav`,Y,[(e(),d(_,null,r(N,e=>u(`button`,{key:e.id,type:`button`,class:a([`settings-nav__item`,{"settings-nav__item--active":P.value===e.id}]),onClick:t=>U(e.id)},h(e.label),11,X)),64))]),u(`div`,oe,[u(`section`,Z,[n[36]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`سفارش و کاتالوگ`),u(`p`,{class:`settings-section__desc`},`محدودیت‌های سفارش، تسویه و نمایش قیمت در اپ`)],-1),u(`div`,Q,[u(`div`,se,[n[23]||=u(`label`,{class:`settings-field__label`,for:`max-meterage`},`حداکثر متراژ هر فاکتور`,-1),n[24]||=u(`p`,{class:`settings-field__hint`},`بر حسب متر؛ سقف متراژ در یک فاکتور`,-1),c(u(`input`,{id:`max-meterage`,"onUpdate:modelValue":n[0]||=e=>s.maxMeteragePerInvoice=e,type:`number`,min:`1000`,class:`admin-input`,inputmode:`numeric`},null,512),[[C,s.maxMeteragePerInvoice,void 0,{number:!0}]])]),u(`div`,$,[n[25]||=u(`label`,{class:`settings-field__label`,for:`validity-hours`},`اعتبار فاکتور نقدی`,-1),n[26]||=u(`p`,{class:`settings-field__hint`},`مدت اعتبار پرداخت نقدی (ساعت)`,-1),c(u(`input`,{id:`validity-hours`,"onUpdate:modelValue":n[1]||=e=>s.cashInvoiceValidityHours=e,type:`number`,min:`1`,class:`admin-input`,inputmode:`numeric`},null,512),[[C,s.cashInvoiceValidityHours,void 0,{number:!0}]])]),u(`div`,ce,[n[27]||=u(`label`,{class:`settings-field__label`,for:`min-rolls`},`حداقل طاقه از هر محصول`,-1),n[28]||=u(`p`,{class:`settings-field__hint`},`حداقل تعداد طاقه در هر خط سفارش`,-1),c(u(`input`,{id:`min-rolls`,"onUpdate:modelValue":n[2]||=e=>s.minOrderRollsPerProduct=e,type:`number`,min:`1`,class:`admin-input`,inputmode:`numeric`},null,512),[[C,s.minOrderRollsPerProduct,void 0,{number:!0}]])])]),n[37]||=u(`div`,{class:`settings-divider`,role:`presentation`},null,-1),u(`div`,le,[u(`div`,ue,[n[29]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`نمایش قیمت عمومی در کاتالوگ`),u(`span`,{class:`settings-toggle__hint`},`قیمت برای مشتریان در لیست محصولات نمایش داده شود`)],-1),m(M,{modelValue:s.showCatalogPublicPrice,"onUpdate:modelValue":n[3]||=e=>s.showCatalogPublicPrice=e},null,8,[`modelValue`])]),u(`div`,de,[n[30]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`قیمت‌گذاری توسط واسطه`),u(`span`,{class:`settings-toggle__hint`},`واسطه می‌تواند قیمت واحد تعیین کند`)],-1),m(M,{modelValue:s.allowAgentPricing,"onUpdate:modelValue":n[4]||=e=>s.allowAgentPricing=e},null,8,[`modelValue`])])]),u(`div`,fe,[n[31]||=u(`label`,{class:`settings-field__label`,for:`agent-min-price`},`حداقل قیمت هر متر واسطه`,-1),n[32]||=u(`p`,{class:`settings-field__hint`},`تومان؛ فقط وقتی قیمت‌گذاری واسطه فعال است`,-1),m(I,{id:`agent-min-price`,modelValue:s.agentMinUnitPrice,"onUpdate:modelValue":n[5]||=e=>s.agentMinUnitPrice=e,placeholder:`مثلاً ۲۰۰٬۰۰۰`,disabled:!s.allowAgentPricing},null,8,[`modelValue`,`disabled`])]),n[38]||=u(`div`,{class:`settings-divider`,role:`presentation`},null,-1),n[39]||=u(`p`,{class:`settings-subgroup__title`},`روش‌های تسویه پیش‌فرض`,-1),u(`div`,pe,[u(`div`,me,[n[33]||=u(`span`,{class:`settings-toggle__label`},`تسویه چکی`,-1),m(M,{modelValue:s.defaultSettlementCheck,"onUpdate:modelValue":n[6]||=e=>s.defaultSettlementCheck=e},null,8,[`modelValue`])]),u(`div`,he,[n[34]||=u(`span`,{class:`settings-toggle__label`},`تسویه نقدی`,-1),m(M,{modelValue:s.defaultSettlementCash,"onUpdate:modelValue":n[7]||=e=>s.defaultSettlementCash=e},null,8,[`modelValue`])]),u(`div`,ge,[n[35]||=u(`span`,{class:`settings-toggle__label`},`تسویه نقدی-چکی`,-1),m(M,{modelValue:s.defaultSettlementCashCheck,"onUpdate:modelValue":n[8]||=e=>s.defaultSettlementCashCheck=e},null,8,[`modelValue`])])])]),u(`section`,_e,[n[45]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`پیامک و اعلان سیستمی`),u(`p`,{class:`settings-section__desc`},`پیامک‌های خودکار در مراحل مختلف سفارش`)],-1),u(`div`,ve,[u(`div`,ye,[n[40]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`ثبت سفارش`),u(`span`,{class:`settings-toggle__hint`},`پیامک بعد از ثبت سفارش توسط مشتری`)],-1),m(M,{modelValue:s.smsOrderRegistered,"onUpdate:modelValue":n[9]||=e=>s.smsOrderRegistered=e},null,8,[`modelValue`])]),u(`div`,be,[n[41]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`صدور فاکتور و قیمت`),u(`span`,{class:`settings-toggle__hint`},`وقتی قیمت‌گذاری انجام شد`)],-1),m(M,{modelValue:s.smsPricingReady,"onUpdate:modelValue":n[10]||=e=>s.smsPricingReady=e},null,8,[`modelValue`])]),u(`div`,xe,[n[42]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`پایان اعتبار فاکتور`),u(`span`,{class:`settings-toggle__hint`},`یادآوری قبل از انقضای فاکتور نقدی`)],-1),m(M,{modelValue:s.smsPaymentReminder,"onUpdate:modelValue":n[11]||=e=>s.smsPaymentReminder=e},null,8,[`modelValue`])]),u(`div`,Se,[n[43]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`بررسی چک`),u(`span`,{class:`settings-toggle__hint`},`اعلان وضعیت بررسی چک`)],-1),m(M,{modelValue:s.smsCheckReview,"onUpdate:modelValue":n[12]||=e=>s.smsCheckReview=e},null,8,[`modelValue`])]),u(`div`,Ce,[n[44]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`وضعیت ارسال`),u(`span`,{class:`settings-toggle__hint`},`به‌روزرسانی مرحله ارسال سفارش`)],-1),m(M,{modelValue:s.smsShippingUpdate,"onUpdate:modelValue":n[13]||=e=>s.smsShippingUpdate=e},null,8,[`modelValue`])])])]),u(`section`,we,[n[56]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`تماس پشتیبانی`),u(`p`,{class:`settings-section__desc`},` دکمه شناور پشتیبانی و سایدبار اپ — فیلد خالی در اپ نمایش داده نمی‌شود `)],-1),u(`div`,Te,[u(`div`,Ee,[n[46]||=u(`label`,{class:`settings-field__label`,for:`support-phone`},`تلفن پشتیبانی`,-1),n[47]||=u(`p`,{class:`settings-field__hint`},`صفحه ورود اپ و سایدبار دسکتاپ`,-1),c(u(`input`,{id:`support-phone`,"onUpdate:modelValue":n[14]||=e=>s.supportPhone=e,type:`text`,class:`admin-input`,dir:`ltr`,autocomplete:`tel`},null,512),[[C,s.supportPhone]])]),u(`div`,De,[n[48]||=u(`label`,{class:`settings-field__label`,for:`support-email`},`ایمیل پشتیبانی`,-1),n[49]||=u(`p`,{class:`settings-field__hint`},`برای تماس و نمایش در بخش پشتیبانی`,-1),c(u(`input`,{id:`support-email`,"onUpdate:modelValue":n[15]||=e=>s.supportEmail=e,type:`email`,class:`admin-input`,dir:`ltr`,autocomplete:`email`},null,512),[[C,s.supportEmail]])]),u(`div`,Oe,[n[50]||=u(`label`,{class:`settings-field__label`,for:`support-whatsapp`},`واتساپ`,-1),n[51]||=u(`p`,{class:`settings-field__hint`},`شماره یا لینک کامل (مثلاً wa.me/…)`,-1),c(u(`input`,{id:`support-whatsapp`,"onUpdate:modelValue":n[16]||=e=>s.supportWhatsapp=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[C,s.supportWhatsapp]])]),u(`div`,ke,[n[52]||=u(`label`,{class:`settings-field__label`,for:`support-telegram`},`تلگرام`,-1),n[53]||=u(`p`,{class:`settings-field__hint`},`آیدی، @username یا لینک t.me`,-1),c(u(`input`,{id:`support-telegram`,"onUpdate:modelValue":n[17]||=e=>s.supportTelegram=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[C,s.supportTelegram]])]),u(`div`,Ae,[n[54]||=u(`label`,{class:`settings-field__label`,for:`support-instagram`},`اینستاگرام`,-1),n[55]||=u(`p`,{class:`settings-field__hint`},`آیدی یا لینک اینستاگرام`,-1),c(u(`input`,{id:`support-instagram`,"onUpdate:modelValue":n[18]||=e=>s.supportInstagram=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[C,s.supportInstagram]])])])]),u(`section`,je,[n[62]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`اعلان هدفمند`),u(`p`,{class:`settings-section__desc`},` ارسال اعلان درون‌اپ به مشتریان؛ مستقل از ذخیره تنظیمات بالا `)],-1),u(`div`,Me,[n[57]||=u(`label`,{class:`settings-field__label`,for:`broadcast-title`},`عنوان اعلان`,-1),c(u(`input`,{id:`broadcast-title`,"onUpdate:modelValue":n[19]||=e=>l.title=e,type:`text`,class:`admin-input`},null,512),[[C,l.title]])]),u(`div`,Ne,[n[58]||=u(`label`,{class:`settings-field__label`,for:`broadcast-body`},`متن اعلان`,-1),c(u(`textarea`,{id:`broadcast-body`,"onUpdate:modelValue":n[20]||=e=>l.body=e,class:`admin-form__textarea`,rows:`4`,placeholder:`متن پیام برای مشتریان…`},null,512),[[C,l.body]])]),u(`div`,Pe,[n[59]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`ارسال به همه مشتریان فعال`),u(`span`,{class:`settings-toggle__hint`},`نقش مشتری در اپ؛ بدون انتخاب دستی گیرنده`)],-1),m(M,{"model-value":w.value,"onUpdate:modelValue":z},null,8,[`model-value`])]),w.value?b(``,!0):(e(),d(`div`,Fe,[n[60]||=u(`label`,{class:`settings-field__label`,for:`broadcast-recipients`},`گیرندگان مشخص`,-1),n[61]||=u(`p`,{class:`settings-field__hint`},` وقتی «ارسال به همه» خاموش است، یک یا چند مشتری فعال انتخاب کنید `,-1),m(W,{id:`broadcast-recipients`,modelValue:x.value,"onUpdate:modelValue":n[21]||=e=>x.value=e,options:F.value,disabled:!F.value.length,block:``,placeholder:`انتخاب مشتریان…`,"aria-label":`گیرندگان اعلان`},null,8,[`modelValue`,`options`,`disabled`])])),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary settings-section__broadcast-btn`,disabled:p.value,"aria-busy":p.value,onClick:H},h(p.value?`در حال ارسال…`:`ثبت و ارسال اعلان`),9,Ie)])])])),!T.value&&R.value?(e(),d(`div`,Le,` تغییرات ذخیره نشده — «ذخیره تغییرات» را بزنید `)):b(``,!0)]))}}),[[`__scopeId`,`data-v-49e63713`]]);export{Re as default}; \ No newline at end of file +import{A as e,At as t,D as n,N as r,O as i,Ot as a,Q as o,V as s,W as c,a as l,c as u,d,et as f,g as p,h as m,jt as h,l as g,r as _,s as v,t as y,u as b,w as x}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as S,d as C,m as w,p as T}from"./http-CTjL79ty.js";import{D as E,L as D,M as O,w as k,y as A}from"./index-BWgYBNME.js";import{t as j}from"./AdminPageSkeleton-DacAHji8.js";import{t as M}from"./BaseSwitch-Dz4ODUhf.js";import{n as N,r as P,t as F}from"./selectOptionSearch-DNMc9NzZ.js";import{t as I}from"./AdminCurrencyInput-CpWvBhwh.js";var L=[`id`],R=[`aria-label`,`aria-expanded`,`disabled`],z={class:`admin-multi-select__value`},B={class:`admin-multi-select__chevron`,"aria-hidden":`true`},V={key:0,class:`admin-multi-select__chips`},H={class:`admin-multi-select__chip-label`},U=[`onClick`],ee=[`aria-label`],te={key:0,class:`admin-multi-select__search`,role:`presentation`},ne=[`placeholder`],re={key:1,class:`admin-multi-select__empty`,role:`presentation`},ie=[`aria-selected`,`onClick`,`onKeydown`],ae={class:`admin-multi-select__option-label`},W=y(p({__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(n,{emit:o}){let p=n,y=o,S=f(!1),E=f(``),k=f(null),A=f(null),j=f(null),M=f({});function I(){S.value=!1,E.value=``}O(k,()=>{I()},{ignore:[A]});let W=v(()=>Array.isArray(p.modelValue)?p.modelValue:[]),G=v(()=>new Set(W.value)),K=v(()=>Array.isArray(p.options)?p.options:[]),q=v(()=>K.value.filter(e=>G.value.has(e.value))),J=v(()=>{let e=W.value.length;return e?e===1?q.value[0]?.label??p.placeholder:`${e} مورد انتخاب شده`:p.placeholder}),Y=v(()=>F(K.value,E.value));function X(e){e.key===`ArrowDown`?(e.preventDefault(),P(A.value,`first`)):e.key===`ArrowUp`&&(e.preventDefault(),P(A.value,`last`))}function oe(e,t){let n=e.currentTarget;e.key===`ArrowDown`?(e.preventDefault(),N(n,1)):e.key===`ArrowUp`?(e.preventDefault(),N(n,-1)):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),$(t))}function Z(){let e=k.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 Q(e){e?(window.addEventListener(`resize`,Z),window.addEventListener(`scroll`,Z,!0)):(window.removeEventListener(`resize`,Z),window.removeEventListener(`scroll`,Z,!0))}async function se(){p.disabled||(S.value=!S.value,S.value&&(E.value=``,await x(),Z(),p.searchable&&(await x(),j.value?.focus())))}function $(e){let t=new Set(W.value);t.has(e)?t.delete(e):t.add(e),y(`update:modelValue`,[...t])}function ce(e){y(`update:modelValue`,W.value.filter(t=>t!==e))}return s(S,e=>{Q(e),e&&x(()=>Z())}),s(()=>p.disabled,e=>{e&&I()}),i(()=>{I(),Q(!1)}),(i,o)=>(e(),d(`div`,{id:n.id,ref_key:`rootRef`,ref:k,class:a([`admin-multi-select`,{"admin-multi-select--open":S.value,"admin-multi-select--block":n.block,"admin-multi-select--disabled":n.disabled}])},[u(`button`,{type:`button`,class:`admin-multi-select__trigger`,"aria-label":n.ariaLabel,"aria-expanded":S.value,"aria-haspopup":`listbox`,disabled:n.disabled,onClick:se},[u(`span`,z,h(J.value),1),u(`span`,B,[m(D,{name:`chevron-down`,size:16})])],8,R),q.value.length&&!n.disabled?(e(),d(`ul`,V,[(e(!0),d(_,null,r(q.value,t=>(e(),d(`li`,{key:t.value,class:`admin-multi-select__chip`},[u(`span`,H,h(t.label),1),u(`button`,{type:`button`,class:`admin-multi-select__chip-remove`,"aria-label":`حذف`,onClick:e=>ce(t.value)},` × `,8,U)]))),128))])):b(``,!0),(e(),g(l,{to:`body`},[S.value&&!n.disabled?(e(),d(`ul`,{key:0,ref_key:`menuRef`,ref:A,class:`admin-multi-select__menu`,"data-select-menu":``,role:`listbox`,"aria-label":n.ariaLabel,style:t(M.value),"aria-multiselectable":`true`},[n.searchable?(e(),d(`li`,te,[c(u(`input`,{ref_key:`searchInputRef`,ref:j,"onUpdate:modelValue":o[0]||=e=>E.value=e,type:`search`,class:`admin-multi-select__search-input`,placeholder:n.searchPlaceholder,onClick:o[1]||=w(()=>{},[`stop`]),onKeydown:[o[2]||=T(w(e=>S.value=!1,[`stop`]),[`esc`]),X]},null,40,ne),[[C,E.value]])])):b(``,!0),Y.value.length?b(``,!0):(e(),d(`li`,re,` موردی یافت نشد `)),(e(!0),d(_,null,r(Y.value,t=>(e(),d(`li`,{key:t.value,role:`presentation`},[u(`button`,{type:`button`,class:a([`admin-multi-select__option`,{"admin-multi-select__option--active":G.value.has(t.value)}]),"data-select-option":``,role:`option`,"aria-selected":G.value.has(t.value),onClick:e=>$(t.value),onKeydown:e=>oe(e,t.value)},[u(`span`,ae,h(t.label),1),G.value.has(t.value)?(e(),g(D,{key:0,name:`check`,size:16,class:`admin-multi-select__check`})):b(``,!0)],42,ie)]))),128))],12,ee)):b(``,!0)]))],10,L))}}),[[`__scopeId`,`data-v-1164ddaa`]]),G={class:`settings-page`},K={class:`settings-page__header admin-page-header`},q=[`disabled`,`aria-busy`],J={key:1,class:`settings-page__body`},Y={class:`settings-nav`,"aria-label":`بخش‌های تنظیمات`},X=[`onClick`],oe={class:`settings-page__sections`},Z={id:`order-settings`,class:`settings-section admin-card`},Q={class:`settings-section__grid settings-section__grid--3`},se={class:`settings-field`},$={class:`settings-field`},ce={class:`settings-field`},le={class:`settings-toggles`},ue={class:`settings-toggle`},de={class:`settings-toggle`},fe={class:`settings-field settings-field--narrow`},pe={class:`settings-toggles settings-toggles--inline`},me={class:`settings-toggle settings-toggle--compact`},he={class:`settings-toggle settings-toggle--compact`},ge={class:`settings-toggle settings-toggle--compact`},_e={id:`sms-settings`,class:`settings-section admin-card`},ve={class:`settings-toggles`},ye={class:`settings-toggle`},be={class:`settings-toggle`},xe={class:`settings-toggle`},Se={class:`settings-toggle`},Ce={class:`settings-toggle`},we={id:`support-settings`,class:`settings-section admin-card`},Te={class:`settings-section__grid settings-section__grid--2`},Ee={class:`settings-field`},De={class:`settings-field`},Oe={class:`settings-field`},ke={class:`settings-field`},Ae={class:`settings-field`},je={id:`broadcast-settings`,class:`settings-section admin-card settings-section--broadcast`},Me={class:`settings-field`},Ne={class:`settings-field`},Pe={class:`settings-toggle settings-toggle--block`},Fe={key:0,class:`settings-field`},Ie=[`disabled`,`aria-busy`],Le={key:2,class:`settings-page__dirty-hint compact-only`,role:`status`},Re=y(p({__name:`SettingsView`,setup(t){let i=S(),s=o({maxMeteragePerInvoice:5e3,cashInvoiceValidityHours:8,smsOrderRegistered:!0,smsPricingReady:!0,smsPaymentReminder:!0,smsCheckReview:!0,smsShippingUpdate:!0,defaultSettlementCheck:!0,defaultSettlementCash:!0,defaultSettlementCashCheck:!1,minOrderRollsPerProduct:1,showCatalogPublicPrice:!1,allowAgentPricing:!1,agentMinUnitPrice:null,supportPhone:``,supportEmail:``,supportWhatsapp:``,supportTelegram:``,supportInstagram:``}),l=o({title:``,body:``}),p=f(!1),y=f([]),x=f([]),w=f(!1),T=f(!0),D=f(!1),O=f(``),N=[{id:`order-settings`,label:`سفارش و کاتالوگ`},{id:`sms-settings`,label:`پیامک`},{id:`support-settings`,label:`پشتیبانی`},{id:`broadcast-settings`,label:`اعلان هدفمند`}],P=f(N[0].id),F=v(()=>(Array.isArray(y.value)?y.value:[]).filter(e=>e.isActive).map(e=>({value:e.id,label:`${e.name} · ${e.phone}${e.appRole===`agent`?` (واسطه)`:``}`})));function L(){return JSON.stringify(s)}let R=v(()=>!T.value&&O.value!==``&&L()!==O.value);function z(e){w.value=e,e&&(x.value=[])}function B(){O.value=L()}n(async()=>{T.value=!0;try{let[e,t]=await Promise.all([E.get(),A.list()]);Object.assign(s,{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,defaultSettlementCashCheck:e.defaultSettlementCashCheck??!1,minOrderRollsPerProduct:e.minOrderRollsPerProduct??1,showCatalogPublicPrice:e.showCatalogPublicPrice??!1,allowAgentPricing:e.allowAgentPricing??!1,agentMinUnitPrice:e.agentMinUnitPrice??null,supportPhone:e.supportPhone??``,supportEmail:e.supportEmail??``,supportWhatsapp:e.supportWhatsapp??``,supportTelegram:e.supportTelegram??``,supportInstagram:e.supportInstagram??``}),y.value=t,B()}catch(e){i.error(e instanceof Error?e.message:`دریافت تنظیمات ناموفق بود.`)}finally{T.value=!1}});async function V(){if(!(D.value||!R.value)){D.value=!0;try{await E.update({...s}),B(),i.success(`تنظیمات با موفقیت ذخیره شد.`)}catch(e){i.error(e instanceof Error?e.message:`ذخیره تنظیمات ناموفق بود.`)}finally{D.value=!1}}}async function H(){if(p.value)return;let e=l.title.trim(),t=l.body.trim();if(!e||!t){i.error(`عنوان و متن اعلان را وارد کنید.`);return}if(!w.value&&!x.value.length){i.error(`حداقل یک مشتری انتخاب کنید یا «ارسال به همه مشتریان فعال» را فعال کنید.`);return}p.value=!0;try{let n={title:e,body:t};w.value?n.allActive=!0:n.customerIds=[...x.value];let r=await k.broadcast(n);if(!r.sent){i.warning(`هیچ مشتری فعالی برای ارسال پیدا نشد.`);return}i.success(`اعلان برای ${r.sent} مشتری ارسال شد.`),l.title=``,l.body=``,x.value=[],w.value=!1}catch(e){i.error(e instanceof Error?e.message:`ارسال اعلان ناموفق بود.`)}finally{p.value=!1}}function U(e){P.value=e,document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})}return(t,n)=>(e(),d(`div`,G,[u(`header`,K,[n[22]||=u(`div`,{class:`settings-page__header-text`},[u(`h1`,{class:`admin-page-header__title`},`تنظیمات`),u(`p`,{class:`admin-page-header__subtitle`},` مدیریت و پیکربندی سفارش، پیامک، پشتیبانی و اعلان‌های اپ `)],-1),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary settings-page__save`,disabled:T.value||D.value||!R.value,"aria-busy":D.value,onClick:V},h(D.value?`در حال ذخیره…`:`ذخیره تغییرات`),9,q)]),T.value?(e(),g(j,{key:0,variant:`form`,rows:10})):(e(),d(`div`,J,[u(`nav`,Y,[(e(),d(_,null,r(N,e=>u(`button`,{key:e.id,type:`button`,class:a([`settings-nav__item`,{"settings-nav__item--active":P.value===e.id}]),onClick:t=>U(e.id)},h(e.label),11,X)),64))]),u(`div`,oe,[u(`section`,Z,[n[36]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`سفارش و کاتالوگ`),u(`p`,{class:`settings-section__desc`},`محدودیت‌های سفارش، تسویه و نمایش قیمت در اپ`)],-1),u(`div`,Q,[u(`div`,se,[n[23]||=u(`label`,{class:`settings-field__label`,for:`max-meterage`},`حداکثر متراژ هر فاکتور`,-1),n[24]||=u(`p`,{class:`settings-field__hint`},`بر حسب متر؛ سقف متراژ در یک فاکتور`,-1),c(u(`input`,{id:`max-meterage`,"onUpdate:modelValue":n[0]||=e=>s.maxMeteragePerInvoice=e,type:`number`,min:`1000`,class:`admin-input`,inputmode:`numeric`},null,512),[[C,s.maxMeteragePerInvoice,void 0,{number:!0}]])]),u(`div`,$,[n[25]||=u(`label`,{class:`settings-field__label`,for:`validity-hours`},`اعتبار فاکتور نقدی`,-1),n[26]||=u(`p`,{class:`settings-field__hint`},`مدت اعتبار پرداخت نقدی (ساعت)`,-1),c(u(`input`,{id:`validity-hours`,"onUpdate:modelValue":n[1]||=e=>s.cashInvoiceValidityHours=e,type:`number`,min:`1`,class:`admin-input`,inputmode:`numeric`},null,512),[[C,s.cashInvoiceValidityHours,void 0,{number:!0}]])]),u(`div`,ce,[n[27]||=u(`label`,{class:`settings-field__label`,for:`min-rolls`},`حداقل طاقه از هر محصول`,-1),n[28]||=u(`p`,{class:`settings-field__hint`},`حداقل تعداد طاقه در هر خط سفارش`,-1),c(u(`input`,{id:`min-rolls`,"onUpdate:modelValue":n[2]||=e=>s.minOrderRollsPerProduct=e,type:`number`,min:`1`,class:`admin-input`,inputmode:`numeric`},null,512),[[C,s.minOrderRollsPerProduct,void 0,{number:!0}]])])]),n[37]||=u(`div`,{class:`settings-divider`,role:`presentation`},null,-1),u(`div`,le,[u(`div`,ue,[n[29]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`نمایش قیمت عمومی در کاتالوگ`),u(`span`,{class:`settings-toggle__hint`},`قیمت برای مشتریان در لیست محصولات نمایش داده شود`)],-1),m(M,{modelValue:s.showCatalogPublicPrice,"onUpdate:modelValue":n[3]||=e=>s.showCatalogPublicPrice=e},null,8,[`modelValue`])]),u(`div`,de,[n[30]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`قیمت‌گذاری توسط واسطه`),u(`span`,{class:`settings-toggle__hint`},`واسطه می‌تواند قیمت واحد تعیین کند`)],-1),m(M,{modelValue:s.allowAgentPricing,"onUpdate:modelValue":n[4]||=e=>s.allowAgentPricing=e},null,8,[`modelValue`])])]),u(`div`,fe,[n[31]||=u(`label`,{class:`settings-field__label`,for:`agent-min-price`},`حداقل قیمت هر متر واسطه`,-1),n[32]||=u(`p`,{class:`settings-field__hint`},`تومان؛ فقط وقتی قیمت‌گذاری واسطه فعال است`,-1),m(I,{id:`agent-min-price`,modelValue:s.agentMinUnitPrice,"onUpdate:modelValue":n[5]||=e=>s.agentMinUnitPrice=e,placeholder:`مثلاً ۲۰۰٬۰۰۰`,disabled:!s.allowAgentPricing},null,8,[`modelValue`,`disabled`])]),n[38]||=u(`div`,{class:`settings-divider`,role:`presentation`},null,-1),n[39]||=u(`p`,{class:`settings-subgroup__title`},`روش‌های تسویه پیش‌فرض`,-1),u(`div`,pe,[u(`div`,me,[n[33]||=u(`span`,{class:`settings-toggle__label`},`تسویه چکی`,-1),m(M,{modelValue:s.defaultSettlementCheck,"onUpdate:modelValue":n[6]||=e=>s.defaultSettlementCheck=e},null,8,[`modelValue`])]),u(`div`,he,[n[34]||=u(`span`,{class:`settings-toggle__label`},`تسویه نقدی`,-1),m(M,{modelValue:s.defaultSettlementCash,"onUpdate:modelValue":n[7]||=e=>s.defaultSettlementCash=e},null,8,[`modelValue`])]),u(`div`,ge,[n[35]||=u(`span`,{class:`settings-toggle__label`},`تسویه نقدی-چکی`,-1),m(M,{modelValue:s.defaultSettlementCashCheck,"onUpdate:modelValue":n[8]||=e=>s.defaultSettlementCashCheck=e},null,8,[`modelValue`])])])]),u(`section`,_e,[n[45]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`پیامک و اعلان سیستمی`),u(`p`,{class:`settings-section__desc`},`پیامک‌های خودکار در مراحل مختلف سفارش`)],-1),u(`div`,ve,[u(`div`,ye,[n[40]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`ثبت سفارش`),u(`span`,{class:`settings-toggle__hint`},`پیامک بعد از ثبت سفارش توسط مشتری`)],-1),m(M,{modelValue:s.smsOrderRegistered,"onUpdate:modelValue":n[9]||=e=>s.smsOrderRegistered=e},null,8,[`modelValue`])]),u(`div`,be,[n[41]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`صدور فاکتور و قیمت`),u(`span`,{class:`settings-toggle__hint`},`وقتی قیمت‌گذاری انجام شد`)],-1),m(M,{modelValue:s.smsPricingReady,"onUpdate:modelValue":n[10]||=e=>s.smsPricingReady=e},null,8,[`modelValue`])]),u(`div`,xe,[n[42]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`پایان اعتبار فاکتور`),u(`span`,{class:`settings-toggle__hint`},`یادآوری قبل از انقضای فاکتور نقدی`)],-1),m(M,{modelValue:s.smsPaymentReminder,"onUpdate:modelValue":n[11]||=e=>s.smsPaymentReminder=e},null,8,[`modelValue`])]),u(`div`,Se,[n[43]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`بررسی چک`),u(`span`,{class:`settings-toggle__hint`},`اعلان وضعیت بررسی چک`)],-1),m(M,{modelValue:s.smsCheckReview,"onUpdate:modelValue":n[12]||=e=>s.smsCheckReview=e},null,8,[`modelValue`])]),u(`div`,Ce,[n[44]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`وضعیت ارسال`),u(`span`,{class:`settings-toggle__hint`},`به‌روزرسانی مرحله ارسال سفارش`)],-1),m(M,{modelValue:s.smsShippingUpdate,"onUpdate:modelValue":n[13]||=e=>s.smsShippingUpdate=e},null,8,[`modelValue`])])])]),u(`section`,we,[n[56]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`تماس پشتیبانی`),u(`p`,{class:`settings-section__desc`},` دکمه شناور پشتیبانی و سایدبار اپ — فیلد خالی در اپ نمایش داده نمی‌شود `)],-1),u(`div`,Te,[u(`div`,Ee,[n[46]||=u(`label`,{class:`settings-field__label`,for:`support-phone`},`تلفن پشتیبانی`,-1),n[47]||=u(`p`,{class:`settings-field__hint`},`صفحه ورود اپ و سایدبار دسکتاپ`,-1),c(u(`input`,{id:`support-phone`,"onUpdate:modelValue":n[14]||=e=>s.supportPhone=e,type:`text`,class:`admin-input`,dir:`ltr`,autocomplete:`tel`},null,512),[[C,s.supportPhone]])]),u(`div`,De,[n[48]||=u(`label`,{class:`settings-field__label`,for:`support-email`},`ایمیل پشتیبانی`,-1),n[49]||=u(`p`,{class:`settings-field__hint`},`برای تماس و نمایش در بخش پشتیبانی`,-1),c(u(`input`,{id:`support-email`,"onUpdate:modelValue":n[15]||=e=>s.supportEmail=e,type:`email`,class:`admin-input`,dir:`ltr`,autocomplete:`email`},null,512),[[C,s.supportEmail]])]),u(`div`,Oe,[n[50]||=u(`label`,{class:`settings-field__label`,for:`support-whatsapp`},`واتساپ`,-1),n[51]||=u(`p`,{class:`settings-field__hint`},`شماره یا لینک کامل (مثلاً wa.me/…)`,-1),c(u(`input`,{id:`support-whatsapp`,"onUpdate:modelValue":n[16]||=e=>s.supportWhatsapp=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[C,s.supportWhatsapp]])]),u(`div`,ke,[n[52]||=u(`label`,{class:`settings-field__label`,for:`support-telegram`},`تلگرام`,-1),n[53]||=u(`p`,{class:`settings-field__hint`},`آیدی، @username یا لینک t.me`,-1),c(u(`input`,{id:`support-telegram`,"onUpdate:modelValue":n[17]||=e=>s.supportTelegram=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[C,s.supportTelegram]])]),u(`div`,Ae,[n[54]||=u(`label`,{class:`settings-field__label`,for:`support-instagram`},`اینستاگرام`,-1),n[55]||=u(`p`,{class:`settings-field__hint`},`آیدی یا لینک اینستاگرام`,-1),c(u(`input`,{id:`support-instagram`,"onUpdate:modelValue":n[18]||=e=>s.supportInstagram=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[C,s.supportInstagram]])])])]),u(`section`,je,[n[62]||=u(`header`,{class:`settings-section__head`},[u(`h2`,{class:`settings-section__title`},`اعلان هدفمند`),u(`p`,{class:`settings-section__desc`},` ارسال اعلان درون‌اپ به مشتریان؛ مستقل از ذخیره تنظیمات بالا `)],-1),u(`div`,Me,[n[57]||=u(`label`,{class:`settings-field__label`,for:`broadcast-title`},`عنوان اعلان`,-1),c(u(`input`,{id:`broadcast-title`,"onUpdate:modelValue":n[19]||=e=>l.title=e,type:`text`,class:`admin-input`},null,512),[[C,l.title]])]),u(`div`,Ne,[n[58]||=u(`label`,{class:`settings-field__label`,for:`broadcast-body`},`متن اعلان`,-1),c(u(`textarea`,{id:`broadcast-body`,"onUpdate:modelValue":n[20]||=e=>l.body=e,class:`admin-form__textarea`,rows:`4`,placeholder:`متن پیام برای مشتریان…`},null,512),[[C,l.body]])]),u(`div`,Pe,[n[59]||=u(`div`,{class:`settings-toggle__text`},[u(`span`,{class:`settings-toggle__label`},`ارسال به همه مشتریان فعال`),u(`span`,{class:`settings-toggle__hint`},`نقش مشتری در اپ؛ بدون انتخاب دستی گیرنده`)],-1),m(M,{"model-value":w.value,"onUpdate:modelValue":z},null,8,[`model-value`])]),w.value?b(``,!0):(e(),d(`div`,Fe,[n[60]||=u(`label`,{class:`settings-field__label`,for:`broadcast-recipients`},`گیرندگان مشخص`,-1),n[61]||=u(`p`,{class:`settings-field__hint`},` وقتی «ارسال به همه» خاموش است، یک یا چند مشتری فعال انتخاب کنید `,-1),m(W,{id:`broadcast-recipients`,modelValue:x.value,"onUpdate:modelValue":n[21]||=e=>x.value=e,options:F.value,disabled:!F.value.length,block:``,placeholder:`انتخاب مشتریان…`,"aria-label":`گیرندگان اعلان`},null,8,[`modelValue`,`options`,`disabled`])])),u(`button`,{type:`button`,class:`admin-btn admin-btn--primary settings-section__broadcast-btn`,disabled:p.value,"aria-busy":p.value,onClick:H},h(p.value?`در حال ارسال…`:`ثبت و ارسال اعلان`),9,Ie)])])])),!T.value&&R.value?(e(),d(`div`,Le,` تغییرات ذخیره نشده — «ذخیره تغییرات» را بزنید `)):b(``,!0)]))}}),[[`__scopeId`,`data-v-49e63713`]]);export{Re as default}; \ No newline at end of file diff --git a/dist/assets/ShippingView-BeB7EVuh.js b/dist/assets/ShippingView-BADYaj5-.js similarity index 98% rename from dist/assets/ShippingView-BeB7EVuh.js rename to dist/assets/ShippingView-BADYaj5-.js index 2460621..09da45f 100644 --- a/dist/assets/ShippingView-BeB7EVuh.js +++ b/dist/assets/ShippingView-BADYaj5-.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Ot as r,Q as i,U as a,V as ee,W as o,c as s,ct as c,d as l,et as u,g as te,h as d,jt as f,l as ne,m as p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,d as v,m as ie,t as y}from"./http-CTjL79ty.js";import{C as ae,L as oe,O as b,R as se,T as ce,V as le,o as x,s as S}from"./index-DWlOII4H.js";import{t as ue}from"./AdminPageSkeleton-DacAHji8.js";import{t as C}from"./AdminSelect-CWMyO8tk.js";import{a as w,o as T}from"./adminLabels-jYlObVqa.js";import{i as de}from"./orderStatus-CeC05Cv4.js";var fe={class:`shipping-page`},pe={class:`shipping-page__filters admin-card`},me={class:`shipping-page__search`},he={class:`shipping-page__table admin-card desktop-only`},ge={class:`admin-table-wrap`},_e={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`},ye={class:`admin-form__row`},be={class:`admin-form__field`},L={class:`admin-form__field`},xe={class:`admin-form__row`},Se={class:`admin-form__field`},Ce={class:`admin-form__field`},we=[`disabled`],R=g(te({__name:`ShippingView`,setup(te){let g=se(),R=u([]),z=u([]),B=u(typeof g.query.order==`string`?g.query.order:``),V=u(`all`),H=u(!0),U=u(!1),W=u(``),G=u(!1),K=re(),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=i(q()),Y=h(()=>{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=h(()=>J.orderId.trim()&&J.carrier.trim()),De=h(()=>{let e=new Set(R.value.map(e=>e.orderId));return z.value.filter(t=>!e.has(t.id)&&de(t))}),Oe=h(()=>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([b.list(),ce.list()]);R.value=e,z.value=t.map(e=>ae(e))}catch(e){K.error(e instanceof y?e.message:`بارگذاری ارسال‌ها انجام نشد.`)}finally{H.value=!1}}t(()=>{ke()}),ee(()=>g.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 b.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 y?e.message:`ثبت بارنامه انجام نشد.`)}finally{G.value=!1}}async function $(e){try{let t=await b.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 y?e.message:`به‌روزرسانی وضعیت انجام نشد.`)}}return(t,i)=>(e(),l(`div`,fe,[s(`div`,{class:`admin-page-header`},[i[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`,pe,[s(`div`,me,[d(oe,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":i[0]||=e=>B.value=e,type:`search`,class:`shipping-page__search-input`,placeholder:`جستجو در سفارش، مشتری، باربری...`},null,512),[[v,B.value]])]),d(C,{modelValue:V.value,"onUpdate:modelValue":i[1]||=e=>V.value=e,class:`shipping-page__status-select`,"aria-label":`فیلتر وضعیت ارسال`,options:Te},null,8,[`modelValue`])]),H.value?(e(),ne(ue,{key:0,variant:`table`})):(e(),l(m,{key:1},[s(`div`,he,[s(`div`,ge,[s(`table`,_e,[i[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,[(e(!0),l(m,null,n(Y.value,t=>(e(),l(`tr`,{key:t.id},[s(`td`,null,f(t.orderNumber),1),s(`td`,null,f(t.customerName),1),s(`td`,null,f(t.carrier),1),s(`td`,E,f(t.trackingNumber),1),s(`td`,null,f(c(S)(t.meterage)),1),s(`td`,null,[s(`span`,{class:r([`admin-badge`,c(w)[t.status]])},f(c(T)[t.status]),3)]),s(`td`,null,f(t.shippedAt?c(x)(t.shippedAt):`—`),1),s(`td`,null,f(t.deliveredAt?c(x)(t.deliveredAt):`—`),1),s(`td`,null,[t.status===`delivered`?(e(),l(`span`,O,`—`)):(e(),l(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>$(t)},` مرحله بعد `,8,D))])]))),128))])])])]),s(`div`,k,[(e(!0),l(m,null,n(Y.value,t=>(e(),l(`article`,{key:t.id,class:`admin-card-item`},[s(`div`,A,[s(`p`,j,f(t.orderNumber),1),s(`span`,{class:r([`admin-badge`,c(w)[t.status]])},f(c(T)[t.status]),3)]),s(`div`,M,[s(`span`,null,f(t.customerName),1),s(`span`,null,f(t.carrier),1),s(`span`,null,f(c(S)(t.meterage)),1),s(`span`,N,f(t.trackingNumber),1)]),t.status===`delivered`?_(``,!0):(e(),l(`div`,P,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>$(t)},` مرحله بعد `,8,F)]))]))),128))])],64)),d(le,{open:U.value,title:`ثبت بارنامه`,size:`lg`,onClose:Z},{footer:a(()=>[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:a(()=>[s(`form`,{class:`admin-form`,onSubmit:ie(Q,[`prevent`])},[W.value?(e(),l(`p`,I,f(W.value),1)):_(``,!0),s(`div`,ve,[i[9]||=s(`label`,{id:`ship-order-label`},[p(`سفارش `),s(`span`,{class:`admin-form__required`},`*`)],-1),d(C,{modelValue:J.orderId,"onUpdate:modelValue":[i[2]||=e=>J.orderId=e,Ae],block:``,"aria-label":`انتخاب سفارش`,placeholder:`انتخاب سفارش`,options:Oe.value},null,8,[`modelValue`,`options`])]),s(`div`,ye,[s(`div`,be,[i[10]||=s(`label`,{for:`ship-carrier`},[p(`باربری `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`ship-carrier`,"onUpdate:modelValue":i[3]||=e=>J.carrier=e,type:`text`,class:`admin-input`},null,512),[[v,J.carrier]])]),s(`div`,L,[i[11]||=s(`label`,{for:`ship-tracking`},`شماره بارنامه`,-1),o(s(`input`,{id:`ship-tracking`,"onUpdate:modelValue":i[4]||=e=>J.trackingNumber=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[v,J.trackingNumber]])])]),s(`div`,xe,[s(`div`,Se,[i[12]||=s(`label`,{for:`ship-meterage`},`متراژ`,-1),o(s(`input`,{id:`ship-meterage`,"onUpdate:modelValue":i[5]||=e=>J.meterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[v,J.meterage,void 0,{number:!0}]])]),s(`div`,Ce,[i[13]||=s(`label`,{id:`ship-status-label`},`وضعیت`,-1),d(C,{modelValue:J.status,"onUpdate:modelValue":i[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{A as e,D as t,N as n,Ot as r,Q as i,U as a,V as ee,W as o,c as s,ct as c,d as l,et as u,g as te,h as d,jt as f,l as ne,m as p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as re,d as v,m as ie,t as y}from"./http-CTjL79ty.js";import{C as ae,L as oe,O as b,R as se,T as ce,V as le,o as x,s as S}from"./index-BWgYBNME.js";import{t as ue}from"./AdminPageSkeleton-DacAHji8.js";import{t as C}from"./AdminSelect-hgn_nYC2.js";import{a as w,o as T}from"./adminLabels-jYlObVqa.js";import{i as de}from"./orderStatus-CeC05Cv4.js";var fe={class:`shipping-page`},pe={class:`shipping-page__filters admin-card`},me={class:`shipping-page__search`},he={class:`shipping-page__table admin-card desktop-only`},ge={class:`admin-table-wrap`},_e={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`},ye={class:`admin-form__row`},be={class:`admin-form__field`},L={class:`admin-form__field`},xe={class:`admin-form__row`},Se={class:`admin-form__field`},Ce={class:`admin-form__field`},we=[`disabled`],R=g(te({__name:`ShippingView`,setup(te){let g=se(),R=u([]),z=u([]),B=u(typeof g.query.order==`string`?g.query.order:``),V=u(`all`),H=u(!0),U=u(!1),W=u(``),G=u(!1),K=re(),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=i(q()),Y=h(()=>{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=h(()=>J.orderId.trim()&&J.carrier.trim()),De=h(()=>{let e=new Set(R.value.map(e=>e.orderId));return z.value.filter(t=>!e.has(t.id)&&de(t))}),Oe=h(()=>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([b.list(),ce.list()]);R.value=e,z.value=t.map(e=>ae(e))}catch(e){K.error(e instanceof y?e.message:`بارگذاری ارسال‌ها انجام نشد.`)}finally{H.value=!1}}t(()=>{ke()}),ee(()=>g.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 b.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 y?e.message:`ثبت بارنامه انجام نشد.`)}finally{G.value=!1}}async function $(e){try{let t=await b.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 y?e.message:`به‌روزرسانی وضعیت انجام نشد.`)}}return(t,i)=>(e(),l(`div`,fe,[s(`div`,{class:`admin-page-header`},[i[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`,pe,[s(`div`,me,[d(oe,{name:`search`,size:18}),o(s(`input`,{"onUpdate:modelValue":i[0]||=e=>B.value=e,type:`search`,class:`shipping-page__search-input`,placeholder:`جستجو در سفارش، مشتری، باربری...`},null,512),[[v,B.value]])]),d(C,{modelValue:V.value,"onUpdate:modelValue":i[1]||=e=>V.value=e,class:`shipping-page__status-select`,"aria-label":`فیلتر وضعیت ارسال`,options:Te},null,8,[`modelValue`])]),H.value?(e(),ne(ue,{key:0,variant:`table`})):(e(),l(m,{key:1},[s(`div`,he,[s(`div`,ge,[s(`table`,_e,[i[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,[(e(!0),l(m,null,n(Y.value,t=>(e(),l(`tr`,{key:t.id},[s(`td`,null,f(t.orderNumber),1),s(`td`,null,f(t.customerName),1),s(`td`,null,f(t.carrier),1),s(`td`,E,f(t.trackingNumber),1),s(`td`,null,f(c(S)(t.meterage)),1),s(`td`,null,[s(`span`,{class:r([`admin-badge`,c(w)[t.status]])},f(c(T)[t.status]),3)]),s(`td`,null,f(t.shippedAt?c(x)(t.shippedAt):`—`),1),s(`td`,null,f(t.deliveredAt?c(x)(t.deliveredAt):`—`),1),s(`td`,null,[t.status===`delivered`?(e(),l(`span`,O,`—`)):(e(),l(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>$(t)},` مرحله بعد `,8,D))])]))),128))])])])]),s(`div`,k,[(e(!0),l(m,null,n(Y.value,t=>(e(),l(`article`,{key:t.id,class:`admin-card-item`},[s(`div`,A,[s(`p`,j,f(t.orderNumber),1),s(`span`,{class:r([`admin-badge`,c(w)[t.status]])},f(c(T)[t.status]),3)]),s(`div`,M,[s(`span`,null,f(t.customerName),1),s(`span`,null,f(t.carrier),1),s(`span`,null,f(c(S)(t.meterage)),1),s(`span`,N,f(t.trackingNumber),1)]),t.status===`delivered`?_(``,!0):(e(),l(`div`,P,[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--xs`,onClick:e=>$(t)},` مرحله بعد `,8,F)]))]))),128))])],64)),d(le,{open:U.value,title:`ثبت بارنامه`,size:`lg`,onClose:Z},{footer:a(()=>[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:a(()=>[s(`form`,{class:`admin-form`,onSubmit:ie(Q,[`prevent`])},[W.value?(e(),l(`p`,I,f(W.value),1)):_(``,!0),s(`div`,ve,[i[9]||=s(`label`,{id:`ship-order-label`},[p(`سفارش `),s(`span`,{class:`admin-form__required`},`*`)],-1),d(C,{modelValue:J.orderId,"onUpdate:modelValue":[i[2]||=e=>J.orderId=e,Ae],block:``,"aria-label":`انتخاب سفارش`,placeholder:`انتخاب سفارش`,options:Oe.value},null,8,[`modelValue`,`options`])]),s(`div`,ye,[s(`div`,be,[i[10]||=s(`label`,{for:`ship-carrier`},[p(`باربری `),s(`span`,{class:`admin-form__required`},`*`)],-1),o(s(`input`,{id:`ship-carrier`,"onUpdate:modelValue":i[3]||=e=>J.carrier=e,type:`text`,class:`admin-input`},null,512),[[v,J.carrier]])]),s(`div`,L,[i[11]||=s(`label`,{for:`ship-tracking`},`شماره بارنامه`,-1),o(s(`input`,{id:`ship-tracking`,"onUpdate:modelValue":i[4]||=e=>J.trackingNumber=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[v,J.trackingNumber]])])]),s(`div`,xe,[s(`div`,Se,[i[12]||=s(`label`,{for:`ship-meterage`},`متراژ`,-1),o(s(`input`,{id:`ship-meterage`,"onUpdate:modelValue":i[5]||=e=>J.meterage=e,type:`number`,min:`1`,class:`admin-input`},null,512),[[v,J.meterage,void 0,{number:!0}]])]),s(`div`,Ce,[i[13]||=s(`label`,{id:`ship-status-label`},`وضعیت`,-1),d(C,{modelValue:J.status,"onUpdate:modelValue":i[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-B7yWL4bF.js b/dist/assets/SmsTariffView-DjF8geKA.js similarity index 98% rename from dist/assets/SmsTariffView-B7yWL4bF.js rename to dist/assets/SmsTariffView-DjF8geKA.js index 93da165..b5896aa 100644 --- a/dist/assets/SmsTariffView-B7yWL4bF.js +++ b/dist/assets/SmsTariffView-DjF8geKA.js @@ -1 +1 @@ -import{A as e,D as t,W as n,c as r,ct as i,d as a,et as o,g as s,h as c,jt as l,l as u,m as d,r as f,t as p,u as ee}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as m}from"./http-CTjL79ty.js";import{A as h,c as g,d as _,n as ne,t as re}from"./index-DWlOII4H.js";import{t as ie}from"./AdminPageSkeleton-DacAHji8.js";import{t as ae}from"./BaseSwitch-Dz4ODUhf.js";import{t as v}from"./AdminCurrencyInput-iQrtrYek.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(s({__name:`SmsTariffView`,setup(s){let p=te(),{refresh:F}=_(),I=o(!0),L=o(!1),R=o(!1),z=o(!1),B=o(!1),V=o(!1),H=o(null),U=o(250),W=o(null),G=o(``),K=o(``),q=o(``),J=o(``),Y=o(1e4),X=o(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}t(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(t,o)=>(e(),a(`div`,oe,[o[30]||=r(`div`,{class:`admin-page-header`},[r(`h1`,{class:`admin-page-header__title`},`تعرفه پیامک‌ها`)],-1),I.value?(e(),u(ie,{key:0,variant:`form`,rows:8})):H.value?(e(),a(f,{key:1},[r(`section`,se,[r(`article`,ce,[o[11]||=r(`h2`,null,`مانده جاری`,-1),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.total).messages)),1),o[8]||=d(` پیامک`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.total).parts)),1),o[9]||=d(` پارت`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.total).costToman)),1),o[10]||=d(` تومان`,-1)])]),r(`article`,le,[o[15]||=r(`h2`,null,`امروز`,-1),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.today).messages)),1),o[12]||=d(` پیامک`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.today).parts)),1),o[13]||=d(` پارت`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.today).costToman)),1),o[14]||=d(` تومان`,-1)])]),r(`article`,ue,[o[16]||=r(`h2`,null,`قیمت هر پارت`,-1),r(`strong`,null,l(i(g)(H.value.pricePerPart))+` تومان`,1)]),r(`article`,de,[o[17]||=r(`h2`,null,`موجودی کیف پول`,-1),r(`strong`,null,l(i(g)(H.value.balanceToman))+` تومان`,1)])]),r(`section`,fe,[o[20]||=r(`h2`,null,`مدیریت کیف پول`,-1),r(`div`,pe,[r(`div`,me,[o[18]||=r(`span`,null,`تعرفه پیامک`,-1),r(`strong`,null,l(i(g)(H.value.pricePerPart)),1)]),r(`div`,y,[c(v,{modelValue:U.value,"onUpdate:modelValue":o[0]||=e=>U.value=e,"allow-empty":!1},null,8,[`modelValue`]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:L.value||!U.value,onClick:he},l(L.value?`در حال ذخیره…`:`ذخیره قیمت`),9,b)]),r(`div`,x,[c(v,{modelValue:W.value,"onUpdate:modelValue":o[1]||=e=>W.value=e,placeholder:`مبلغ (تومان)`},null,8,[`modelValue`]),n(r(`input`,{"onUpdate:modelValue":o[2]||=e=>G.value=e,class:`admin-input`,type:`text`,placeholder:`توضیح (اختیاری)`},null,512),[[m,G.value]]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:R.value||!W.value,onClick:ge},l(R.value?`در حال شارژ…`:`شارژ کیف پول`),9,S)])]),o[21]||=r(`p`,{class:`sms-manage__hint`},`هر پیامک ۶۷ کاراکتر است. پیام ۱۴۰ کاراکتری ۳ پارت محاسبه می‌شود.`,-1),r(`div`,C,[o[19]||=r(`div`,null,[r(`strong`,null,`مسدودسازی ارسال پیامک`),r(`p`,null,`در حالت مسدود، ارسال پیامک متوقف می‌شود.`)],-1),r(`div`,w,[r(`span`,null,l(H.value.blocked?`فعال`:`خاموش`),1),c(ae,{"model-value":H.value.blocked,loading:V.value,"active-text":`فعال`,"inactive-text":`خاموش`,"onUpdate:modelValue":_e},null,8,[`model-value`,`loading`])])])]),r(`section`,T,[o[25]||=r(`h2`,null,`اطلاعات واریز شارژ`,-1),o[26]||=r(`p`,{class:`sms-deposit__hint`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی ارسال فرمایید. `,-1),r(`label`,E,[o[22]||=r(`span`,null,`شماره کارت`,-1),n(r(`input`,{"onUpdate:modelValue":o[3]||=e=>K.value=e,class:`admin-input`,dir:`ltr`,inputmode:`numeric`},null,512),[[m,K.value]])]),r(`label`,D,[o[23]||=r(`span`,null,`شماره شبا`,-1),n(r(`input`,{"onUpdate:modelValue":o[4]||=e=>q.value=e,class:`admin-input`,dir:`ltr`},null,512),[[m,q.value]])]),r(`label`,O,[o[24]||=r(`span`,null,`به نام`,-1),n(r(`input`,{"onUpdate:modelValue":o[5]||=e=>J.value=e,class:`admin-input`},null,512),[[m,J.value]])]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success sms-deposit__save`,disabled:z.value,onClick:Q},l(z.value?`در حال ذخیره…`:`ذخیره اطلاعات واریز`),9,k)]),r(`section`,A,[o[29]||=r(`h2`,null,`آستانه‌های رنگ موجودی`,-1),r(`div`,j,[r(`label`,M,[o[27]||=r(`span`,null,`آستانه زرد`,-1),c(v,{modelValue:Y.value,"onUpdate:modelValue":o[6]||=e=>Y.value=e,"allow-empty":!1},null,8,[`modelValue`])]),r(`label`,N,[o[28]||=r(`span`,null,`آستانه قرمز`,-1),c(v,{modelValue:X.value,"onUpdate:modelValue":o[7]||=e=>X.value=e,"allow-empty":!1},null,8,[`modelValue`])]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:B.value,onClick:ve},l(B.value?`در حال ذخیره…`:`ذخیره آستانه‌ها`),9,P)])])],64)):ee(``,!0)]))}}),[[`__scopeId`,`data-v-e4cab5f3`]]);export{F as default}; \ No newline at end of file +import{A as e,D as t,W as n,c as r,ct as i,d as a,et as o,g as s,h as c,jt as l,l as u,m as d,r as f,t as p,u as ee}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as m}from"./http-CTjL79ty.js";import{A as h,c as g,d as _,n as ne,t as re}from"./index-BWgYBNME.js";import{t as ie}from"./AdminPageSkeleton-DacAHji8.js";import{t as ae}from"./BaseSwitch-Dz4ODUhf.js";import{t as v}from"./AdminCurrencyInput-CpWvBhwh.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(s({__name:`SmsTariffView`,setup(s){let p=te(),{refresh:F}=_(),I=o(!0),L=o(!1),R=o(!1),z=o(!1),B=o(!1),V=o(!1),H=o(null),U=o(250),W=o(null),G=o(``),K=o(``),q=o(``),J=o(``),Y=o(1e4),X=o(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}t(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(t,o)=>(e(),a(`div`,oe,[o[30]||=r(`div`,{class:`admin-page-header`},[r(`h1`,{class:`admin-page-header__title`},`تعرفه پیامک‌ها`)],-1),I.value?(e(),u(ie,{key:0,variant:`form`,rows:8})):H.value?(e(),a(f,{key:1},[r(`section`,se,[r(`article`,ce,[o[11]||=r(`h2`,null,`مانده جاری`,-1),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.total).messages)),1),o[8]||=d(` پیامک`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.total).parts)),1),o[9]||=d(` پارت`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.total).costToman)),1),o[10]||=d(` تومان`,-1)])]),r(`article`,le,[o[15]||=r(`h2`,null,`امروز`,-1),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.today).messages)),1),o[12]||=d(` پیامک`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.today).parts)),1),o[13]||=d(` پارت`,-1)]),r(`p`,null,[r(`span`,null,l(i(g)($(H.value.today).costToman)),1),o[14]||=d(` تومان`,-1)])]),r(`article`,ue,[o[16]||=r(`h2`,null,`قیمت هر پارت`,-1),r(`strong`,null,l(i(g)(H.value.pricePerPart))+` تومان`,1)]),r(`article`,de,[o[17]||=r(`h2`,null,`موجودی کیف پول`,-1),r(`strong`,null,l(i(g)(H.value.balanceToman))+` تومان`,1)])]),r(`section`,fe,[o[20]||=r(`h2`,null,`مدیریت کیف پول`,-1),r(`div`,pe,[r(`div`,me,[o[18]||=r(`span`,null,`تعرفه پیامک`,-1),r(`strong`,null,l(i(g)(H.value.pricePerPart)),1)]),r(`div`,y,[c(v,{modelValue:U.value,"onUpdate:modelValue":o[0]||=e=>U.value=e,"allow-empty":!1},null,8,[`modelValue`]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:L.value||!U.value,onClick:he},l(L.value?`در حال ذخیره…`:`ذخیره قیمت`),9,b)]),r(`div`,x,[c(v,{modelValue:W.value,"onUpdate:modelValue":o[1]||=e=>W.value=e,placeholder:`مبلغ (تومان)`},null,8,[`modelValue`]),n(r(`input`,{"onUpdate:modelValue":o[2]||=e=>G.value=e,class:`admin-input`,type:`text`,placeholder:`توضیح (اختیاری)`},null,512),[[m,G.value]]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:R.value||!W.value,onClick:ge},l(R.value?`در حال شارژ…`:`شارژ کیف پول`),9,S)])]),o[21]||=r(`p`,{class:`sms-manage__hint`},`هر پیامک ۶۷ کاراکتر است. پیام ۱۴۰ کاراکتری ۳ پارت محاسبه می‌شود.`,-1),r(`div`,C,[o[19]||=r(`div`,null,[r(`strong`,null,`مسدودسازی ارسال پیامک`),r(`p`,null,`در حالت مسدود، ارسال پیامک متوقف می‌شود.`)],-1),r(`div`,w,[r(`span`,null,l(H.value.blocked?`فعال`:`خاموش`),1),c(ae,{"model-value":H.value.blocked,loading:V.value,"active-text":`فعال`,"inactive-text":`خاموش`,"onUpdate:modelValue":_e},null,8,[`model-value`,`loading`])])])]),r(`section`,T,[o[25]||=r(`h2`,null,`اطلاعات واریز شارژ`,-1),o[26]||=r(`p`,{class:`sms-deposit__hint`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی ارسال فرمایید. `,-1),r(`label`,E,[o[22]||=r(`span`,null,`شماره کارت`,-1),n(r(`input`,{"onUpdate:modelValue":o[3]||=e=>K.value=e,class:`admin-input`,dir:`ltr`,inputmode:`numeric`},null,512),[[m,K.value]])]),r(`label`,D,[o[23]||=r(`span`,null,`شماره شبا`,-1),n(r(`input`,{"onUpdate:modelValue":o[4]||=e=>q.value=e,class:`admin-input`,dir:`ltr`},null,512),[[m,q.value]])]),r(`label`,O,[o[24]||=r(`span`,null,`به نام`,-1),n(r(`input`,{"onUpdate:modelValue":o[5]||=e=>J.value=e,class:`admin-input`},null,512),[[m,J.value]])]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success sms-deposit__save`,disabled:z.value,onClick:Q},l(z.value?`در حال ذخیره…`:`ذخیره اطلاعات واریز`),9,k)]),r(`section`,A,[o[29]||=r(`h2`,null,`آستانه‌های رنگ موجودی`,-1),r(`div`,j,[r(`label`,M,[o[27]||=r(`span`,null,`آستانه زرد`,-1),c(v,{modelValue:Y.value,"onUpdate:modelValue":o[6]||=e=>Y.value=e,"allow-empty":!1},null,8,[`modelValue`])]),r(`label`,N,[o[28]||=r(`span`,null,`آستانه قرمز`,-1),c(v,{modelValue:X.value,"onUpdate:modelValue":o[7]||=e=>X.value=e,"allow-empty":!1},null,8,[`modelValue`])]),r(`button`,{type:`button`,class:`admin-btn admin-btn--success`,disabled:B.value,onClick:ve},l(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/SuggestionsView-BsmWTkxy.js b/dist/assets/SuggestionsView-B4wxEcxq.js similarity index 94% rename from dist/assets/SuggestionsView-BsmWTkxy.js rename to dist/assets/SuggestionsView-B4wxEcxq.js index 38fac70..032d969 100644 --- a/dist/assets/SuggestionsView-BsmWTkxy.js +++ b/dist/assets/SuggestionsView-B4wxEcxq.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as l,h as u,jt as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as _,d as v,t as y}from"./http-CTjL79ty.js";import{E as b,V as x,j as S,y as C}from"./index-DWlOII4H.js";import{t as w}from"./AdminPageSkeleton-DacAHji8.js";import{t as T}from"./BaseEmptyState-B6cM4bRM.js";import{t as E}from"./AdminSelect-CWMyO8tk.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=c([]),I=c(!0),L=c([]),R=c([]),z=c(!1),B=_(),V=r({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 t(()=>{W()}),(t,r)=>(e(),s(`div`,D,[o(`header`,O,[r[5]||=o(`div`,null,[o(`h1`,null,`پیشنهاد محصول`),o(`p`,null,`پیشنهاد دستی محصول به مشتری`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:r[0]||=e=>z.value=!0},`پیشنهاد جدید`)]),I.value?(e(),f(w,{key:0,variant:`table`})):g.value.length?(e(),s(`table`,k,[r[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`مشتری`),o(`th`,null,`محصول`),o(`th`,null,`یادداشت`),o(`th`,null,`وضعیت`),o(`th`)])],-1),o(`tbody`,null,[(e(!0),s(m,null,n(g.value,t=>(e(),s(`tr`,{key:t.id},[o(`td`,null,d(t.customerName),1),o(`td`,null,[p(d(t.productName)+` `,1),o(`span`,A,`(`+d(t.productCode)+`)`,1)]),o(`td`,null,d(t.note||`—`),1),o(`td`,null,d(t.isActive?`فعال`:`غیرفعال`),1),o(`td`,null,[o(`button`,{type:`button`,class:`link`,onClick:e=>K(t)},d(t.isActive?`غیرفعال`:`فعال`),9,j)])]))),128))])])):(e(),f(T,{key:1,title:`پیشنهادی ثبت نشده`})),u(x,{open:z.value,title:`پیشنهاد محصول`,onClose:r[4]||=e=>z.value=!1},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!V.customerId||!V.productId,onClick:G},` ثبت `,8,F)]),default:i(()=>[o(`label`,M,[r[7]||=p(`مشتری `,-1),u(E,{modelValue:V.customerId,"onUpdate:modelValue":r[1]||=e=>V.customerId=e,options:H.value},null,8,[`modelValue`,`options`])]),o(`label`,N,[r[8]||=p(`محصول `,-1),u(E,{modelValue:V.productId,"onUpdate:modelValue":r[2]||=e=>V.productId=e,options:U.value},null,8,[`modelValue`,`options`])]),o(`label`,P,[r[9]||=p(`یادداشت`,-1),a(o(`textarea`,{"onUpdate:modelValue":r[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{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,d as s,et as c,g as l,h as u,jt as d,l as f,m as p,r as m,s as h,t as g}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as _,d as v,t as y}from"./http-CTjL79ty.js";import{E as b,V as x,j as S,y as C}from"./index-BWgYBNME.js";import{t as w}from"./AdminPageSkeleton-DacAHji8.js";import{t as T}from"./BaseEmptyState-88fQ29rO.js";import{t as E}from"./AdminSelect-hgn_nYC2.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=c([]),I=c(!0),L=c([]),R=c([]),z=c(!1),B=_(),V=r({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 t(()=>{W()}),(t,r)=>(e(),s(`div`,D,[o(`header`,O,[r[5]||=o(`div`,null,[o(`h1`,null,`پیشنهاد محصول`),o(`p`,null,`پیشنهاد دستی محصول به مشتری`)],-1),o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:r[0]||=e=>z.value=!0},`پیشنهاد جدید`)]),I.value?(e(),f(w,{key:0,variant:`table`})):g.value.length?(e(),s(`table`,k,[r[6]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`مشتری`),o(`th`,null,`محصول`),o(`th`,null,`یادداشت`),o(`th`,null,`وضعیت`),o(`th`)])],-1),o(`tbody`,null,[(e(!0),s(m,null,n(g.value,t=>(e(),s(`tr`,{key:t.id},[o(`td`,null,d(t.customerName),1),o(`td`,null,[p(d(t.productName)+` `,1),o(`span`,A,`(`+d(t.productCode)+`)`,1)]),o(`td`,null,d(t.note||`—`),1),o(`td`,null,d(t.isActive?`فعال`:`غیرفعال`),1),o(`td`,null,[o(`button`,{type:`button`,class:`link`,onClick:e=>K(t)},d(t.isActive?`غیرفعال`:`فعال`),9,j)])]))),128))])])):(e(),f(T,{key:1,title:`پیشنهادی ثبت نشده`})),u(x,{open:z.value,title:`پیشنهاد محصول`,onClose:r[4]||=e=>z.value=!1},{footer:i(()=>[o(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!V.customerId||!V.productId,onClick:G},` ثبت `,8,F)]),default:i(()=>[o(`label`,M,[r[7]||=p(`مشتری `,-1),u(E,{modelValue:V.customerId,"onUpdate:modelValue":r[1]||=e=>V.customerId=e,options:H.value},null,8,[`modelValue`,`options`])]),o(`label`,N,[r[8]||=p(`محصول `,-1),u(E,{modelValue:V.productId,"onUpdate:modelValue":r[2]||=e=>V.productId=e,options:U.value},null,8,[`modelValue`,`options`])]),o(`label`,P,[r[9]||=p(`یادداشت`,-1),a(o(`textarea`,{"onUpdate:modelValue":r[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-CjdEyvc2.js b/dist/assets/UsersView-7Li7nXk9.js similarity index 97% rename from dist/assets/UsersView-CjdEyvc2.js rename to dist/assets/UsersView-7Li7nXk9.js index 4eaabbb..f346662 100644 --- a/dist/assets/UsersView-CjdEyvc2.js +++ b/dist/assets/UsersView-7Li7nXk9.js @@ -1 +1 @@ -import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,ct as s,d as c,et as l,g as ee,h as u,jt as d,l as f,m as p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as v,m as ne,t as y}from"./http-CTjL79ty.js";import{L as b,V as re,f as x,o as ie}from"./index-DWlOII4H.js";import{t as ae}from"./AdminPageSkeleton-DacAHji8.js";import{t as oe}from"./BaseSwitch-Dz4ODUhf.js";import{t as se}from"./BaseEmptyState-B6cM4bRM.js";import{t as ce}from"./AdminSelect-CWMyO8tk.js";import{s as S}from"./adminLabels-jYlObVqa.js";import{t as C}from"./ActiveSwitchCell-BQoMjcdH.js";var le={class:`users-page`},ue={class:`users-page__search admin-card`},de={key:2,class:`users-page__table admin-card desktop-only`},fe={class:`admin-table-wrap`},pe={class:`admin-table`},me={dir:`ltr`},he={class:`status`},ge={class:`actions`},w=[`onClick`],T={key:3,class:`compact-only admin-card-list`},E={class:`admin-card-item__header`},D={class:`admin-card-item__title`},O={class:`admin-card-item__meta`},k={dir:`ltr`},A={class:`admin-card-item__actions`},j=[`onClick`],M={key:0,class:`admin-form__error`,role:`alert`},N={class:`admin-form__field`},P={class:`admin-form__row`},F={class:`admin-form__field`},I={class:`admin-form__field`},L={class:`admin-form__field`},_e={class:`admin-form__field`},ve=[`disabled`],ye={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},R=g(ee({__name:`UsersView`,setup(ee){let g=l([]),R=l(``),z=l(!0),B=l(null),V=l(null),H=l(``),U=l(!1),W=te(),be=[{value:`admin`,label:`مدیر سیستم`},{value:`sales`,label:`واحد فروش`},{value:`finance`,label:`واحد مالی`},{value:`warehouse`,label:`انبار`}],G=()=>({fullName:``,phone:``,email:``,role:`sales`,isActive:!0}),K=r(G()),xe=h(()=>B.value!==null),Se=h(()=>B.value===`edit`?`ویرایش کاربر`:`افزودن کاربر`),q=h(()=>K.fullName.trim()&&K.phone.trim()),J=h(()=>{let e=R.value.trim();return e?g.value.filter(t=>t.fullName.includes(e)||t.phone.includes(e)||t.email.includes(e)||S[t.role].includes(e)):g.value});async function Ce(){z.value=!0;try{g.value=await x.list()}catch(e){W.error(e instanceof y?e.message:`بارگذاری کاربران انجام نشد.`)}finally{z.value=!1}}t(()=>{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 x.update(V.value,e),n=g.value.findIndex(e=>e.id===V.value);n!==-1&&(g.value[n]={...g.value[n],...t})}else{let t=await x.create(e);g.value.push(t)}W.success(B.value===`edit`?`اطلاعات کاربر به‌روزرسانی شد.`:`کاربر جدید ثبت شد.`),Z()}catch(e){W.error(e instanceof y?e.message:`ذخیره کاربر انجام نشد.`)}finally{U.value=!1}}async function $(e,t){await x.setActive(e,t)}function we(){R.value=``}return(t,r)=>(e(),c(`div`,le,[o(`div`,{class:`admin-page-header`},[r[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`,ue,[u(b,{name:`search`,size:18}),a(o(`input`,{"onUpdate:modelValue":r[0]||=e=>R.value=e,type:`search`,class:`users-page__search-input`,placeholder:`جستجو در نام، تلفن، ایمیل...`},null,512),[[v,R.value]])]),z.value?(e(),f(ae,{key:0,variant:`table`})):J.value.length?(e(),c(`div`,de,[o(`div`,fe,[o(`table`,pe,[r[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,[(e(!0),c(m,null,n(J.value,t=>(e(),c(`tr`,{key:t.id},[o(`td`,null,d(t.fullName),1),o(`td`,null,d(t.phone),1),o(`td`,me,d(t.email),1),o(`td`,null,d(s(S)[t.role]),1),o(`td`,he,[u(C,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,d(t.lastLoginAt?s(ie)(t.lastLoginAt):`—`),1),o(`td`,ge,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,w)])]))),128))])])])])):(e(),f(se,{key:1,class:`admin-card`,icon:`users`,title:R.value.trim()?`نتیجه‌ای یافت نشد`:`کاربری ثبت نشده`,description:R.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کاربر را ثبت کنید.`},{default:i(()=>[R.value.trim()?(e(),c(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:we},` پاک کردن جستجو `)):(e(),c(`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?(e(),c(`div`,T,[(e(!0),c(m,null,n(J.value,t=>(e(),c(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,E,[o(`p`,D,d(t.fullName),1),u(C,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,d(s(S)[t.role]),1),o(`span`,null,d(t.phone),1),o(`span`,k,d(t.email),1)]),o(`div`,A,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,j)])]))),128))])):_(``,!0),u(re,{open:xe.value,title:Se.value,size:`lg`,onClose:Z},{footer:i(()=>[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?(e(),c(`span`,ye)):_(``,!0),p(` `+d(B.value===`edit`?`ثبت تغییرات`:`ثبت کاربر`),1)],8,ve)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:ne(Q,[`prevent`])},[H.value?(e(),c(`p`,M,d(H.value),1)):_(``,!0),o(`div`,N,[r[8]||=o(`label`,{for:`user-name`},[p(`نام کامل `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-name`,"onUpdate:modelValue":r[1]||=e=>K.fullName=e,type:`text`,class:`admin-input`},null,512),[[v,K.fullName]])]),o(`div`,P,[o(`div`,F,[r[9]||=o(`label`,{for:`user-phone`},[p(`تلفن `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-phone`,"onUpdate:modelValue":r[2]||=e=>K.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[v,K.phone]])]),o(`div`,I,[r[10]||=o(`label`,{for:`user-email`},`ایمیل`,-1),a(o(`input`,{id:`user-email`,"onUpdate:modelValue":r[3]||=e=>K.email=e,type:`email`,class:`admin-input`,dir:`ltr`},null,512),[[v,K.email]])])]),o(`div`,L,[r[11]||=o(`label`,null,`نقش`,-1),u(ce,{modelValue:K.role,"onUpdate:modelValue":r[4]||=e=>K.role=e,block:``,"aria-label":`نقش کاربر`,options:be},null,8,[`modelValue`])]),o(`div`,_e,[u(oe,{modelValue:K.isActive,"onUpdate:modelValue":r[5]||=e=>K.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-62273fa5`]]);export{R as default}; \ No newline at end of file +import{A as e,D as t,N as n,Q as r,U as i,W as a,c as o,ct as s,d as c,et as l,g as ee,h as u,jt as d,l as f,m as p,r as m,s as h,t as g,u as _}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as v,m as ne,t as y}from"./http-CTjL79ty.js";import{L as b,V as re,f as x,o as ie}from"./index-BWgYBNME.js";import{t as ae}from"./AdminPageSkeleton-DacAHji8.js";import{t as oe}from"./BaseSwitch-Dz4ODUhf.js";import{t as se}from"./BaseEmptyState-88fQ29rO.js";import{t as ce}from"./AdminSelect-hgn_nYC2.js";import{s as S}from"./adminLabels-jYlObVqa.js";import{t as C}from"./ActiveSwitchCell-CRUUEk77.js";var le={class:`users-page`},ue={class:`users-page__search admin-card`},de={key:2,class:`users-page__table admin-card desktop-only`},fe={class:`admin-table-wrap`},pe={class:`admin-table`},me={dir:`ltr`},he={class:`status`},ge={class:`actions`},w=[`onClick`],T={key:3,class:`compact-only admin-card-list`},E={class:`admin-card-item__header`},D={class:`admin-card-item__title`},O={class:`admin-card-item__meta`},k={dir:`ltr`},A={class:`admin-card-item__actions`},j=[`onClick`],M={key:0,class:`admin-form__error`,role:`alert`},N={class:`admin-form__field`},P={class:`admin-form__row`},F={class:`admin-form__field`},I={class:`admin-form__field`},L={class:`admin-form__field`},_e={class:`admin-form__field`},ve=[`disabled`],ye={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},R=g(ee({__name:`UsersView`,setup(ee){let g=l([]),R=l(``),z=l(!0),B=l(null),V=l(null),H=l(``),U=l(!1),W=te(),be=[{value:`admin`,label:`مدیر سیستم`},{value:`sales`,label:`واحد فروش`},{value:`finance`,label:`واحد مالی`},{value:`warehouse`,label:`انبار`}],G=()=>({fullName:``,phone:``,email:``,role:`sales`,isActive:!0}),K=r(G()),xe=h(()=>B.value!==null),Se=h(()=>B.value===`edit`?`ویرایش کاربر`:`افزودن کاربر`),q=h(()=>K.fullName.trim()&&K.phone.trim()),J=h(()=>{let e=R.value.trim();return e?g.value.filter(t=>t.fullName.includes(e)||t.phone.includes(e)||t.email.includes(e)||S[t.role].includes(e)):g.value});async function Ce(){z.value=!0;try{g.value=await x.list()}catch(e){W.error(e instanceof y?e.message:`بارگذاری کاربران انجام نشد.`)}finally{z.value=!1}}t(()=>{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 x.update(V.value,e),n=g.value.findIndex(e=>e.id===V.value);n!==-1&&(g.value[n]={...g.value[n],...t})}else{let t=await x.create(e);g.value.push(t)}W.success(B.value===`edit`?`اطلاعات کاربر به‌روزرسانی شد.`:`کاربر جدید ثبت شد.`),Z()}catch(e){W.error(e instanceof y?e.message:`ذخیره کاربر انجام نشد.`)}finally{U.value=!1}}async function $(e,t){await x.setActive(e,t)}function we(){R.value=``}return(t,r)=>(e(),c(`div`,le,[o(`div`,{class:`admin-page-header`},[r[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`,ue,[u(b,{name:`search`,size:18}),a(o(`input`,{"onUpdate:modelValue":r[0]||=e=>R.value=e,type:`search`,class:`users-page__search-input`,placeholder:`جستجو در نام، تلفن، ایمیل...`},null,512),[[v,R.value]])]),z.value?(e(),f(ae,{key:0,variant:`table`})):J.value.length?(e(),c(`div`,de,[o(`div`,fe,[o(`table`,pe,[r[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,[(e(!0),c(m,null,n(J.value,t=>(e(),c(`tr`,{key:t.id},[o(`td`,null,d(t.fullName),1),o(`td`,null,d(t.phone),1),o(`td`,me,d(t.email),1),o(`td`,null,d(s(S)[t.role]),1),o(`td`,he,[u(C,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`td`,null,d(t.lastLoginAt?s(ie)(t.lastLoginAt):`—`),1),o(`td`,ge,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,w)])]))),128))])])])])):(e(),f(se,{key:1,class:`admin-card`,icon:`users`,title:R.value.trim()?`نتیجه‌ای یافت نشد`:`کاربری ثبت نشده`,description:R.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین کاربر را ثبت کنید.`},{default:i(()=>[R.value.trim()?(e(),c(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:we},` پاک کردن جستجو `)):(e(),c(`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?(e(),c(`div`,T,[(e(!0),c(m,null,n(J.value,t=>(e(),c(`article`,{key:t.id,class:`admin-card-item`},[o(`div`,E,[o(`p`,D,d(t.fullName),1),u(C,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.fullName,"entity-type":`کاربر`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),o(`div`,O,[o(`span`,null,d(s(S)[t.role]),1),o(`span`,null,d(t.phone),1),o(`span`,k,d(t.email),1)]),o(`div`,A,[o(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,j)])]))),128))])):_(``,!0),u(re,{open:xe.value,title:Se.value,size:`lg`,onClose:Z},{footer:i(()=>[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?(e(),c(`span`,ye)):_(``,!0),p(` `+d(B.value===`edit`?`ثبت تغییرات`:`ثبت کاربر`),1)],8,ve)]),default:i(()=>[o(`form`,{class:`admin-form`,onSubmit:ne(Q,[`prevent`])},[H.value?(e(),c(`p`,M,d(H.value),1)):_(``,!0),o(`div`,N,[r[8]||=o(`label`,{for:`user-name`},[p(`نام کامل `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-name`,"onUpdate:modelValue":r[1]||=e=>K.fullName=e,type:`text`,class:`admin-input`},null,512),[[v,K.fullName]])]),o(`div`,P,[o(`div`,F,[r[9]||=o(`label`,{for:`user-phone`},[p(`تلفن `),o(`span`,{class:`admin-form__required`},`*`)],-1),a(o(`input`,{id:`user-phone`,"onUpdate:modelValue":r[2]||=e=>K.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[v,K.phone]])]),o(`div`,I,[r[10]||=o(`label`,{for:`user-email`},`ایمیل`,-1),a(o(`input`,{id:`user-email`,"onUpdate:modelValue":r[3]||=e=>K.email=e,type:`email`,class:`admin-input`,dir:`ltr`},null,512),[[v,K.email]])])]),o(`div`,L,[r[11]||=o(`label`,null,`نقش`,-1),u(ce,{modelValue:K.role,"onUpdate:modelValue":r[4]||=e=>K.role=e,block:``,"aria-label":`نقش کاربر`,options:be},null,8,[`modelValue`])]),o(`div`,_e,[u(oe,{modelValue:K.isActive,"onUpdate:modelValue":r[5]||=e=>K.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-62273fa5`]]);export{R as default}; \ No newline at end of file diff --git a/dist/assets/index-DWlOII4H.js b/dist/assets/index-BWgYBNME.js similarity index 95% rename from dist/assets/index-DWlOII4H.js rename to dist/assets/index-BWgYBNME.js index 01e841c..53a619d 100644 --- a/dist/assets/index-DWlOII4H.js +++ b/dist/assets/index-BWgYBNME.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-DPf5yyji.js","assets/_plugin-vue_export-helper-vx-p5QAT.js","assets/http-CTjL79ty.js","assets/LoginView-FB_C5np2.css","assets/DashboardView-Bf5VLJQx.js","assets/StatusBadge-BkaoX2rz.js","assets/orderStatus-CeC05Cv4.js","assets/StatusBadge-D4wGJ-Ud.css","assets/DashboardView-CFmOMgpM.css","assets/OrdersView-CFhbQhLd.js","assets/AdminSelect-CWMyO8tk.js","assets/selectOptionSearch-BUIO0UgP.js","assets/AdminSelect-D_tV1Ad3.css","assets/AdminImageLightbox-BbQANbIb.js","assets/AdminImageLightbox-DHLeZ8xo.css","assets/adminLabels-jYlObVqa.js","assets/OrdersView-pnWnD3c9.css","assets/OrderPricingView-Dk4I3rky.js","assets/AdminPageSkeleton-DacAHji8.js","assets/AdminPageSkeleton-Gm3IJwUK.css","assets/AdminCurrencyInput-iQrtrYek.js","assets/AdminCurrencyInput-QPh70it7.css","assets/OrderPricingView-4hixJcG6.css","assets/ChecksListView-DTK6LJF5.js","assets/ChecksListView-DeOu1gFo.css","assets/CheckManagementView-bbhL2yRJ.js","assets/CheckManagementView-C1ozixF5.css","assets/CompaniesView-CEvMtbXg.js","assets/BaseSwitch-Dz4ODUhf.js","assets/BaseSwitch-CCZjYqBV.css","assets/BaseEmptyState-B6cM4bRM.js","assets/BaseEmptyState-Df57vCUi.css","assets/ActiveSwitchCell-BQoMjcdH.js","assets/CompaniesView-BPiVj2Wz.css","assets/BankAccountsView-CVMQVc8t.js","assets/BankAccountsView-45UgBBlI.css","assets/CustomersView-D9xMDSjt.js","assets/CustomersView-CpyDze5R.css","assets/ProductsView-D5Z04HJa.js","assets/AdminImagePicker-DhyB3HhH.js","assets/AdminImagePicker-Dh_HSRmL.css","assets/ProductsView-Bh5L6IKe.css","assets/CategoriesView-DpJp6SIe.js","assets/CategoriesView-Bixx3g4K.css","assets/BannersView-FOIP0eDe.js","assets/BannersView-COPiXMPa.css","assets/InternalMessagesView-3aHnvpBW.js","assets/InternalMessagesView-0lrPLnRU.css","assets/CatalogRequestsView-FLyRwYeA.js","assets/CatalogRequestsView-DvXU9zF3.css","assets/SuggestionsView-BsmWTkxy.js","assets/SuggestionsView-ztSfUAsG.css","assets/LevelsView-D6NkWOXN.js","assets/LevelsView-Bwpvfee6.css","assets/CashPaymentsView-BuU9uTEt.js","assets/CashPaymentsView-GWpZx-gw.css","assets/ShippingView-BeB7EVuh.js","assets/ShippingView-G0QuXsX0.css","assets/ReportsView-BQeqHQaO.js","assets/ReportsView-dONYkP5k.css","assets/SettingsView-Bj0Fydai.js","assets/SettingsView-WLOV8RT0.css","assets/SmsTariffView-B7yWL4bF.js","assets/SmsTariffView-DfW33peq.css","assets/UsersView-CjdEyvc2.js","assets/UsersView-CT9zFQZh.css","assets/NotFoundView-fVAjwM_0.js","assets/NotFoundView-CY2m4474.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-CVnc757a.js","assets/_plugin-vue_export-helper-vx-p5QAT.js","assets/http-CTjL79ty.js","assets/LoginView-FB_C5np2.css","assets/DashboardView-x0R6D6hn.js","assets/StatusBadge-BkaoX2rz.js","assets/orderStatus-CeC05Cv4.js","assets/StatusBadge-D4wGJ-Ud.css","assets/DashboardView-CFmOMgpM.css","assets/OrdersView-l4QUSOVE.js","assets/AdminSelect-hgn_nYC2.js","assets/selectOptionSearch-DNMc9NzZ.js","assets/AdminSelect-D_tV1Ad3.css","assets/AdminImageLightbox-BbQANbIb.js","assets/AdminImageLightbox-DHLeZ8xo.css","assets/adminLabels-jYlObVqa.js","assets/OrdersView-BvKCgD_N.css","assets/OrderPricingView-qx1u60xK.js","assets/AdminPageSkeleton-DacAHji8.js","assets/AdminPageSkeleton-Gm3IJwUK.css","assets/AdminCurrencyInput-CpWvBhwh.js","assets/AdminCurrencyInput-QPh70it7.css","assets/OrderPricingView-4hixJcG6.css","assets/ChecksListView-CCPYK4M9.js","assets/ChecksListView-C-Ay1N53.css","assets/CheckManagementView-BycEGkcl.js","assets/CheckManagementView-TDxFBtlm.css","assets/CompaniesView-CdqgGxqw.js","assets/BaseSwitch-Dz4ODUhf.js","assets/BaseSwitch-CCZjYqBV.css","assets/BaseEmptyState-88fQ29rO.js","assets/BaseEmptyState-Df57vCUi.css","assets/ActiveSwitchCell-CRUUEk77.js","assets/CompaniesView-BPiVj2Wz.css","assets/BankAccountsView-Kz0VmXxH.js","assets/BankAccountsView-45UgBBlI.css","assets/CustomersView-x2GBkkE0.js","assets/CustomersView-CpyDze5R.css","assets/ProductsView-CHAVTiZy.js","assets/AdminImagePicker-DhyB3HhH.js","assets/AdminImagePicker-Dh_HSRmL.css","assets/ProductsView-B78izKAQ.css","assets/CategoriesView-D47o28Jt.js","assets/CategoriesView-Bixx3g4K.css","assets/BannersView-Dy7y-V0q.js","assets/BannersView-COPiXMPa.css","assets/InternalMessagesView-DmrHtqcC.js","assets/InternalMessagesView-0lrPLnRU.css","assets/CatalogRequestsView-DCDaxKkD.js","assets/CatalogRequestsView-DvXU9zF3.css","assets/SuggestionsView-B4wxEcxq.js","assets/SuggestionsView-ztSfUAsG.css","assets/LevelsView-DIcXZhsN.js","assets/LevelsView-Bwpvfee6.css","assets/CashPaymentsView-Dxi7IlxW.js","assets/CashPaymentsView-GWpZx-gw.css","assets/ShippingView-BADYaj5-.js","assets/ShippingView-G0QuXsX0.css","assets/ReportsView-COhsr222.js","assets/ReportsView-dONYkP5k.css","assets/SettingsView-ArN3zech.js","assets/SettingsView-WLOV8RT0.css","assets/SmsTariffView-DjF8geKA.js","assets/SmsTariffView-DfW33peq.css","assets/UsersView-7Li7nXk9.js","assets/UsersView-CT9zFQZh.css","assets/NotFoundView-fVAjwM_0.js","assets/NotFoundView-CY2m4474.css"])))=>i.map(i=>d[i]); import{$ as e,A as t,C as n,D as r,F as i,G as a,H as o,J as s,K as c,N as l,Ot as u,P as d,Q as f,R as p,U as m,V as h,X as g,Y as _,Z as v,_ as y,a as b,at as ee,b as x,c as S,ct as C,d as w,et as T,g as E,h as D,it as te,j as O,jt as k,l as A,m as ne,nt as re,ot as ie,q as ae,r as j,rt as M,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-vx-p5QAT.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-CTjL79ty.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 e=c(!0),t=e.run(()=>T({})),n=[],r=[],i=g({install(e){_e(i),i._a=e,e.provide(ve,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var Ne=()=>{};function Pe(e,t,n,r=Ne){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&ae()&&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)&&!_(r)&&!s(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!!(_(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(ie(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=g(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={},r,i,a){let o,l=V({actions:{}},n),u={deep:!0},d,p,m=new Set,g=new Set,v,y=r.state.value[e];!a&&!y&&(r.state.value[e]={});let b;function ee(t){let n;d=p=!1,typeof t==`function`?(t(r.state.value[e]),n={type:`patch function`,storeId:e,events:v}):(ze(r.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:v});let i=b=Symbol();se().then(()=>{b===i&&(d=!0)}),p=!0,Fe(m,n,r.state.value[e])}let x=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{V(e,t)})}:Ne;function S(){o.stop(),m.clear(),g.clear(),r._s.delete(e)}let C=(t,n=``)=>{if(Le in t)return t[Re]=n,t;let i=function(){_e(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}Fe(g,{args:n,name:i[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 i[Le]=!0,i[Re]=n,i},w={_p:r,$id:e,$onAction:Pe.bind(null,g),$patch:ee,$reset:x,$subscribe(t,n={}){if(m.has(t))return Ne;let i=Pe(m,t,n.detached,()=>a()),a=o.run(()=>h(()=>r.state.value[e],r=>{(n.flush===`sync`?p:d)&&t({storeId:e,type:`direct`,events:v},r)},V({},u,n)));return i},$dispose:S},T=f(w);r._s.set(e,T);let E=(r._a&&r._a.runWithContext||Ie)(()=>r._e.run(()=>(o=c()).run(()=>t({action:C}))));for(let t in E){let n=E[t];_(n)&&!He(n)||s(n)?a||(y&&Ve(n)&&(_(n)?n.value=y[t]:ze(n,y[t])),r.state.value[e][t]=n):typeof n==`function`&&(E[t]=C(n,t),l.actions[t]=n)}return V(T,E),V(te(T),E),Object.defineProperty(T,"$state",{get:()=>r.state.value[e],set:e=>{ee(t=>{V(t,e)})}}),r._p.forEach(e=>{let t=o.run(()=>e({store:T,app:r._a,pinia:r,options:l}));V(T,t)}),y&&a&&n.hydrate&&n.hydrate(T.$state,y),d=!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=x();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":` @@ -379,4 +379,4 @@ import{$ as e,A as t,C as n,D as r,F as i,G as a,H as o,J as s,K as c,N as l,Ot -`},qe=[`aria-hidden`,`innerHTML`],Je=F(E({inheritAttrs:!1,__name:`BasicIcon`,props:{icon:{},color:{default:null},size:{default:24},strokeWidth:{default:1.5}},setup(e){le(e=>({v196ba43b:String(r.strokeWidth)}));let r=e,i=p(),a=N(()=>{let e=Ke[r.icon];if(!e)return``;let t=String(r.size);return e.replace(/\swidth="[^"]*"/,` width="${t}"`).replace(/\sheight="[^"]*"/,` height="${t}"`).replace(/stroke="#[^"]*"/g,`stroke="currentColor"`)}),o=N(()=>({color:r.color||void 0,width:`${r.size}px`,height:`${r.size}px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,lineHeight:0,flexShrink:0})),s=N(()=>i[`aria-hidden`]??!0);return(e,r)=>(t(),w(`span`,n({class:`basic-icon`},C(i),{style:o.value,"aria-hidden":s.value,innerHTML:a.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(E({__name:`ToastContainer`,setup(e){let{toasts:n,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 a(e,t){t.preventDefault(),t.stopPropagation(),r(e)}return(e,r)=>(t(),w(`div`,Ye,[D(de,{name:`toast`,tag:`div`,class:`toast-container__list`},{default:m(()=>[(t(!0),w(j,null,l(C(n),e=>(t(),w(`div`,{key:e.id,class:u([`toast`,`toast--${e.tone}`]),role:`status`},[S(`span`,Xe,[D(Je,{icon:i[e.tone]||`vuesax-linear:info-circle`,size:20,"stroke-width":1.5},null,8,[`icon`])]),S(`p`,Ze,k(e.message),1),S(`button`,{type:`button`,class:`toast__close`,"aria-label":`بستن`,onClick:t=>a(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(E({__name:`BaseModal`,props:{open:{type:Boolean},title:{},size:{}},emits:[`close`],setup(e,{emit:n}){let r=n;function i(e){e.target===e.currentTarget&&r(`close`)}return(n,a)=>(t(),A(b,{to:`body`},[e.open?(t(),w(`div`,{key:0,class:`admin-modal-backdrop`,role:`presentation`,onClick:i},[S(`div`,{class:u([`admin-modal`,{"admin-modal--lg":e.size===`lg`,"admin-modal--xl":e.size===`xl`}]),role:`dialog`,"aria-modal":`true`,"aria-label":e.title,onClick:a[1]||=z(()=>{},[`stop`])},[S(`header`,tt,[S(`h2`,nt,k(e.title),1),S(`button`,{type:`button`,class:`admin-modal__close`,"aria-label":`بستن`,onClick:a[0]||=e=>r(`close`)},` × `)]),S(`div`,rt,[d(n.$slots,`default`,{},void 0,!0)]),n.$slots.footer?(t(),w(`footer`,it,[d(n.$slots,`footer`,{},void 0,!0)])):I(``,!0)],10,et)])):I(``,!0)]))}}),[[`__scopeId`,`data-v-a52d3eeb`]]),H=f({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(E({__name:`ConfirmDialog`,setup(e){let n=ot();function r(){ct(!1)}function i(){lt(!0),ct(!0)}return(e,a)=>(t(),A(at,{open:C(n).open,title:C(n).title,size:`md`,onClose:r},{footer:m(()=>[S(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,disabled:C(n).loading,onClick:r},k(C(n).cancelLabel),9,dt),S(`button`,{type:`button`,class:u([`admin-btn`,C(n).tone===`danger`?`admin-btn--danger`:`admin-btn--primary`]),disabled:C(n).loading,onClick:i},[C(n).loading?(t(),w(`span`,pt)):I(``,!0),ne(` `+k(C(n).confirmLabel),1)],10,ft)]),default:m(()=>[S(`p`,ut,k(C(n).message),1)]),_:1},8,[`open`,`title`]))}}),[[`__scopeId`,`data-v-47354e67`]]),ht=E({__name:`App`,setup(e){return(e,n)=>{let r=i(`RouterView`);return t(),w(j,null,[D(r),D($e),D(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=C(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[C(e.replace)?`replace`:`push`](C(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=E({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=f(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=E({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=L(Dt),i=N(()=>e.route||r.value),a=L(wt,0),o=N(()=>{let e=C(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),s=N(()=>i.value.matched[o.value]);O(wt,N(()=>o.value+1)),O(Ct,s),O(Dt,i);let c=T();return h(()=>[c.value,s.value,e.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 r=i.value,a=e.name,o=s.value,l=o&&o.components[a];if(!l)return lr(n.default,{Component:l,route:r});let u=o.props[a],d=u?u===!0?r.params:typeof u==`function`?u(r):u:null,f=R(l,U({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[a]=null)},ref:c}));return lr(n.default,{Component:f,route:r})||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=M(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 S(e)}function ee(e){return b(U(v(e),{replace:!0}))}function x(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 S(e,t){let n=l=_(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,u=x(n,i);if(u)return S(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:j(e):ie(e,d,i)).then(e=>{if(e){if(G(e,2))return S(U({replace:s},v(e.to),{state:typeof e.to==`object`?U({},a,e.to.state):a,force:o}),t||d)}else e=te(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 te(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),j()}let O;function k(){O||=i.listen((e,t,n)=>{if(!L.listening)return;let r=_(e),a=x(r,L.currentRoute.value);if(a){S(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)?(S(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||=te(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(),re;function ie(e,t,n){j(e);let r=ne.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function ae(){return re&&c.value!==K?Promise.resolve():new Promise((e,t)=>{A.add([e,t])})}function j(e){return re||(re=!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 P=e=>i.go(e),F,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:ee,go:P,back:()=>P(-1),forward:()=>P(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:ne.add,isReady:ae,install(e){e.component(`RouterLink`,rr),e.component(`RouterView`,ur),e.config.globalProperties.$router=L,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>C(c)}),At&&!F&&c.value===K&&(F=!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,oe(t)),e.provide(Dt,c);let n=e.unmount;I.add(e),e.unmount=function(){I.delete(e),I.size<1&&(l=K,O&&O(),O=null,c.value=K,F=!1,re=!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:`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=E({__name:`AdminIcon`,props:{name:{},size:{default:20},strokeWidth:{default:1.5},color:{default:null}},setup(e){let n=e,r={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`,close:`vuesax-linear:close-circle`},i=N(()=>n.name.startsWith(`vuesax-linear:`)?n.name:r[n.name]??`vuesax-linear:info-circle`);return(n,r)=>(t(),A(Je,{icon:i.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 e=T(Tr()),t=T(!1),n=T(null),r=N(()=>!!e.value),i=N(()=>e.value?.fullName??``),a=N(()=>e.value?{admin:`مدیر سیستم`,sales:`واحد فروش`,finance:`واحد مالی`,warehouse:`انبار`}[e.value.role]:``);function o(){n.value=null}async function s(){e.value=Tr(),e.value=await Or()}async function c(r,i,a){t.value=!0,n.value=null;let o=await Dr({phone:r,password:i,remember:a});return t.value=!1,o.success?(e.value=Tr(),!0):(n.value=o.message??`ورود انجام نشد.`,!1)}function l(){kr(),e.value=null,n.value=null}return{session:e,loading:t,error:n,isAuthenticated:r,fullName:i,roleLabel:a,clearError:o,hydrate:s,login:c,logout:l}}),jr={class:`admin-sidebar`,"aria-label":`ناوبری پنل مدیریت`},Mr={class:`admin-sidebar__nav`},Nr=[`onClick`],Pr=F(E({__name:`AdminSidebar`,setup(e){let n=kt(),r=Ot(),i=Ar(),a=N(()=>hr(i.session?.phone));function o(e){r.push(e)}function s(){i.logout(),r.push(`/login`)}return(e,r)=>(t(),w(`aside`,jr,[S(`div`,{class:`admin-sidebar__brand`},[S(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-sidebar__logo`}),r[0]||=S(`strong`,{class:`admin-sidebar__title`},`پارچه`,-1),r[1]||=S(`span`,{class:`admin-sidebar__subtitle`},`پنل مدیریت`,-1)]),S(`nav`,Mr,[(t(!0),w(j,null,l(a.value,e=>(t(),w(`button`,{key:e.name,type:`button`,class:u([`admin-sidebar__item`,{active:C(gr)(e.path,C(n).path)}]),onClick:t=>o(e.path)},[D(J,{name:e.icon,size:20},null,8,[`name`]),S(`span`,null,k(e.label),1)],10,Nr))),128))]),S(`button`,{type:`button`,class:`admin-sidebar__logout`,onClick:s},[D(J,{name:`logout`,size:20}),r[2]||=S(`span`,null,`خروج`,-1)])]))}}),[[`__scopeId`,`data-v-a8a62cb5`]]),Fr=new WeakMap,Ir=(...e)=>{let t=e[0],n=y()?.proxy??ae();if(n==null&&!x())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 ee(...t);let n=t[0];return typeof n==`function`?e(a(()=>({get:n,set:X}))):T(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:re(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||y()}function Yr(e,t,n={}){let{eventFilter:r=Wr,...i}=n;return h(e,Ur(r,t),i)}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)?r(e,n):t?e():se(e)}function Qr(e,t,n){return h(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=P(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(P(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(P(n.value?e[1]:e[0])),qr(C(n.value?e[2]:e[1])),P(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=>P(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=P(e);return t&&t.$.subTree.shapeFlag===16}function d(e,t){let n=P(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=M(!1),t=y();return t&&r(()=>{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=x()?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=M(typeof r==`number`),s=M(),c=M(!1);return o(()=>{if(a.value){a.value=!i.value;let t=P(e).split(`,`);c.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&&(s.value=n.matchMedia(P(e)),c.value=s.value.matches)}),Z(s,`change`,e=>{c.value=e.matches},{passive:!0}),N(()=>c.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(e,t,n,r={}){let{flush:i=`pre`,deep:a=!0,listenToStorageChanges:o=!0,writeDefaults:s=!0,mergeDefaults:c=!1,shallow:l,window:u=$r,eventFilter:d,onError:f=e=>{console.error(e)},initOnMounted:p}=r,m=(l?M:T)(typeof t==`function`?t():t),g=N(()=>P(e));if(!n)try{n=fi(`getDefaultStorage`,()=>$r?.localStorage)()}catch(e){f(e)}if(!n)return m;let _=P(t),v=mi(_),y=r.serializer??hi[v],{pause:b,resume:ee}=Xr(m,e=>C(e),{flush:i,deep:a,eventFilter:d});h(g,()=>E(),{flush:i});let x=!1;u&&o&&(n instanceof Storage?Z(u,`storage`,e=>{p&&!x||E(e)},{passive:!0}):Z(u,gi,e=>{p&&!x||D(e)})),p?Zr(()=>{x=!0,E()}):E();function S(e,t){if(u){let r={key:g.value,oldValue:e,newValue:t,storageArea:n};u.dispatchEvent(n instanceof Storage?new StorageEvent(`storage`,r):new CustomEvent(gi,{detail:r}))}}function C(e){try{let t=n.getItem(g.value);if(e==null)S(t,null),n.removeItem(g.value);else{let r=y.write(e);t!==r&&(n.setItem(g.value,r),S(t,r))}}catch(e){f(e)}}function w(e){let t=e?e.newValue:n.getItem(g.value);if(t==null)return s&&_!=null&&n.setItem(g.value,y.write(_)),_;if(!e&&c){let e=y.read(t);return typeof c==`function`?c(e,_):v===`object`&&!Array.isArray(e)?{..._,...e}:e}return typeof t==`string`?y.read(t):t}function E(e){if(!(e&&e.storageArea!==n)){if(e&&e.key==null){m.value=_;return}if(!(e&&e.key!==g.value)){b();try{let t=y.write(m.value);(e===void 0||e?.newValue!==t)&&(m.value=w(e))}catch(e){f(e)}finally{e?se(ee):ee()}}}}function D(e){E(e.detail)}return m}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}}),remove:e=>B(`/products/${e}`,{method:`DELETE`})},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?.status,registeredOn:e?.registeredOn}}),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/levels`),create:e=>B(`/admin/levels`,{body:e}),update:(e,t)=>B(`/admin/levels/${e}`,{method:`PATCH`,body:t})},Ii={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}})},Li={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})},Ri=T(null);function zi(){async function e(){Ri.value=await Li.summary()}return{summary:Ri,refresh:e}}var Bi=`۰۱۲۳۴۵۶۷۸۹`,Vi=new Intl.NumberFormat(`fa-IR`,{useGrouping:!0});function Hi(e){return e.replace(/[۰-۹]/g,e=>String(Bi.indexOf(e)))}function Ui(e){return Hi(e).replace(/[^\d]/g,``)}function Wi(e){return Number.isFinite(e)?Vi.format(e):`—`}function Gi(e){return`${Wi(e)} تومان`}function Ki(e){return`${Wi(e)} متر`}function qi(e){return String(e).replace(/\d/g,e=>Bi[Number(e)])}var Ji=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`}),Yi=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`});function Xi(e){let t=Hi(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 Zi(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 Qi(e){if(!e)return`—`;if(typeof e==`string`&&Xi(e)){let t=Hi(e.trim()).replace(/-/g,`/`),n=t.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/);if(!n)return qi(t);let[,r,i,a]=n;return qi(`${r}/${i.padStart(2,`0`)}/${a.padStart(2,`0`)}`)}let t=Zi(e);return Number.isNaN(t.getTime())?`—`:Ji.format(t)}function $i(e){if(!e)return`—`;if(typeof e==`string`&&Xi(e)&&!/[T\s]\d/.test(e))return Qi(e);let t=Zi(e);return Number.isNaN(t.getTime())?`—`:Yi.format(t)}var ea=/ORD-?\d{2,4}-?\d{2,6}/i,ta=/^\/?(?:admin\/)?orders\/([^/?#]+)\/?$/i,na=/^\/?(?:admin\/)?orders\/([^/?#]+)\/(pricing|checks)\/?$/i;function ra(e){let t=e.match(ea);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 ia(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(na);if(n?.[1]&&n[2])return`/orders/${n[1]}/${n[2]}`;let r=t.match(ta);return r?.[1]?`/orders?order=${encodeURIComponent(r[1])}`:t}function aa(e){let t=e.link?.trim();if(t)return ia(t);let n=`${e.title?.trim()??``} ${e.body?.trim()??``}`,r=e.orderId?.trim()||null,i=ra(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 oa(e){return e.replace(/\D/g,``).replace(/(\d{4})(?=\d)/g,`$1 `).trim()}function sa(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 ca=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`);o(()=>{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}}),la={class:`admin-header`},ua={class:`admin-header__right`},da=[`disabled`],fa={key:0},pa={class:`admin-header__dropdown`},ma=[`aria-label`,`aria-expanded`],ha={key:0,class:`admin-header__badge`,"aria-hidden":`true`},ga={class:`admin-header__panel-header`},_a={key:0,class:`admin-header__panel-list`},va=[`onClick`],ya={class:`admin-header__panel-item-top`},ba=[`datetime`],xa={class:`admin-header__panel-item-sender`},Sa={class:`admin-header__panel-item-body`},Ca={key:1,class:`admin-header__panel-empty`},wa={class:`admin-header__dropdown`},Ta=[`aria-label`,`aria-expanded`],Ea={key:0,class:`admin-header__badge`,"aria-hidden":`true`},Da={class:`admin-header__panel-header`},Oa={key:0,class:`admin-header__panel-list`},ka=[`onClick`],Aa={class:`admin-header__panel-item-top`},ja=[`datetime`],Ma={class:`admin-header__panel-item-body`},Na={key:1,class:`admin-header__panel-empty`},Pa={class:`admin-header__dropdown`},Fa=[`aria-label`,`aria-expanded`],Ia={class:`admin-header__theme-glyph`,"aria-hidden":`true`},La={class:`admin-header__theme-list`},Ra=[`onClick`],za={class:`admin-header__theme-option-icon`,"aria-hidden":`true`},Ba={class:`admin-header__theme-option-label`},Va={class:`admin-header__user`},Ha={class:`admin-header__avatar`},Ua={class:`admin-header__user-info`},Wa={key:0,class:`sms-charge`},Ga={class:`sms-charge__row`},Ka={dir:`ltr`},qa={class:`sms-charge__row`},Ja={dir:`ltr`},Ya={class:`sms-charge__name`},Xa=F(E({__name:`AdminHeader`,emits:[`menuClick`],setup(e){let n=Ot(),i=Ar(),a=ca(),o=ce(),{summary:s,refresh:c}=zi(),d=T(!1),f=T(null),p=T(null),h=T([]),g=T([]),_=N(()=>h.value.filter(e=>!e.isRead).length),v=N(()=>g.value.filter(e=>!e.isRead).length),y=[{value:`light`,label:`روشن`,icon:`vuesax-linear:sun-1`},{value:`dark`,label:`تاریک`,icon:`vuesax-linear:moon`},{value:`system`,label:`سیستم`,icon:`vuesax-linear:mobile`}],b=N(()=>y.find(e=>e.value===a.preference)?.label??`سیستم`),ee=N(()=>y.find(e=>e.value===a.preference)?.icon??`vuesax-linear:sun-1`);ki.get().then(e=>{h.value=e.messages??[],g.value=e.notifications??[]}).catch(()=>{h.value=[],g.value=[]}),ni(p,()=>{f.value=null}),Z(document,`keydown`,e=>{e.key===`Escape`&&(f.value=null)});function x(e){f.value=f.value===e?null:e}function E(){f.value=null}function te(e){e.isRead||(e.isRead=!0,Mi.markRead(e.id).catch(()=>{e.isRead=!1}))}function O(e){e.isRead||(e.isRead=!0,ji.markRead(e.id).catch(()=>{e.isRead=!1}))}function re(){let e=h.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),Mi.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function ie(){let e=g.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),ji.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function ae(e){E(),e&&n.push(e)}function M(e){te(e),ae(aa({link:e.link||void 0,orderId:e.orderId,title:e.subject,body:e.preview}))}function P(e){O(e),ae(aa({link:e.link,orderId:e.orderId,title:e.title,body:e.body}))}function F(e){a.setPreference(e),E()}let oe=N(()=>{let e=s.value;return e?e.blocked||e.balanceToman<=e.redThreshold?`danger`:e.balanceToman<=e.yellowThreshold?`warn`:`ok`:`ok`});function se(){c().catch(()=>{})}r(se),Z(window,`focus`,se);async function L(e){try{await navigator.clipboard.writeText(e.replace(/\s/g,``)),o.success(`کپی شد.`)}catch{o.error(`کپی انجام نشد.`)}}return(e,n)=>(t(),w(j,null,[S(`header`,la,[S(`div`,ua,[S(`button`,{type:`button`,class:`admin-header__menu-btn compact-only`,"aria-label":`باز کردن منو`,onClick:n[0]||=t=>e.$emit(`menuClick`)},[D(J,{name:`menu`,size:22})])]),S(`div`,{ref_key:`actionsRef`,ref:p,class:`admin-header__left`},[S(`div`,{class:u([`sms-credit`,C(s)?`sms-credit--${oe.value}`:``])},[S(`button`,{type:`button`,class:`sms-credit__charge`,disabled:!C(s),onClick:n[1]||=e=>d.value=!0},` شارژ `,8,da),S(`span`,null,`اعتبار پیامک: `+k(C(s)?C(Wi)(C(s).balanceRial):`—`)+` ریال`,1),C(s)?.blocked?(t(),w(`span`,fa,`مسدود`)):I(``,!0)],2),S(`div`,pa,[S(`button`,{type:`button`,class:u([`admin-header__icon-btn`,{"admin-header__icon-btn--active":f.value===`messages`}]),title:`پیام‌های داخلی`,"aria-label":`پیام‌های داخلی — ${_.value} پیام خوانده‌نشده`,"aria-expanded":f.value===`messages`,"aria-haspopup":`true`,onClick:n[2]||=z(e=>x(`messages`),[`stop`])},[D(J,{name:`message`,size:22}),_.value?(t(),w(`span`,ha,k(_.value),1)):I(``,!0),n[11]||=S(`span`,{class:`admin-header__icon-label`},`پیام`,-1)],10,ma),f.value===`messages`?(t(),w(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`پیام‌های داخلی`,onClick:n[3]||=z(()=>{},[`stop`])},[S(`div`,ga,[n[12]||=S(`h2`,{class:`admin-header__panel-title`},`پیام‌های داخلی`,-1),_.value?(t(),w(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:re},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):I(``,!0)]),h.value.length?(t(),w(`ul`,_a,[(t(!0),w(j,null,l(h.value,e=>(t(),w(`li`,{key:e.id,class:u([`admin-header__panel-item`,{unread:!e.isRead}])},[S(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>M(e)},[S(`span`,ya,[S(`strong`,null,k(e.subject),1),S(`time`,{datetime:e.sentAt},k(C($i)(e.sentAt)),9,ba)]),S(`span`,xa,`از `+k(e.senderName),1),S(`span`,Sa,k(e.preview),1)],8,va)],2))),128))])):(t(),w(`p`,Ca,`پیامی وجود ندارد.`))])):I(``,!0)]),S(`div`,wa,[S(`button`,{type:`button`,class:u([`admin-header__icon-btn`,{"admin-header__icon-btn--active":f.value===`notifications`}]),title:`اعلان‌ها`,"aria-label":`اعلان‌ها — ${v.value} اعلان جدید`,"aria-expanded":f.value===`notifications`,"aria-haspopup":`true`,onClick:n[4]||=z(e=>x(`notifications`),[`stop`])},[D(J,{name:`bell`,size:22}),v.value?(t(),w(`span`,Ea,k(v.value),1)):I(``,!0),n[13]||=S(`span`,{class:`admin-header__icon-label`},`اعلان`,-1)],10,Ta),f.value===`notifications`?(t(),w(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`اعلان‌ها`,onClick:n[5]||=z(()=>{},[`stop`])},[S(`div`,Da,[n[14]||=S(`h2`,{class:`admin-header__panel-title`},`اعلان‌ها`,-1),v.value?(t(),w(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:ie},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):I(``,!0)]),g.value.length?(t(),w(`ul`,Oa,[(t(!0),w(j,null,l(g.value,e=>(t(),w(`li`,{key:e.id,class:u([`admin-header__panel-item`,[{unread:!e.isRead},e.tone?`admin-header__panel-item--${e.tone}`:``]])},[S(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>P(e)},[S(`span`,Aa,[S(`strong`,null,k(e.title),1),S(`time`,{datetime:e.sentAt},k(C($i)(e.sentAt)),9,ja)]),S(`span`,Ma,k(e.body),1)],8,ka)],2))),128))])):(t(),w(`p`,Na,`اعلانی وجود ندارد.`))])):I(``,!0)]),S(`div`,Pa,[S(`button`,{type:`button`,class:u([`admin-header__icon-btn`,{"admin-header__icon-btn--active":f.value===`theme`}]),title:`حالت نمایش`,"aria-label":`حالت نمایش — ${b.value}`,"aria-expanded":f.value===`theme`,"aria-haspopup":`true`,onClick:n[6]||=z(e=>x(`theme`),[`stop`])},[S(`span`,Ia,[D(Je,{icon:ee.value,size:20,"stroke-width":1.5},null,8,[`icon`])]),n[15]||=S(`span`,{class:`admin-header__icon-label`},`تم`,-1)],10,Fa),f.value===`theme`?(t(),w(`div`,{key:0,class:`admin-header__panel admin-header__panel--theme`,role:`dialog`,"aria-label":`انتخاب حالت نمایش`,onClick:n[7]||=z(()=>{},[`stop`])},[n[16]||=S(`div`,{class:`admin-header__panel-header`},[S(`h2`,{class:`admin-header__panel-title`},`حالت نمایش`)],-1),S(`ul`,La,[(t(),w(j,null,l(y,e=>S(`li`,{key:e.value},[S(`button`,{type:`button`,class:u([`admin-header__theme-option`,{"admin-header__theme-option--active":C(a).preference===e.value}]),onClick:t=>F(e.value)},[S(`span`,za,[D(Je,{icon:e.icon,size:18,"stroke-width":1.5},null,8,[`icon`])]),S(`span`,Ba,k(e.label),1),C(a).preference===e.value?(t(),A(Je,{key:0,class:`admin-header__theme-option-check`,icon:`vuesax-linear:tick-circle`,size:16,"stroke-width":1.75})):I(``,!0)],10,Ra)])),64))])])):I(``,!0)]),S(`div`,Va,[S(`div`,Ha,k(C(i).fullName.charAt(0)||`؟`),1),S(`div`,Ua,[S(`strong`,null,k(C(i).fullName||`مدیر`),1),S(`span`,null,k(C(i).roleLabel||`پنل مدیریت`),1)])])],512)]),D(at,{open:d.value,title:`شارژ اعتبار پیامک`,onClose:n[10]||=e=>d.value=!1},{default:m(()=>[C(s)?(t(),w(`div`,Wa,[n[20]||=S(`p`,{class:`sms-charge__note`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید. `,-1),S(`div`,Ga,[S(`button`,{type:`button`,class:`sms-charge__copy`,onClick:n[8]||=e=>L(C(s).deposit.cardNumber)},` کپی `),S(`div`,null,[n[17]||=S(`span`,null,`شماره کارت`,-1),S(`strong`,Ka,k(C(qi)(C(oa)(C(s).deposit.cardNumber))),1)])]),S(`div`,qa,[S(`button`,{type:`button`,class:`sms-charge__copy sms-charge__copy--sheba`,onClick:n[9]||=e=>L(C(s).deposit.sheba)},` کپی `),S(`div`,null,[n[18]||=S(`span`,null,`شماره شبا`,-1),S(`strong`,Ja,k(C(qi)(C(sa)(C(s).deposit.sheba))),1)])]),S(`p`,Ya,[n[19]||=ne(` به نام `,-1),S(`strong`,null,k(C(s).deposit.accountName),1)])])):I(``,!0)]),_:1},8,[`open`])],64))}}),[[`__scopeId`,`data-v-100d6e7c`]]),Za=[`aria-hidden`],Qa={class:`admin-drawer__brand`},$a={class:`admin-drawer__nav`},eo=[`onClick`],to=F(E({__name:`AdminMobileDrawer`,props:{open:{type:Boolean}},emits:[`close`],setup(e,{emit:n}){let r=n,i=kt(),a=Ot(),o=Ar(),s=N(()=>hr(o.session?.phone));function c(e){a.push(e),r(`close`)}function d(){o.logout(),a.push(`/login`),r(`close`)}return(n,a)=>(t(),w(j,null,[S(`div`,{class:u([`admin-drawer-backdrop`,{open:e.open}]),role:`presentation`,onClick:a[0]||=e=>r(`close`)},null,2),S(`aside`,{class:u([`admin-drawer`,{open:e.open}]),"aria-label":`منوی ناوبری`,"aria-hidden":!e.open},[S(`div`,Qa,[S(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-drawer__logo`}),a[2]||=S(`strong`,null,`پارچه`,-1),a[3]||=S(`span`,null,`پنل مدیریت`,-1),S(`button`,{type:`button`,class:`admin-drawer__close`,"aria-label":`بستن منو`,onClick:a[1]||=e=>r(`close`)},` × `)]),S(`nav`,$a,[(t(!0),w(j,null,l(s.value,e=>(t(),w(`button`,{key:e.name,type:`button`,class:u([`admin-drawer__item`,{active:C(gr)(e.path,C(i).path)}]),onClick:t=>c(e.path)},[D(J,{name:e.icon,size:20},null,8,[`name`]),S(`span`,null,k(e.label),1)],10,eo))),128))]),S(`button`,{type:`button`,class:`admin-drawer__logout`,onClick:d},[D(J,{name:`logout`,size:20}),a[4]||=S(`span`,null,`خروج`,-1)])],10,Za)],64))}}),[[`__scopeId`,`data-v-442c8c6b`]]),no={class:`admin-shell`},ro={class:`admin-shell__main`},io={class:`admin-shell__content`},ao=F(E({__name:`AdminShell`,setup(e){let n=kt(),r=T(!1);function a(){r.value=!0}function o(){r.value=!1}return h(()=>n.path,()=>{r.value=!1}),(e,n)=>{let s=i(`RouterView`);return t(),w(`div`,no,[D(Pr,{class:`desktop-only admin-shell__sidebar`}),D(to,{open:r.value,onClose:o},null,8,[`open`]),S(`div`,ro,[D(Xa,{onMenuClick:a}),S(`main`,io,[D(s)])])])}}}),[[`__scopeId`,`data-v-435fffac`]]),oo=`modulepreload`,so=function(e){return`/admin/`+e},co={},$=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=so(t,n),t=s(t),t in co)return;co[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`:oo,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)})},lo=dr({history:Nn(`/admin/`),routes:[{path:`/login`,name:`login`,component:()=>$(()=>import(`./LoginView-DPf5yyji.js`),__vite__mapDeps([0,1,2,3])),meta:{public:!0,title:`ورود به پنل مدیریت`}},{path:`/`,component:ao,meta:{requiresAuth:!0},children:[{path:``,name:`dashboard`,component:()=>$(()=>import(`./DashboardView-Bf5VLJQx.js`),__vite__mapDeps([4,1,2,5,6,7,8])),meta:{title:`داشبورد مدیریتی`}},{path:`orders`,name:`orders`,component:()=>$(()=>import(`./OrdersView-CFhbQhLd.js`),__vite__mapDeps([9,1,2,10,11,12,13,14,15,6,5,7,16])),meta:{title:`سفارش‌ها`}},{path:`orders/:id/pricing`,name:`order-pricing`,component:()=>$(()=>import(`./OrderPricingView-Dk4I3rky.js`),__vite__mapDeps([17,1,2,18,19,10,11,12,6,5,7,20,21,22])),meta:{title:`قیمت‌گذاری سفارش`}},{path:`checks`,name:`checks`,component:()=>$(()=>import(`./ChecksListView-DTK6LJF5.js`),__vite__mapDeps([23,1,2,18,19,10,11,12,5,6,7,24])),meta:{title:`چک‌ها`}},{path:`orders/:id/checks`,name:`order-checks`,component:()=>$(()=>import(`./CheckManagementView-bbhL2yRJ.js`),__vite__mapDeps([25,1,2,6,5,7,26])),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-CEvMtbXg.js`),__vite__mapDeps([27,1,2,18,19,28,29,30,31,32,33])),meta:{title:`مدیریت شرکت‌ها`}},{path:`companies/:companyId/accounts`,name:`bank-accounts`,component:()=>$(()=>import(`./BankAccountsView-CVMQVc8t.js`),__vite__mapDeps([34,1,2,28,29,30,31,32,35])),meta:{title:`حساب‌های بانکی`}},{path:`customers`,name:`customers`,component:()=>$(()=>import(`./CustomersView-D9xMDSjt.js`),__vite__mapDeps([36,1,2,18,19,28,29,30,31,10,11,12,15,32,37])),meta:{title:`مشتریان و واسطه‌ها`}},{path:`products`,name:`products`,component:()=>$(()=>import(`./ProductsView-D5Z04HJa.js`),__vite__mapDeps([38,1,2,18,19,28,29,30,31,39,40,10,11,12,32,20,21,41])),meta:{title:`محصولات`}},{path:`categories`,name:`categories`,component:()=>$(()=>import(`./CategoriesView-DpJp6SIe.js`),__vite__mapDeps([42,1,2,18,19,28,29,39,40,10,11,12,43])),meta:{title:`دسته‌بندی‌ها`}},{path:`banners`,name:`banners`,component:()=>$(()=>import(`./BannersView-FOIP0eDe.js`),__vite__mapDeps([44,1,2,18,19,28,29,30,31,39,40,10,11,12,45])),meta:{title:`بنرها`}},{path:`internal-messages`,name:`internal-messages`,component:()=>$(()=>import(`./InternalMessagesView-3aHnvpBW.js`),__vite__mapDeps([46,1,2,18,19,30,31,47])),meta:{title:`پیام‌های داخلی`}},{path:`catalog-requests`,name:`catalog-requests`,component:()=>$(()=>import(`./CatalogRequestsView-FLyRwYeA.js`),__vite__mapDeps([48,1,2,18,19,30,31,10,11,12,15,49])),meta:{title:`درخواست کالیته فیزیکی`}},{path:`suggestions`,name:`suggestions`,component:()=>$(()=>import(`./SuggestionsView-BsmWTkxy.js`),__vite__mapDeps([50,1,2,18,19,30,31,10,11,12,51])),meta:{title:`پیشنهاد محصول`}},{path:`levels`,name:`levels`,component:()=>$(()=>import(`./LevelsView-D6NkWOXN.js`),__vite__mapDeps([52,1,2,18,19,30,31,53])),meta:{title:`سطوح مشتری`}},{path:`cash-payments`,name:`cash-payments`,component:()=>$(()=>import(`./CashPaymentsView-BuU9uTEt.js`),__vite__mapDeps([54,1,2,18,19,10,11,12,13,14,15,55])),meta:{title:`پرداخت‌های نقدی`}},{path:`shipping`,name:`shipping`,component:()=>$(()=>import(`./ShippingView-BeB7EVuh.js`),__vite__mapDeps([56,1,2,18,19,10,11,12,15,6,57])),meta:{title:`ارسال و باربری`}},{path:`reports`,name:`reports`,component:()=>$(()=>import(`./ReportsView-BQeqHQaO.js`),__vite__mapDeps([58,1,2,18,19,59])),meta:{title:`گزارش‌ها`}},{path:`settings`,name:`settings`,component:()=>$(()=>import(`./SettingsView-Bj0Fydai.js`),__vite__mapDeps([60,1,2,18,19,28,29,11,20,21,61])),meta:{title:`تنظیمات`}},{path:`sms-tariff`,name:`sms-tariff`,component:()=>$(()=>import(`./SmsTariffView-B7yWL4bF.js`),__vite__mapDeps([62,1,2,18,19,28,29,20,21,63])),meta:{title:`تعرفه پیامک‌ها`,smsWalletOwner:!0}},{path:`users`,name:`users`,component:()=>$(()=>import(`./UsersView-CjdEyvc2.js`),__vite__mapDeps([64,1,2,18,19,28,29,30,31,10,11,12,15,32,65])),meta:{title:`کاربران و دسترسی‌ها`}}]},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>$(()=>import(`./NotFoundView-fVAjwM_0.js`),__vite__mapDeps([66,1,67]))}]});lo.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 uo=pe(ht),fo=Me();uo.use(fo),uo.use(lo),ca(fo),Ar(fo).hydrate(),uo.mount(`#app`),`serviceWorker`in navigator&&window.addEventListener(`load`,()=>{navigator.serviceWorker.register(`/admin/sw.js`,{scope:`/admin/`})});export{Li as A,st as B,vi as C,Ai as D,Si as E,yr as F,Je as H,Er as I,J as L,ni as M,si as N,Di as O,Ar as P,kt as R,Fi as S,wi as T,at as V,Ti as _,Qi as a,ki as b,Wi as c,zi as d,Oi as f,Ni as g,Ei as h,Gi as i,Ii as j,yi as k,Hi as l,Pi as m,sa as n,$i as o,xi as p,Ui as r,Ki as s,oa as t,qi as u,bi as v,ji as w,Mi as x,Ci as y,Ot as z}; \ No newline at end of file +`},qe=[`aria-hidden`,`innerHTML`],Je=F(E({inheritAttrs:!1,__name:`BasicIcon`,props:{icon:{},color:{default:null},size:{default:24},strokeWidth:{default:1.5}},setup(e){le(e=>({v196ba43b:String(r.strokeWidth)}));let r=e,i=p(),a=N(()=>{let e=Ke[r.icon];if(!e)return``;let t=String(r.size);return e.replace(/\swidth="[^"]*"/,` width="${t}"`).replace(/\sheight="[^"]*"/,` height="${t}"`).replace(/stroke="#[^"]*"/g,`stroke="currentColor"`)}),o=N(()=>({color:r.color||void 0,width:`${r.size}px`,height:`${r.size}px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,lineHeight:0,flexShrink:0})),s=N(()=>i[`aria-hidden`]??!0);return(e,r)=>(t(),w(`span`,n({class:`basic-icon`},C(i),{style:o.value,"aria-hidden":s.value,innerHTML:a.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(E({__name:`ToastContainer`,setup(e){let{toasts:n,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 a(e,t){t.preventDefault(),t.stopPropagation(),r(e)}return(e,r)=>(t(),w(`div`,Ye,[D(de,{name:`toast`,tag:`div`,class:`toast-container__list`},{default:m(()=>[(t(!0),w(j,null,l(C(n),e=>(t(),w(`div`,{key:e.id,class:u([`toast`,`toast--${e.tone}`]),role:`status`},[S(`span`,Xe,[D(Je,{icon:i[e.tone]||`vuesax-linear:info-circle`,size:20,"stroke-width":1.5},null,8,[`icon`])]),S(`p`,Ze,k(e.message),1),S(`button`,{type:`button`,class:`toast__close`,"aria-label":`بستن`,onClick:t=>a(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(E({__name:`BaseModal`,props:{open:{type:Boolean},title:{},size:{}},emits:[`close`],setup(e,{emit:n}){let r=n;function i(e){e.target===e.currentTarget&&r(`close`)}return(n,a)=>(t(),A(b,{to:`body`},[e.open?(t(),w(`div`,{key:0,class:`admin-modal-backdrop`,role:`presentation`,onClick:i},[S(`div`,{class:u([`admin-modal`,{"admin-modal--lg":e.size===`lg`,"admin-modal--xl":e.size===`xl`}]),role:`dialog`,"aria-modal":`true`,"aria-label":e.title,onClick:a[1]||=z(()=>{},[`stop`])},[S(`header`,tt,[S(`h2`,nt,k(e.title),1),S(`button`,{type:`button`,class:`admin-modal__close`,"aria-label":`بستن`,onClick:a[0]||=e=>r(`close`)},` × `)]),S(`div`,rt,[d(n.$slots,`default`,{},void 0,!0)]),n.$slots.footer?(t(),w(`footer`,it,[d(n.$slots,`footer`,{},void 0,!0)])):I(``,!0)],10,et)])):I(``,!0)]))}}),[[`__scopeId`,`data-v-a52d3eeb`]]),H=f({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(E({__name:`ConfirmDialog`,setup(e){let n=ot();function r(){ct(!1)}function i(){lt(!0),ct(!0)}return(e,a)=>(t(),A(at,{open:C(n).open,title:C(n).title,size:`md`,onClose:r},{footer:m(()=>[S(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,disabled:C(n).loading,onClick:r},k(C(n).cancelLabel),9,dt),S(`button`,{type:`button`,class:u([`admin-btn`,C(n).tone===`danger`?`admin-btn--danger`:`admin-btn--primary`]),disabled:C(n).loading,onClick:i},[C(n).loading?(t(),w(`span`,pt)):I(``,!0),ne(` `+k(C(n).confirmLabel),1)],10,ft)]),default:m(()=>[S(`p`,ut,k(C(n).message),1)]),_:1},8,[`open`,`title`]))}}),[[`__scopeId`,`data-v-47354e67`]]),ht=E({__name:`App`,setup(e){return(e,n)=>{let r=i(`RouterView`);return t(),w(j,null,[D(r),D($e),D(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=C(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[C(e.replace)?`replace`:`push`](C(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=E({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=f(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=E({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=L(Dt),i=N(()=>e.route||r.value),a=L(wt,0),o=N(()=>{let e=C(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),s=N(()=>i.value.matched[o.value]);O(wt,N(()=>o.value+1)),O(Ct,s),O(Dt,i);let c=T();return h(()=>[c.value,s.value,e.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 r=i.value,a=e.name,o=s.value,l=o&&o.components[a];if(!l)return lr(n.default,{Component:l,route:r});let u=o.props[a],d=u?u===!0?r.params:typeof u==`function`?u(r):u:null,f=R(l,U({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[a]=null)},ref:c}));return lr(n.default,{Component:f,route:r})||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=M(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 S(e)}function ee(e){return b(U(v(e),{replace:!0}))}function x(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 S(e,t){let n=l=_(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,u=x(n,i);if(u)return S(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:j(e):ie(e,d,i)).then(e=>{if(e){if(G(e,2))return S(U({replace:s},v(e.to),{state:typeof e.to==`object`?U({},a,e.to.state):a,force:o}),t||d)}else e=te(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 te(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),j()}let O;function k(){O||=i.listen((e,t,n)=>{if(!L.listening)return;let r=_(e),a=x(r,L.currentRoute.value);if(a){S(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)?(S(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||=te(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(),re;function ie(e,t,n){j(e);let r=ne.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function ae(){return re&&c.value!==K?Promise.resolve():new Promise((e,t)=>{A.add([e,t])})}function j(e){return re||(re=!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 P=e=>i.go(e),F,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:ee,go:P,back:()=>P(-1),forward:()=>P(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:ne.add,isReady:ae,install(e){e.component(`RouterLink`,rr),e.component(`RouterView`,ur),e.config.globalProperties.$router=L,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>C(c)}),At&&!F&&c.value===K&&(F=!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,oe(t)),e.provide(Dt,c);let n=e.unmount;I.add(e),e.unmount=function(){I.delete(e),I.size<1&&(l=K,O&&O(),O=null,c.value=K,F=!1,re=!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:`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=E({__name:`AdminIcon`,props:{name:{},size:{default:20},strokeWidth:{default:1.5},color:{default:null}},setup(e){let n=e,r={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`,close:`vuesax-linear:close-circle`},i=N(()=>n.name.startsWith(`vuesax-linear:`)?n.name:r[n.name]??`vuesax-linear:info-circle`);return(n,r)=>(t(),A(Je,{icon:i.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 e=T(Tr()),t=T(!1),n=T(null),r=N(()=>!!e.value),i=N(()=>e.value?.fullName??``),a=N(()=>e.value?{admin:`مدیر سیستم`,sales:`واحد فروش`,finance:`واحد مالی`,warehouse:`انبار`}[e.value.role]:``);function o(){n.value=null}async function s(){e.value=Tr(),e.value=await Or()}async function c(r,i,a){t.value=!0,n.value=null;let o=await Dr({phone:r,password:i,remember:a});return t.value=!1,o.success?(e.value=Tr(),!0):(n.value=o.message??`ورود انجام نشد.`,!1)}function l(){kr(),e.value=null,n.value=null}return{session:e,loading:t,error:n,isAuthenticated:r,fullName:i,roleLabel:a,clearError:o,hydrate:s,login:c,logout:l}}),jr={class:`admin-sidebar`,"aria-label":`ناوبری پنل مدیریت`},Mr={class:`admin-sidebar__nav`},Nr=[`onClick`],Pr=F(E({__name:`AdminSidebar`,setup(e){let n=kt(),r=Ot(),i=Ar(),a=N(()=>hr(i.session?.phone));function o(e){r.push(e)}function s(){i.logout(),r.push(`/login`)}return(e,r)=>(t(),w(`aside`,jr,[S(`div`,{class:`admin-sidebar__brand`},[S(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-sidebar__logo`}),r[0]||=S(`strong`,{class:`admin-sidebar__title`},`پارچه`,-1),r[1]||=S(`span`,{class:`admin-sidebar__subtitle`},`پنل مدیریت`,-1)]),S(`nav`,Mr,[(t(!0),w(j,null,l(a.value,e=>(t(),w(`button`,{key:e.name,type:`button`,class:u([`admin-sidebar__item`,{active:C(gr)(e.path,C(n).path)}]),onClick:t=>o(e.path)},[D(J,{name:e.icon,size:20},null,8,[`name`]),S(`span`,null,k(e.label),1)],10,Nr))),128))]),S(`button`,{type:`button`,class:`admin-sidebar__logout`,onClick:s},[D(J,{name:`logout`,size:20}),r[2]||=S(`span`,null,`خروج`,-1)])]))}}),[[`__scopeId`,`data-v-a8a62cb5`]]),Fr=new WeakMap,Ir=(...e)=>{let t=e[0],n=y()?.proxy??ae();if(n==null&&!x())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 ee(...t);let n=t[0];return typeof n==`function`?e(a(()=>({get:n,set:X}))):T(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:re(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||y()}function Yr(e,t,n={}){let{eventFilter:r=Wr,...i}=n;return h(e,Ur(r,t),i)}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)?r(e,n):t?e():se(e)}function Qr(e,t,n){return h(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=P(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(P(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(P(n.value?e[1]:e[0])),qr(C(n.value?e[2]:e[1])),P(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=>P(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=P(e);return t&&t.$.subTree.shapeFlag===16}function d(e,t){let n=P(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=M(!1),t=y();return t&&r(()=>{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=x()?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=M(typeof r==`number`),s=M(),c=M(!1);return o(()=>{if(a.value){a.value=!i.value;let t=P(e).split(`,`);c.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&&(s.value=n.matchMedia(P(e)),c.value=s.value.matches)}),Z(s,`change`,e=>{c.value=e.matches},{passive:!0}),N(()=>c.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(e,t,n,r={}){let{flush:i=`pre`,deep:a=!0,listenToStorageChanges:o=!0,writeDefaults:s=!0,mergeDefaults:c=!1,shallow:l,window:u=$r,eventFilter:d,onError:f=e=>{console.error(e)},initOnMounted:p}=r,m=(l?M:T)(typeof t==`function`?t():t),g=N(()=>P(e));if(!n)try{n=fi(`getDefaultStorage`,()=>$r?.localStorage)()}catch(e){f(e)}if(!n)return m;let _=P(t),v=mi(_),y=r.serializer??hi[v],{pause:b,resume:ee}=Xr(m,e=>C(e),{flush:i,deep:a,eventFilter:d});h(g,()=>E(),{flush:i});let x=!1;u&&o&&(n instanceof Storage?Z(u,`storage`,e=>{p&&!x||E(e)},{passive:!0}):Z(u,gi,e=>{p&&!x||D(e)})),p?Zr(()=>{x=!0,E()}):E();function S(e,t){if(u){let r={key:g.value,oldValue:e,newValue:t,storageArea:n};u.dispatchEvent(n instanceof Storage?new StorageEvent(`storage`,r):new CustomEvent(gi,{detail:r}))}}function C(e){try{let t=n.getItem(g.value);if(e==null)S(t,null),n.removeItem(g.value);else{let r=y.write(e);t!==r&&(n.setItem(g.value,r),S(t,r))}}catch(e){f(e)}}function w(e){let t=e?e.newValue:n.getItem(g.value);if(t==null)return s&&_!=null&&n.setItem(g.value,y.write(_)),_;if(!e&&c){let e=y.read(t);return typeof c==`function`?c(e,_):v===`object`&&!Array.isArray(e)?{..._,...e}:e}return typeof t==`string`?y.read(t):t}function E(e){if(!(e&&e.storageArea!==n)){if(e&&e.key==null){m.value=_;return}if(!(e&&e.key!==g.value)){b();try{let t=y.write(m.value);(e===void 0||e?.newValue!==t)&&(m.value=w(e))}catch(e){f(e)}finally{e?se(ee):ee()}}}}function D(e){E(e.detail)}return m}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}}),remove:e=>B(`/products/${e}`,{method:`DELETE`})},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?.status,registeredOn:e?.registeredOn}}),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/levels`),create:e=>B(`/admin/levels`,{body:e}),update:(e,t)=>B(`/admin/levels/${e}`,{method:`PATCH`,body:t})},Ii={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}})},Li={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})},Ri=T(null);function zi(){async function e(){Ri.value=await Li.summary()}return{summary:Ri,refresh:e}}var Bi=`۰۱۲۳۴۵۶۷۸۹`,Vi=new Intl.NumberFormat(`fa-IR`,{useGrouping:!0});function Hi(e){return e.replace(/[۰-۹]/g,e=>String(Bi.indexOf(e)))}function Ui(e){return Hi(e).replace(/[^\d]/g,``)}function Wi(e){return Number.isFinite(e)?Vi.format(e):`—`}function Gi(e){return`${Wi(e)} تومان`}function Ki(e){return`${Wi(e)} متر`}function qi(e){return String(e).replace(/\d/g,e=>Bi[Number(e)])}var Ji=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`}),Yi=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`});function Xi(e){let t=Hi(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 Zi(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 Qi(e){if(!e)return`—`;if(typeof e==`string`&&Xi(e)){let t=Hi(e.trim()).replace(/-/g,`/`),n=t.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/);if(!n)return qi(t);let[,r,i,a]=n;return qi(`${r}/${i.padStart(2,`0`)}/${a.padStart(2,`0`)}`)}let t=Zi(e);return Number.isNaN(t.getTime())?`—`:Ji.format(t)}function $i(e){if(!e)return`—`;if(typeof e==`string`&&Xi(e)&&!/[T\s]\d/.test(e))return Qi(e);let t=Zi(e);return Number.isNaN(t.getTime())?`—`:Yi.format(t)}var ea=/ORD-?\d{2,4}-?\d{2,6}/i,ta=/^\/?(?:admin\/)?orders\/([^/?#]+)\/?$/i,na=/^\/?(?:admin\/)?orders\/([^/?#]+)\/(pricing|checks)\/?$/i;function ra(e){let t=e.match(ea);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 ia(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(na);if(n?.[1]&&n[2])return`/orders/${n[1]}/${n[2]}`;let r=t.match(ta);return r?.[1]?`/orders?order=${encodeURIComponent(r[1])}`:t}function aa(e){let t=e.link?.trim();if(t)return ia(t);let n=`${e.title?.trim()??``} ${e.body?.trim()??``}`,r=e.orderId?.trim()||null,i=ra(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 oa(e){return e.replace(/\D/g,``).replace(/(\d{4})(?=\d)/g,`$1 `).trim()}function sa(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 ca=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`);o(()=>{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}}),la={class:`admin-header`},ua={class:`admin-header__right`},da=[`disabled`],fa={key:0},pa={class:`admin-header__dropdown`},ma=[`aria-label`,`aria-expanded`],ha={key:0,class:`admin-header__badge`,"aria-hidden":`true`},ga={class:`admin-header__panel-header`},_a={key:0,class:`admin-header__panel-list`},va=[`onClick`],ya={class:`admin-header__panel-item-top`},ba=[`datetime`],xa={class:`admin-header__panel-item-sender`},Sa={class:`admin-header__panel-item-body`},Ca={key:1,class:`admin-header__panel-empty`},wa={class:`admin-header__dropdown`},Ta=[`aria-label`,`aria-expanded`],Ea={key:0,class:`admin-header__badge`,"aria-hidden":`true`},Da={class:`admin-header__panel-header`},Oa={key:0,class:`admin-header__panel-list`},ka=[`onClick`],Aa={class:`admin-header__panel-item-top`},ja=[`datetime`],Ma={class:`admin-header__panel-item-body`},Na={key:1,class:`admin-header__panel-empty`},Pa={class:`admin-header__dropdown`},Fa=[`aria-label`,`aria-expanded`],Ia={class:`admin-header__theme-glyph`,"aria-hidden":`true`},La={class:`admin-header__theme-list`},Ra=[`onClick`],za={class:`admin-header__theme-option-icon`,"aria-hidden":`true`},Ba={class:`admin-header__theme-option-label`},Va={class:`admin-header__user`},Ha={class:`admin-header__avatar`},Ua={class:`admin-header__user-info`},Wa={key:0,class:`sms-charge`},Ga={class:`sms-charge__row`},Ka={dir:`ltr`},qa={class:`sms-charge__row`},Ja={dir:`ltr`},Ya={class:`sms-charge__name`},Xa=F(E({__name:`AdminHeader`,emits:[`menuClick`],setup(e){let n=Ot(),i=Ar(),a=ca(),o=ce(),{summary:s,refresh:c}=zi(),d=T(!1),f=T(null),p=T(null),h=T([]),g=T([]),_=N(()=>h.value.filter(e=>!e.isRead).length),v=N(()=>g.value.filter(e=>!e.isRead).length),y=[{value:`light`,label:`روشن`,icon:`vuesax-linear:sun-1`},{value:`dark`,label:`تاریک`,icon:`vuesax-linear:moon`},{value:`system`,label:`سیستم`,icon:`vuesax-linear:mobile`}],b=N(()=>y.find(e=>e.value===a.preference)?.label??`سیستم`),ee=N(()=>y.find(e=>e.value===a.preference)?.icon??`vuesax-linear:sun-1`);ki.get().then(e=>{h.value=e.messages??[],g.value=e.notifications??[]}).catch(()=>{h.value=[],g.value=[]}),ni(p,()=>{f.value=null}),Z(document,`keydown`,e=>{e.key===`Escape`&&(f.value=null)});function x(e){f.value=f.value===e?null:e}function E(){f.value=null}function te(e){e.isRead||(e.isRead=!0,Mi.markRead(e.id).catch(()=>{e.isRead=!1}))}function O(e){e.isRead||(e.isRead=!0,ji.markRead(e.id).catch(()=>{e.isRead=!1}))}function re(){let e=h.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),Mi.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function ie(){let e=g.value.filter(e=>!e.isRead);e.length&&(e.forEach(e=>{e.isRead=!0}),ji.markAllRead().catch(()=>{e.forEach(e=>{e.isRead=!1})}))}function ae(e){E(),e&&n.push(e)}function M(e){te(e),ae(aa({link:e.link||void 0,orderId:e.orderId,title:e.subject,body:e.preview}))}function P(e){O(e),ae(aa({link:e.link,orderId:e.orderId,title:e.title,body:e.body}))}function F(e){a.setPreference(e),E()}let oe=N(()=>{let e=s.value;return e?e.blocked||e.balanceToman<=e.redThreshold?`danger`:e.balanceToman<=e.yellowThreshold?`warn`:`ok`:`ok`});function se(){c().catch(()=>{})}r(se),Z(window,`focus`,se);async function L(e){try{await navigator.clipboard.writeText(e.replace(/\s/g,``)),o.success(`کپی شد.`)}catch{o.error(`کپی انجام نشد.`)}}return(e,n)=>(t(),w(j,null,[S(`header`,la,[S(`div`,ua,[S(`button`,{type:`button`,class:`admin-header__menu-btn compact-only`,"aria-label":`باز کردن منو`,onClick:n[0]||=t=>e.$emit(`menuClick`)},[D(J,{name:`menu`,size:22})])]),S(`div`,{ref_key:`actionsRef`,ref:p,class:`admin-header__left`},[S(`div`,{class:u([`sms-credit`,C(s)?`sms-credit--${oe.value}`:``])},[S(`button`,{type:`button`,class:`sms-credit__charge`,disabled:!C(s),onClick:n[1]||=e=>d.value=!0},` شارژ `,8,da),S(`span`,null,`اعتبار پیامک: `+k(C(s)?C(Wi)(C(s).balanceRial):`—`)+` ریال`,1),C(s)?.blocked?(t(),w(`span`,fa,`مسدود`)):I(``,!0)],2),S(`div`,pa,[S(`button`,{type:`button`,class:u([`admin-header__icon-btn`,{"admin-header__icon-btn--active":f.value===`messages`}]),title:`پیام‌های داخلی`,"aria-label":`پیام‌های داخلی — ${_.value} پیام خوانده‌نشده`,"aria-expanded":f.value===`messages`,"aria-haspopup":`true`,onClick:n[2]||=z(e=>x(`messages`),[`stop`])},[D(J,{name:`message`,size:22}),_.value?(t(),w(`span`,ha,k(_.value),1)):I(``,!0),n[11]||=S(`span`,{class:`admin-header__icon-label`},`پیام`,-1)],10,ma),f.value===`messages`?(t(),w(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`پیام‌های داخلی`,onClick:n[3]||=z(()=>{},[`stop`])},[S(`div`,ga,[n[12]||=S(`h2`,{class:`admin-header__panel-title`},`پیام‌های داخلی`,-1),_.value?(t(),w(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:re},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):I(``,!0)]),h.value.length?(t(),w(`ul`,_a,[(t(!0),w(j,null,l(h.value,e=>(t(),w(`li`,{key:e.id,class:u([`admin-header__panel-item`,{unread:!e.isRead}])},[S(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>M(e)},[S(`span`,ya,[S(`strong`,null,k(e.subject),1),S(`time`,{datetime:e.sentAt},k(C($i)(e.sentAt)),9,ba)]),S(`span`,xa,`از `+k(e.senderName),1),S(`span`,Sa,k(e.preview),1)],8,va)],2))),128))])):(t(),w(`p`,Ca,`پیامی وجود ندارد.`))])):I(``,!0)]),S(`div`,wa,[S(`button`,{type:`button`,class:u([`admin-header__icon-btn`,{"admin-header__icon-btn--active":f.value===`notifications`}]),title:`اعلان‌ها`,"aria-label":`اعلان‌ها — ${v.value} اعلان جدید`,"aria-expanded":f.value===`notifications`,"aria-haspopup":`true`,onClick:n[4]||=z(e=>x(`notifications`),[`stop`])},[D(J,{name:`bell`,size:22}),v.value?(t(),w(`span`,Ea,k(v.value),1)):I(``,!0),n[13]||=S(`span`,{class:`admin-header__icon-label`},`اعلان`,-1)],10,Ta),f.value===`notifications`?(t(),w(`div`,{key:0,class:`admin-header__panel`,role:`dialog`,"aria-label":`اعلان‌ها`,onClick:n[5]||=z(()=>{},[`stop`])},[S(`div`,Da,[n[14]||=S(`h2`,{class:`admin-header__panel-title`},`اعلان‌ها`,-1),v.value?(t(),w(`button`,{key:0,type:`button`,class:`admin-header__panel-action`,onClick:ie},` علامت‌گذاری همه به‌عنوان خوانده‌شده `)):I(``,!0)]),g.value.length?(t(),w(`ul`,Oa,[(t(!0),w(j,null,l(g.value,e=>(t(),w(`li`,{key:e.id,class:u([`admin-header__panel-item`,[{unread:!e.isRead},e.tone?`admin-header__panel-item--${e.tone}`:``]])},[S(`button`,{type:`button`,class:`admin-header__panel-item-btn`,onClick:t=>P(e)},[S(`span`,Aa,[S(`strong`,null,k(e.title),1),S(`time`,{datetime:e.sentAt},k(C($i)(e.sentAt)),9,ja)]),S(`span`,Ma,k(e.body),1)],8,ka)],2))),128))])):(t(),w(`p`,Na,`اعلانی وجود ندارد.`))])):I(``,!0)]),S(`div`,Pa,[S(`button`,{type:`button`,class:u([`admin-header__icon-btn`,{"admin-header__icon-btn--active":f.value===`theme`}]),title:`حالت نمایش`,"aria-label":`حالت نمایش — ${b.value}`,"aria-expanded":f.value===`theme`,"aria-haspopup":`true`,onClick:n[6]||=z(e=>x(`theme`),[`stop`])},[S(`span`,Ia,[D(Je,{icon:ee.value,size:20,"stroke-width":1.5},null,8,[`icon`])]),n[15]||=S(`span`,{class:`admin-header__icon-label`},`تم`,-1)],10,Fa),f.value===`theme`?(t(),w(`div`,{key:0,class:`admin-header__panel admin-header__panel--theme`,role:`dialog`,"aria-label":`انتخاب حالت نمایش`,onClick:n[7]||=z(()=>{},[`stop`])},[n[16]||=S(`div`,{class:`admin-header__panel-header`},[S(`h2`,{class:`admin-header__panel-title`},`حالت نمایش`)],-1),S(`ul`,La,[(t(),w(j,null,l(y,e=>S(`li`,{key:e.value},[S(`button`,{type:`button`,class:u([`admin-header__theme-option`,{"admin-header__theme-option--active":C(a).preference===e.value}]),onClick:t=>F(e.value)},[S(`span`,za,[D(Je,{icon:e.icon,size:18,"stroke-width":1.5},null,8,[`icon`])]),S(`span`,Ba,k(e.label),1),C(a).preference===e.value?(t(),A(Je,{key:0,class:`admin-header__theme-option-check`,icon:`vuesax-linear:tick-circle`,size:16,"stroke-width":1.75})):I(``,!0)],10,Ra)])),64))])])):I(``,!0)]),S(`div`,Va,[S(`div`,Ha,k(C(i).fullName.charAt(0)||`؟`),1),S(`div`,Ua,[S(`strong`,null,k(C(i).fullName||`مدیر`),1),S(`span`,null,k(C(i).roleLabel||`پنل مدیریت`),1)])])],512)]),D(at,{open:d.value,title:`شارژ اعتبار پیامک`,onClose:n[10]||=e=>d.value=!1},{default:m(()=>[C(s)?(t(),w(`div`,Wa,[n[20]||=S(`p`,{class:`sms-charge__note`},` لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید. `,-1),S(`div`,Ga,[S(`button`,{type:`button`,class:`sms-charge__copy`,onClick:n[8]||=e=>L(C(s).deposit.cardNumber)},` کپی `),S(`div`,null,[n[17]||=S(`span`,null,`شماره کارت`,-1),S(`strong`,Ka,k(C(qi)(C(oa)(C(s).deposit.cardNumber))),1)])]),S(`div`,qa,[S(`button`,{type:`button`,class:`sms-charge__copy sms-charge__copy--sheba`,onClick:n[9]||=e=>L(C(s).deposit.sheba)},` کپی `),S(`div`,null,[n[18]||=S(`span`,null,`شماره شبا`,-1),S(`strong`,Ja,k(C(qi)(C(sa)(C(s).deposit.sheba))),1)])]),S(`p`,Ya,[n[19]||=ne(` به نام `,-1),S(`strong`,null,k(C(s).deposit.accountName),1)])])):I(``,!0)]),_:1},8,[`open`])],64))}}),[[`__scopeId`,`data-v-100d6e7c`]]),Za=[`aria-hidden`],Qa={class:`admin-drawer__brand`},$a={class:`admin-drawer__nav`},eo=[`onClick`],to=F(E({__name:`AdminMobileDrawer`,props:{open:{type:Boolean}},emits:[`close`],setup(e,{emit:n}){let r=n,i=kt(),a=Ot(),o=Ar(),s=N(()=>hr(o.session?.phone));function c(e){a.push(e),r(`close`)}function d(){o.logout(),a.push(`/login`),r(`close`)}return(n,a)=>(t(),w(j,null,[S(`div`,{class:u([`admin-drawer-backdrop`,{open:e.open}]),role:`presentation`,onClick:a[0]||=e=>r(`close`)},null,2),S(`aside`,{class:u([`admin-drawer`,{open:e.open}]),"aria-label":`منوی ناوبری`,"aria-hidden":!e.open},[S(`div`,Qa,[S(`img`,{src:`/admin/brand-logo.png`,alt:`نادمی تکس`,class:`admin-drawer__logo`}),a[2]||=S(`strong`,null,`پارچه`,-1),a[3]||=S(`span`,null,`پنل مدیریت`,-1),S(`button`,{type:`button`,class:`admin-drawer__close`,"aria-label":`بستن منو`,onClick:a[1]||=e=>r(`close`)},` × `)]),S(`nav`,$a,[(t(!0),w(j,null,l(s.value,e=>(t(),w(`button`,{key:e.name,type:`button`,class:u([`admin-drawer__item`,{active:C(gr)(e.path,C(i).path)}]),onClick:t=>c(e.path)},[D(J,{name:e.icon,size:20},null,8,[`name`]),S(`span`,null,k(e.label),1)],10,eo))),128))]),S(`button`,{type:`button`,class:`admin-drawer__logout`,onClick:d},[D(J,{name:`logout`,size:20}),a[4]||=S(`span`,null,`خروج`,-1)])],10,Za)],64))}}),[[`__scopeId`,`data-v-442c8c6b`]]),no={class:`admin-shell`},ro={class:`admin-shell__main`},io={class:`admin-shell__content`},ao=F(E({__name:`AdminShell`,setup(e){let n=kt(),r=T(!1);function a(){r.value=!0}function o(){r.value=!1}return h(()=>n.path,()=>{r.value=!1}),(e,n)=>{let s=i(`RouterView`);return t(),w(`div`,no,[D(Pr,{class:`desktop-only admin-shell__sidebar`}),D(to,{open:r.value,onClose:o},null,8,[`open`]),S(`div`,ro,[D(Xa,{onMenuClick:a}),S(`main`,io,[D(s)])])])}}}),[[`__scopeId`,`data-v-435fffac`]]),oo=`modulepreload`,so=function(e){return`/admin/`+e},co={},$=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=so(t,n),t=s(t),t in co)return;co[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`:oo,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)})},lo=dr({history:Nn(`/admin/`),routes:[{path:`/login`,name:`login`,component:()=>$(()=>import(`./LoginView-CVnc757a.js`),__vite__mapDeps([0,1,2,3])),meta:{public:!0,title:`ورود به پنل مدیریت`}},{path:`/`,component:ao,meta:{requiresAuth:!0},children:[{path:``,name:`dashboard`,component:()=>$(()=>import(`./DashboardView-x0R6D6hn.js`),__vite__mapDeps([4,1,2,5,6,7,8])),meta:{title:`داشبورد مدیریتی`}},{path:`orders`,name:`orders`,component:()=>$(()=>import(`./OrdersView-l4QUSOVE.js`),__vite__mapDeps([9,1,2,10,11,12,13,14,15,6,5,7,16])),meta:{title:`سفارش‌ها`}},{path:`orders/:id/pricing`,name:`order-pricing`,component:()=>$(()=>import(`./OrderPricingView-qx1u60xK.js`),__vite__mapDeps([17,1,2,18,19,10,11,12,6,5,7,20,21,22])),meta:{title:`قیمت‌گذاری سفارش`}},{path:`checks`,name:`checks`,component:()=>$(()=>import(`./ChecksListView-CCPYK4M9.js`),__vite__mapDeps([23,1,2,18,19,10,11,12,5,6,7,24])),meta:{title:`چک‌ها`}},{path:`orders/:id/checks`,name:`order-checks`,component:()=>$(()=>import(`./CheckManagementView-BycEGkcl.js`),__vite__mapDeps([25,1,2,6,5,7,26])),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-CdqgGxqw.js`),__vite__mapDeps([27,1,2,18,19,28,29,30,31,32,33])),meta:{title:`مدیریت شرکت‌ها`}},{path:`companies/:companyId/accounts`,name:`bank-accounts`,component:()=>$(()=>import(`./BankAccountsView-Kz0VmXxH.js`),__vite__mapDeps([34,1,2,28,29,30,31,32,35])),meta:{title:`حساب‌های بانکی`}},{path:`customers`,name:`customers`,component:()=>$(()=>import(`./CustomersView-x2GBkkE0.js`),__vite__mapDeps([36,1,2,18,19,28,29,30,31,10,11,12,15,32,37])),meta:{title:`مشتریان و واسطه‌ها`}},{path:`products`,name:`products`,component:()=>$(()=>import(`./ProductsView-CHAVTiZy.js`),__vite__mapDeps([38,1,2,18,19,28,29,30,31,39,40,10,11,12,32,41])),meta:{title:`محصولات`}},{path:`categories`,name:`categories`,component:()=>$(()=>import(`./CategoriesView-D47o28Jt.js`),__vite__mapDeps([42,1,2,18,19,28,29,39,40,10,11,12,43])),meta:{title:`دسته‌بندی‌ها`}},{path:`banners`,name:`banners`,component:()=>$(()=>import(`./BannersView-Dy7y-V0q.js`),__vite__mapDeps([44,1,2,18,19,28,29,30,31,39,40,10,11,12,45])),meta:{title:`بنرها`}},{path:`internal-messages`,name:`internal-messages`,component:()=>$(()=>import(`./InternalMessagesView-DmrHtqcC.js`),__vite__mapDeps([46,1,2,18,19,30,31,47])),meta:{title:`پیام‌های داخلی`}},{path:`catalog-requests`,name:`catalog-requests`,component:()=>$(()=>import(`./CatalogRequestsView-DCDaxKkD.js`),__vite__mapDeps([48,1,2,18,19,30,31,10,11,12,15,49])),meta:{title:`درخواست کالیته فیزیکی`}},{path:`suggestions`,name:`suggestions`,component:()=>$(()=>import(`./SuggestionsView-B4wxEcxq.js`),__vite__mapDeps([50,1,2,18,19,30,31,10,11,12,51])),meta:{title:`پیشنهاد محصول`}},{path:`levels`,name:`levels`,component:()=>$(()=>import(`./LevelsView-DIcXZhsN.js`),__vite__mapDeps([52,1,2,18,19,30,31,53])),meta:{title:`سطوح مشتری`}},{path:`cash-payments`,name:`cash-payments`,component:()=>$(()=>import(`./CashPaymentsView-Dxi7IlxW.js`),__vite__mapDeps([54,1,2,18,19,10,11,12,13,14,15,55])),meta:{title:`پرداخت‌های نقدی`}},{path:`shipping`,name:`shipping`,component:()=>$(()=>import(`./ShippingView-BADYaj5-.js`),__vite__mapDeps([56,1,2,18,19,10,11,12,15,6,57])),meta:{title:`ارسال و باربری`}},{path:`reports`,name:`reports`,component:()=>$(()=>import(`./ReportsView-COhsr222.js`),__vite__mapDeps([58,1,2,18,19,59])),meta:{title:`گزارش‌ها`}},{path:`settings`,name:`settings`,component:()=>$(()=>import(`./SettingsView-ArN3zech.js`),__vite__mapDeps([60,1,2,18,19,28,29,11,20,21,61])),meta:{title:`تنظیمات`}},{path:`sms-tariff`,name:`sms-tariff`,component:()=>$(()=>import(`./SmsTariffView-DjF8geKA.js`),__vite__mapDeps([62,1,2,18,19,28,29,20,21,63])),meta:{title:`تعرفه پیامک‌ها`,smsWalletOwner:!0}},{path:`users`,name:`users`,component:()=>$(()=>import(`./UsersView-7Li7nXk9.js`),__vite__mapDeps([64,1,2,18,19,28,29,30,31,10,11,12,15,32,65])),meta:{title:`کاربران و دسترسی‌ها`}}]},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>$(()=>import(`./NotFoundView-fVAjwM_0.js`),__vite__mapDeps([66,1,67]))}]});lo.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 uo=pe(ht),fo=Me();uo.use(fo),uo.use(lo),ca(fo),Ar(fo).hydrate(),uo.mount(`#app`),`serviceWorker`in navigator&&window.addEventListener(`load`,()=>{navigator.serviceWorker.register(`/admin/sw.js`,{scope:`/admin/`})});export{Li as A,st as B,vi as C,Ai as D,Si as E,yr as F,Je as H,Er as I,J as L,ni as M,si as N,Di as O,Ar as P,kt as R,Fi as S,wi as T,at as V,Ti as _,Qi as a,ki as b,Wi as c,zi as d,Oi as f,Ni as g,Ei as h,Gi as i,Ii as j,yi as k,Hi as l,Pi as m,sa as n,$i as o,xi as p,Ui as r,Ki as s,oa as t,qi as u,bi as v,ji as w,Mi as x,Ci as y,Ot as z}; \ No newline at end of file diff --git a/dist/assets/index-BsKtmxy-.css b/dist/assets/index-BsKtmxy-.css new file mode 100644 index 0000000..5543227 --- /dev/null +++ b/dist/assets/index-BsKtmxy-.css @@ -0,0 +1 @@ +.basic-icon[data-v-159253ae] svg{width:100%;height:100%;display:block}.basic-icon[data-v-159253ae] svg path{stroke:currentColor;stroke-width:var(--v196ba43b)}.toast-container[data-v-223aafac]{top:calc(var(--header-height) + 12px);z-index:1200;pointer-events:none;width:min(360px,100vw - 32px);position:fixed;left:16px}.toast-container__list[data-v-223aafac]{pointer-events:none;flex-direction:column;gap:8px;display:flex}.toast[data-v-223aafac]{pointer-events:auto;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-card);align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.toast--success[data-v-223aafac]{border-color:var(--color-success);background:var(--color-success-light);color:var(--color-success-dark)}.toast--error[data-v-223aafac]{border-color:var(--color-danger);background:var(--color-danger-light);color:var(--color-danger)}.toast--warning[data-v-223aafac]{border-color:var(--color-warning);background:var(--color-warning-light);color:var(--color-warning-dark)}.toast--info[data-v-223aafac]{border-color:var(--color-info);background:var(--color-info-light);color:var(--color-info)}.toast__icon[data-v-223aafac]{color:inherit;flex-shrink:0;margin-top:1px}.toast__message[data-v-223aafac]{color:inherit;flex:1;margin:0;font-size:.8125rem;font-weight:600;line-height:1.5}.toast--success .toast__message[data-v-223aafac],.toast--error .toast__message[data-v-223aafac],.toast--warning .toast__message[data-v-223aafac],.toast--info .toast__message[data-v-223aafac]{color:var(--color-text)}.toast__close[data-v-223aafac]{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;pointer-events:auto;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin:-4px;padding:0;font-size:1.25rem;line-height:1;display:inline-flex}.toast__close[data-v-223aafac]:hover{background:var(--color-border-light);color:var(--color-text)}.toast-enter-active[data-v-223aafac],.toast-leave-active[data-v-223aafac]{transition:opacity .18s,transform .18s}.toast-enter-from[data-v-223aafac],.toast-leave-to[data-v-223aafac]{opacity:0;transform:translateY(-8px)}@media (prefers-reduced-motion:reduce){.toast-enter-active[data-v-223aafac],.toast-leave-active[data-v-223aafac]{transition:none}}.admin-modal-backdrop[data-v-a52d3eeb]{z-index:1000;-webkit-backdrop-filter:blur(8px);background:#0f172a85;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.admin-modal[data-v-a52d3eeb]{background:var(--color-surface);border-radius:var(--radius-lg);flex-direction:column;width:min(100%,480px);max-height:calc(100dvh - 32px);display:flex;overflow:hidden;box-shadow:0 20px 48px #0f172a2e}.admin-modal--lg[data-v-a52d3eeb]{width:min(100%,640px)}.admin-modal--xl[data-v-a52d3eeb]{width:min(100%,960px)}.admin-modal__header[data-v-a52d3eeb]{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.admin-modal__title[data-v-a52d3eeb]{color:var(--color-text);margin:0;font-size:1rem;font-weight:700}.admin-modal__close[data-v-a52d3eeb]{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-muted);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:flex}.admin-modal__close[data-v-a52d3eeb]:hover{background:var(--color-border-light);color:var(--color-text)}.admin-modal__body[data-v-a52d3eeb]{flex:auto;min-height:0;padding:16px 20px 20px;overflow-y:auto}.admin-modal__footer[data-v-a52d3eeb]{border-top:1px solid var(--color-border);background:var(--color-bg);flex-direction:row-reverse;flex-shrink:0;justify-content:flex-start;align-items:center;gap:10px;padding:14px 20px;display:flex}.admin-modal__footer[data-v-a52d3eeb] .admin-btn{min-width:0}@media (width<=767px){.admin-modal-backdrop[data-v-a52d3eeb]{align-items:flex-end;padding:0}.admin-modal[data-v-a52d3eeb],.admin-modal--lg[data-v-a52d3eeb],.admin-modal--xl[data-v-a52d3eeb]{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-height:92dvh}.admin-modal__header[data-v-a52d3eeb]{padding:14px 16px}.admin-modal__body[data-v-a52d3eeb]{padding:14px 16px 18px}.admin-modal__footer[data-v-a52d3eeb]{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));flex-direction:row-reverse;gap:12px}.admin-modal__footer[data-v-a52d3eeb] .admin-btn{flex:1;min-height:44px}}.confirm-dialog__message[data-v-47354e67]{color:var(--color-text-muted);margin:0;font-size:.875rem;line-height:1.7}.admin-sidebar[data-v-a8a62cb5]{width:var(--sidebar-width);background:var(--color-sidebar-bg);color:#fff;flex-direction:column;flex-shrink:0;height:100%;display:flex;overflow:hidden}.admin-sidebar__brand[data-v-a8a62cb5]{text-align:center;border-bottom:1px solid #ffffff14;padding:24px 20px 20px}.admin-sidebar__logo[data-v-a8a62cb5]{object-fit:contain;width:92px;height:64px;margin:0 auto 8px;display:block}.admin-sidebar__title[data-v-a8a62cb5]{letter-spacing:-.02em;font-size:1.125rem;font-weight:700;display:block}.admin-sidebar__subtitle[data-v-a8a62cb5]{color:#fff9;margin-top:4px;font-size:.75rem;display:block}.admin-sidebar__nav[data-v-a8a62cb5]{flex-direction:column;flex:1;gap:2px;padding:12px 10px;display:flex;overflow-y:auto}.admin-sidebar__item[data-v-a8a62cb5]{border-radius:var(--radius-sm);color:#ffffffd9;text-align:right;width:100%;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;align-items:center;gap:10px;padding:10px 14px;font-size:.8125rem;font-weight:500;display:flex}.admin-sidebar__item[data-v-a8a62cb5]:focus-visible{outline-offset:2px;outline:2px solid #ffffff73}.admin-sidebar__item[data-v-a8a62cb5]:hover{background:var(--color-sidebar-hover)}.admin-sidebar__item.active[data-v-a8a62cb5]{background:var(--color-sidebar-active);color:#fff;font-weight:600}.admin-sidebar__logout[data-v-a8a62cb5]{border-radius:var(--radius-sm);color:#f87171;background:0 0;border:none;align-items:center;gap:10px;margin:8px 10px 16px;padding:10px 14px;font-size:.8125rem;transition:background .15s,color .15s;display:flex}.admin-sidebar__logout[data-v-a8a62cb5]:hover{color:#fca5a5;background:#f871711f}.admin-header[data-v-100d6e7c]{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:24px;padding:0 28px;display:flex}.admin-header__right[data-v-100d6e7c]{flex-shrink:0;align-items:center;gap:10px;min-width:0;display:flex}.admin-header__menu-btn[data-v-100d6e7c]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:40px;height:40px;color:var(--color-text);flex-shrink:0;justify-content:center;align-items:center;display:flex}.admin-header__menu-btn[data-v-100d6e7c]:hover{background:var(--color-border-light)}.admin-header__left[data-v-100d6e7c]{align-items:center;gap:8px;display:flex}.admin-header__dropdown[data-v-100d6e7c]{position:relative}.admin-header__icon-btn[data-v-100d6e7c]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);min-width:52px;height:52px;color:var(--color-text);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 8px;transition:background .15s,border-color .15s;display:flex;position:relative}.admin-header__icon-btn[data-v-100d6e7c]:hover,.admin-header__icon-btn--active[data-v-100d6e7c]{background:var(--color-border-light);border-color:#cbd5e1}.admin-header__icon-label[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.625rem;font-weight:600;line-height:1}.admin-header__badge[data-v-100d6e7c]{background:var(--color-danger);color:#fff;border:2px solid var(--color-surface);border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.625rem;font-weight:700;line-height:1;display:flex;position:absolute;top:2px;left:2px}.admin-header__panel[data-v-100d6e7c]{z-index:950;width:min(360px,100vw - 32px);max-height:min(420px, calc(100dvh - var(--header-height) - 24px));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;display:flex;position:absolute;top:calc(100% + 8px);left:0;overflow:hidden}.admin-header__panel-header[data-v-100d6e7c]{border-bottom:1px solid var(--color-border);background:var(--color-surface);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.admin-header__panel-title[data-v-100d6e7c]{color:var(--color-text);margin:0;font-size:.9375rem;font-weight:700}.admin-header__panel-action[data-v-100d6e7c]{color:var(--color-primary);white-space:nowrap;background:0 0;border:none;padding:0;font-size:.75rem;font-weight:600}.admin-header__panel-action[data-v-100d6e7c]:hover{text-decoration:underline}.admin-header__panel-list[data-v-100d6e7c]{margin:0;padding:0;list-style:none;overflow-y:auto}.admin-header__panel-item[data-v-100d6e7c]{border-bottom:1px solid var(--color-border-light)}.admin-header__panel-item[data-v-100d6e7c]:last-child{border-bottom:none}.admin-header__panel-item.unread[data-v-100d6e7c]{background:var(--color-info-light)}.admin-header__panel-item-btn[data-v-100d6e7c]{text-align:right;width:100%;color:var(--color-text);background:0 0;border:none;flex-direction:column;gap:4px;padding:12px 16px;display:flex}.admin-header__panel-item-btn[data-v-100d6e7c]:hover{background:var(--color-border-light)}.admin-header__panel-item-top[data-v-100d6e7c]{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.admin-header__panel-item-top strong[data-v-100d6e7c]{font-size:.8125rem;font-weight:700;line-height:1.4}.admin-header__panel-item-top time[data-v-100d6e7c]{color:var(--color-text-muted);flex-shrink:0;font-size:.6875rem}.admin-header__panel-item-sender[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.75rem}.admin-header__panel-item-body[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.8125rem;line-height:1.5}.admin-header__panel-item--warning.unread[data-v-100d6e7c]{background:var(--color-warning-light)}.admin-header__panel-item--danger.unread[data-v-100d6e7c]{background:var(--color-danger-light)}.admin-header__panel-item--success.unread[data-v-100d6e7c]{background:var(--color-success-light)}.admin-header__panel-empty[data-v-100d6e7c]{text-align:center;color:var(--color-text-muted);margin:0;padding:24px 16px;font-size:.875rem}.admin-header__user[data-v-100d6e7c]{border-right:1px solid var(--color-border);align-items:center;gap:10px;margin-right:4px;padding-right:12px;display:flex}.admin-header__avatar[data-v-100d6e7c]{background:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.875rem;font-weight:700;display:flex}.admin-header__user-info[data-v-100d6e7c]{flex-direction:column;gap:1px;display:flex}.admin-header__user-info strong[data-v-100d6e7c]{font-size:.8125rem;font-weight:600}.admin-header__user-info span[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.6875rem}.admin-header__theme-glyph[data-v-100d6e7c]{color:inherit;justify-content:center;align-items:center;line-height:0;display:inline-flex}.admin-header__panel--theme[data-v-100d6e7c]{min-width:200px}.admin-header__theme-list[data-v-100d6e7c]{flex-direction:column;gap:6px;margin:0;padding:8px;list-style:none;display:flex}.admin-header__theme-option[data-v-100d6e7c]{text-align:right;width:100%;color:var(--color-text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:.875rem;display:flex}.admin-header__theme-option-icon[data-v-100d6e7c]{background:var(--color-bg);border:1px solid var(--color-border);width:36px;height:36px;color:var(--color-text);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.admin-header__theme-option-label[data-v-100d6e7c]{flex:1;min-width:0;font-weight:600}.admin-header__theme-option-check[data-v-100d6e7c]{color:var(--color-primary);flex-shrink:0}.admin-header__theme-option[data-v-100d6e7c]:hover{background:var(--color-border-light)}.admin-header__theme-option--active[data-v-100d6e7c]{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary)}.admin-header__theme-option--active .admin-header__theme-option-icon[data-v-100d6e7c]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}@media (width<=767px){.admin-header[data-v-100d6e7c]{gap:12px;padding:0 16px}.admin-header__icon-label[data-v-100d6e7c]{display:none}.admin-header__icon-btn[data-v-100d6e7c]{min-width:40px;height:40px;padding:0}.admin-header__panel[data-v-100d6e7c]{top:var(--header-height);width:auto;max-height:calc(100dvh - var(--header-height) - 16px);position:fixed;left:16px;right:16px}.admin-header__panel-header[data-v-100d6e7c]{flex-direction:column;align-items:stretch}.admin-header__panel-action[data-v-100d6e7c]{align-self:flex-start}.admin-header__user-info[data-v-100d6e7c]{display:none}.admin-header__user[data-v-100d6e7c]{border-right:none;margin-right:0;padding-right:0}.sms-credit[data-v-100d6e7c]{max-width:46vw}.sms-credit span[data-v-100d6e7c]:nth-child(2){text-overflow:ellipsis;overflow:hidden}}@media (width<=460px){.sms-credit[data-v-100d6e7c]{display:none!important}}.sms-credit[data-v-100d6e7c]{color:#067647;white-space:nowrap;background:#e8f8ef;border-radius:999px;align-items:center;gap:8px;max-width:100%;padding:4px 12px 4px 4px;font-size:.75rem;font-weight:700;display:inline-flex}.sms-credit--warn[data-v-100d6e7c]{color:#c2410c;background:#fff7ed}.sms-credit--danger[data-v-100d6e7c]{color:#b91c1c;background:#fef2f2}.sms-credit__charge[data-v-100d6e7c]{color:#fff;font:inherit;cursor:pointer;background:#12b76a;border:0;border-radius:999px;padding:4px 12px;font-weight:800}.sms-credit--warn .sms-credit__charge[data-v-100d6e7c]{background:#f79009}.sms-credit--danger .sms-credit__charge[data-v-100d6e7c]{background:#f04438}.sms-charge__note[data-v-100d6e7c]{color:#334155;background:#eef6ff;border-radius:14px;margin:0 0 14px;padding:12px 14px;font-size:.8125rem;line-height:1.7}.sms-charge__row[data-v-100d6e7c]{border:1px solid var(--color-border);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px;display:flex}.sms-charge__row span[data-v-100d6e7c]{color:var(--color-text-muted,#64748b);margin-bottom:4px;font-size:.75rem;display:block}.sms-charge__row strong[data-v-100d6e7c]{letter-spacing:.04em;font-size:1.05rem}.sms-charge__copy[data-v-100d6e7c]{color:#6d28d9;font:inherit;cursor:pointer;background:#f5f3ff;border:1px solid #c4b5fd;border-radius:999px;padding:4px 10px}.sms-charge__copy--sheba[data-v-100d6e7c]{color:#067647;background:#ecfdf3;border-color:#a7f3d0}.sms-charge__name[data-v-100d6e7c]{text-align:left;margin:4px 0 0;font-size:.875rem}.sms-charge__name strong[data-v-100d6e7c]{margin-top:4px;font-size:1.05rem;display:block}.admin-drawer__brand[data-v-442c8c6b]{text-align:center;border-bottom:1px solid #ffffff14;padding:20px 16px;position:relative}.admin-drawer__logo[data-v-442c8c6b]{border-radius:var(--radius-sm);object-fit:contain;background-color:#fff;width:92px;height:64px;margin:0 auto 8px;display:block}.admin-drawer__brand strong[data-v-442c8c6b]{font-size:1.0625rem;font-weight:700;display:block}.admin-drawer__brand span[data-v-442c8c6b]{color:#fff9;margin-top:4px;font-size:.75rem;display:block}.admin-drawer__close[data-v-442c8c6b]{border-radius:var(--radius-sm);color:#fff;background:#ffffff14;border:none;width:32px;height:32px;font-size:1.25rem;line-height:1;position:absolute;top:16px;left:12px}.admin-drawer__nav[data-v-442c8c6b]{flex-direction:column;flex:1;gap:2px;padding:12px 10px;display:flex;overflow-y:auto}.admin-drawer__item[data-v-442c8c6b]{border-radius:var(--radius-sm);color:#ffffffd9;text-align:right;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:12px 14px;font-size:.875rem;font-weight:500;display:flex}.admin-drawer__item.active[data-v-442c8c6b]{background:var(--color-sidebar-active);font-weight:600}.admin-drawer__logout[data-v-442c8c6b]{border-radius:var(--radius-sm);color:#f87171;background:0 0;border:none;align-items:center;gap:10px;margin:8px 10px 16px;padding:12px 14px;font-size:.875rem;display:flex}.admin-drawer__logout[data-v-442c8c6b]:hover{color:#fca5a5;background:#f871711f}.admin-shell[data-v-435fffac]{height:100dvh;display:flex;overflow:hidden}.admin-shell__main[data-v-435fffac]{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.admin-shell__content[data-v-435fffac]{flex:1;padding:24px 28px;overflow-y:auto}*,:before,:after,::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 #0000;--un-ring-shadow:0 0 #0000;--un-shadow-inset: ;--un-shadow:0 0 #0000;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:#93c5fd80;--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.page-shell{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.admin-panel{border-width:1px;border-color:var(--color-border);background-color:var(--color-surface);border-radius:.75rem}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.static{position:static}.isolate{isolation:isolate}.grid{display:grid}.col-span-full{grid-column:1/-1}.m-0{margin:0}.mb-3{margin-bottom:.75rem}.mr-auto{margin-right:auto}.mt-3{margin-top:.75rem}.block{display:block}.contents{display:contents}.hidden{display:none}.h1{height:.25rem}.h2{height:.5rem}.h3{height:.75rem}.h4{height:1rem}.flex{display:flex}.inline-flex{display:inline-flex}.flex-shrink{flex-shrink:1}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.table{display:table}.border-collapse{border-collapse:collapse}.transform{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.resize{resize:both}.list-none{list-style-type:none}.items-center{align-items:center}.justify-end{justify-content:flex-end}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.border{border-width:1px}.rounded{border-radius:.25rem}.p-0{padding:0}.px{padding-left:1rem;padding-right:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-success{color:var(--color-success)}.text-inherit{color:inherit}.font-semibold{font-weight:600}.underline{text-decoration-line:underline}.no-underline{text-decoration:none}.tab{tab-size:4}.outline{outline-style:solid}.filter{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}.\@container{container-type:inline-size}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)-BLA2CtIC.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Light-B637MNLG.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Medium-C2CKjrKB.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Bold-C8urhp07.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Black-BFAfOkt4.woff2)format("woff2");font-weight:900;font-style:normal;font-display:swap}:root{--color-primary:#091d36;--color-primary-hover:#061426;--color-primary-soft:#e9edf2;--color-primary-dark:#04101f;--color-primary-light:#e9edf2;--color-primary-rgb:9, 29, 54;--color-accent-navy:#091d36;--color-sidebar-bg:#091d36;--color-sidebar-active:#162b46;--color-sidebar-hover:#162b46;--color-success:#1b8a5a;--color-success-light:#eaf8f1;--color-success-dark:#0d7a4d;--color-success-soft:#eaf8f1;--color-warning:#e8a317;--color-warning-light:#fff6e5;--color-warning-dark:#d97706;--color-danger:#dc3545;--color-danger-light:#fee2e2;--color-purple:#7c3aed;--color-purple-light:#ede9fe;--color-info:#3b6fa0;--color-info-light:#eef3f7;--color-bg:#f3f5f7;--color-surface:#fff;--color-elevated:#fff;--color-border:#dfe4ea;--color-border-light:#e9edf2;--color-text:#121821;--color-text-muted:#6b7280;--color-text-secondary:#6b7280;--admin-primary:var(--color-primary);--admin-muted:var(--color-text-muted);--admin-surface:var(--color-surface);--admin-border:var(--color-border);--admin-soft:var(--color-primary-soft);--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 2px #1018280a;--shadow-card:0 1px 3px #1018280f, 0 4px 16px #1018280a;--sidebar-width:240px;--header-height:72px;--font-family:"IRANSans", "Tahoma", sans-serif;--btn-primary-bg:var(--color-primary);--btn-primary-hover:var(--color-primary-hover);--admin-desktop-min:1280px;--control-height:40px;--control-height-sm:32px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--transition-fast:.15s ease;--transition-base:.18s ease;--focus-ring:0 0 0 3px #091d3633}html.dark{--color-primary:#7d8695;--color-primary-hover:#aeb6c2;--color-primary-soft:#27303d;--color-primary-dark:#aeb6c2;--color-primary-light:#27303d;--color-primary-rgb:125, 134, 149;--color-accent-navy:#7d8695;--color-sidebar-bg:#0b0f14;--color-sidebar-active:#27303d;--color-sidebar-hover:#1a2230;--color-success:#3dd68c;--color-success-light:#123528;--color-success-dark:#6ee7b7;--color-success-soft:#123528;--color-warning:#f5c14a;--color-warning-light:#3a2f14;--color-warning-dark:#fcd34d;--color-danger:#f47979;--color-danger-light:#3f1d22;--color-purple:#b39afa;--color-purple-light:#2a2144;--color-info:#7b9cff;--color-info-light:#1b2740;--color-bg:#0b0f14;--color-surface:#121821;--color-elevated:#1a2230;--color-border:#2a3444;--color-border-light:#1a2230;--color-text:#fff;--color-text-muted:#9aa8bc;--color-text-secondary:#9aa8bc;--shadow-sm:0 1px 2px #00000059;--shadow-card:0 1px 3px #0006, 0 4px 16px #00000059;--btn-primary-bg:var(--color-primary);--btn-primary-hover:var(--color-primary-hover);--focus-ring:0 0 0 3px #7d869552}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;height:100%;font-size:16px}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);direction:rtl;height:100%;margin:0;line-height:1.5}#app{height:100dvh}html,body,#app,#app *,.admin-modal-backdrop,.admin-modal-backdrop *{scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}body::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}#app::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}#app ::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.admin-modal-backdrop::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.admin-modal-backdrop ::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}input,textarea,select{font-family:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.admin-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.admin-page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.admin-page-header__title{color:var(--color-text);margin:0;font-size:1.25rem;font-weight:700}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.875rem}.admin-table th{text-align:center;color:var(--color-text-muted);background:var(--color-bg);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:11px 16px;font-size:.8125rem;font-weight:600}.admin-table td{text-align:center;border-bottom:1px solid var(--color-border-light);vertical-align:middle;color:var(--color-text);padding:13px 16px}.admin-table tbody tr{transition:background var(--transition-fast)}.admin-table tbody tr:hover{background:var(--color-border-light)}.admin-table tbody tr.is-selected{background:var(--color-primary-soft)}.admin-table .col-numeric,.admin-table td.numeric,.admin-table th.numeric{text-align:center;font-variant-numeric:tabular-nums}.admin-table .col-status,.admin-table td.status,.admin-table th.status{text-align:center}.admin-table .col-actions,.admin-table td.actions,.admin-table th.actions{text-align:center;white-space:nowrap}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table--compact td,.admin-table--compact th{padding:10px 12px}.admin-btn{min-height:var(--control-height);border-radius:var(--radius-sm);transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 20px;font-size:.875rem;font-weight:600;display:inline-flex}.admin-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.admin-btn:active:not(:disabled){transform:translateY(1px)}.admin-btn--primary{background:var(--btn-primary-bg);color:var(--color-surface);border-color:var(--btn-primary-bg)}.admin-btn--primary:hover:not(:disabled){background:var(--btn-primary-hover)}.admin-btn--danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.admin-btn--danger:hover:not(:disabled){background:#c82333}.admin-btn--success{background:var(--color-success);color:#fff}.admin-btn--success:hover{background:var(--color-success-dark)}.admin-btn--outline{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.admin-btn--outline:hover{background:var(--color-border-light)}.admin-btn--outline-success{background:var(--color-surface);color:var(--color-success);border-color:var(--color-success)}.admin-btn--outline-danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}.admin-btn--outline-warning{background:var(--color-surface);color:var(--color-warning-dark);border-color:var(--color-warning)}.admin-btn--ghost{color:var(--color-primary);background:0 0;border-color:#0000;padding:6px 12px}.admin-btn--ghost:hover{background:var(--color-info-light)}.admin-btn--sm{min-height:var(--control-height-sm);padding:0 14px;font-size:.8125rem}.admin-btn--xs{min-height:28px;padding:0 10px;font-size:.75rem}.admin-btn__spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite admin-spin}.admin-btn--outline .admin-btn__spinner{border-color:rgba(var(--color-primary-rgb), .2);border-top-color:var(--color-primary)}@keyframes admin-spin{to{transform:rotate(360deg)}}.admin-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.admin-badge{white-space:nowrap;border:1px solid #0000;border-radius:6px;align-items:center;min-height:24px;padding:2px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.admin-badge--warning{background:var(--color-warning-light);color:var(--color-warning-dark)}.admin-badge--purple{background:var(--color-purple-light);color:var(--color-purple)}.admin-badge--success{background:var(--color-success-light);color:var(--color-success-dark)}.admin-badge--danger{background:var(--color-danger-light);color:var(--color-danger)}.admin-badge--info{background:var(--color-info-light);color:var(--color-info)}.admin-badge--neutral{background:var(--color-border-light);color:var(--color-text-muted)}.admin-badge--delivered{background:var(--color-success-light);color:var(--color-success-dark)}.admin-tabs{border-bottom:1px solid var(--color-border);flex-wrap:wrap;gap:0;display:flex;overflow:visible}.admin-tab{color:var(--color-text-muted);white-space:nowrap;transition:color var(--transition-fast), border-color var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;margin-bottom:-1px;padding:12px 16px;font-size:.875rem;font-weight:500}.admin-tab:focus-visible{box-shadow:inset 0 -2px 0 var(--color-primary);outline:none}.admin-tab:hover{color:var(--color-text)}.admin-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.admin-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);padding:10px 14px;font-size:.875rem}.admin-input[type=number],.admin-input[type=tel],.admin-input[inputmode=numeric],.admin-input[inputmode=decimal],.admin-input[inputmode=tel],.admin-input[dir=ltr]{text-align:right}select.admin-input{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.75' d='m7 10 5 5 5-5'/%3E%3C/svg%3E");background-position:12px;background-repeat:no-repeat;padding-inline:14px 36px}html.dark select.admin-input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='%94a3b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.75' d='m7 10 5 5 5-5'/%3E%3C/svg%3E")}.admin-input:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-input--sm{max-width:120px;padding:6px 10px;font-size:.8125rem}.admin-stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;gap:8px;padding:20px;display:flex}.admin-stat-card__label{color:var(--color-text-muted);margin:0;font-size:.8125rem}.admin-stat-card__value{margin:0;font-size:1.75rem;font-weight:700;line-height:1.2}.admin-stat-card__icon{border-radius:var(--radius-sm);justify-content:center;align-items:center;width:40px;height:40px;margin-bottom:4px;display:flex}.admin-stat-card__link{color:var(--color-primary);margin-top:auto;font-size:.75rem}.admin-link{color:var(--color-primary);font-size:.8125rem;font-weight:500}.admin-link:hover{text-decoration:underline}.admin-pagination{border-top:1px solid var(--color-border-light);color:var(--color-text-muted);justify-content:space-between;align-items:center;padding:16px;font-size:.8125rem;display:flex}.admin-pagination__pages{gap:4px;display:flex}.admin-pagination__page{border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);justify-content:center;align-items:center;min-width:32px;height:32px;font-size:.8125rem;display:flex}.admin-pagination__page.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.admin-summary-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;display:grid}.admin-summary-item{background:var(--color-border-light);border-radius:var(--radius-sm);padding:12px 16px}.admin-summary-item__label{color:var(--color-text-muted);margin:0 0 4px;font-size:.75rem}.admin-summary-item__value{margin:0;font-size:.9375rem;font-weight:600}.admin-info-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.admin-info-row{align-items:center;gap:8px;font-size:.8125rem;display:flex}.admin-info-row__label{color:var(--color-text-muted)}.admin-info-row__value{font-weight:500}.admin-logo-par{border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.125rem;font-weight:900;display:flex}.admin-logo-fam{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--color-primary);background:#f5f0e8;flex-direction:column;justify-content:center;align-items:center;font-size:.5rem;font-weight:700;line-height:1.2;display:flex}.admin-logo-fam span:first-child{font-size:.625rem}.admin-action-group{gap:8px;display:flex}.admin-section-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:16px;padding:20px}.admin-section-card__title{margin:0 0 16px;font-size:.9375rem;font-weight:700}.admin-form-grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px;display:grid}.admin-form-field label{color:var(--color-text-muted);margin-bottom:6px;font-size:.8125rem;display:block}.admin-form-field textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;width:100%;min-height:80px;padding:10px 14px;font-size:.875rem}.admin-footer-actions{border-top:1px solid var(--color-border-light);gap:12px;margin-top:24px;padding-top:20px;display:flex}.admin-empty-placeholder{text-align:center;color:var(--color-text-muted);padding:48px 24px;font-size:.9375rem}.admin-form{flex-direction:column;gap:16px;display:flex}.admin-form__error{border-radius:var(--radius-sm);background:var(--color-danger-light);color:var(--color-danger);margin:0;padding:10px 12px;font-size:.8125rem}.admin-form__field{flex-direction:column;gap:6px;display:flex}.admin-form__field label{color:var(--color-text);font-size:.8125rem;font-weight:600}.admin-form__required{color:var(--color-danger)}.admin-form__textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;width:100%;min-height:80px;padding:10px 14px;font-family:inherit;font-size:.875rem}.admin-form__textarea:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-skeleton{background:linear-gradient(90deg, var(--color-border-light) 25%, var(--color-border) 50%, var(--color-border-light) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.2s ease-in-out infinite admin-skeleton}@keyframes admin-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.admin-skeleton,.admin-btn__spinner{animation:none}}.admin-form__row{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media print{@page{margin:12mm}html.printing-order-detail body>:not(.admin-modal-backdrop){display:none!important}html.printing-order-detail .admin-modal-backdrop{z-index:auto!important;background:0 0!important;padding:0!important;display:block!important;position:static!important;inset:auto!important}html.printing-order-detail .admin-modal{width:100%!important;max-height:none!important;box-shadow:none!important;color:#111!important;background:#fff!important;border-radius:0!important;overflow:visible!important}html.printing-order-detail .admin-modal__header{border-bottom-color:#ddd!important;padding:0 0 12px!important}html.printing-order-detail .admin-modal__close,html.printing-order-detail .admin-modal__footer,html.printing-order-detail .no-print{display:none!important}html.printing-order-detail .admin-modal__body{max-height:none!important;padding:0!important;overflow:visible!important}html.printing-order-detail .admin-modal__title{color:#111!important}}:root{--page-padding-mobile:16px;--page-padding-tablet:20px;--page-padding-desktop:28px;--page-padding:var(--page-padding-mobile);--mobile-nav-height:0px;--drawer-width:min(300px, 88vw);--admin-desktop-min:1280px}@media (width>=768px){:root{--page-padding:var(--page-padding-tablet)}}@media (width>=1280px){:root{--page-padding:var(--page-padding-desktop)}}.desktop-only{display:none!important}.compact-only{display:block}@media (width>=1280px){.desktop-only{display:revert!important}.desktop-only.admin-shell__sidebar,.desktop-only.admin-sidebar{display:flex!important}.desktop-only.orders-page,.desktop-only.dashboard{display:block!important}.compact-only{display:none!important}}.admin-drawer-backdrop{z-index:900;opacity:0;visibility:hidden;background:#0f172a73;transition:opacity .2s,visibility .2s;position:fixed;inset:0}.admin-drawer-backdrop.open{opacity:1;visibility:visible}.admin-drawer{z-index:901;width:var(--drawer-width);background:var(--color-sidebar-bg);color:#fff;flex-direction:column;height:100dvh;transition:transform .25s;display:flex;position:fixed;top:0;right:0;overflow:hidden;transform:translate(100%)}.admin-drawer.open{transform:translate(0)}.admin-card-list{flex-direction:column;gap:10px;display:flex}.admin-card-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:right;width:100%;padding:14px 16px;transition:border-color .15s,background .15s}.admin-card-item:hover{border-color:#cbd5e1}.admin-card-item.selected{border-color:var(--color-primary);background:var(--color-info-light)}.admin-card-item__header{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.admin-card-item__header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.admin-card-item__title{margin:0;font-size:.875rem;font-weight:700}.admin-card-item__meta{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 16px;font-size:.8125rem;display:flex}.admin-card-item__meta span strong{color:var(--color-text);font-weight:600}.admin-card-item__actions{border-top:1px solid var(--color-border-light);flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;display:flex}.admin-detail-panel{z-index:850;background:var(--color-bg);flex-direction:column;transition:transform .25s;display:flex;position:fixed;inset:0;transform:translate(100%)}.admin-detail-panel.open{transform:translate(0)}.admin-detail-panel__header{padding:12px var(--page-padding);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;grid-template-columns:40px 1fr 40px;align-items:center;gap:12px;display:grid}.admin-detail-panel__back{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:40px;height:40px;color:var(--color-text);transition:background var(--transition-fast), border-color var(--transition-fast);flex-shrink:0;grid-column:1;justify-content:center;align-items:center;display:flex}.admin-detail-panel__back:hover{background:var(--color-border-light);border-color:var(--color-border)}.admin-detail-panel__title{text-align:center;grid-column:2;margin:0;font-size:1rem;font-weight:700}.admin-detail-panel__body{padding:var(--page-padding);flex:1;overflow-y:auto}.compact-page-header{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.compact-page-header__row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.compact-page-header__title{margin:0;font-size:1.125rem;font-weight:700}.compact-page-header__actions{flex-wrap:wrap;gap:8px;display:flex}@media (width>=768px){.compact-page-header__row{align-items:center}.compact-page-header__actions{flex-shrink:0}}.compact-stats-grid{grid-template-columns:1fr;gap:12px;margin-bottom:16px;display:grid}@media (width>=480px){.compact-stats-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=768px){.compact-stats-grid{grid-template-columns:repeat(4,1fr)}}.compact-section-grid{flex-direction:column;gap:16px;display:flex}.compact-section-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:16px}.compact-section-card__title{margin:0 0 12px;font-size:.9375rem;font-weight:700}@media (width<=1279px){.admin-shell__content{padding:var(--page-padding)}.admin-summary-grid,.admin-form-grid,.admin-info-grid{grid-template-columns:repeat(2,1fr)}.admin-pagination{flex-direction:column;align-items:stretch;gap:12px}.admin-pagination__pages{flex-wrap:wrap;justify-content:center}.admin-tab{padding:10px 12px;font-size:.8125rem}.admin-page-header .admin-action-group{flex-wrap:wrap;gap:8px}}@media (width<=767px){:root{--header-height:60px}.admin-page-header{flex-direction:column;align-items:stretch}.admin-page-header .admin-btn,.admin-page-header .admin-action-group{width:100%}.admin-page-header .admin-action-group .admin-btn{flex:1;min-width:fit-content}.admin-summary-grid,.admin-form-grid,.admin-info-grid{grid-template-columns:1fr}.admin-footer-actions{flex-direction:column}.admin-footer-actions .admin-btn{width:100%}.admin-form__row{grid-template-columns:1fr}.admin-tab{padding:8px 10px;font-size:.75rem}.admin-modal-backdrop{align-items:flex-end;padding:0}.admin-modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:100%;max-height:92dvh}.checks-page__footer{flex-direction:column;align-items:stretch}.checks-page__footer .admin-action-group{flex-direction:column;width:100%}.checks-page__footer .admin-action-group .admin-btn{width:100%}}@media (width<=460px){:root{--header-height:56px;--admin-header-control:36px}.admin-header{height:var(--header-height);min-height:var(--header-height);justify-content:space-between;align-items:center;gap:8px;padding:0 10px;display:flex}.admin-header__menu-btn{width:var(--admin-header-control);height:var(--admin-header-control)}.admin-header__left{flex:1;justify-content:flex-end;gap:6px;min-width:0}.sms-credit,.admin-header__dropdown--messages,.admin-header__dropdown--notifications{display:none!important}.admin-header__icon-btn{min-width:var(--admin-header-control);width:var(--admin-header-control);height:var(--admin-header-control);padding:0}.admin-header__avatar{width:var(--admin-header-control);height:var(--admin-header-control);font-size:.8125rem}} diff --git a/dist/assets/index-Cc10RyA4.css b/dist/assets/index-Cc10RyA4.css deleted file mode 100644 index 39382af..0000000 --- a/dist/assets/index-Cc10RyA4.css +++ /dev/null @@ -1 +0,0 @@ -.basic-icon[data-v-159253ae] svg{width:100%;height:100%;display:block}.basic-icon[data-v-159253ae] svg path{stroke:currentColor;stroke-width:var(--v196ba43b)}.toast-container[data-v-223aafac]{top:calc(var(--header-height) + 12px);z-index:1200;pointer-events:none;width:min(360px,100vw - 32px);position:fixed;left:16px}.toast-container__list[data-v-223aafac]{pointer-events:none;flex-direction:column;gap:8px;display:flex}.toast[data-v-223aafac]{pointer-events:auto;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-card);align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.toast--success[data-v-223aafac]{border-color:var(--color-success);background:var(--color-success-light);color:var(--color-success-dark)}.toast--error[data-v-223aafac]{border-color:var(--color-danger);background:var(--color-danger-light);color:var(--color-danger)}.toast--warning[data-v-223aafac]{border-color:var(--color-warning);background:var(--color-warning-light);color:var(--color-warning-dark)}.toast--info[data-v-223aafac]{border-color:var(--color-info);background:var(--color-info-light);color:var(--color-info)}.toast__icon[data-v-223aafac]{color:inherit;flex-shrink:0;margin-top:1px}.toast__message[data-v-223aafac]{color:inherit;flex:1;margin:0;font-size:.8125rem;font-weight:600;line-height:1.5}.toast--success .toast__message[data-v-223aafac],.toast--error .toast__message[data-v-223aafac],.toast--warning .toast__message[data-v-223aafac],.toast--info .toast__message[data-v-223aafac]{color:var(--color-text)}.toast__close[data-v-223aafac]{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;pointer-events:auto;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin:-4px;padding:0;font-size:1.25rem;line-height:1;display:inline-flex}.toast__close[data-v-223aafac]:hover{background:var(--color-border-light);color:var(--color-text)}.toast-enter-active[data-v-223aafac],.toast-leave-active[data-v-223aafac]{transition:opacity .18s,transform .18s}.toast-enter-from[data-v-223aafac],.toast-leave-to[data-v-223aafac]{opacity:0;transform:translateY(-8px)}@media (prefers-reduced-motion:reduce){.toast-enter-active[data-v-223aafac],.toast-leave-active[data-v-223aafac]{transition:none}}.admin-modal-backdrop[data-v-a52d3eeb]{z-index:1000;-webkit-backdrop-filter:blur(8px);background:#0f172a85;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.admin-modal[data-v-a52d3eeb]{background:var(--color-surface);border-radius:var(--radius-lg);flex-direction:column;width:min(100%,480px);max-height:calc(100dvh - 32px);display:flex;overflow:hidden;box-shadow:0 20px 48px #0f172a2e}.admin-modal--lg[data-v-a52d3eeb]{width:min(100%,640px)}.admin-modal--xl[data-v-a52d3eeb]{width:min(100%,960px)}.admin-modal__header[data-v-a52d3eeb]{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.admin-modal__title[data-v-a52d3eeb]{color:var(--color-text);margin:0;font-size:1rem;font-weight:700}.admin-modal__close[data-v-a52d3eeb]{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-muted);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:flex}.admin-modal__close[data-v-a52d3eeb]:hover{background:var(--color-border-light);color:var(--color-text)}.admin-modal__body[data-v-a52d3eeb]{flex:auto;min-height:0;padding:16px 20px 20px;overflow-y:auto}.admin-modal__footer[data-v-a52d3eeb]{border-top:1px solid var(--color-border);background:var(--color-bg);flex-direction:row-reverse;flex-shrink:0;justify-content:flex-start;align-items:center;gap:10px;padding:14px 20px;display:flex}.admin-modal__footer[data-v-a52d3eeb] .admin-btn{min-width:0}@media (width<=767px){.admin-modal-backdrop[data-v-a52d3eeb]{align-items:flex-end;padding:0}.admin-modal[data-v-a52d3eeb],.admin-modal--lg[data-v-a52d3eeb],.admin-modal--xl[data-v-a52d3eeb]{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-height:92dvh}.admin-modal__header[data-v-a52d3eeb]{padding:14px 16px}.admin-modal__body[data-v-a52d3eeb]{padding:14px 16px 18px}.admin-modal__footer[data-v-a52d3eeb]{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));flex-direction:row-reverse;gap:12px}.admin-modal__footer[data-v-a52d3eeb] .admin-btn{flex:1;min-height:44px}}.confirm-dialog__message[data-v-47354e67]{color:var(--color-text-muted);margin:0;font-size:.875rem;line-height:1.7}.admin-sidebar[data-v-a8a62cb5]{width:var(--sidebar-width);background:var(--color-sidebar-bg);color:#fff;flex-direction:column;flex-shrink:0;height:100%;display:flex;overflow:hidden}.admin-sidebar__brand[data-v-a8a62cb5]{text-align:center;border-bottom:1px solid #ffffff14;padding:24px 20px 20px}.admin-sidebar__logo[data-v-a8a62cb5]{object-fit:contain;width:92px;height:64px;margin:0 auto 8px;display:block}.admin-sidebar__title[data-v-a8a62cb5]{letter-spacing:-.02em;font-size:1.125rem;font-weight:700;display:block}.admin-sidebar__subtitle[data-v-a8a62cb5]{color:#fff9;margin-top:4px;font-size:.75rem;display:block}.admin-sidebar__nav[data-v-a8a62cb5]{flex-direction:column;flex:1;gap:2px;padding:12px 10px;display:flex;overflow-y:auto}.admin-sidebar__item[data-v-a8a62cb5]{border-radius:var(--radius-sm);color:#ffffffd9;text-align:right;width:100%;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;align-items:center;gap:10px;padding:10px 14px;font-size:.8125rem;font-weight:500;display:flex}.admin-sidebar__item[data-v-a8a62cb5]:focus-visible{outline-offset:2px;outline:2px solid #ffffff73}.admin-sidebar__item[data-v-a8a62cb5]:hover{background:var(--color-sidebar-hover)}.admin-sidebar__item.active[data-v-a8a62cb5]{background:var(--color-sidebar-active);color:#fff;font-weight:600}.admin-sidebar__logout[data-v-a8a62cb5]{border-radius:var(--radius-sm);color:#f87171;background:0 0;border:none;align-items:center;gap:10px;margin:8px 10px 16px;padding:10px 14px;font-size:.8125rem;transition:background .15s,color .15s;display:flex}.admin-sidebar__logout[data-v-a8a62cb5]:hover{color:#fca5a5;background:#f871711f}.admin-header[data-v-100d6e7c]{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:24px;padding:0 28px;display:flex}.admin-header__right[data-v-100d6e7c]{flex-shrink:0;align-items:center;gap:10px;min-width:0;display:flex}.admin-header__menu-btn[data-v-100d6e7c]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:40px;height:40px;color:var(--color-text);flex-shrink:0;justify-content:center;align-items:center;display:flex}.admin-header__menu-btn[data-v-100d6e7c]:hover{background:var(--color-border-light)}.admin-header__left[data-v-100d6e7c]{align-items:center;gap:8px;display:flex}.admin-header__dropdown[data-v-100d6e7c]{position:relative}.admin-header__icon-btn[data-v-100d6e7c]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);min-width:52px;height:52px;color:var(--color-text);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 8px;transition:background .15s,border-color .15s;display:flex;position:relative}.admin-header__icon-btn[data-v-100d6e7c]:hover,.admin-header__icon-btn--active[data-v-100d6e7c]{background:var(--color-border-light);border-color:#cbd5e1}.admin-header__icon-label[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.625rem;font-weight:600;line-height:1}.admin-header__badge[data-v-100d6e7c]{background:var(--color-danger);color:#fff;border:2px solid var(--color-surface);border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.625rem;font-weight:700;line-height:1;display:flex;position:absolute;top:2px;left:2px}.admin-header__panel[data-v-100d6e7c]{z-index:950;width:min(360px,100vw - 32px);max-height:min(420px, calc(100dvh - var(--header-height) - 24px));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;display:flex;position:absolute;top:calc(100% + 8px);left:0;overflow:hidden}.admin-header__panel-header[data-v-100d6e7c]{border-bottom:1px solid var(--color-border);background:var(--color-surface);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.admin-header__panel-title[data-v-100d6e7c]{color:var(--color-text);margin:0;font-size:.9375rem;font-weight:700}.admin-header__panel-action[data-v-100d6e7c]{color:var(--color-primary);white-space:nowrap;background:0 0;border:none;padding:0;font-size:.75rem;font-weight:600}.admin-header__panel-action[data-v-100d6e7c]:hover{text-decoration:underline}.admin-header__panel-list[data-v-100d6e7c]{margin:0;padding:0;list-style:none;overflow-y:auto}.admin-header__panel-item[data-v-100d6e7c]{border-bottom:1px solid var(--color-border-light)}.admin-header__panel-item[data-v-100d6e7c]:last-child{border-bottom:none}.admin-header__panel-item.unread[data-v-100d6e7c]{background:var(--color-info-light)}.admin-header__panel-item-btn[data-v-100d6e7c]{text-align:right;width:100%;color:var(--color-text);background:0 0;border:none;flex-direction:column;gap:4px;padding:12px 16px;display:flex}.admin-header__panel-item-btn[data-v-100d6e7c]:hover{background:var(--color-border-light)}.admin-header__panel-item-top[data-v-100d6e7c]{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.admin-header__panel-item-top strong[data-v-100d6e7c]{font-size:.8125rem;font-weight:700;line-height:1.4}.admin-header__panel-item-top time[data-v-100d6e7c]{color:var(--color-text-muted);flex-shrink:0;font-size:.6875rem}.admin-header__panel-item-sender[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.75rem}.admin-header__panel-item-body[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.8125rem;line-height:1.5}.admin-header__panel-item--warning.unread[data-v-100d6e7c]{background:var(--color-warning-light)}.admin-header__panel-item--danger.unread[data-v-100d6e7c]{background:var(--color-danger-light)}.admin-header__panel-item--success.unread[data-v-100d6e7c]{background:var(--color-success-light)}.admin-header__panel-empty[data-v-100d6e7c]{text-align:center;color:var(--color-text-muted);margin:0;padding:24px 16px;font-size:.875rem}.admin-header__user[data-v-100d6e7c]{border-right:1px solid var(--color-border);align-items:center;gap:10px;margin-right:4px;padding-right:12px;display:flex}.admin-header__avatar[data-v-100d6e7c]{background:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.875rem;font-weight:700;display:flex}.admin-header__user-info[data-v-100d6e7c]{flex-direction:column;gap:1px;display:flex}.admin-header__user-info strong[data-v-100d6e7c]{font-size:.8125rem;font-weight:600}.admin-header__user-info span[data-v-100d6e7c]{color:var(--color-text-muted);font-size:.6875rem}.admin-header__theme-glyph[data-v-100d6e7c]{color:inherit;justify-content:center;align-items:center;line-height:0;display:inline-flex}.admin-header__panel--theme[data-v-100d6e7c]{min-width:200px}.admin-header__theme-list[data-v-100d6e7c]{flex-direction:column;gap:6px;margin:0;padding:8px;list-style:none;display:flex}.admin-header__theme-option[data-v-100d6e7c]{text-align:right;width:100%;color:var(--color-text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:.875rem;display:flex}.admin-header__theme-option-icon[data-v-100d6e7c]{background:var(--color-bg);border:1px solid var(--color-border);width:36px;height:36px;color:var(--color-text);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.admin-header__theme-option-label[data-v-100d6e7c]{flex:1;min-width:0;font-weight:600}.admin-header__theme-option-check[data-v-100d6e7c]{color:var(--color-primary);flex-shrink:0}.admin-header__theme-option[data-v-100d6e7c]:hover{background:var(--color-border-light)}.admin-header__theme-option--active[data-v-100d6e7c]{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary)}.admin-header__theme-option--active .admin-header__theme-option-icon[data-v-100d6e7c]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}@media (width<=767px){.admin-header[data-v-100d6e7c]{gap:12px;padding:0 16px}.admin-header__icon-label[data-v-100d6e7c]{display:none}.admin-header__icon-btn[data-v-100d6e7c]{min-width:40px;height:40px;padding:0}.admin-header__panel[data-v-100d6e7c]{top:var(--header-height);width:auto;max-height:calc(100dvh - var(--header-height) - 16px);position:fixed;left:16px;right:16px}.admin-header__panel-header[data-v-100d6e7c]{flex-direction:column;align-items:stretch}.admin-header__panel-action[data-v-100d6e7c]{align-self:flex-start}.admin-header__user-info[data-v-100d6e7c]{display:none}.admin-header__user[data-v-100d6e7c]{border-right:none;margin-right:0;padding-right:0}.sms-credit[data-v-100d6e7c]{max-width:46vw}.sms-credit span[data-v-100d6e7c]:nth-child(2){text-overflow:ellipsis;overflow:hidden}}@media (width<=460px){.sms-credit[data-v-100d6e7c]{display:none!important}}.sms-credit[data-v-100d6e7c]{color:#067647;white-space:nowrap;background:#e8f8ef;border-radius:999px;align-items:center;gap:8px;max-width:100%;padding:4px 12px 4px 4px;font-size:.75rem;font-weight:700;display:inline-flex}.sms-credit--warn[data-v-100d6e7c]{color:#c2410c;background:#fff7ed}.sms-credit--danger[data-v-100d6e7c]{color:#b91c1c;background:#fef2f2}.sms-credit__charge[data-v-100d6e7c]{color:#fff;font:inherit;cursor:pointer;background:#12b76a;border:0;border-radius:999px;padding:4px 12px;font-weight:800}.sms-credit--warn .sms-credit__charge[data-v-100d6e7c]{background:#f79009}.sms-credit--danger .sms-credit__charge[data-v-100d6e7c]{background:#f04438}.sms-charge__note[data-v-100d6e7c]{color:#334155;background:#eef6ff;border-radius:14px;margin:0 0 14px;padding:12px 14px;font-size:.8125rem;line-height:1.7}.sms-charge__row[data-v-100d6e7c]{border:1px solid var(--color-border);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px;display:flex}.sms-charge__row span[data-v-100d6e7c]{color:var(--color-text-muted,#64748b);margin-bottom:4px;font-size:.75rem;display:block}.sms-charge__row strong[data-v-100d6e7c]{letter-spacing:.04em;font-size:1.05rem}.sms-charge__copy[data-v-100d6e7c]{color:#6d28d9;font:inherit;cursor:pointer;background:#f5f3ff;border:1px solid #c4b5fd;border-radius:999px;padding:4px 10px}.sms-charge__copy--sheba[data-v-100d6e7c]{color:#067647;background:#ecfdf3;border-color:#a7f3d0}.sms-charge__name[data-v-100d6e7c]{text-align:left;margin:4px 0 0;font-size:.875rem}.sms-charge__name strong[data-v-100d6e7c]{margin-top:4px;font-size:1.05rem;display:block}.admin-drawer__brand[data-v-442c8c6b]{text-align:center;border-bottom:1px solid #ffffff14;padding:20px 16px;position:relative}.admin-drawer__logo[data-v-442c8c6b]{border-radius:var(--radius-sm);object-fit:contain;background-color:#fff;width:92px;height:64px;margin:0 auto 8px;display:block}.admin-drawer__brand strong[data-v-442c8c6b]{font-size:1.0625rem;font-weight:700;display:block}.admin-drawer__brand span[data-v-442c8c6b]{color:#fff9;margin-top:4px;font-size:.75rem;display:block}.admin-drawer__close[data-v-442c8c6b]{border-radius:var(--radius-sm);color:#fff;background:#ffffff14;border:none;width:32px;height:32px;font-size:1.25rem;line-height:1;position:absolute;top:16px;left:12px}.admin-drawer__nav[data-v-442c8c6b]{flex-direction:column;flex:1;gap:2px;padding:12px 10px;display:flex;overflow-y:auto}.admin-drawer__item[data-v-442c8c6b]{border-radius:var(--radius-sm);color:#ffffffd9;text-align:right;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:12px 14px;font-size:.875rem;font-weight:500;display:flex}.admin-drawer__item.active[data-v-442c8c6b]{background:var(--color-sidebar-active);font-weight:600}.admin-drawer__logout[data-v-442c8c6b]{border-radius:var(--radius-sm);color:#f87171;background:0 0;border:none;align-items:center;gap:10px;margin:8px 10px 16px;padding:12px 14px;font-size:.875rem;display:flex}.admin-drawer__logout[data-v-442c8c6b]:hover{color:#fca5a5;background:#f871711f}.admin-shell[data-v-435fffac]{height:100dvh;display:flex;overflow:hidden}.admin-shell__main[data-v-435fffac]{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.admin-shell__content[data-v-435fffac]{flex:1;padding:24px 28px;overflow-y:auto}*,:before,:after,::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 #0000;--un-ring-shadow:0 0 #0000;--un-shadow-inset: ;--un-shadow:0 0 #0000;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:#93c5fd80;--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.page-shell{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.admin-panel{border-width:1px;border-color:var(--color-border);background-color:var(--color-surface);border-radius:.75rem}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.static{position:static}.grid{display:grid}.col-span-full{grid-column:1/-1}.m-0{margin:0}.mb-3{margin-bottom:.75rem}.mr-auto{margin-right:auto}.mt-3{margin-top:.75rem}.block{display:block}.hidden{display:none}.h1{height:.25rem}.h2{height:.5rem}.h3{height:.75rem}.h4{height:1rem}.flex{display:flex}.inline-flex{display:inline-flex}.flex-shrink{flex-shrink:1}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.table{display:table}.border-collapse{border-collapse:collapse}.transform{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.resize{resize:both}.list-none{list-style-type:none}.items-center{align-items:center}.justify-end{justify-content:flex-end}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.border{border-width:1px}.rounded{border-radius:.25rem}.p-0{padding:0}.px{padding-left:1rem;padding-right:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-success{color:var(--color-success)}.text-inherit{color:inherit}.font-semibold{font-weight:600}.underline{text-decoration-line:underline}.no-underline{text-decoration:none}.tab{tab-size:4}.outline{outline-style:solid}.filter{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)-BLA2CtIC.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Light-B637MNLG.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Medium-C2CKjrKB.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Bold-C8urhp07.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IRANSans;src:url(/admin/assets/IRANSansWeb\(FaNum\)_Black-BFAfOkt4.woff2)format("woff2");font-weight:900;font-style:normal;font-display:swap}:root{--color-primary:#091d36;--color-primary-hover:#061426;--color-primary-soft:#e9edf2;--color-primary-dark:#04101f;--color-primary-light:#e9edf2;--color-primary-rgb:9, 29, 54;--color-accent-navy:#091d36;--color-sidebar-bg:#091d36;--color-sidebar-active:#162b46;--color-sidebar-hover:#162b46;--color-success:#1b8a5a;--color-success-light:#eaf8f1;--color-success-dark:#0d7a4d;--color-success-soft:#eaf8f1;--color-warning:#e8a317;--color-warning-light:#fff6e5;--color-warning-dark:#d97706;--color-danger:#dc3545;--color-danger-light:#fee2e2;--color-purple:#7c3aed;--color-purple-light:#ede9fe;--color-info:#3b6fa0;--color-info-light:#eef3f7;--color-bg:#f3f5f7;--color-surface:#fff;--color-elevated:#fff;--color-border:#dfe4ea;--color-border-light:#e9edf2;--color-text:#121821;--color-text-muted:#6b7280;--color-text-secondary:#6b7280;--admin-primary:var(--color-primary);--admin-muted:var(--color-text-muted);--admin-surface:var(--color-surface);--admin-border:var(--color-border);--admin-soft:var(--color-primary-soft);--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 2px #1018280a;--shadow-card:0 1px 3px #1018280f, 0 4px 16px #1018280a;--sidebar-width:240px;--header-height:72px;--font-family:"IRANSans", "Tahoma", sans-serif;--btn-primary-bg:var(--color-primary);--btn-primary-hover:var(--color-primary-hover);--admin-desktop-min:1280px;--control-height:40px;--control-height-sm:32px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--transition-fast:.15s ease;--transition-base:.18s ease;--focus-ring:0 0 0 3px #091d3633}html.dark{--color-primary:#7d8695;--color-primary-hover:#aeb6c2;--color-primary-soft:#27303d;--color-primary-dark:#aeb6c2;--color-primary-light:#27303d;--color-primary-rgb:125, 134, 149;--color-accent-navy:#7d8695;--color-sidebar-bg:#0b0f14;--color-sidebar-active:#27303d;--color-sidebar-hover:#1a2230;--color-success:#3dd68c;--color-success-light:#123528;--color-success-dark:#6ee7b7;--color-success-soft:#123528;--color-warning:#f5c14a;--color-warning-light:#3a2f14;--color-warning-dark:#fcd34d;--color-danger:#f47979;--color-danger-light:#3f1d22;--color-purple:#b39afa;--color-purple-light:#2a2144;--color-info:#7b9cff;--color-info-light:#1b2740;--color-bg:#0b0f14;--color-surface:#121821;--color-elevated:#1a2230;--color-border:#2a3444;--color-border-light:#1a2230;--color-text:#fff;--color-text-muted:#9aa8bc;--color-text-secondary:#9aa8bc;--shadow-sm:0 1px 2px #00000059;--shadow-card:0 1px 3px #0006, 0 4px 16px #00000059;--btn-primary-bg:var(--color-primary);--btn-primary-hover:var(--color-primary-hover);--focus-ring:0 0 0 3px #7d869552}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;height:100%;font-size:16px}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);direction:rtl;height:100%;margin:0;line-height:1.5}#app{height:100dvh}html,body,#app,#app *,.admin-modal-backdrop,.admin-modal-backdrop *{scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}body::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}#app::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}#app ::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.admin-modal-backdrop::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.admin-modal-backdrop ::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}input,textarea,select{font-family:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.admin-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.admin-page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.admin-page-header__title{color:var(--color-text);margin:0;font-size:1.25rem;font-weight:700}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.875rem}.admin-table th{text-align:center;color:var(--color-text-muted);background:var(--color-bg);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:11px 16px;font-size:.8125rem;font-weight:600}.admin-table td{text-align:center;border-bottom:1px solid var(--color-border-light);vertical-align:middle;color:var(--color-text);padding:13px 16px}.admin-table tbody tr{transition:background var(--transition-fast)}.admin-table tbody tr:hover{background:var(--color-border-light)}.admin-table tbody tr.is-selected{background:var(--color-primary-soft)}.admin-table .col-numeric,.admin-table td.numeric,.admin-table th.numeric{text-align:center;font-variant-numeric:tabular-nums}.admin-table .col-status,.admin-table td.status,.admin-table th.status{text-align:center}.admin-table .col-actions,.admin-table td.actions,.admin-table th.actions{text-align:center;white-space:nowrap}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table--compact td,.admin-table--compact th{padding:10px 12px}.admin-btn{min-height:var(--control-height);border-radius:var(--radius-sm);transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 20px;font-size:.875rem;font-weight:600;display:inline-flex}.admin-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.admin-btn:active:not(:disabled){transform:translateY(1px)}.admin-btn--primary{background:var(--btn-primary-bg);color:var(--color-surface);border-color:var(--btn-primary-bg)}.admin-btn--primary:hover:not(:disabled){background:var(--btn-primary-hover)}.admin-btn--danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.admin-btn--danger:hover:not(:disabled){background:#c82333}.admin-btn--success{background:var(--color-success);color:#fff}.admin-btn--success:hover{background:var(--color-success-dark)}.admin-btn--outline{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.admin-btn--outline:hover{background:var(--color-border-light)}.admin-btn--outline-success{background:var(--color-surface);color:var(--color-success);border-color:var(--color-success)}.admin-btn--outline-danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}.admin-btn--outline-warning{background:var(--color-surface);color:var(--color-warning-dark);border-color:var(--color-warning)}.admin-btn--ghost{color:var(--color-primary);background:0 0;border-color:#0000;padding:6px 12px}.admin-btn--ghost:hover{background:var(--color-info-light)}.admin-btn--sm{min-height:var(--control-height-sm);padding:0 14px;font-size:.8125rem}.admin-btn--xs{min-height:28px;padding:0 10px;font-size:.75rem}.admin-btn__spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite admin-spin}.admin-btn--outline .admin-btn__spinner{border-color:rgba(var(--color-primary-rgb), .2);border-top-color:var(--color-primary)}@keyframes admin-spin{to{transform:rotate(360deg)}}.admin-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.admin-badge{white-space:nowrap;border:1px solid #0000;border-radius:6px;align-items:center;min-height:24px;padding:2px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.admin-badge--warning{background:var(--color-warning-light);color:var(--color-warning-dark)}.admin-badge--purple{background:var(--color-purple-light);color:var(--color-purple)}.admin-badge--success{background:var(--color-success-light);color:var(--color-success-dark)}.admin-badge--danger{background:var(--color-danger-light);color:var(--color-danger)}.admin-badge--info{background:var(--color-info-light);color:var(--color-info)}.admin-badge--neutral{background:var(--color-border-light);color:var(--color-text-muted)}.admin-badge--delivered{background:var(--color-success-light);color:var(--color-success-dark)}.admin-tabs{border-bottom:1px solid var(--color-border);flex-wrap:wrap;gap:0;display:flex;overflow:visible}.admin-tab{color:var(--color-text-muted);white-space:nowrap;transition:color var(--transition-fast), border-color var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;margin-bottom:-1px;padding:12px 16px;font-size:.875rem;font-weight:500}.admin-tab:focus-visible{box-shadow:inset 0 -2px 0 var(--color-primary);outline:none}.admin-tab:hover{color:var(--color-text)}.admin-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.admin-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);padding:10px 14px;font-size:.875rem}.admin-input[type=number],.admin-input[type=tel],.admin-input[inputmode=numeric],.admin-input[inputmode=decimal],.admin-input[inputmode=tel],.admin-input[dir=ltr]{text-align:right}select.admin-input{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.75' d='m7 10 5 5 5-5'/%3E%3C/svg%3E");background-position:12px;background-repeat:no-repeat;padding-inline:14px 36px}html.dark select.admin-input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='%94a3b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.75' d='m7 10 5 5 5-5'/%3E%3C/svg%3E")}.admin-input:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-input--sm{max-width:120px;padding:6px 10px;font-size:.8125rem}.admin-stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;gap:8px;padding:20px;display:flex}.admin-stat-card__label{color:var(--color-text-muted);margin:0;font-size:.8125rem}.admin-stat-card__value{margin:0;font-size:1.75rem;font-weight:700;line-height:1.2}.admin-stat-card__icon{border-radius:var(--radius-sm);justify-content:center;align-items:center;width:40px;height:40px;margin-bottom:4px;display:flex}.admin-stat-card__link{color:var(--color-primary);margin-top:auto;font-size:.75rem}.admin-link{color:var(--color-primary);font-size:.8125rem;font-weight:500}.admin-link:hover{text-decoration:underline}.admin-pagination{border-top:1px solid var(--color-border-light);color:var(--color-text-muted);justify-content:space-between;align-items:center;padding:16px;font-size:.8125rem;display:flex}.admin-pagination__pages{gap:4px;display:flex}.admin-pagination__page{border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);justify-content:center;align-items:center;min-width:32px;height:32px;font-size:.8125rem;display:flex}.admin-pagination__page.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.admin-summary-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;display:grid}.admin-summary-item{background:var(--color-border-light);border-radius:var(--radius-sm);padding:12px 16px}.admin-summary-item__label{color:var(--color-text-muted);margin:0 0 4px;font-size:.75rem}.admin-summary-item__value{margin:0;font-size:.9375rem;font-weight:600}.admin-info-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.admin-info-row{align-items:center;gap:8px;font-size:.8125rem;display:flex}.admin-info-row__label{color:var(--color-text-muted)}.admin-info-row__value{font-weight:500}.admin-logo-par{border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.125rem;font-weight:900;display:flex}.admin-logo-fam{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--color-primary);background:#f5f0e8;flex-direction:column;justify-content:center;align-items:center;font-size:.5rem;font-weight:700;line-height:1.2;display:flex}.admin-logo-fam span:first-child{font-size:.625rem}.admin-action-group{gap:8px;display:flex}.admin-section-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:16px;padding:20px}.admin-section-card__title{margin:0 0 16px;font-size:.9375rem;font-weight:700}.admin-form-grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px;display:grid}.admin-form-field label{color:var(--color-text-muted);margin-bottom:6px;font-size:.8125rem;display:block}.admin-form-field textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;width:100%;min-height:80px;padding:10px 14px;font-size:.875rem}.admin-footer-actions{border-top:1px solid var(--color-border-light);gap:12px;margin-top:24px;padding-top:20px;display:flex}.admin-empty-placeholder{text-align:center;color:var(--color-text-muted);padding:48px 24px;font-size:.9375rem}.admin-form{flex-direction:column;gap:16px;display:flex}.admin-form__error{border-radius:var(--radius-sm);background:var(--color-danger-light);color:var(--color-danger);margin:0;padding:10px 12px;font-size:.8125rem}.admin-form__field{flex-direction:column;gap:6px;display:flex}.admin-form__field label{color:var(--color-text);font-size:.8125rem;font-weight:600}.admin-form__required{color:var(--color-danger)}.admin-form__textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;width:100%;min-height:80px;padding:10px 14px;font-family:inherit;font-size:.875rem}.admin-form__textarea:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.admin-skeleton{background:linear-gradient(90deg, var(--color-border-light) 25%, var(--color-border) 50%, var(--color-border-light) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.2s ease-in-out infinite admin-skeleton}@keyframes admin-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.admin-skeleton,.admin-btn__spinner{animation:none}}.admin-form__row{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media print{@page{margin:12mm}html.printing-order-detail body>:not(.admin-modal-backdrop){display:none!important}html.printing-order-detail .admin-modal-backdrop{z-index:auto!important;background:0 0!important;padding:0!important;display:block!important;position:static!important;inset:auto!important}html.printing-order-detail .admin-modal{width:100%!important;max-height:none!important;box-shadow:none!important;color:#111!important;background:#fff!important;border-radius:0!important;overflow:visible!important}html.printing-order-detail .admin-modal__header{border-bottom-color:#ddd!important;padding:0 0 12px!important}html.printing-order-detail .admin-modal__close,html.printing-order-detail .admin-modal__footer,html.printing-order-detail .no-print{display:none!important}html.printing-order-detail .admin-modal__body{max-height:none!important;padding:0!important;overflow:visible!important}html.printing-order-detail .admin-modal__title{color:#111!important}}:root{--page-padding-mobile:16px;--page-padding-tablet:20px;--page-padding-desktop:28px;--page-padding:var(--page-padding-mobile);--mobile-nav-height:0px;--drawer-width:min(300px, 88vw);--admin-desktop-min:1280px}@media (width>=768px){:root{--page-padding:var(--page-padding-tablet)}}@media (width>=1280px){:root{--page-padding:var(--page-padding-desktop)}}.desktop-only{display:none!important}.compact-only{display:block}@media (width>=1280px){.desktop-only{display:revert!important}.desktop-only.admin-shell__sidebar,.desktop-only.admin-sidebar{display:flex!important}.desktop-only.orders-page,.desktop-only.dashboard{display:block!important}.compact-only{display:none!important}}.admin-drawer-backdrop{z-index:900;opacity:0;visibility:hidden;background:#0f172a73;transition:opacity .2s,visibility .2s;position:fixed;inset:0}.admin-drawer-backdrop.open{opacity:1;visibility:visible}.admin-drawer{z-index:901;width:var(--drawer-width);background:var(--color-sidebar-bg);color:#fff;flex-direction:column;height:100dvh;transition:transform .25s;display:flex;position:fixed;top:0;right:0;overflow:hidden;transform:translate(100%)}.admin-drawer.open{transform:translate(0)}.admin-card-list{flex-direction:column;gap:10px;display:flex}.admin-card-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:right;width:100%;padding:14px 16px;transition:border-color .15s,background .15s}.admin-card-item:hover{border-color:#cbd5e1}.admin-card-item.selected{border-color:var(--color-primary);background:var(--color-info-light)}.admin-card-item__header{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.admin-card-item__header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.admin-card-item__title{margin:0;font-size:.875rem;font-weight:700}.admin-card-item__meta{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 16px;font-size:.8125rem;display:flex}.admin-card-item__meta span strong{color:var(--color-text);font-weight:600}.admin-card-item__actions{border-top:1px solid var(--color-border-light);flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;display:flex}.admin-detail-panel{z-index:850;background:var(--color-bg);flex-direction:column;transition:transform .25s;display:flex;position:fixed;inset:0;transform:translate(100%)}.admin-detail-panel.open{transform:translate(0)}.admin-detail-panel__header{padding:12px var(--page-padding);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;grid-template-columns:40px 1fr 40px;align-items:center;gap:12px;display:grid}.admin-detail-panel__back{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:40px;height:40px;color:var(--color-text);transition:background var(--transition-fast), border-color var(--transition-fast);flex-shrink:0;grid-column:1;justify-content:center;align-items:center;display:flex}.admin-detail-panel__back:hover{background:var(--color-border-light);border-color:var(--color-border)}.admin-detail-panel__title{text-align:center;grid-column:2;margin:0;font-size:1rem;font-weight:700}.admin-detail-panel__body{padding:var(--page-padding);flex:1;overflow-y:auto}.compact-page-header{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.compact-page-header__row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.compact-page-header__title{margin:0;font-size:1.125rem;font-weight:700}.compact-page-header__actions{flex-wrap:wrap;gap:8px;display:flex}@media (width>=768px){.compact-page-header__row{align-items:center}.compact-page-header__actions{flex-shrink:0}}.compact-stats-grid{grid-template-columns:1fr;gap:12px;margin-bottom:16px;display:grid}@media (width>=480px){.compact-stats-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=768px){.compact-stats-grid{grid-template-columns:repeat(4,1fr)}}.compact-section-grid{flex-direction:column;gap:16px;display:flex}.compact-section-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:16px}.compact-section-card__title{margin:0 0 12px;font-size:.9375rem;font-weight:700}@media (width<=1279px){.admin-shell__content{padding:var(--page-padding)}.admin-summary-grid,.admin-form-grid,.admin-info-grid{grid-template-columns:repeat(2,1fr)}.admin-pagination{flex-direction:column;align-items:stretch;gap:12px}.admin-pagination__pages{flex-wrap:wrap;justify-content:center}.admin-tab{padding:10px 12px;font-size:.8125rem}.admin-page-header .admin-action-group{flex-wrap:wrap;gap:8px}}@media (width<=767px){:root{--header-height:60px}.admin-page-header{flex-direction:column;align-items:stretch}.admin-page-header .admin-btn,.admin-page-header .admin-action-group{width:100%}.admin-page-header .admin-action-group .admin-btn{flex:1;min-width:fit-content}.admin-summary-grid,.admin-form-grid,.admin-info-grid{grid-template-columns:1fr}.admin-footer-actions{flex-direction:column}.admin-footer-actions .admin-btn{width:100%}.admin-form__row{grid-template-columns:1fr}.admin-tab{padding:8px 10px;font-size:.75rem}.admin-modal-backdrop{align-items:flex-end;padding:0}.admin-modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:100%;max-height:92dvh}.checks-page__footer{flex-direction:column;align-items:stretch}.checks-page__footer .admin-action-group{flex-direction:column;width:100%}.checks-page__footer .admin-action-group .admin-btn{width:100%}}@media (width<=460px){:root{--header-height:56px;--admin-header-control:36px}.admin-header{height:var(--header-height);min-height:var(--header-height);justify-content:space-between;align-items:center;gap:8px;padding:0 10px;display:flex}.admin-header__menu-btn{width:var(--admin-header-control);height:var(--admin-header-control)}.admin-header__left{flex:1;justify-content:flex-end;gap:6px;min-width:0}.sms-credit,.admin-header__dropdown--messages,.admin-header__dropdown--notifications{display:none!important}.admin-header__icon-btn{min-width:var(--admin-header-control);width:var(--admin-header-control);height:var(--admin-header-control);padding:0}.admin-header__avatar{width:var(--admin-header-control);height:var(--admin-header-control);font-size:.8125rem}} diff --git a/dist/assets/selectOptionSearch-BUIO0UgP.js b/dist/assets/selectOptionSearch-DNMc9NzZ.js similarity index 88% rename from dist/assets/selectOptionSearch-BUIO0UgP.js rename to dist/assets/selectOptionSearch-DNMc9NzZ.js index c70026a..c7a05da 100644 --- a/dist/assets/selectOptionSearch-BUIO0UgP.js +++ b/dist/assets/selectOptionSearch-DNMc9NzZ.js @@ -1 +1 @@ -import{l as e}from"./index-DWlOII4H.js";function t(t){return e(t).toLowerCase().replace(/ي/g,`ی`).replace(/ك/g,`ک`).normalize(`NFKC`).trim()}function n(e,n){let r=t(n);return!r||t(e).includes(r)}function r(e,t){let r=t.trim();return r?e.filter(e=>n(e.label,r)):e}function i(e,t){if(!e)return;let n=e.querySelectorAll(`[data-select-option]`);(t===`first`?n[0]:n[n.length-1])?.focus()}function a(e,t){let n=e.closest(`[data-select-menu]`);if(!n)return;let r=[...n.querySelectorAll(`[data-select-option]`)],i=r.indexOf(e);i<0||r[i+t]?.focus()}export{a as n,i as r,r as t}; \ No newline at end of file +import{l as e}from"./index-BWgYBNME.js";function t(t){return e(t).toLowerCase().replace(/ي/g,`ی`).replace(/ك/g,`ک`).normalize(`NFKC`).trim()}function n(e,n){let r=t(n);return!r||t(e).includes(r)}function r(e,t){let r=t.trim();return r?e.filter(e=>n(e.label,r)):e}function i(e,t){if(!e)return;let n=e.querySelectorAll(`[data-select-option]`);(t===`first`?n[0]:n[n.length-1])?.focus()}function a(e,t){let n=e.closest(`[data-select-menu]`);if(!n)return;let r=[...n.querySelectorAll(`[data-select-option]`)],i=r.indexOf(e);i<0||r[i+t]?.focus()}export{a as n,i as r,r as t}; \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index d8e31a2..a113abd 100644 --- a/dist/index.html +++ b/dist/index.html @@ -11,10 +11,10 @@ پنل مدیریت | پارچه - + - +
diff --git a/src/composables/useOrdersPage.ts b/src/composables/useOrdersPage.ts index 751b9e6..9404fb1 100644 --- a/src/composables/useOrdersPage.ts +++ b/src/composables/useOrdersPage.ts @@ -193,6 +193,19 @@ export function useOrdersPage() { showDetailModal.value = false } + function dismissOrderDetail() { + const returnToChecks = route.query.from === 'checks' + showDetailModal.value = false + showDetailPanel.value = false + if (!returnToChecks) return + const previous = window.history.state?.back + if (typeof previous === 'string') { + void router.back() + return + } + void router.replace({ name: 'checks' }) + } + function settlementLabel(method?: string | null) { return settlementMethodLabel(method) } @@ -321,6 +334,7 @@ export function useOrdersPage() { openOrderDetail, closeDetailPanel, closeDetailModal, + dismissOrderDetail, settlementLabel, changeStatus, statusSaving, diff --git a/src/types/index.ts b/src/types/index.ts index d8bf9e9..82be9e1 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -251,6 +251,8 @@ export interface Product { subtitle?: string specs?: string rollMeters?: number + widthCm?: number | null + weightGrams?: number | null isNew?: boolean colors?: string[] colorImages?: Array diff --git a/src/views/checks/CheckManagementView.vue b/src/views/checks/CheckManagementView.vue index 970ce66..d315862 100644 --- a/src/views/checks/CheckManagementView.vue +++ b/src/views/checks/CheckManagementView.vue @@ -392,7 +392,7 @@ async function finalApproveOrder() { - +

- {{ checkList.length }} چک - {{ pendingCount }} در انتظار بررسی + {{ toPersianDigits(invoiceCount) }} فاکتور + {{ toPersianDigits(checkList.length) }} چک + {{ toPersianDigits(pendingCount) }} در انتظار بررسی
@@ -134,7 +295,7 @@ async function updateCheckStatus(check: Check, status: Check['status']) { v-model="searchQuery" type="search" class="checks-list-page__search-input" - placeholder="جستجو در شماره سفارش، مشتری، بانک، صیاد..." + placeholder="جستجو در شماره فاکتور، مشتری، جنس، بانک، صیاد..." /> + + +
+ + عکس چک +
+
@@ -316,22 +494,236 @@ async function updateCheckStatus(check: Check, status: Check['status']) { width: 220px; } -.checks-list-page__table { - padding: 0; +.check-groups { + display: flex; + flex-direction: column; + gap: 14px; +} + +.check-group { + position: relative; + overflow: hidden; + container-type: inline-size; + container-name: check-group; +} + +.check-group__head { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: 12px 28px; + padding: 14px 16px; + border-bottom: 1px solid var(--color-border); + background: color-mix(in srgb, var(--color-primary-soft) 70%, var(--color-surface)); +} + +.check-group__col { + display: grid; + gap: 8px; + min-width: 0; +} + +.check-group__field { + display: grid; + grid-template-columns: 8.25rem minmax(0, 1fr); + gap: 8px; + align-items: start; + font-size: 0.8125rem; +} + +.check-group__field > span { + color: var(--color-text-muted); + padding-top: 2px; +} + +.check-group__field strong { + min-width: 0; + font-weight: 700; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.check-group__ltr { + direction: ltr; + unicode-bidi: isolate; + text-align: right; +} + +.check-group__summary { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 8px 16px; + width: 100%; + min-height: 52px; + padding: 10px 14px 10px 52px; + border: 0; + background: transparent; + color: inherit; + font: inherit; + text-align: start; + cursor: pointer; +} + +.check-group.is-open .check-group__summary { + border-bottom: 1px solid var(--color-border); + background: color-mix(in srgb, var(--color-primary-soft) 45%, var(--color-surface)); +} + +.check-group__chevron { + flex-shrink: 0; + color: var(--color-text-muted); +} + +.check-group__summary-name { + font-size: 0.9375rem; + font-weight: 700; +} + +.check-group__summary-invoice { + direction: ltr; + unicode-bidi: isolate; + font-size: 0.8125rem; + font-weight: 700; +} + +.check-group__summary-meta { + color: var(--color-text-muted); + font-size: 0.8125rem; +} + +.check-group__detail { + position: absolute; + top: 10px; + left: 10px; + z-index: 1; + width: 32px; + height: 32px; + display: grid; + place-items: center; + border: 1px solid var(--color-border); + border-radius: 8px; + background: var(--color-surface); + color: var(--color-primary); + cursor: pointer; +} + +.check-group__detail:hover { + border-color: var(--color-primary); +} + +.check-lines { + display: grid; + grid-template-columns: 3rem repeat(5, minmax(0, 1fr)); + column-gap: 16px; +} + +.check-line { + display: grid; + grid-template-columns: subgrid; + grid-column: 1 / -1; + align-items: center; + padding: 10px 16px; + border-bottom: 1px solid var(--color-border-light); +} + +.check-line:last-child { + border-bottom: 0; +} + +.check-line--head { + padding-top: 8px; + padding-bottom: 8px; + font-size: 0.75rem; + color: var(--color-text-muted); + background: var(--color-border-light); +} + +.check-line--head > span { + text-align: start; +} + +.check-line__row { + font-weight: 700; + text-align: center; +} + +.check-line__amount, +.check-line__due { + display: grid; + gap: 2px; + min-width: 0; overflow: hidden; } -.checks-list-page__order-link { - border: none; - background: transparent; - color: var(--color-primary); - cursor: pointer; - padding: 0; - font: inherit; +.check-line__amount strong, +.check-line__due strong { + font-size: 0.875rem; + font-weight: 700; } -.checks-list-page__order-link:hover { - text-decoration: underline; +.check-line__amount small, +.check-line__due small { + color: var(--color-text-muted); + font-size: 0.75rem; +} + +.check-line__sayad { + display: block; + direction: ltr; + unicode-bidi: isolate; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.check-line__photo { + width: 48px; + height: 34px; + justify-self: start; + border-radius: 6px; + border: 1px solid var(--color-border); + overflow: hidden; + padding: 0; + background: var(--color-border-light); + cursor: zoom-in; +} + +.check-line__photo img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} + +.check-line__photo--empty { + cursor: default; +} + +.check-line__foot { + display: contents; +} + +.check-line__actions { + display: flex; + flex-wrap: nowrap; + gap: 6px; + justify-content: flex-start; +} + +.check-line__actions .admin-btn { + flex: 0 0 auto; +} + +.check-line__status { + justify-self: start; +} + +.check-line__status :deep(.admin-badge) { + max-width: 100%; + white-space: normal; + line-height: 1.35; + text-align: center; } .checks-list-page__empty { @@ -341,4 +733,110 @@ async function updateCheckStatus(check: Check, status: Check['status']) { color: var(--color-text-muted); font-size: 0.875rem; } + +.checks-list-page__lightbox { + position: fixed; + inset: 0; + z-index: 300000; + display: grid; + place-items: center; + background: rgba(0, 0, 0, 0.84); + padding: 20px; +} + +.checks-list-page__lightbox img { + max-width: min(900px, 100%); + max-height: 88vh; + object-fit: contain; + border-radius: 8px; +} + +.checks-list-page__lightbox-close { + position: absolute; + top: 14px; + inset-inline-end: 14px; + border: 0; + border-radius: 8px; + padding: 8px 12px; + cursor: pointer; +} + +@container check-group (max-width: 760px) { + .check-lines { + display: flex; + flex-direction: column; + } + + .check-line--head { + display: none; + } + + .check-line:not(.check-line--head) { + grid-column: auto; + grid-template-columns: 1.75rem minmax(0, 1fr) 48px; + grid-template-areas: + 'row amount photo' + 'due due photo' + 'foot foot foot'; + row-gap: 6px; + column-gap: 10px; + align-items: center; + padding-inline: 16px; + } + + .check-line__foot { + display: flex; + grid-area: foot; + align-items: center; + justify-content: space-between; + gap: 8px; + min-width: 0; + padding-top: 2px; + } + + .check-line__row { + grid-area: row; + text-align: start; + } + + .check-line__amount { + grid-area: amount; + } + + .check-line__due { + grid-area: due; + } + + .check-line__photo { + grid-area: photo; + justify-self: end; + align-self: center; + } + + .check-line__actions { + margin-inline-start: auto; + } +} + +@container check-group (max-width: 640px) { + .check-group__head { + grid-template-columns: minmax(0, 1fr); + gap: 10px; + } +} + +@container check-group (max-width: 420px) { + .check-group__summary { + padding: 10px 12px 10px 48px; + } + + .check-line { + padding-inline: 12px; + } + + .check-group__field { + grid-template-columns: 6.25rem minmax(0, 1fr); + gap: 6px; + } +} diff --git a/src/views/orders/components/CompactOrdersPage.vue b/src/views/orders/components/CompactOrdersPage.vue index 36b4590..0bc493d 100644 --- a/src/views/orders/components/CompactOrdersPage.vue +++ b/src/views/orders/components/CompactOrdersPage.vue @@ -25,6 +25,7 @@ const { openOrderDetail, closeDetailPanel, closeDetailModal, + dismissOrderDetail, settlementLabel, goPricing, goChecks, @@ -214,7 +215,7 @@ function handleFinalApprove() { type="button" class="admin-detail-panel__back" aria-label="بازگشت به لیست" - @click="closeDetailPanel" + @click="dismissOrderDetail" > @@ -240,7 +241,7 @@ function handleFinalApprove() { :open="isCompactLayout && !isMobile && showDetailModal && !!selectedOrder" title="جزئیات سفارش" size="xl" - @close="closeDetailModal" + @close="dismissOrderDetail" >