2 lines
7.9 KiB
JavaScript
2 lines
7.9 KiB
JavaScript
import{_ as L,h as G,o,c as i,a as e,t as n,F as V,j as C,l as J,k as f,w as m,v as y,b as B,d as x,i as D,r as v,m as g,g as M,n as K,q as S}from"./index-D6NGLDyM.js";import{v as h,a as O}from"./api-r_HoetOt.js";import"./index-42ANG6Sg.js";const P={class:"page"},Q={class:"page-header"},W={class:"header-row"},X={class:"list-wrap"},Y={key:0,class:"loading"},Z={key:1,class:"empty"},ee={key:2,class:"stats-bar"},le={class:"stat-item"},se={class:"stat-num"},te={class:"stat-item"},ae={class:"stat-num idle"},oe={class:"stat-item"},ne={class:"stat-num rented"},ie={class:"card-header"},de={class:"plate-row"},re={class:"plate-number"},ue={class:"card-body"},ve={class:"info-row"},ce={class:"info-group"},pe={class:"info-value"},be={class:"info-group"},fe={class:"info-value"},me={class:"info-row"},ye={class:"info-group"},ge={class:"info-value"},he={class:"info-group"},_e={class:"info-value"},ke={key:0,class:"info-row"},we={class:"info-group full"},Te={class:"info-value"},Ne={class:"card-footer"},Ve={class:"footer-hint"},Ce={class:"action-btns"},Be=["onClick"],xe=["onClick"],De={class:"dialog"},Me={class:"dialog-title"},Se={class:"dialog-body"},$e={class:"form-item"},Ue={class:"form-item"},Ae={class:"form-item"},Ie={class:"form-item"},Re={class:"form-item"},je={class:"form-item"},He={__name:"Vehicles",setup(qe){const d=v([]),_=v(!0),p=v(!1),r=v(null),a=v({frameNumber:"",plateNumber:"",brand:"",vehicleType:"",color:"",batteryType:""}),u=v([]),$=g(()=>d.value.filter(t=>!t.isRented).length),U=g(()=>d.value.filter(t=>t.isRented).length),A=g(()=>[...new Set(u.value.map(l=>l.brand).filter(Boolean))]),I=g(()=>a.value.brand?u.value.filter(t=>t.brand===a.value.brand):[]),R=()=>{a.value.vehicleType=""},j=t=>{if(!t)return"-";const l=new Date(t);return`${l.getMonth()+1}/${l.getDate()} ${String(l.getHours()).padStart(2,"0")}:${String(l.getMinutes()).padStart(2,"0")}`},k=localStorage.getItem("storeId")||"demo-store",w=async()=>{_.value=!0;try{const t=await h.list({storeId:k});d.value=t.data.data||t.data||[]}catch{d.value=[]}_.value=!1},T=async()=>{try{const t=await O.list({storeId:k});u.value=t.data.data||t.data||[]}catch{u.value=[]}},H=()=>{r.value=null,a.value={frameNumber:"",plateNumber:"",brand:"",vehicleType:"",color:"",batteryType:""},u.value.length===0&&T(),p.value=!0},q=t=>{r.value=t._id,a.value={frameNumber:t.frameNumber||"",plateNumber:t.plateNumber||"",brand:"",vehicleType:t.vehicleType||"",color:t.color||"",batteryType:t.batteryType||""};const l=b=>{const c=b.find(s=>s.name===t.vehicleType);c&&(a.value.brand=c.brand)};u.value.length===0?T().then(l):l(u.value),p.value=!0},z=async()=>{if(!a.value.frameNumber){alert("请填写车架号");return}try{r.value?await h.update(r.value,a.value):await h.create({...a.value,storeId:k}),N(),w()}catch{alert(r.value?"更新失败":"添加失败")}},N=()=>{p.value=!1,r.value=null,a.value={frameNumber:"",plateNumber:"",brand:"",vehicleType:"",color:"",batteryType:""}},E=async t=>{if(confirm("确定删除该车辆?"))try{await h.delete(t),w()}catch{alert("删除失败")}};return G(()=>{w(),T()}),(t,l)=>{const b=M("el-option"),c=M("el-select");return o(),i("div",P,[e("div",Q,[e("div",W,[e("button",{class:"btn-back",onClick:l[0]||(l[0]=s=>t.$router.back())},[...l[7]||(l[7]=[e("span",{class:"back-arrow"},"‹",-1)])]),l[8]||(l[8]=e("div",{class:"page-title"},"车辆管理",-1)),e("button",{class:"btn-add-inline",onClick:H},"+ 新增")])]),e("div",X,[_.value?(o(),i("div",Y,[...l[9]||(l[9]=[e("div",{class:"loading-ring"},null,-1)])])):d.value.length===0?(o(),i("div",Z,[...l[10]||(l[10]=[e("div",{class:"empty-icon"},"🏍️",-1),e("div",{class:"empty-text"},"暂无车辆",-1),e("div",{class:"empty-sub"},"点击上方添加车辆",-1)])])):(o(),i("div",ee,[e("div",le,[e("span",se,n(d.value.length),1),l[11]||(l[11]=e("span",{class:"stat-label"},"全部",-1))]),l[14]||(l[14]=e("div",{class:"stat-divider"},null,-1)),e("div",te,[e("span",ae,n($.value),1),l[12]||(l[12]=e("span",{class:"stat-label"},"空闲",-1))]),l[15]||(l[15]=e("div",{class:"stat-divider"},null,-1)),e("div",oe,[e("span",ne,n(U.value),1),l[13]||(l[13]=e("span",{class:"stat-label"},"在租",-1))])])),(o(!0),i(V,null,C(d.value,s=>(o(),i("div",{key:s._id,class:"vehicle-card"},[e("div",ie,[e("div",de,[l[16]||(l[16]=e("div",{class:"plate-icon"},"🛵",-1)),e("div",re,n(s.plateNumber||"未上牌"),1)]),e("div",{class:K(["status-badge",s.isRented?"badge-rented":"badge-idle"])},[l[17]||(l[17]=e("span",{class:"badge-dot"},null,-1)),f(" "+n(s.isRented?"在租":"空闲"),1)],2)]),e("div",ue,[e("div",ve,[e("div",ce,[l[18]||(l[18]=e("span",{class:"info-label"},"车架号",-1)),e("span",pe,n(s.frameNumber||"-"),1)]),e("div",be,[l[19]||(l[19]=e("span",{class:"info-label"},"品牌",-1)),e("span",fe,n(s.brand||"-"),1)])]),e("div",me,[e("div",ye,[l[20]||(l[20]=e("span",{class:"info-label"},"车型",-1)),e("span",ge,n(s.vehicleType||"-"),1)]),e("div",he,[l[21]||(l[21]=e("span",{class:"info-label"},"颜色",-1)),e("span",_e,n(s.color||"-"),1)])]),s.batteryType?(o(),i("div",ke,[e("div",we,[l[22]||(l[22]=e("span",{class:"info-label"},"电池",-1)),e("span",Te,n(s.batteryType),1)])])):D("",!0)]),e("div",Ne,[e("div",Ve,"最后更新:"+n(j(s.updatedAt)),1),e("div",Ce,[e("button",{class:"btn-action btn-edit",onClick:F=>q(s)},[...l[23]||(l[23]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1),f(" 编辑 ",-1)])],8,Be),e("button",{class:"btn-action btn-del",onClick:F=>E(s._id)},[...l[24]||(l[24]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"3 6 5 6 21 6"}),e("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})],-1),f(" 删除 ",-1)])],8,xe)])])]))),128))]),p.value?(o(),i("div",{key:0,class:"dialog-overlay",onClick:J(N,["self"])},[e("div",De,[l[31]||(l[31]=e("div",{class:"dialog-handle"},null,-1)),e("div",Me,n(r.value?"编辑车辆":"添加车辆"),1),e("div",Se,[e("div",$e,[l[25]||(l[25]=e("label",null,[f("车架号 "),e("span",{class:"required"},"*")],-1)),m(e("input",{"onUpdate:modelValue":l[1]||(l[1]=s=>a.value.frameNumber=s),placeholder:"请输入车架号"},null,512),[[y,a.value.frameNumber]])]),e("div",Ue,[l[26]||(l[26]=e("label",null,"车牌号",-1)),m(e("input",{"onUpdate:modelValue":l[2]||(l[2]=s=>a.value.plateNumber=s),placeholder:"如:京A12345"},null,512),[[y,a.value.plateNumber]])]),e("div",Ae,[l[27]||(l[27]=e("label",null,"品牌",-1)),B(c,{modelValue:a.value.brand,"onUpdate:modelValue":l[3]||(l[3]=s=>a.value.brand=s),placeholder:"请选择品牌",style:{width:"100%"},onChange:R},{default:x(()=>[(o(!0),i(V,null,C(A.value,s=>(o(),S(b,{key:s,label:s,value:s},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),e("div",Ie,[l[28]||(l[28]=e("label",null,"车型",-1)),B(c,{modelValue:a.value.vehicleType,"onUpdate:modelValue":l[4]||(l[4]=s=>a.value.vehicleType=s),placeholder:"请先选择品牌",style:{width:"100%"},disabled:!a.value.brand},{default:x(()=>[(o(!0),i(V,null,C(I.value,s=>(o(),S(b,{key:s._id,label:s.name,value:s.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled"])]),e("div",Re,[l[29]||(l[29]=e("label",null,"颜色",-1)),m(e("input",{"onUpdate:modelValue":l[5]||(l[5]=s=>a.value.color=s),placeholder:"如:黑色、白色"},null,512),[[y,a.value.color]])]),e("div",je,[l[30]||(l[30]=e("label",null,"电池类型",-1)),m(e("input",{"onUpdate:modelValue":l[6]||(l[6]=s=>a.value.batteryType=s),placeholder:"如:铅酸电池、锂电池"},null,512),[[y,a.value.batteryType]])])]),e("div",{class:"dialog-footer"},[e("button",{class:"btn-cancel",onClick:N},"取消"),e("button",{class:"btn-confirm",onClick:z},"确定")])])])):D("",!0)])}}},Le=L(He,[["__scopeId","data-v-be6656ba"]]);export{Le as default};
|