2 lines
6.8 KiB
JavaScript
2 lines
6.8 KiB
JavaScript
import{_ as M,i as j,o as n,c as v,a as s,F as $,j as N,q as U,s as y,w as c,p,b as C,v as G,r as b,x as H,d as w,n as z,t as a,g as r,E as _}from"./index-CZe38Ow-.js";import{r as O}from"./request-DftRczcY.js";const J={class:"orders-page"},K={class:"status-tabs"},P=["onClick"],Q={key:0,class:"count"},W={class:"order-list"},X={class:"order-header"},Y={class:"order-number"},Z=["onClick"],ss={class:"vehicle-info"},ts={class:"info"},es={class:"order-dates"},ls={class:"order-footer"},as={class:"amount"},os={class:"value"},ns={class:"actions"},is={key:0,class:"order-detail"},us={class:"detail-section"},ds={class:"detail-row"},cs={class:"value"},rs={class:"detail-row"},vs={class:"value"},ps={class:"detail-row"},_s={class:"value"},ms={class:"detail-section"},fs={class:"detail-row"},hs={class:"value"},ys={class:"detail-row"},bs={class:"value"},gs={class:"detail-row"},ks={class:"value"},ws={class:"detail-row"},Ds={class:"value"},Cs={class:"detail-section"},Os={class:"detail-row"},Es={class:"value"},$s={class:"detail-row"},Ns={class:"value"},zs={class:"detail-row"},Is={class:"value"},Ss={class:"detail-row total"},Vs={class:"value"},xs={__name:"Orders",setup(Fs){const g=b(!1),u=b([]),k=b(""),D=b(!1),o=b(null),d=[{label:"全部",value:"",count:0},{label:"待支付",value:"待支付",count:0},{label:"进行中",value:"进行中",count:0},{label:"已完成",value:"已完成",count:0}],I=l=>({待支付:"待支付",进行中:"租赁中",已完成:"已完成",逾期:"已逾期"})[l]||l,S=l=>({待支付:"warning",进行中:"primary",已完成:"success",逾期:"danger"})[l]||"info",m=l=>l?new Date(l).toLocaleDateString("zh-CN"):"-",E=H(()=>k.value?u.value.filter(l=>l.status===k.value):u.value),V=async()=>{g.value=!0;try{const l=localStorage.getItem("customer_id"),t=await O.get("/orders");t.success&&(u.value=t.data.filter(i=>i.customer?._id===l),d[1].count=u.value.filter(i=>i.status==="待支付").length,d[2].count=u.value.filter(i=>i.status==="进行中").length,d[3].count=u.value.filter(i=>i.status==="已完成").length,d[0].count=u.value.length)}catch{u.value=[{_id:"1",orderNumber:"ORDER001",status:"进行中",vehicle:{model:"黑骑士",color:"黑色",vehicleId:"SCOOTER001"},startDate:"2026-02-20",endDate:"2026-03-20",rentalFee:50,deposit:200,totalAmount:300},{_id:"2",orderNumber:"ORDER002",status:"已完成",vehicle:{model:"电动车",color:"蓝色",vehicleId:"SCOOTER003"},startDate:"2026-01-10",endDate:"2026-02-10",actualEndDate:"2026-02-10",rentalFee:40,deposit:150,totalAmount:200}],d[2].count=1,d[3].count=1,d[0].count=2}finally{g.value=!1}},x=l=>{o.value=l,D.value=!0},F=async l=>{try{await O.put(`/orders/${l._id}`,{status:"进行中"}).catch(()=>({success:!0})),l.status="进行中",_.success("支付成功")}catch{_.success("支付成功(演示)"),l.status="进行中"}},R=l=>{_.info("续租功能开发中")},T=async l=>{try{await O.patch(`/orders/${l._id}/complete`).catch(()=>({success:!0})),l.status="已完成",_.success("还车成功")}catch{_.success("还车成功(演示)"),l.status="已完成"}},A=l=>{l.vehicle,_.info("功能开发中")};return j(()=>{V()}),(l,t)=>{const i=w("el-tag"),f=w("el-button"),B=w("el-empty"),q=w("el-dialog"),L=G("loading");return n(),v("div",J,[t[25]||(t[25]=s("div",{class:"page-header"},[s("h2",null,"我的订单")],-1)),s("div",K,[(n(),v($,null,N(d,e=>s("div",{key:e.value,class:z(["tab-item",{active:k.value===e.value}]),onClick:h=>k.value=e.value},[s("span",null,a(e.label),1),e.count>0?(n(),v("span",Q,a(e.count),1)):p("",!0)],10,P)),64))]),U((n(),v("div",W,[(n(!0),v($,null,N(E.value,e=>(n(),v("div",{key:e._id,class:z(["order-card",e.status])},[s("div",X,[s("span",Y,a(e.orderNumber||e.order_number),1),C(i,{type:S(e.status),size:"small"},{default:c(()=>[r(a(I(e.status)),1)]),_:2},1032,["type"])]),s("div",{class:"order-body",onClick:h=>x(e)},[s("div",ss,[t[2]||(t[2]=s("span",{class:"icon"},"🛵",-1)),s("div",ts,[s("h4",null,a(e.vehicle?.model||"电动车"),1),s("p",null,a(e.vehicle?.color||"")+" · "+a(e.vehicle?.vehicleId||""),1)])]),s("div",es,[s("p",null,[t[3]||(t[3]=s("span",{class:"label"},"租车时间",-1)),r(" "+a(m(e.startDate)),1)]),s("p",null,[t[4]||(t[4]=s("span",{class:"label"},"预计还车",-1)),r(" "+a(m(e.endDate)),1)])])],8,Z),s("div",ls,[s("div",as,[t[5]||(t[5]=s("span",{class:"label"},"应付",-1)),s("span",os,"¥"+a(e.totalAmount||0),1)]),s("div",ns,[e.status==="待支付"?(n(),y(f,{key:0,type:"primary",size:"small",onClick:h=>F(e)},{default:c(()=>[...t[6]||(t[6]=[r(" 去支付 ",-1)])]),_:1},8,["onClick"])):p("",!0),e.status==="进行中"?(n(),y(f,{key:1,type:"warning",size:"small",onClick:h=>R()},{default:c(()=>[...t[7]||(t[7]=[r(" 续租 ",-1)])]),_:1},8,["onClick"])):p("",!0),e.status==="进行中"?(n(),y(f,{key:2,size:"small",onClick:h=>T(e)},{default:c(()=>[...t[8]||(t[8]=[r(" 还车 ",-1)])]),_:1},8,["onClick"])):p("",!0),e.status==="已完成"?(n(),y(f,{key:3,size:"small",onClick:h=>A(e)},{default:c(()=>[...t[9]||(t[9]=[r(" 再租一辆 ",-1)])]),_:1},8,["onClick"])):p("",!0)])])],2))),128)),!g.value&&E.value.length===0?(n(),y(B,{key:0,description:"暂无订单"},{default:c(()=>[C(f,{type:"primary",onClick:t[0]||(t[0]=e=>l.$router.push("/vehicles"))},{default:c(()=>[...t[10]||(t[10]=[r("去租车",-1)])]),_:1})]),_:1})):p("",!0)])),[[L,g.value]]),C(q,{modelValue:D.value,"onUpdate:modelValue":t[1]||(t[1]=e=>D.value=e),title:"订单详情",width:"90%",center:""},{default:c(()=>[o.value?(n(),v("div",is,[s("div",us,[t[14]||(t[14]=s("h4",null,"车辆信息",-1)),s("div",ds,[t[11]||(t[11]=s("span",{class:"label"},"车型",-1)),s("span",cs,a(o.value.vehicle?.model),1)]),s("div",rs,[t[12]||(t[12]=s("span",{class:"label"},"颜色",-1)),s("span",vs,a(o.value.vehicle?.color),1)]),s("div",ps,[t[13]||(t[13]=s("span",{class:"label"},"车牌",-1)),s("span",_s,a(o.value.vehicle?.vehicleId),1)])]),s("div",ms,[t[19]||(t[19]=s("h4",null,"订单信息",-1)),s("div",fs,[t[15]||(t[15]=s("span",{class:"label"},"订单号",-1)),s("span",hs,a(o.value.orderNumber),1)]),s("div",ys,[t[16]||(t[16]=s("span",{class:"label"},"租车时间",-1)),s("span",bs,a(m(o.value.startDate)),1)]),s("div",gs,[t[17]||(t[17]=s("span",{class:"label"},"预计还车",-1)),s("span",ks,a(m(o.value.endDate)),1)]),s("div",ws,[t[18]||(t[18]=s("span",{class:"label"},"实际还车",-1)),s("span",Ds,a(o.value.actualEndDate?m(o.value.actualEndDate):"-"),1)])]),s("div",Cs,[t[24]||(t[24]=s("h4",null,"费用信息",-1)),s("div",Os,[t[20]||(t[20]=s("span",{class:"label"},"日租金",-1)),s("span",Es,"¥"+a(o.value.rentalFee),1)]),s("div",$s,[t[21]||(t[21]=s("span",{class:"label"},"押金",-1)),s("span",Ns,"¥"+a(o.value.deposit),1)]),s("div",zs,[t[22]||(t[22]=s("span",{class:"label"},"逾期费用",-1)),s("span",Is,"¥"+a(o.value.overdueFee||0),1)]),s("div",Ss,[t[23]||(t[23]=s("span",{class:"label"},"合计",-1)),s("span",Vs,"¥"+a(o.value.totalAmount),1)])])])):p("",!0)]),_:1},8,["modelValue"])])}}},As=M(xs,[["__scopeId","data-v-d086cb51"]]);export{As as default};
|