Files
zyt/server/public/admin/assets/TrackingMatrix-BvdEF9-A.js
T
2026-06-15 09:12:32 +08:00

2 lines
8.8 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 G,F as O,G as U,R as W,W as J,N as Q,d as j,M as K}from"./element-plus-DM-pfG5J.js";import{f as X,c as Z,d as ee,e as te,b as se}from"./blood-thresholds-CJ1fqMjh.js";import{O as ae}from"./tcm-DREvQype.js";import{f as ne,w as oe,b as ie,aP as le,ak as n,I as i,J as r,a as p,aN as d,O as g,G as M,H as f,A as B}from"./@vue/runtime-core-C6bnekPw.js";import{o as R,Q as c}from"./@vue/shared-mAAVTE9n.js";import{n as y}from"./@vue/reactivity-DiY1c2vO.js";import{_ as re}from"./index-CaVLWczr.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-B0jSCQ-G.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-BQ5Mf_ti.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./@vueuse/core-DfvfIixE.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const de={class:"tracking-matrix"},ce={class:"toolbar"},ue={key:0,class:"cell-blood"},pe={class:"value"},me={key:0,class:"cell-up"},_e={class:"value"},ge={key:0,class:"cell-up"},fe={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"},xe={key:0},be={key:1,class:"cell-empty"},He={key:0},De={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=ne({__name:"TrackingMatrix",props:{diagnosisId:{},age:{default:null}},setup(L,{expose:Y}){const _=L,h=y("30"),k=y(null),T=y(!1),x=y([]),b=y([]),H=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[m,l]=k.value||["",""];return{start:m||"",end:l||""}}const e=s==="7"?7:30,t=new Date;t.setHours(0,0,0,0);const o=new Date(t);return o.setDate(o.getDate()-(e-1)),{start:E(o),end:E(t)}},w=s=>s.getTime()>Date.now(),D=async()=>{if(!_.diagnosisId||_.diagnosisId<=0){x.value=[],b.value=[],H.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 ae({id:_.diagnosisId,start_date:s.start,end_date:s.end});if(e!==C)return;x.value=(t==null?void 0:t.blood_records)||[],b.value=(t==null?void 0:t.diet_records)||[],H.value=(t==null?void 0:t.exercise_records)||[]}catch{e===C&&(x.value=[],b.value=[],H.value=[])}finally{e===C&&(T.value=!1)}},A=()=>{if(h.value==="custom"&&!k.value){const s=I("30");k.value=[s.start,s.end]}D()},F=()=>{h.value==="custom"&&D()};oe(()=>_.diagnosisId,s=>{s&&s>0&&D()}),ie(()=>{_.diagnosisId&&_.diagnosisId>0&&D()});const P=B(()=>{const s=new Map;for(const e of x.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 o=s.get(t),m=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure","western_medicine","insulin"];for(const l of m)(o[l]===void 0||o[l]===null||o[l]==="")&&e[l]!==void 0&&e[l]!==null&&e[l]!==""&&(o[l]=e[l])}return s}),$=B(()=>{const s=new Map;for(const e of b.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),q=B(()=>{const s=new Map;for(const e of H.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),N=B(()=>{const s=new Set;for(const t of x.value)t.record_date&&s.add(String(t.record_date));for(const t of b.value)t.record_date&&s.add(String(t.record_date));for(const t of H.value)t.record_date&&s.add(String(t.record_date));const e=Array.from(s).filter(t=>t.length===10);return e.sort((t,o)=>t<o?1:t>o?-1:0),e}),z=B(()=>N.value.map(s=>{const e=P.value.get(s),t=$.value.get(s),o=q.value.get(s),m=(e==null?void 0:e.fasting_blood_sugar)??null,l=(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=m!==null&&m!==""||l!==null&&l!==""||u!==null&&u!=="",a=v||S?X({systolic_pressure:v,diastolic_pressure:S}):"";return{date:s,dateLabel:`${s}`,bloodAny:V,fasting:m??"—",postprandial:l??"—",other:u??"—",fastingHigh:se(m,_.age),postprandialHigh:te(l,_.age),otherHigh:ee(u,_.age),bp:a,bpHigh:Z({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:o?{duration:o.duration||0,intensityText:o.intensity_text||"",remark:o.remark||""}:null}}));return Y({refresh:D}),(s,e)=>{const t=O,o=U,m=W,l=J,u=Q,v=j,S=K,V=G;return le((n(),i("div",de,[r("div",ce,[p(o,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),onChange:A},{default:d(()=>[p(t,{value:"7"},{default:d(()=>[...e[2]||(e[2]=[g("最近 7 天",-1)])]),_:1}),p(t,{value:"30"},{default:d(()=>[...e[3]||(e[3]=[g("最近 30 天",-1)])]),_:1}),p(t,{value:"custom"},{default:d(()=>[...e[4]||(e[4]=[g("自定义",-1)])]),_:1})]),_:1},8,["modelValue"]),h.value==="custom"?(n(),M(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":w,onChange:F},null,8,["modelValue"])):f("",!0),e[5]||(e[5]=r("span",{class:"hint"}," 超阈值红字↑(年龄分段:<50:空7/餐9,≥50:空8/餐10 ",-1))]),!T.value&&N.value.length===0?(n(),M(l,{key:0,description:"所选区间内无任何打卡记录","image-size":80})):(n(),M(S,{key:1,data:z.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]=g(" 空 ",-1)),r("span",pe,c(a.fasting??"—"),1),a.fastingHigh?(n(),i("span",me,"↑")):f("",!0)],2),r("span",{class:R({"cell-high":a.postprandialHigh})},[e[7]||(e[7]=g(" 餐 ",-1)),r("span",_e,c(a.postprandial??"—"),1),a.postprandialHigh?(n(),i("span",ge,"↑")):f("",!0)],2),r("span",{class:R({"cell-high":a.otherHigh})},[e[8]||(e[8]=g(" 其他 ",-1)),r("span",fe,c(a.other??"—"),1),a.otherHigh?(n(),i("span",he,"↑")):f("",!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})},[g(c(a.bp)+" ",1),a.bpHigh?(n(),i("span",ye,"↑")):f("",!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",xe,c(a.westernMedicine),1)):(n(),i("span",be,"—"))]),_:1}),p(u,{label:"胰岛素","min-width":"120","show-overflow-tooltip":""},{default:d(({row:a})=>[a.insulin?(n(),i("span",He,c(a.insulin),1)):(n(),i("span",De,"—"))]),_: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)):f("",!0)])]),default:d(()=>[r("span",Ce,[e[10]||(e[10]=g(" 已打卡 ",-1)),a.exercise.duration?(n(),i("span",Re,"· "+c(a.exercise.duration)+"min",1)):f("",!0),a.exercise.intensityText?(n(),i("span",Ve,"· "+c(a.exercise.intensityText),1)):f("",!0)])]),_:2},1024)):(n(),i("span",Ee,"—"))]),_:1})]),_:1},8,["data"]))])),[[V,T.value]])}}}),yt=re(Ie,[["__scopeId","data-v-87978983"]]);export{yt as default};