petstore-frontend/dist/build/h5/assets/pages-home-Home.Ddvq7wQe.js
2026-04-12 22:57:48 +08:00

2 lines
8.5 KiB
JavaScript

import{m as e,n as a,p as l,r as t,q as s,u as n,c as i,b as o,d as c,w as u,v as d,x as p,F as r,y as v,e as m,z as f,j as g,f as _,g as y,A as T,h as k,i as h,B as b,t as C,C as w,I as N,D as $,E as x,G as j,H as I}from"./index-DrZc8biM.js";import{g as V,b as B,c as z,d as A,e as H}from"./index.DsJtDI4O.js";import{T as M,u as U}from"./useNavigator.BKsocaY0.js";import{A as q}from"./AppIcon.M7CZvvJr.js";import{f as D}from"./datetime.CB5sbvg8.js";import{g as E,a as F}from"./appointment.SHi7qFlK.js";import{_ as G}from"./_plugin-vue_export-helper.2L545UbL.js";const J=G({__name:"Home",emits:["change-page"],setup(G,{emit:J}){const O=e(),P=a();O.id;const{goPage:R,navigateTo:S}=U(),K=(()=>{var e,a;const t=(null==(e=l)?void 0:e().statusBarHeight)||20;let s=t+44;const n=null==(a=uni.getMenuButtonBoundingClientRect)?void 0:a.call(uni);if(n&&n.top&&n.height){s=t+2*Math.max(n.top-t,4)+n.height}return`padding-top:${t}px;height:${s}px;`})(),L=t("new"),Q=[{title:"待确认",name:"new"},{title:"进行中",name:"doing"},{title:"已完成",name:"done"}],W=t([]),X=t([]),Y=t(!1),Z=t(!1),ee=[{label:"猫",value:"猫"},{label:"狗",value:"狗"},{label:"其他",value:"其他"}],ae=t({petName:"",petType:"",serviceType:"",appointmentTime:"",remark:""}),le=s(()=>{const e=ae.value.appointmentTime||"";return e.includes("T")?e.split("T")[0]:""}),te=s(()=>{const e=ae.value.appointmentTime||"";return e.includes("T")?(e.split("T")[1]||"").slice(0,5):""}),se=s(()=>W.value.filter(e=>"new"===L.value?"new"===e.status:"doing"===L.value?"doing"===e.status:"done"!==L.value||("done"===e.status||"cancel"===e.status))),ne=e=>{var a;const l=(null==(a=null==e?void 0:e.detail)?void 0:a.value)||"",t=te.value||"00:00";ae.value.appointmentTime=l?`${l}T${t}`:""},ie=e=>{var a;const l=(null==(a=null==e?void 0:e.detail)?void 0:a.value)||"",t=le.value;t?ae.value.appointmentTime=`${t}T${l}`:g({title:"请先选择日期",icon:"none"})},oe=async()=>{if(!P.id)return;const e=await V(null,P.id);if(200===e.code){W.value=e.data.map(e=>({id:e.id,title:e.serviceType||"洗澡美容预约",desc:`${e.petType||""} - ${e.petName||""}`,time:D(e.appointmentTime),status:e.status||"new",statusText:E(e.status),petName:e.petName,petType:e.petType,serviceType:e.serviceType,appointmentTime:e.appointmentTime}));const a=W.value.filter(e=>"new"===e.status).length;a>0&&g({title:`${a} 个待确认预约`,icon:"none"})}},ce=async()=>{const e=ae.value;if(!e.petName)return void g({title:"请输入宠物名字",icon:"none"});if(!e.petType)return void g({title:"请选择宠物类型",icon:"none"});if(!e.serviceType)return void g({title:"请选择服务类型",icon:"none"});if(!e.appointmentTime)return void g({title:"请选择预约时间",icon:"none"});Z.value=!0;const a=await H({...e,storeId:P.id,userId:O.id});Z.value=!1,200===a.code?(g({title:"预约创建成功",icon:"success"}),ae.value={petName:"",petType:"",serviceType:"",appointmentTime:"",remark:""},Y.value=!1,oe()):g({title:a.message||"创建失败",icon:"none"})};return n(()=>{oe(),(async()=>{if(!P.id)return;const e=await B(P.id);200===e.code&&(X.value=e.data.map(e=>({label:e.name,value:e.name})))})()}),(e,a)=>{const l=T,t=h,s=_,n=N,V=$,B=x;return y(),i(r,null,[o("div",{class:"page-shell home-page"},[c(s,{class:"home-nav nav-gradient",style:d(p(K))},{default:u(()=>[c(l,{class:"nav-title"},{default:u(()=>[k("宠伴生活馆")]),_:1}),c(t,{class:"btn-primary",onClick:a[0]||(a[0]=e=>Y.value=!0)},{default:u(()=>[k("新建预约")]),_:1})]),_:1},8,["style"]),c(s,{class:"page-section home-hero"},{default:u(()=>[c(s,{class:"hero-title"},{default:u(()=>[k("今日服务看板")]),_:1}),c(s,{class:"hero-sub"},{default:u(()=>[k("待确认、进行中、已完成实时同步,支持一键开始服务与快速填报。")]),_:1})]),_:1}),c(s,{class:"page-section custom-tabs"},{default:u(()=>[(y(),i(r,null,v(Q,e=>c(s,{key:e.name,class:b(["tab-item",{active:L.value===e.name}]),onClick:a=>L.value=e.name},{default:u(()=>[k(C(e.title),1)]),_:2},1032,["class","onClick"])),64))]),_:1}),o("div",{class:"page-section list-content"},[se.value.length>0?(y(),i("div",{key:0,class:"timeline"},[(y(!0),i(r,null,v(se.value,e=>{return y(),i("div",{key:e.id,class:"timeline-item"},[o("div",{class:b(["timeline-dot",`dot-${e.status}`])},[o("span",{class:"dot-inner"})],2),o("div",{class:"timeline-line"}),o("div",{class:b(["order-card",`card-${e.status}`])},[o("div",{class:"card-header"},[o("div",{class:"pet-info"},[o("span",{class:"pet-emoji"},[c(q,{name:"profile",size:14})]),o("span",{class:"pet-name"},C(e.petName),1)]),c(s,{class:b((a=e.status,F(a)))},{default:u(()=>[k(C(e.statusText),1)]),_:2},1032,["class"])]),o("div",{class:"service-row"},[o("span",{class:b(["service-tag",`tag-${e.status}`])},C(e.serviceType),3)]),o("div",{class:"card-body"},[o("div",{class:"card-time"},[c(q,{name:"orders",size:13}),k(C(e.time),1)])]),o("div",{class:"card-footer"},["new"===e.status?(y(),i("div",{key:0,class:"action-btns"},[c(t,{class:"btn-primary",onClick:a=>(async e=>{const a=await z(e.id,O.id);200===a.code?(g({title:"已开始服务",icon:"success"}),oe()):g({title:a.message||"操作失败",icon:"none"})})(e)},{default:u(()=>[k("开始服务")]),_:2},1032,["onClick"]),c(t,{class:"btn-secondary",onClick:a=>(async e=>{j({title:"提示",content:"确定取消该预约?",success:async a=>{if(!a.confirm)return;const l=await A(e.id);200===l.code?(g({title:"已取消",icon:"success"}),oe()):g({title:l.message||"操作失败",icon:"none"})}})})(e)},{default:u(()=>[k("取消")]),_:2},1032,["onClick"])])):"doing"===e.status?(y(),f(t,{key:1,class:"btn-secondary",onClick:a=>(e=>{S("report"),I("petstore_report_prefill",JSON.stringify({appointmentId:e.id,petName:e.petName,serviceType:e.serviceType,appointmentTime:e.appointmentTime}))})(e)},{default:u(()=>[k("填写报告")]),_:2},1032,["onClick"])):(y(),i("span",{key:2,class:"done-label"},C("cancel"===e.status?"已取消":"已完成"),1))])],2)]);var a}),128))])):m("",!0),0===se.value.length?(y(),f(s,{key:1,class:"empty"},{default:u(()=>[c(l,null,{default:u(()=>[k("暂无数据")]),_:1})]),_:1})):m("",!0)]),Y.value?(y(),f(s,{key:0,class:"popup-mask",onClick:a[8]||(a[8]=e=>Y.value=!1)},{default:u(()=>[c(s,{class:"popup-content",onClick:a[7]||(a[7]=w(()=>{},["stop"]))},{default:u(()=>[c(s,{class:"popup-header"},{default:u(()=>[c(l,{class:"popup-title"},{default:u(()=>[k("新建预约")]),_:1}),c(l,{class:"popup-close",onClick:a[1]||(a[1]=e=>Y.value=!1)},{default:u(()=>[k("✕")]),_:1})]),_:1}),c(s,{class:"popup-body"},{default:u(()=>[c(s,{class:"popup-desc"},{default:u(()=>[k("填写基础信息后即可创建预约,后续可在列表中继续处理。")]),_:1}),c(s,{class:"field-label"},{default:u(()=>[k("宠物名字")]),_:1}),c(n,{modelValue:ae.value.petName,"onUpdate:modelValue":a[2]||(a[2]=e=>ae.value.petName=e),class:"van-field",placeholder:"请输入"},null,8,["modelValue"]),c(s,{class:"field-label"},{default:u(()=>[k("宠物类型")]),_:1}),c(V,{mode:"selector",range:ee,"range-key":"label",onChange:a[3]||(a[3]=e=>ae.value.petType=ee[e.detail.value].value)},{default:u(()=>[c(s,{class:"van-field picker-field"},{default:u(()=>[k(C(ae.value.petType||"请选择"),1)]),_:1})]),_:1}),c(s,{class:"field-label"},{default:u(()=>[k("服务类型")]),_:1}),c(V,{mode:"selector",range:X.value,"range-key":"label",onChange:a[4]||(a[4]=e=>ae.value.serviceType=X.value[e.detail.value].value)},{default:u(()=>[c(s,{class:"van-field picker-field"},{default:u(()=>[k(C(ae.value.serviceType||"请选择"),1)]),_:1})]),_:1},8,["range"]),c(s,{class:"field-label"},{default:u(()=>[k("预约日期")]),_:1}),c(V,{mode:"date",value:le.value,onChange:ne},{default:u(()=>[c(s,{class:"van-field picker-field"},{default:u(()=>[k(C(le.value||"请选择日期"),1)]),_:1})]),_:1},8,["value"]),c(s,{class:"field-label"},{default:u(()=>[k("预约时间")]),_:1}),c(V,{mode:"time",value:te.value,onChange:ie},{default:u(()=>[c(s,{class:"van-field picker-field"},{default:u(()=>[k(C(te.value||"请选择时间"),1)]),_:1})]),_:1},8,["value"]),c(s,{class:"field-label"},{default:u(()=>[k("备注(可选)")]),_:1}),c(B,{modelValue:ae.value.remark,"onUpdate:modelValue":a[5]||(a[5]=e=>ae.value.remark=e),class:"van-field remark-textarea",placeholder:"可选"},null,8,["modelValue"])]),_:1}),c(s,{class:"popup-footer"},{default:u(()=>[c(s,{class:"popup-actions"},{default:u(()=>[c(t,{class:"btn-ghost",onClick:a[6]||(a[6]=e=>Y.value=!1)},{default:u(()=>[k("取消")]),_:1}),c(t,{class:"btn-block",loading:Z.value,onClick:ce},{default:u(()=>[k("确认创建")]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1})):m("",!0)]),c(M,{"current-page":"home",onChange:p(R)},null,8,["onChange"])],64)}}},[["__scopeId","data-v-dbe01c7d"]]);export{J as default};