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