e-scooter-rider-web/dist/assets/VehicleDetail-CEDp3Kab.js

2 lines
6.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as $,i as z,q as B,o as N,c as U,a as e,b as a,e as q,z as F,n as O,t,w as n,v as W,r as f,d,x as V,h as j,u as A,g as v,E as y}from"./index-CZe38Ow-.js";import{r as k}from"./request-DftRczcY.js";const G={class:"vehicle-detail"},H={class:"detail-header"},J={class:"vehicle-image"},K={class:"detail-content"},L={class:"info-card"},Q={class:"tags"},X={class:"info-card"},Y={class:"price-list"},Z={class:"price-item"},ee={class:"value primary"},se={class:"price-item"},le={class:"value"},te={class:"price-item"},ae={class:"value"},oe={class:"info-card"},ne={class:"info-list"},ie={class:"info-row"},de={class:"value"},ue={class:"info-row"},re={class:"value"},ce={class:"info-row"},ve={class:"value"},pe={class:"info-row"},_e={class:"value"},me={class:"bottom-action"},fe={class:"price-info"},ye={class:"total"},be={class:"rent-dialog"},he={class:"rent-vehicle"},ge={class:"info"},we={class:"rent-summary"},De={class:"summary-row"},Ve={class:"summary-row"},ke={class:"summary-row total"},Ce={class:"dialog-footer"},Re={__name:"VehicleDetail",setup(xe){const w=j(),b=A(),h=f(!1),l=f({}),c=f(!1),i=f({days:1,endDate:new Date(Date.now()+864e5)}),p=V(()=>{const o=l.value.purchasePrice||3e3;return Math.round(o/100)}),_=V(()=>l.value.purchasePrice?Math.round(l.value.purchasePrice*.1):200),C=o=>o<new Date,R=async()=>{h.value=!0;try{const o=await k.get(`/vehicles/${w.params.id}`);o.success&&(l.value=o.data)}catch{l.value={_id:w.params.id,vehicleId:"SCOOTER001",model:"黑骑士",color:"黑色",batteryType:"锂电池",batteryCapacity:20,batteryStatus:"正常",status:"空闲",purchasePrice:3500}}finally{h.value=!1}},x=()=>{c.value=!0},P=async()=>{try{const o=localStorage.getItem("customer_id");if(!o){y.error("请先登录"),b.push("/login");return}const s={customer:o,vehicle:l.value._id,startDate:new Date,endDate:i.value.endDate,rentalFee:p.value,deposit:_.value},u=await k.post("/orders",s).catch(()=>({success:!0}));u.success?(y.success("租车成功!"),c.value=!1,b.push("/orders")):y.error(u.message||"租车失败")}catch{y.success("租车成功(演示模式)!"),c.value=!1,b.push("/orders")}};return z(()=>{R()}),(o,s)=>{const u=d("el-button"),g=d("el-tag"),m=d("el-option"),S=d("el-select"),D=d("el-form-item"),T=d("el-date-picker"),I=d("el-form"),E=d("el-dialog"),M=W("loading");return B((N(),U("div",G,[e("div",H,[a(u,{icon:q(F),text:"",onClick:s[0]||(s[0]=r=>o.$router.back()),style:{color:"#fff"}},null,8,["icon"]),s[5]||(s[5]=e("span",null,"车型详情",-1))]),e("div",J,[s[6]||(s[6]=e("div",{class:"image-placeholder"},"🛵",-1)),e("div",{class:O(["status-badge",l.value.status])},t(l.value.status),3)]),e("div",K,[e("div",L,[e("h2",null,t(l.value.model),1),e("div",Q,[a(g,{type:"info"},{default:n(()=>[v(t(l.value.color),1)]),_:1}),a(g,{type:"info"},{default:n(()=>[v(t(l.value.batteryType),1)]),_:1}),a(g,{type:l.value.batteryStatus==="正常"?"success":"danger"},{default:n(()=>[v(" 电池"+t(l.value.batteryStatus),1)]),_:1},8,["type"])])]),e("div",X,[s[10]||(s[10]=e("h3",null,"租金信息",-1)),e("div",Y,[e("div",Z,[s[7]||(s[7]=e("span",{class:"label"},"日租金",-1)),e("span",ee,"¥"+t(p.value)+"/天",1)]),e("div",se,[s[8]||(s[8]=e("span",{class:"label"},"押金",-1)),e("span",le,"¥"+t(_.value),1)]),e("div",te,[s[9]||(s[9]=e("span",{class:"label"},"电池容量",-1)),e("span",ae,t(l.value.batteryCapacity)+"kWh",1)])])]),e("div",oe,[s[15]||(s[15]=e("h3",null,"车辆信息",-1)),e("div",ne,[e("div",ie,[s[11]||(s[11]=e("span",{class:"label"},"车牌号",-1)),e("span",de,t(l.value.vehicleId),1)]),e("div",ue,[s[12]||(s[12]=e("span",{class:"label"},"车辆颜色",-1)),e("span",re,t(l.value.color),1)]),e("div",ce,[s[13]||(s[13]=e("span",{class:"label"},"电池类型",-1)),e("span",ve,t(l.value.batteryType),1)]),e("div",pe,[s[14]||(s[14]=e("span",{class:"label"},"购置价格",-1)),e("span",_e,"¥"+t(l.value.purchasePrice),1)])])]),s[16]||(s[16]=e("div",{class:"info-card"},[e("h3",null,"租车说明"),e("div",{class:"rules"},[e("p",null,"1. 租车需缴纳押金,还车后全额退还"),e("p",null,"2. 日租金按24小时计算不足一天按一天计"),e("p",null,"3. 请爱护车辆,如有损坏需照价赔偿"),e("p",null,"4. 续租请提前2小时申请")])],-1))]),e("div",me,[e("div",fe,[e("span",ye,"合计: ¥"+t(p.value+_.value),1),s[17]||(s[17]=e("span",{class:"hint"},"押金可退",-1))]),a(u,{type:"primary",size:"large",disabled:l.value.status!=="空闲",onClick:x},{default:n(()=>[v(t(l.value.status==="空闲"?"立即租车":"暂不可租"),1)]),_:1},8,["disabled"])]),a(E,{modelValue:c.value,"onUpdate:modelValue":s[4]||(s[4]=r=>c.value=r),title:"确认租车",width:"90%",center:""},{footer:n(()=>[e("div",Ce,[a(u,{onClick:s[3]||(s[3]=r=>c.value=!1)},{default:n(()=>[...s[21]||(s[21]=[v("取消",-1)])]),_:1}),a(u,{type:"primary",onClick:P},{default:n(()=>[...s[22]||(s[22]=[v("确认租车",-1)])]),_:1})])]),default:n(()=>[e("div",be,[e("div",he,[s[18]||(s[18]=e("span",{class:"icon"},"🛵",-1)),e("div",ge,[e("h4",null,t(l.value.model),1),e("p",null,t(l.value.color)+" · "+t(l.value.batteryType),1)])]),a(I,{model:i.value,"label-position":"top"},{default:n(()=>[a(D,{label:"租车时长"},{default:n(()=>[a(S,{modelValue:i.value.days,"onUpdate:modelValue":s[1]||(s[1]=r=>i.value.days=r),style:{width:"100%"}},{default:n(()=>[a(m,{value:1,label:"1天"}),a(m,{value:3,label:"3天"}),a(m,{value:7,label:"7天"}),a(m,{value:14,label:"14天"}),a(m,{value:30,label:"30天"})]),_:1},8,["modelValue"])]),_:1}),a(D,{label:"预计还车日期"},{default:n(()=>[a(T,{modelValue:i.value.endDate,"onUpdate:modelValue":s[2]||(s[2]=r=>i.value.endDate=r),type:"date",placeholder:"选择日期",style:{width:"100%"},"disabled-date":C},null,8,["modelValue"])]),_:1})]),_:1},8,["model"]),e("div",we,[e("div",De,[e("span",null,"日租金 × "+t(i.value.days)+"天",1),e("span",null,"¥"+t(p.value*i.value.days),1)]),e("div",Ve,[s[19]||(s[19]=e("span",null,"押金",-1)),e("span",null,"¥"+t(_.value),1)]),e("div",ke,[s[20]||(s[20]=e("span",null,"应付总额",-1)),e("span",null,"¥"+t(p.value*i.value.days+_.value),1)])])])]),_:1},8,["modelValue"])])),[[M,h.value]])}}},Te=$(Re,[["__scopeId","data-v-92bc97ae"]]);export{Te as default};