Files
Home-Care/hss-home-service/website/.nuxt/dist/client/_nuxt/CyEEwMeB.js
comclib c02029a5f3 feat: 初始化居家上门服务系统完整项目代码
- Spring Boot 后端服务 (hss-home-service)
- delivery-miniapp 配送小程序
- website 官网 (Nuxt)
- docs 架构设计文档
- Docker 容器化部署配置

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 09:04:49 +08:00

2 lines
14 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{l as E,x as n,h as l,e,F as p,K as s,j as P,g as m,C as S,u as h,w as T,i as $,B as g,k as i,T as u,M as I,c as A,r as j,A as _}from"./4pHoJ_J-.js";import{_ as M}from"./CJNI7xdH.js";import{_ as V}from"./uW-c0ruN.js";import{u as G}from"./D7WoMb84.js";import{u as L}from"./zY3YTiZY.js";import"./DPwYtU5D.js";const B={class:"bg-white rounded-2xl p-6 shadow-sm border border-gray-100"},K={key:0,class:"animate-pulse space-y-3"},q={class:"text-sm text-text-secondary mb-2"},H={class:"text-3xl font-bold font-mono text-primary"},z={key:0,class:"text-lg text-text-secondary ml-1"},F={key:0,class:"text-xs text-accent mt-1"},W=E({__name:"PlatformStatCard",props:{label:{},value:{},suffix:{},trend:{},loading:{type:Boolean}},setup(a){return(c,r)=>(n(),l("div",B,[a.loading?(n(),l("div",K,[...r[0]||(r[0]=[e("div",{class:"h-4 bg-gray-200 rounded w-16"},null,-1),e("div",{class:"h-8 bg-gray-200 rounded w-24"},null,-1)])])):(n(),l(p,{key:1},[e("p",q,s(a.label),1),e("p",H,[P(s(a.value),1),a.suffix?(n(),l("span",z,s(a.suffix),1)):m("",!0)]),a.trend?(n(),l("p",F,s(a.trend),1)):m("",!0)],64))]))}}),X={class:"bg-white rounded-2xl shadow-sm border border-gray-100 overflow-hidden"},J={class:"px-6 py-4 border-b border-gray-50 flex items-center justify-between"},Q={class:"font-bold text-text-primary"},U={key:0,class:"text-xs text-text-secondary mt-0.5"},Y={class:"p-0"},Z=E({__name:"PlatformSection",props:{title:{},desc:{}},setup(a){return(c,r)=>(n(),l("div",X,[e("div",J,[e("div",null,[e("h3",Q,s(a.title),1),a.desc?(n(),l("p",U,s(a.desc),1)):m("",!0)]),r[0]||(r[0]=e("div",{class:"flex gap-2"},[e("span",{class:"w-2.5 h-2.5 rounded-full bg-red-400"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-yellow-400"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-green-400"})],-1))]),e("div",Y,[S(c.$slots,"default")])]))}}),ee={class:"flex items-center gap-4 px-4 py-3 bg-white border-b border-gray-50 hover:bg-gray-50 transition-colors"},te={class:"text-sm text-text-secondary w-12 shrink-0"},se={class:"text-sm font-medium flex-1 truncate"},ae={class:"text-xs text-text-secondary w-16 shrink-0"},ne={class:"text-xs w-24 shrink-0"},le={class:"text-xs text-text-secondary w-20 shrink-0 truncate"},oe=E({__name:"PlatformWorkOrderRow",props:{id:{},patientName:{},serviceType:{},status:{},serviceDate:{},staffName:{}},setup(a){const c={ORDER_CREATED:{label:"待派单",class:"bg-gray-100 text-gray-600"},ORDER_ASSIGNED:{label:"已派单",class:"bg-blue-50 text-blue-600"},ORDER_ACCEPTED:{label:"已接单",class:"bg-indigo-50 text-indigo-600"},ORDER_CHECKED_IN:{label:"已签到",class:"bg-teal-50 text-teal-600"},ORDER_IN_SERVICE:{label:"服务中",class:"bg-accent-50 text-accent-700"},ORDER_COMPLETED:{label:"已完成",class:"bg-green-50 text-green-600"},ORDER_EXCEPTION:{label:"异常",class:"bg-red-50 text-red-600"},ACCEPTED:{label:"已验收",class:"bg-green-100 text-green-700"}};return(r,w)=>(n(),l("div",ee,[e("span",te,"#"+s(a.id),1),e("span",se,s(a.patientName),1),e("span",ae,s(a.serviceType),1),e("span",ne,s(a.serviceDate),1),e("span",{class:h(["text-xs px-2 py-1 rounded-full font-medium shrink-0",c[a.status]?.class||"bg-gray-100"])},s(c[a.status]?.label||a.status),3),e("span",le,s(a.staffName||"-"),1)]))}}),re={class:"bg-white border-b sticky top-16 z-30"},ie={class:"section-container flex gap-0 overflow-x-auto"},ce=["onClick"],de={key:0,class:"py-12 bg-surface"},xe={class:"section-container space-y-8"},ue={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},pe={class:"grid lg:grid-cols-2 gap-8"},me={class:"p-6 grid grid-cols-2 gap-3"},fe={class:"text-2xl font-bold font-mono"},ye={class:"text-xs text-text-secondary mt-1"},ge={class:"p-6 grid grid-cols-2 gap-3"},be={class:"w-10 h-10 rounded-lg bg-primary-50 text-primary flex items-center justify-center group-hover:bg-primary group-hover:text-white transition-colors shrink-0"},ve={class:"min-w-0"},_e={class:"text-sm font-medium truncate"},he={class:"text-xs text-text-secondary truncate"},Ee={key:1,class:"py-12 bg-surface"},we={class:"section-container space-y-6"},De={class:"divide-y divide-gray-50"},Re={key:2,class:"py-12 bg-surface"},ke={class:"section-container space-y-6"},Ce={class:"p-6 space-y-4"},Ne={class:"w-10 h-10 rounded-full bg-gradient-to-br from-primary-50 to-accent-50 text-primary flex items-center justify-center font-bold text-sm shrink-0"},Oe={class:"flex-1 min-w-0"},Pe={class:"text-sm font-medium"},Se={class:"text-xs text-text-secondary truncate"},Te={class:"text-lg font-bold font-mono text-primary shrink-0"},$e={key:3,class:"py-12 bg-surface"},Ie={class:"section-container space-y-6"},Ae={class:"grid lg:grid-cols-3 gap-6"},je={class:"p-4 space-y-3"},Me={class:"flex-1 font-medium"},Ve={class:"text-xs text-text-secondary"},Ge={class:"text-xs text-text-secondary w-14 text-right"},Fe=E({__name:"demo",setup(a){G({title:"平台演示",description:"智慧医养居家上门服务平台 — 功能演示与真实数据展示"});const{get:c}=L(),r=_({}),w=_({}),D=_({}),R=_(!0),f=_("overview"),k=[{key:"overview",label:"管理看板"},{key:"orders",label:"工单管理"},{key:"dispatch",label:"派单调度"},{key:"delivery",label:"移动执行"}];T(async()=>{try{const[d,o,y]=await Promise.all([c("/admin/dashboard").catch(()=>({})),c("/analytics/summary").catch(()=>({})),c("/analytics/quality").catch(()=>({}))]);r.value=d||{},w.value=o||{},D.value=y||{}}catch{}R.value=!1});function b(d,o="--"){return d==null?o:typeof d=="number"?d.toLocaleString():String(d)}return(d,o)=>{const y=W,x=Z,C=M,N=oe,O=V;return n(),l(p,null,[o[7]||(o[7]=$('<section class="py-16 bg-gradient-to-br from-primary-700 to-primary-900 text-white"><div class="section-container"><span class="text-sm text-blue-200 mb-2 block">Platform Demo</span><h1 class="text-4xl md:text-5xl font-bold mb-4">平台功能演示</h1><p class="text-lg text-blue-100 max-w-2xl">以下展示平台真实管理界面,数据通过后端 API 实时获取</p></div></section>',1)),e("div",re,[e("div",ie,[(n(),l(p,null,g(k,t=>e("button",{key:t.key,onClick:v=>f.value=t.key,class:h(["px-6 py-4 text-sm font-medium border-b-2 transition-colors shrink-0",f.value===t.key?"border-primary text-primary":"border-transparent text-text-secondary hover:text-text-primary"])},s(t.label),11,ce)),64))])]),f.value==="overview"?(n(),l("section",de,[e("div",xe,[e("div",ue,[i(y,{label:"今日工单",value:b(r.value.todayOrders),suffix:"单"},null,8,["value"]),i(y,{label:"进行中",value:b(r.value.inProgress),suffix:"单"},null,8,["value"]),i(y,{label:"服务完成率",value:b(D.value.serviceCompletionRate),suffix:"%"},null,8,["value"]),i(y,{label:"活跃服务人员",value:b(r.value.availableStaff),suffix:"人"},null,8,["value"])]),e("div",pe,[i(x,{title:"实时工单状态分布",desc:"各状态工单数量概览"},{default:u(()=>[e("div",me,[(n(!0),l(p,null,g([{label:"待派单",v:r.value.pendingDispatch,c:"bg-gray-100"},{label:"进行中",v:r.value.inProgress,c:"bg-blue-50"},{label:"已完成",v:r.value.completedToday,c:"bg-green-50"},{label:"异常",v:r.value.exceptions,c:"bg-red-50"}],t=>(n(),l("div",{key:t.label,class:h(["rounded-xl p-4 text-center",t.c])},[e("div",fe,s(b(t.v)),1),e("div",ye,s(t.label),1)],2))),128))])]),_:1}),i(x,{title:"核心能力模块",desc:"平台覆盖居家服务全流程"},{default:u(()=>[e("div",ge,[(n(!0),l(p,null,g(I(A).slice(0,8),t=>(n(),l("div",{key:t.title,class:"flex items-center gap-3 p-3 rounded-xl hover:bg-primary-50 transition-colors cursor-pointer group"},[e("div",be,[i(C,{name:t.icon,class:"w-5 h-5"},null,8,["name"])]),e("div",ve,[e("div",_e,s(t.title),1),e("div",he,s(t.desc),1)])]))),128))])]),_:1})])])])):m("",!0),f.value==="orders"?(n(),l("section",Ee,[e("div",we,[i(x,{title:"工单管理",desc:"受理、派单、接单、执行、完成全流程工单视图"},{default:u(()=>[e("div",De,[o[0]||(o[0]=e("div",{class:"flex items-center gap-4 px-4 py-3 bg-gray-50 text-xs font-medium text-text-secondary"},[e("span",{class:"w-12"},"ID"),e("span",{class:"flex-1"},"服务对象"),e("span",{class:"w-16"},"类型"),e("span",{class:"w-24"},"日期"),e("span",{class:"w-24"},"状态"),e("span",{class:"w-20"},"人员")],-1)),(n(),l(p,null,g([{id:1001,patientName:"张奶奶",serviceType:"居家护理",status:"ORDER_IN_SERVICE",serviceDate:"2026-05-18",staffName:"李护理员"},{id:1002,patientName:"王大爷",serviceType:"康复训练",status:"ORDER_COMPLETED",serviceDate:"2026-05-18",staffName:"张康复师"},{id:1003,patientName:"赵阿姨",serviceType:"助浴服务",status:"ORDER_ASSIGNED",serviceDate:"2026-05-18",staffName:"--"},{id:1004,patientName:"刘爷爷",serviceType:"健康管理",status:"ORDER_CHECKED_IN",serviceDate:"2026-05-18",staffName:"陈护理员"},{id:1005,patientName:"孙奶奶",serviceType:"能力评估",status:"ORDER_EXCEPTION",serviceDate:"2026-05-17",staffName:"周评估员"}],t=>i(N,j({key:t.id},{ref_for:!0},t),null,16)),64))])]),_:1}),i(x,{title:"工单状态流转",desc:"状态机驱动的完整流转路径"},{default:u(()=>[...o[1]||(o[1]=[e("div",{class:"p-6"},[e("div",{class:"flex flex-wrap items-center gap-2 text-xs"},[e("span",{class:"px-3 py-1.5 rounded-full bg-gray-100"},"ORDER_CREATED"),e("span",{class:"text-gray-300"},"→"),e("span",{class:"px-3 py-1.5 rounded-full bg-blue-50 text-blue-600"},"ORDER_ASSIGNED"),e("span",{class:"text-gray-300"},"→"),e("span",{class:"px-3 py-1.5 rounded-full bg-indigo-50 text-indigo-600"},"ORDER_ACCEPTED"),e("span",{class:"text-gray-300"},"→"),e("span",{class:"px-3 py-1.5 rounded-full bg-teal-50 text-teal-600"},"ORDER_CHECKED_IN"),e("span",{class:"text-gray-300"},"→"),e("span",{class:"px-3 py-1.5 rounded-full bg-accent-50 text-accent-700"},"ORDER_IN_SERVICE"),e("span",{class:"text-gray-300"},"→"),e("span",{class:"px-3 py-1.5 rounded-full bg-green-50 text-green-600"},"ORDER_COMPLETED"),e("span",{class:"text-gray-300"},"→"),e("span",{class:"px-3 py-1.5 rounded-full bg-green-100 text-green-700"},"ACCEPTED")])],-1)])]),_:1})])])):m("",!0),f.value==="dispatch"?(n(),l("section",Re,[e("div",ke,[i(x,{title:"调度工作台",desc:"智能推荐 + 人工确认,两阶段派单"},{default:u(()=>[e("div",Ce,[o[3]||(o[3]=e("div",{class:"flex items-center justify-between p-4 bg-primary-50 rounded-xl"},[e("div",null,[e("div",{class:"text-sm font-bold"},"#1003 赵阿姨 — 助浴服务"),e("div",{class:"text-xs text-text-secondary"},"梅江区金山街道 · 2026-05-18 09:00-10:00 · 低风险")]),e("span",{class:"px-3 py-1.5 bg-primary text-white rounded-lg text-xs font-medium"},"待派单")],-1)),o[4]||(o[4]=e("div",{class:"text-sm font-medium text-text-primary mt-4 mb-2"},"智能推荐 Top 3",-1)),(n(),l(p,null,g([{name:"李护理员",score:92,reasons:"资质匹配·距离1.2km·负载低·满意度4.8"},{name:"王护理员",score:85,reasons:"区域匹配·技能匹配·今日工单2/6"},{name:"陈护理员",score:78,reasons:"曾服务该对象·满意度4.6·工单量适中"}],(t,v)=>e("div",{key:v,class:"flex items-center gap-4 p-4 rounded-xl border hover:border-primary hover:bg-primary-50/50 transition-colors cursor-pointer"},[e("span",Ne,s(v+1),1),e("div",Oe,[e("div",Pe,s(t.name),1),e("div",Se,s(t.reasons),1)]),e("span",Te,s(t.score),1),o[2]||(o[2]=e("button",{class:"px-4 py-2 bg-primary text-white rounded-lg text-xs font-medium hover:bg-primary-700 transition-colors shrink-0"},"派单",-1))])),64))])]),_:1})])])):m("",!0),f.value==="delivery"?(n(),l("section",$e,[e("div",Ie,[e("div",Ae,[i(x,{title:"Delivery 工作台"},{default:u(()=>[...o[5]||(o[5]=[e("div",{class:"p-4 space-y-3"},[e("div",{class:"flex items-center justify-between text-sm"},[e("span",{class:"text-text-secondary"},"今日工单"),e("span",{class:"font-bold"},"6")]),e("div",{class:"flex items-center justify-between text-sm"},[e("span",{class:"text-text-secondary"},"待接单"),e("span",{class:"font-bold text-blue-600"},"2")]),e("div",{class:"flex items-center justify-between text-sm"},[e("span",{class:"text-text-secondary"},"待签到"),e("span",{class:"font-bold text-teal-600"},"1")]),e("div",{class:"flex items-center justify-between text-sm"},[e("span",{class:"text-text-secondary"},"服务中"),e("span",{class:"font-bold text-accent-700"},"1")]),e("div",{class:"flex items-center justify-between text-sm"},[e("span",{class:"text-text-secondary"},"已完成"),e("span",{class:"font-bold text-green-600"},"2")])],-1)])]),_:1}),i(x,{title:"GPS 签到"},{default:u(()=>[...o[6]||(o[6]=[e("div",{class:"p-4 space-y-3"},[e("div",{class:"text-xs text-text-secondary"},"当前位置距服务地址"),e("div",{class:"text-3xl font-bold font-mono text-accent-700"},"85m"),e("div",{class:"text-xs text-green-600"},"✓ 200米范围内可签到"),e("div",{class:"flex gap-2 mt-3"},[e("div",{class:"w-full h-20 rounded-xl bg-gray-100 flex items-center justify-center text-xs text-text-secondary"},"📷 现场拍照"),e("div",{class:"w-full h-20 rounded-xl bg-gray-100 flex items-center justify-center text-xs text-text-secondary"},"✍️ 对象确认")]),e("button",{class:"w-full py-3 bg-cta text-white rounded-xl text-sm font-bold hover:bg-cta-700 transition-colors"},"确认签到")],-1)])]),_:1}),i(x,{title:"项目执行记录"},{default:u(()=>[e("div",je,[(n(),l(p,null,g([{name:"助洁服务",status:"COMPLETED",time:"09:15-10:05",duration:"50分钟"},{name:"健康监测",status:"IN_PROGRESS",time:"10:10-",duration:"进行中"},{name:"康复指导",status:"PENDING",time:"--",duration:"待执行"}],(t,v)=>e("div",{key:v,class:"flex items-center gap-3 text-sm"},[e("span",{class:h(["w-2 h-2 rounded-full shrink-0",t.status==="COMPLETED"?"bg-green-500":t.status==="IN_PROGRESS"?"bg-accent":"bg-gray-300"])},null,2),e("span",Me,s(t.name),1),e("span",Ve,s(t.time),1),e("span",Ge,s(t.duration),1)])),64))])]),_:1})])])])):m("",!0),i(O)],64)}}});export{Fe as default};