2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
import{_ as je}from"./BasicModal.vue_vue_type_style_index_0_lang-b6f776a2.js";import{_ as Pe,u as De}from"./useBaseTable-b3483437.js";import{_ as Me,B as Ne}from"./button.vue_vue_type_style_index_0_lang-670ebdf7.js";import{I as te}from"./Icon-7e71129c.js";import{t as z}from"./useDataTime-c77a5d27.js";import{u as C}from"./usePrice-bc935b83.js";import{_ as ae}from"./CustomTag.vue_vue_type_script_setup_true_lang-76e0e505.js";import{N as q,b as a,X as $e,d as Ae,g as v,r as le,h as B,v as Ee,ad as Fe,o as b,c as O,a as m,w as o,e as c,j as k,G as ze,F,t as d,i as R,k as j,n as oe,D as h}from"./index-ec71f3f7.js";import{c as Ve}from"./products-7b6ab590.js";import{D as Ye,_ as Ge,T as Je,a as Xe}from"./index-fdfa72c7.js";import{S as He}from"./index-415c9c8e.js";import{I as Ke,_ as Qe}from"./index-87a6a3b3.js";import{b as We,C as Ze}from"./index-8157723e.js";import{_ as et,F as tt}from"./index-055a3fbb.js";import{S as at}from"./fa_IR-c2785588.js";import{T as ne}from"./shallowequal-d184109e.js";import{_ as lt}from"./index-ba40f583.js";import"./index-8dd0eae2.js";import"./Col-137c655a.js";import"./vnode-abb83d2f.js";import"./_plugin-vue_export-helper-93085e13.js";import"./pickAttrs-0202eba3.js";import"./FormItemContext-343cf89e.js";import"./useState-f67c0555.js";import"./lodash-6639d8f5.js";import"./isPlainObject-fa667e03.js";import"./toArray-eb32ddb8.js";const V=[{title:"ثبت سفارش"},{title:"در حال آمادهسازی"},{title:"ارسال شده"},{title:"تحویل داده شده"},{title:"لغو شده"}],ot=[{value:"home",label:"پرداخت در محل"},{value:"zarinpall",label:"زرینپال"}];function se(l){if(l.payment_sts===4||l.sts===2)return{label:"پرداخت موفق",color:"#16a34a",bg:"#dcfce7"};if(l.payment_type==="home")return{label:"پرداخت در محل",color:"#2563eb",bg:"#dbeafe"};switch(l.sts){case 1:return{label:"پرداخت نشده",color:"#ca8a04",bg:"#fef9c3"};case 3:return{label:"در انتظار پرداخت",color:"#dc2626",bg:"#fee2e2"};default:return{label:"نامشخص",color:"#6b7280",bg:"#f3f4f6"}}}const nt=async l=>{const s=await q.post("/order/all",l);return s!=null&&s.rows&&Array.isArray(s.rows)?s:Array.isArray(s)?{rows:s,query:{...l,total:s.length}}:{rows:[],query:{...l,total:0}}},st=async l=>await q.post(`/order/${l}`),it=async l=>await q.post("/order/admin/create",l),rt=async(l,s)=>await q.put(`/order/${l}/status`,s),ut=async()=>{try{return await q.get("/order/status-options")}catch{return V}};function ct(l){return typeof l=="function"||Object.prototype.toString.call(l)==="[object Object]"&&!$e(l)}const ie={home:"پرداخت در محل",zarinpall:"زرینپال"};function dt(l){const s=l==null?void 0:l.user;if(!s)return"—";const g=[s.first_name,s.last_name].filter(Boolean).join(" ");return g||(s.name?s.name:s.phone??"—")}function _t(l){return{"ثبت سفارش":{color:"#2563eb",bg:"#dbeafe"},"در حال آمادهسازی":{color:"#7c3aed",bg:"#ede9fe"},"ارسال شده":{color:"#2563eb",bg:"#dbeafe"},"تحویل داده شده":{color:"#059669",bg:"#d1fae5"},"لغو شده":{color:"#6b7280",bg:"#f3f4f6"}}[l]??{color:"#374151",bg:"#f3f4f6"}}const pt=[{title:"ردیف",dataIndex:"id",key:"row_index",filterable:!1,width:60,align:"center",customRender:l=>l.index+1},{title:"کد سفارش",dataIndex:"id",key:"id",width:90,align:"center"},{title:"مشتری",dataIndex:"user_id",key:"user_id",width:140,customRender:l=>dt(l.record)},{title:"تعداد اقلام",dataIndex:"total_qty",key:"total_qty",width:90,align:"center",customRender:l=>{var s;return l.record.total_qty??((s=l.record.order_items)==null?void 0:s.length)??0}},{title:"مبلغ کل",dataIndex:"total_price",key:"total_price",width:120,align:"center",customRender:l=>C(l.record.discount_total_price??l.record.total_price??0,!0,"")},{title:"تخفیف",dataIndex:"total_discounts",key:"total_discounts",width:100,align:"center",customRender:l=>C(l.record.total_discounts??0,!0,"")},{title:"نوع پرداخت",dataIndex:"payment_type",key:"payment_type",width:110,align:"center",customRender:l=>ie[l.record.payment_type]??l.record.payment_type??"—"},{title:"وضعیت پرداخت",dataIndex:"sts",key:"payment_status",width:120,align:"center",customRender:l=>{const s=se(l.record);return a("div",{class:"flex justify-center"},[a(ae,{class:"px-2 py-1 text-xs font-bold",textColor:s.color,bgColor:s.bg},{default:()=>[s.label]})])}},{title:"آخرین وضعیت",dataIndex:"latest_status",key:"latest_status",width:130,align:"center",customRender:l=>{const s=l.record.latest_status??"—",g=_t(s);return a("div",{class:"flex justify-center"},[a(ae,{class:"px-2 py-1 text-xs font-bold",textColor:g.color,bgColor:g.bg},ct(s)?s:{default:()=>[s]})])}},{title:"زمان ثبت",dataIndex:"created_at",key:"created_at",width:130,customRender:l=>l.record.created_at?z(l.record.created_at):"—"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center",width:120,fixed:"right"}],ft={class:"flex justify-between items-center mb-4"},mt=m("h2",null,"سفارشات",-1),vt={class:"gap-2 flex justify-center"},yt=m("span",null,"جزئیات",-1),bt=m("span",null,"تغییر وضعیت",-1),gt=m("h3",{class:"font-bold mb-2"},"اقلام سفارش",-1),ht=m("h3",{class:"font-bold mt-4 mb-2"},"تاریخچه وضعیت سفارش",-1),wt={class:"font-bold"},xt={class:"text-gray-500 text-sm"},kt=m("div",{class:"text-gray-400 text-xs mt-1"}," وضعیت پرداخت فقط از طریق درگاه زرینپال قابل تغییر است. ",-1),Ct={class:"col-span-2"},It={class:"flex justify-between items-center mb-2"},Ot=m("span",{class:"font-bold"},"محصولات",-1),qt={class:"col-span-2 flex justify-end"},ta=Ae({__name:"index",setup(l){const[s,g]=De(),re=v({columns:pt,api:nt,defaultPageLimit:20}),S=v(!1),T=v(!1),U=v(!1),P=v(!1),D=v(!1),M=v(!1),u=v(null),L=v(null),N=v(null),Y=v([]),G=v([]),J=v(V),f=le({title:"",cancel_reason:"",notify_user:!0}),r=le({user_id:void 0,payment_type:"home",status_title:void 0,address:"",note:"",items:[{product_id:void 0,qty:1}]}),ue=[{title:"محصول",dataIndex:"title",key:"title",customRender:({record:e})=>{var t,i;return e.title??((t=e.product)==null?void 0:t.title_fa)??((i=e.product)==null?void 0:i.title)??"—"}},{title:"تعداد",dataIndex:"qty",key:"qty",width:80,align:"center"},{title:"قیمت واحد",dataIndex:"total_price",key:"unit_price",width:120,customRender:({record:e})=>{const t=e.qty||1,i=e.total_price??0;return C(Math.round(i/t),!0,"")}},{title:"جمع",dataIndex:"total_price",key:"total_price",width:120,customRender:({record:e})=>C(e.total_price??0,!0,"")}],X=B(()=>J.value.map(e=>({value:e.title,label:e.title}))),ce=ot,de=B(()=>Y.value.map(e=>({value:e.id,label:[e.first_name,e.last_name].filter(Boolean).join(" ")||e.name||e.phone||e.id}))),_e=B(()=>G.value.map(e=>({value:e.id,label:`${e.title_fa??e.title??e.id} — ${C(e.price??0,!0,"")}`}))),pe=B(()=>{var t;return[...((t=u.value)==null?void 0:t.orders_status)??[]].sort((i,_)=>new Date(_.created_at??0).getTime()-new Date(i.created_at??0).getTime())});function fe(e){const t=e==null?void 0:e.user;return t&&([t.first_name,t.last_name].filter(Boolean).join(" ")||t.name||t.phone)||"—"}function me(e){return e?ie[e]??e:"—"}function H(e){return e?se(e).label:"—"}function K(e){return C(e??0,!0,"تومان")}function ve(e){if(!e)return"—";if(e.formatted_address)return e.formatted_address;const t=e.address;if(!t)return"—";if(typeof t=="string")return t||"—";if(t!=null&&t.payload){const i=t.payload;return[i.name,i.province,i.city,i.address,i.zip,i.phone].filter(Boolean).join(" - ")}return t.province||t.city||t.address?[t.name,t.province,t.city,t.address,t.zip,t.phone].filter(Boolean).join(" - "):"—"}function ye(e,t){var i;return(i=t.label)==null?void 0:i.toLowerCase().includes(e.toLowerCase())}function be(e,t){var i;return(i=t.label)==null?void 0:i.toLowerCase().includes(e.toLowerCase())}async function ge(e){S.value=!0,P.value=!0;try{u.value=await st(e.id)}catch{h.error("خطا در دریافت جزئیات سفارش"),u.value=e}finally{P.value=!1}}function Q(){S.value=!1,u.value=null}function he(e){L.value=e.id,N.value=e;const t=V.map(i=>i.title);f.title=t.includes(e.latest_status)?e.latest_status:"",f.cancel_reason="",f.notify_user=!0,T.value=!0}function W(){T.value=!1,L.value=null,N.value=null}async function we(){if(!L.value||!f.title){h.error("لطفاً وضعیت را انتخاب کنید");return}D.value=!0;try{await rt(L.value,{title:f.title,cancel_reason:f.cancel_reason||void 0,notify_user:f.notify_user}),h.success("وضعیت سفارش با موفقیت بهروزرسانی شد"),W(),await g()}catch(e){h.error("خطا در بهروزرسانی وضعیت: "+((e==null?void 0:e.message)??""))}finally{D.value=!1}}function xe(){r.user_id=void 0,r.payment_type="home",r.status_title=void 0,r.address="",r.note="",r.items=[{product_id:void 0,qty:1}],U.value=!0}function Z(){U.value=!1}function ke(){r.items.push({product_id:void 0,qty:1})}function Ce(e){r.items.length>1&&r.items.splice(e,1)}async function Ie(){var t,i;if(!r.user_id){h.error("لطفاً مشتری را انتخاب کنید");return}const e=r.items.filter(_=>_.product_id&&_.qty>0);if(!e.length){h.error("حداقل یک محصول معتبر وارد کنید");return}M.value=!0;try{await it({user_id:r.user_id,payment_type:r.payment_type,status_title:r.status_title,address:r.address,note:r.note,items:e.map(_=>({product_id:_.product_id,qty:_.qty}))}),h.success("سفارش با موفقیت ثبت شد"),Z(),await g()}catch(_){h.error("خطا در ثبت سفارش: "+(((i=(t=_==null?void 0:_.response)==null?void 0:t.data)==null?void 0:i.error)??(_==null?void 0:_.message)??""))}finally{M.value=!1}}return Ee(async()=>{try{const[e,t,i]=await Promise.all([Fe(),Ve(),ut()]);Y.value=e??[],G.value=t??[],i!=null&&i.length&&(J.value=i)}catch(e){console.error("orders page init error:",e)}}),(e,t)=>{const i=Me,_=Pe,$=Ne,p=Ye,Oe=Ge,qe=We,Se=Xe,Te=Je,Ue=He,A=je,Le=Ke,y=et,I=at,E=Qe,Be=Ze,ee=tt,Re=lt;return b(),O("div",null,[m("div",ft,[mt,a(i,{type:"primary",onClick:xe},{default:o(()=>[c("ثبت سفارش جدید")]),_:1})]),a(_,ze(re.value,{onRegister:k(s)}),{action:o(({record:n})=>[m("div",vt,[a(k(ne),{class:"cursor-pointer"},{title:o(()=>[yt]),default:o(()=>[a(te,{icon:"vuesax-linear:eye",color:"#1D4ED8",onClick:w=>ge(n)},null,8,["onClick"])]),_:2},1024),a(k(ne),{class:"cursor-pointer"},{title:o(()=>[bt]),default:o(()=>[a(te,{icon:"vuesax-linear:refresh-circle",color:"#059669",onClick:w=>he(n)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),a(A,{visible:S.value,"onUpdate:visible":t[0]||(t[0]=n=>S.value=n),title:"جزئیات سفارش","custom-footer":"",width:"85%",onClose:Q},{footer:o(()=>[a($,{onClick:Q},{default:o(()=>[c("بستن")]),_:1})]),default:o(()=>[a(Ue,{spinning:P.value},{default:o(()=>[u.value?(b(),O(F,{key:0},[a(Oe,{bordered:"",column:2,size:"small",class:"mb-4"},{default:o(()=>{var n,w;return[a(p,{label:"کد سفارش"},{default:o(()=>[c(d(u.value.id),1)]),_:1}),a(p,{label:"مشتری"},{default:o(()=>[c(d(fe(u.value)),1)]),_:1}),a(p,{label:"تلفن"},{default:o(()=>{var x;return[c(d(((x=u.value.user)==null?void 0:x.phone)??"—"),1)]}),_:1}),a(p,{label:"تاریخ ثبت"},{default:o(()=>[c(d(u.value.created_at?k(z)(u.value.created_at):"—"),1)]),_:1}),a(p,{label:"نوع پرداخت"},{default:o(()=>[c(d(me(u.value.payment_type)),1)]),_:1}),a(p,{label:"وضعیت پرداخت"},{default:o(()=>[c(d(H(u.value)),1)]),_:1}),a(p,{label:"آخرین وضعیت سفارش"},{default:o(()=>[c(d(u.value.latest_status??"—"),1)]),_:1}),a(p,{label:"تعداد اقلام"},{default:o(()=>[c(d(u.value.total_qty??0),1)]),_:1}),a(p,{label:"مبلغ نهایی"},{default:o(()=>[c(d(K(u.value.discount_total_price??u.value.total_price)),1)]),_:1}),a(p,{label:"تخفیف"},{default:o(()=>[c(d(K(u.value.total_discounts)),1)]),_:1}),a(p,{label:"کد تخفیف"},{default:o(()=>[c(d(u.value.code||"—"),1)]),_:1}),a(p,{label:"آدرس تحویل",span:2},{default:o(()=>[c(d(ve(u.value)),1)]),_:1}),(w=(n=u.value.address_doc)==null?void 0:n.payload)!=null&&w.phone?(b(),R(p,{key:0,label:"تلفن گیرنده"},{default:o(()=>[c(d(u.value.address_doc.payload.phone),1)]),_:1})):j("",!0),a(p,{label:"یادداشت",span:2},{default:o(()=>[c(d(u.value.note||"—"),1)]),_:1}),u.value.cancel_reason?(b(),R(p,{key:1,label:"دلیل لغو",span:2},{default:o(()=>[c(d(u.value.cancel_reason),1)]),_:1})):j("",!0)]}),_:1}),gt,a(qe,{"data-source":u.value.order_items??[],columns:ue,pagination:!1,size:"small","row-key":"id",bordered:""},null,8,["data-source"]),ht,a(Te,null,{default:o(()=>[(b(!0),O(F,null,oe(pe.value,n=>(b(),R(Se,{key:n.id??n.created_at},{default:o(()=>[m("div",wt,d(n.title),1),m("div",xt,d(n.created_at?k(z)(n.created_at):"—"),1)]),_:2},1024))),128))]),_:1})],64)):j("",!0)]),_:1},8,["spinning"])]),_:1},8,["visible"]),a(A,{visible:T.value,"onUpdate:visible":t[4]||(t[4]=n=>T.value=n),title:"تغییر وضعیت سفارش","ok-text":"ذخیره","cancel-text":"انصراف","confirm-loading":D.value,onOk:we,onClose:W,width:"500px"},{default:o(()=>[a(ee,{layout:"vertical"},{default:o(()=>[a(y,{label:"وضعیت پرداخت"},{default:o(()=>[a(Le,{value:H(N.value),disabled:""},null,8,["value"]),kt]),_:1}),a(y,{label:"وضعیت جدید سفارش",required:""},{default:o(()=>[a(I,{value:f.title,"onUpdate:value":t[1]||(t[1]=n=>f.title=n),placeholder:"انتخاب وضعیت",options:X.value},null,8,["value","options"])]),_:1}),f.title==="لغو شده"?(b(),R(y,{key:0,label:"دلیل لغو"},{default:o(()=>[a(E,{value:f.cancel_reason,"onUpdate:value":t[2]||(t[2]=n=>f.cancel_reason=n),rows:"3",placeholder:"دلیل لغو سفارش"},null,8,["value"])]),_:1})):j("",!0),a(y,null,{default:o(()=>[a(Be,{checked:f.notify_user,"onUpdate:checked":t[3]||(t[3]=n=>f.notify_user=n)},{default:o(()=>[c(" اطلاعرسانی به کاربر (پیامک و نوتیفیکیشن) ")]),_:1},8,["checked"])]),_:1})]),_:1})]),_:1},8,["visible","confirm-loading"]),a(A,{visible:U.value,"onUpdate:visible":t[10]||(t[10]=n=>U.value=n),title:"ثبت سفارش جدید","ok-text":"ثبت سفارش","cancel-text":"انصراف","confirm-loading":M.value,onOk:Ie,onClose:Z,width:"80%"},{default:o(()=>[a(ee,{layout:"vertical",class:"grid grid-cols-2 gap-3"},{default:o(()=>[a(y,{label:"مشتری",required:"",class:"col-span-2"},{default:o(()=>[a(I,{value:r.user_id,"onUpdate:value":t[5]||(t[5]=n=>r.user_id=n),"show-search":"",placeholder:"انتخاب مشتری",options:de.value,"filter-option":ye},null,8,["value","options"])]),_:1}),a(y,{label:"نوع پرداخت"},{default:o(()=>[a(I,{value:r.payment_type,"onUpdate:value":t[6]||(t[6]=n=>r.payment_type=n),options:k(ce)},null,8,["value","options"])]),_:1}),a(y,{label:"وضعیت اولیه سفارش"},{default:o(()=>[a(I,{value:r.status_title,"onUpdate:value":t[7]||(t[7]=n=>r.status_title=n),options:X.value,"allow-clear":"",placeholder:"پیشفرض: ثبت سفارش"},null,8,["value","options"])]),_:1}),a(y,{label:"آدرس",class:"col-span-2"},{default:o(()=>[a(E,{value:r.address,"onUpdate:value":t[8]||(t[8]=n=>r.address=n),rows:"2",placeholder:"آدرس تحویل"},null,8,["value"])]),_:1}),a(y,{label:"یادداشت",class:"col-span-2"},{default:o(()=>[a(E,{value:r.note,"onUpdate:value":t[9]||(t[9]=n=>r.note=n),rows:"2",placeholder:"یادداشت سفارش"},null,8,["value"])]),_:1}),m("div",Ct,[m("div",It,[Ot,a($,{type:"dashed",size:"small",onClick:ke},{default:o(()=>[c("+ افزودن محصول")]),_:1})]),(b(!0),O(F,null,oe(r.items,(n,w)=>(b(),O("div",{key:w,class:"grid grid-cols-12 gap-2 mb-2 items-end"},[a(y,{label:"محصول",class:"col-span-7 mb-0",required:!0},{default:o(()=>[a(I,{value:n.product_id,"onUpdate:value":x=>n.product_id=x,"show-search":"",placeholder:"انتخاب محصول",options:_e.value,"filter-option":be},null,8,["value","onUpdate:value","options"])]),_:2},1024),a(y,{label:"تعداد",class:"col-span-3 mb-0",required:!0},{default:o(()=>[a(Re,{value:n.qty,"onUpdate:value":x=>n.qty=x,min:1,class:"w-full"},null,8,["value","onUpdate:value"])]),_:2},1024),m("div",qt,[a($,{danger:"",type:"text",onClick:x=>Ce(w),disabled:r.items.length<=1},{default:o(()=>[c(" حذف ")]),_:2},1032,["onClick","disabled"])])]))),128))])]),_:1})]),_:1},8,["visible","confirm-loading"])])}}});export{ta as default};
|