Files
zyt/server/public/admin/assets/TrackingMatrix-J2H6pWR1.js
2026-07-03 12:07:34 +08:00

2 lines
7.7 KiB
JavaScript
Raw Permalink 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{o as O,R as U,ap as j,ac as G,bi as W,q as n,r as i,s as r,v as p,D as d,bb as J,L as f,bc as K,O as M,bp as Q,P as m,bB as X,bk as Z,ae as R,T as c,a1 as ee,bj as te,M as y,p as B}from"./.pnpm-BGZW0UGg.js";import{f as se,c as ae,d as ne,e as le,b as ie}from"./blood-thresholds-CJ1fqMjh.js";import{P as oe}from"./tcm-o2aZele6.js";import{_ as re}from"./index-CeIwrh_6.js";const de={class:"tracking-matrix"},ce={class:"toolbar"},ue={key:0,class:"cell-blood"},pe={class:"value"},_e={key:0,class:"cell-up"},ge={class:"value"},fe={key:0,class:"cell-up"},me={class:"value"},he={key:0,class:"cell-up"},ve={key:1,class:"cell-empty"},ye={key:0,class:"cell-up"},ke={key:1,class:"cell-empty"},be={key:0},xe={key:1,class:"cell-empty"},De={key:0},He={key:1,class:"cell-empty"},Se={class:"diet-tip"},Me={key:1,class:"cell-empty"},Be={class:"exercise-tip"},Te={key:0},Ce={class:"cell-checked"},Re={key:0,class:"meta"},Ve={key:1,class:"meta"},Ee={key:1,class:"cell-empty"},Ie=O({__name:"TrackingMatrix",props:{diagnosisId:{},age:{default:null}},setup(P,{expose:Y}){const g=P,h=y("30"),k=y(null),T=y(!1),b=y([]),x=y([]),D=y([]);let C=0;const E=s=>`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`,I=s=>{if(s==="custom"){const[_,o]=k.value||["",""];return{start:_||"",end:o||""}}const e=s==="7"?7:30,t=new Date;t.setHours(0,0,0,0);const l=new Date(t);return l.setDate(l.getDate()-(e-1)),{start:E(l),end:E(t)}},q=s=>s.getTime()>Date.now(),H=async()=>{if(!g.diagnosisId||g.diagnosisId<=0){b.value=[],x.value=[],D.value=[];return}const s=I(h.value);if(h.value==="custom"&&(!s.start||!s.end))return;const e=++C;T.value=!0;try{const t=await oe({id:g.diagnosisId,start_date:s.start,end_date:s.end});if(e!==C)return;b.value=(t==null?void 0:t.blood_records)||[],x.value=(t==null?void 0:t.diet_records)||[],D.value=(t==null?void 0:t.exercise_records)||[]}catch{e===C&&(b.value=[],x.value=[],D.value=[])}finally{e===C&&(T.value=!1)}},N=()=>{if(h.value==="custom"&&!k.value){const s=I("30");k.value=[s.start,s.end]}H()},$=()=>{h.value==="custom"&&H()};U(()=>g.diagnosisId,s=>{s&&s>0&&H()}),j(()=>{g.diagnosisId&&g.diagnosisId>0&&H()});const w=B(()=>{const s=new Map;for(const e of b.value){const t=String(e.record_date||"");if(!t)continue;s.has(t)||s.set(t,{record_date:t,record_date_ts:e.record_date_ts});const l=s.get(t),_=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure","western_medicine","insulin"];for(const o of _)(l[o]===void 0||l[o]===null||l[o]==="")&&e[o]!==void 0&&e[o]!==null&&e[o]!==""&&(l[o]=e[o])}return s}),z=B(()=>{const s=new Map;for(const e of x.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),A=B(()=>{const s=new Map;for(const e of D.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),L=B(()=>{const s=new Set;for(const t of b.value)t.record_date&&s.add(String(t.record_date));for(const t of x.value)t.record_date&&s.add(String(t.record_date));for(const t of D.value)t.record_date&&s.add(String(t.record_date));const e=Array.from(s).filter(t=>t.length===10);return e.sort((t,l)=>t<l?1:t>l?-1:0),e}),F=B(()=>L.value.map(s=>{const e=w.value.get(s),t=z.value.get(s),l=A.value.get(s),_=(e==null?void 0:e.fasting_blood_sugar)??null,o=(e==null?void 0:e.postprandial_blood_sugar)??null,u=(e==null?void 0:e.other_blood_sugar)??null,v=(e==null?void 0:e.systolic_pressure)??null,S=(e==null?void 0:e.diastolic_pressure)??null,V=_!==null&&_!==""||o!==null&&o!==""||u!==null&&u!=="",a=v||S?se({systolic_pressure:v,diastolic_pressure:S}):"";return{date:s,dateLabel:`${s}`,bloodAny:V,fasting:_??"—",postprandial:o??"—",other:u??"—",fastingHigh:ie(_,g.age),postprandialHigh:le(o,g.age),otherHigh:ne(u,g.age),bp:a,bpHigh:ae({systolic_pressure:v,diastolic_pressure:S}),westernMedicine:(e==null?void 0:e.western_medicine)||"",insulin:(e==null?void 0:e.insulin)||"",diet:t?{breakfast:t.breakfast||"",lunch:t.lunch||"",dinner:t.dinner||""}:null,exercise:l?{duration:l.duration||0,intensityText:l.intensity_text||"",remark:l.remark||""}:null}}));return Y({refresh:H}),(s,e)=>{const t=J,l=K,_=Q,o=X,u=Z,v=ee,S=te,V=W;return G((n(),i("div",de,[r("div",ce,[p(l,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),onChange:N},{default:d(()=>[p(t,{value:"7"},{default:d(()=>[...e[2]||(e[2]=[f("最近 7 天",-1)])]),_:1}),p(t,{value:"30"},{default:d(()=>[...e[3]||(e[3]=[f("最近 30 天",-1)])]),_:1}),p(t,{value:"custom"},{default:d(()=>[...e[4]||(e[4]=[f("自定义",-1)])]),_:1})]),_:1},8,["modelValue"]),h.value==="custom"?(n(),M(_,{key:0,modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=a=>k.value=a),type:"daterange","value-format":"YYYY-MM-DD","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",clearable:!1,size:"default","disabled-date":q,onChange:$},null,8,["modelValue"])):m("",!0),e[5]||(e[5]=r("span",{class:"hint"}," 超阈值红字↑(年龄分段:<50:空7/餐9,≥50:空8/餐10 ",-1))]),!T.value&&L.value.length===0?(n(),M(o,{key:0,description:"所选区间内无任何打卡记录","image-size":80})):(n(),M(S,{key:1,data:F.value,border:"",stripe:"",class:"matrix-table","empty-text":"暂无数据","row-key":"date","max-height":"640"},{default:d(()=>[p(u,{prop:"dateLabel",label:"日期",width:"120",fixed:"left"}),p(u,{label:"血糖 (mmol/L)","min-width":"180"},{default:d(({row:a})=>[a.bloodAny?(n(),i("div",ue,[r("span",{class:R({"cell-high":a.fastingHigh})},[e[6]||(e[6]=f(" 空 ",-1)),r("span",pe,c(a.fasting??"—"),1),a.fastingHigh?(n(),i("span",_e,"↑")):m("",!0)],2),r("span",{class:R({"cell-high":a.postprandialHigh})},[e[7]||(e[7]=f(" 餐 ",-1)),r("span",ge,c(a.postprandial??"—"),1),a.postprandialHigh?(n(),i("span",fe,"↑")):m("",!0)],2),r("span",{class:R({"cell-high":a.otherHigh})},[e[8]||(e[8]=f(" 其他 ",-1)),r("span",me,c(a.other??"—"),1),a.otherHigh?(n(),i("span",he,"↑")):m("",!0)],2)])):(n(),i("span",ve,"—"))]),_:1}),p(u,{label:"血压 (mmHg)",width:"120",align:"center"},{default:d(({row:a})=>[a.bp?(n(),i("span",{key:0,class:R({"cell-high":a.bpHigh})},[f(c(a.bp)+" ",1),a.bpHigh?(n(),i("span",ye,"↑")):m("",!0)],2)):(n(),i("span",ke,"—"))]),_:1}),p(u,{label:"西药","min-width":"120","show-overflow-tooltip":""},{default:d(({row:a})=>[a.westernMedicine?(n(),i("span",be,c(a.westernMedicine),1)):(n(),i("span",xe,"—"))]),_:1}),p(u,{label:"胰岛素","min-width":"120","show-overflow-tooltip":""},{default:d(({row:a})=>[a.insulin?(n(),i("span",De,c(a.insulin),1)):(n(),i("span",He,"—"))]),_:1}),p(u,{label:"饮食打卡",width:"110",align:"center"},{default:d(({row:a})=>[a.diet?(n(),M(v,{key:0,placement:"top",disabled:!a.diet,effect:"light"},{content:d(()=>[r("div",Se,[r("div",null,"早:"+c(a.diet.breakfast||"—"),1),r("div",null,"午:"+c(a.diet.lunch||"—"),1),r("div",null,"晚:"+c(a.diet.dinner||"—"),1)])]),default:d(()=>[e[9]||(e[9]=r("span",{class:"cell-checked"},"已打卡",-1))]),_:2},1032,["disabled"])):(n(),i("span",Me,"—"))]),_:1}),p(u,{label:"运动打卡","min-width":"160",align:"center"},{default:d(({row:a})=>[a.exercise?(n(),M(v,{key:0,placement:"top",effect:"light"},{content:d(()=>[r("div",Be,[r("div",null,"强度:"+c(a.exercise.intensityText||"—"),1),r("div",null,"时长:"+c(a.exercise.duration?a.exercise.duration+" min":"—"),1),a.exercise.remark?(n(),i("div",Te,"备注:"+c(a.exercise.remark),1)):m("",!0)])]),default:d(()=>[r("span",Ce,[e[10]||(e[10]=f(" 已打卡 ",-1)),a.exercise.duration?(n(),i("span",Re,"· "+c(a.exercise.duration)+"min",1)):m("",!0),a.exercise.intensityText?(n(),i("span",Ve,"· "+c(a.exercise.intensityText),1)):m("",!0)])]),_:2},1024)):(n(),i("span",Ee,"—"))]),_:1})]),_:1},8,["data"]))])),[[V,T.value]])}}}),Ne=re(Ie,[["__scopeId","data-v-4eea47f3"]]);export{Ne as default};