2 lines
58 KiB
JavaScript
2 lines
58 KiB
JavaScript
"use strict";const e=require("../../common/vendor.js");Math||(n+a+i+t)();const t=()=>"../components/SugarTreeGraphic.js",a=()=>"../components/TongjiIcon.js",n=()=>"../components/CelebrateBurst.js",i=()=>"../components/VoiceSpeakMascot.js",o={__name:"more",setup(t){const{proxy:a}=e.getCurrentInstance();function n(e,t=""){if(null==e||""===e)return t;if("string"==typeof e)return e;if("number"==typeof e||"boolean"==typeof e)return String(e);if(Array.isArray(e)){const a=e.map(e=>null==e?"":"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):"object"==typeof e?e.msg||e.message||e.error||e.title||e.label||"":String(e)).filter(Boolean);return a.length?a.join(";"):t}return"object"==typeof e?e.msg||e.message||e.error||e.title||e.label||t:String(e)}function i(t,a={}){const i=n(t,"");i&&e.index.showToast({title:i,icon:a.icon||"none",duration:"number"==typeof a.duration?a.duration:2e3})}const o=e.ref(0),l=e.ref(0),u=e.ref(""),r=e.ref({}),s=e.ref({}),d=e.ref({}),c=e.ref(0),v=e.ref(0),f=e.ref(!1);let g=!1;const p=e.ref(!1),m=e.ref(!1),b=e.ref([]),_=e.ref("7"),h=[{value:"7",label:"最近 7 天"},{value:"30",label:"最近 30 天"}],y=e.ref([]),x=e.ref([]),w=e.ref([]),S=e.ref([]),k=e.ref(null);function T(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function $(e){if(!e)return new Date;const[t,a,n]=e.split("-").map(Number);return new Date(t,(a||1)-1,n||1)}e.computed(()=>c.value>0?`${c.value} 岁`:""),e.computed(()=>({1:"男",2:"女"}[Number(v.value)]||"")),e.computed(()=>{const e=h.find(e=>e.value===_.value);return e?e.label:""});const D=e.computed(()=>{const e="30"===_.value?30:7,t=new Date;t.setHours(0,0,0,0);const a=new Date(t);return a.setDate(a.getDate()-(e-1)),{start:T(a),end:T(t)}}),N=e.computed(()=>{const{start:e,end:t}=D.value;if(!e||!t)return[];const a=[],n=$(t),i=$(e).getTime();for(;n.getTime()>=i;)a.push(T(n)),n.setDate(n.getDate()-1);return a}),E=e.computed(()=>[...N.value].reverse());function P(e){if(null==e||""===e)return null;const t=Number(e);return Number.isFinite(t)&&0!==t?t:null}function R(e){const t=Number(e);return!Number.isFinite(t)||t<=0?{fasting:7,postprandial:10}:t<50?{fasting:7,postprandial:9}:{fasting:8,postprandial:10}}function A(e){const t=P(e);return null!==t&&t<3.9}function L(e){const t=P(e),a=R(c.value);return null!==t&&null!==a&&t>=a.fasting}function H(e){const t=P(e),a=R(c.value);return null!==t&&null!==a&&t>=a.postprandial}function F(e){return A(e)&&!L(e)}function M(e){return A(e)&&!H(e)}function j(e){if(!e)return!1;const t=P(e.systolic_pressure),a=P(e.diastolic_pressure);return null!==t&&t>140||null!==a&&a>90}function C(e){const t=null==e?void 0:e.systolic_pressure,a=null==e?void 0:e.diastolic_pressure;return null!=t&&""!==t&&0!==t||null!=a&&""!==a&&0!==a?`${t||"—"} / ${a||"—"}`:"—"}function U(e){const t=P(e);return null===t?"——":String(t)}const B={1:"低强度",2:"中强度",3:"高强度"},O=e.computed(()=>{const e={};for(const t of y.value){const a=String(t.record_date||"");if(!a)continue;e[a]||(e[a]={record_date:a,record_time:t.record_time||"",fasting_blood_sugar:"",postprandial_blood_sugar:"",other_blood_sugar:"",systolic_pressure:"",diastolic_pressure:"",western_medicine:"",insulin:"",remark:""});const n=e[a],i=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure","western_medicine","insulin","remark"];for(const e of i)""!==n[e]&&null!==n[e]&&void 0!==n[e]||""===t[e]||null===t[e]||void 0===t[e]||(n[e]=t[e])}for(const t in e){const a=e[t];a.isHighFasting=L(a.fasting_blood_sugar),a.isHighPostprandial=H(a.postprandial_blood_sugar),a.isHighOther=H(a.other_blood_sugar),a.isLowFasting=F(a.fasting_blood_sugar),a.isLowPostprandial=M(a.postprandial_blood_sugar),a.isLowOther=M(a.other_blood_sugar),a.isHighBp=j(a),a.bpText=C(a),a.hasBpOrMed="—"!==a.bpText||!!(a.western_medicine||a.insulin||a.remark)}return e}),z=e.computed(()=>{const e={};for(const t of x.value){const a=String(t.record_date||"");a&&!e[a]&&(e[a]=t)}return e}),I=e.computed(()=>{const e={};for(const t of w.value){const a=String(t.record_date||"");if(!a||e[a])continue;const n={...t};n.intensityText=B[Number(t.intensity)]||"",e[a]=n}return e}),G=e.computed(()=>{const e={};for(const t of S.value){const a=String(t.note_date||"");a&&!e[a]&&(e[a]=t)}return e}),V=["周日","周一","周二","周三","周四","周五","周六"];function q(e){return V[$(e).getDay()]||""}const W=e.computed(()=>T(new Date));e.computed(()=>{const e=[];for(const t of N.value){const a=O.value[t],n=a&&a.hasBpOrMed?a:null,i=z.value[t],o=I.value[t],l=G.value[t];if(!(n||i||o||l&&l.content))continue;const[u,r,s]=t.split("-");e.push({date:t,dateLabel:`${r}-${s}`,weekday:q(t),isToday:t===W.value,blood:n,diet:i,exercise:o,tracking:l})}return e});const Y=e.computed(()=>{const e=[];for(const t of N.value){const a=O.value[t];if(!a)continue;if(!(null!==P(a.fasting_blood_sugar)||null!==P(a.postprandial_blood_sugar)||null!==P(a.other_blood_sugar)))continue;const[n,i,o]=t.split("-");e.push({date:t,dateLabel:`${i}-${o}`,weekday:q(t),isToday:t===W.value,blood:a})}return e});e.computed(()=>E.value.some(e=>{const t=O.value[e];return t&&(null!==P(t.fasting_blood_sugar)||null!==P(t.postprandial_blood_sugar))}));const X=e.computed(()=>E.value.filter(e=>{const t=O.value[e];return t&&(null!==P(t.fasting_blood_sugar)||null!==P(t.postprandial_blood_sugar))}).length),J=e.computed(()=>E.value.filter(e=>{const t=O.value[e];return t&&(t.isHighFasting||t.isHighPostprandial)}).length);function K(e,t,a=1){if(null==e||null==t)return null;const n=Number(e)-Number(t);if(!Number.isFinite(n))return null;const i=Math.abs(n),o=i<.01?"flat":n>0?"up":"down",l="flat"===o?"持平":`${"up"===o?"+":"down"===o?"-":""}${i.toFixed(a)}`;return{dir:o,delta:i,deltaText:l,prev:t}}function Q(e,t){const a=E.value,n=a.indexOf(t);if(n<=0)return null;for(let i=n-1;i>=0;i--){const t=O.value[a[i]];if(!t)continue;const n=P(t[e]);if(null!==n)return{date:a[i],value:n}}return null}e.computed(()=>X.value-J.value);const Z=e.computed(()=>{const e=[...E.value].reverse(),t={value:"—",date:"暂无记录",isHigh:!1,trend:null},a={fasting:{...t},postprandial:{...t},other:{...t}};for(const n of e){const e=O.value[n];if(e){if("—"===a.fasting.value&&null!==P(e.fasting_blood_sugar)){const t=P(e.fasting_blood_sugar),i=Q("fasting_blood_sugar",n);a.fasting={value:String(e.fasting_blood_sugar),date:n.slice(5),isHigh:e.isHighFasting,trend:i?K(t,i.value):null}}if("—"===a.postprandial.value&&null!==P(e.postprandial_blood_sugar)){const t=P(e.postprandial_blood_sugar),i=Q("postprandial_blood_sugar",n);a.postprandial={value:String(e.postprandial_blood_sugar),date:n.slice(5),isHigh:e.isHighPostprandial,trend:i?K(t,i.value):null}}if("—"===a.other.value&&null!==P(e.other_blood_sugar)){const t=P(e.other_blood_sugar),i=Q("other_blood_sugar",n);a.other={value:String(e.other_blood_sugar),date:n.slice(5),isHigh:e.isHighOther,trend:i?K(t,i.value):null}}if("—"!==a.fasting.value&&"—"!==a.postprandial.value&&"—"!==a.other.value)break}}return a});let ee=null;function te(){return!!String(e.index.getStorageSync("token")||"").trim()}function ae(){e.index.removeStorageSync("token"),ee=null}async function ne(){const t=await new Promise((t,a)=>{e.index.login({provider:"weixin",success:e=>{e&&e.code?t(e.code):a(new Error("微信登录未返回 code"))},fail:a})});return await async function(t){const i=await a.apiUrl({url:"/api/login/mnpLogin",method:"POST",data:{code:t}},!1);if(i&&1===i.code&&i.data&&i.data.token)return e.index.setStorageSync("token",i.data.token),e.index.setStorageSync("userData",i.data),i.data;throw ae(),new Error(n(null==i?void 0:i.msg,"登录失败"))}(t),te()}async function ie(){return ee||(ee=async function(){if(!te())return ne();try{const t=await a.apiUrl({url:"/api/user/info",method:"POST"},!1);if(t&&1===t.code&&t.data)return e.index.setStorageSync("userData",t.data),!0}catch(t){}ae();try{return await ne()}catch(n){return!1}}().then(e=>(e||(ee=null),!!e)).catch(()=>(ee=null,!1)),ee)}async function oe(){if(!te())return[];m.value=!0;try{const e=await a.apiUrl({url:"/api/tcm/getCardList",method:"GET",data:{}},!1);return e&&1===e.code&&Array.isArray(e.data)?(b.value=e.data,e.data):(b.value=[],[])}catch(e){return b.value=[],[]}finally{m.value=!1}}async function le(t){t&&te()&&(o.value=Number(t.id)||0,l.value=Number(t.patient_id)||0,u.value=t.patient_name||"",c.value=Number(t.age)||0,v.value=Number(t.gender)||0,fn.value=pn(Number(t.id)||0),vn.value={like_count:0,summary_line:"分享战报给家人,邀请他们为您点赞鼓劲",recent:[]},Xt.value="",function(t=o.value){if(!t)return void(Ga.value="classic");try{const a=e.index.getStorageSync(Ya(t));if(a&&e.getTreeSpecies(a))return void(Ga.value=a)}catch(a){}Ga.value="classic"}(),await ea())}function ue(){try{const t=e.index.getStorageSync("userData")||{};return String(t.mobile||t.phone||"").trim()}catch(t){return""}}async function re(){if(!te()||!o.value)return;p.value=!0;const{start:t,end:n}=D.value;try{const[e,r]=await Promise.all([a.apiUrl({url:"/api/tcm/dailyTrackingWindow",method:"GET",data:{diagnosis_id:o.value,patient_id:l.value||0,start_date:t,end_date:n}},!1),a.apiUrl({url:"/api/tcm/dailyTrackingNotes",method:"GET",data:{diagnosis_id:o.value,patient_id:l.value||0}},!1)]);if(e&&1===e.code){const t=e.data||{};y.value=Array.isArray(t.blood_records)?t.blood_records:[],x.value=Array.isArray(t.diet_records)?t.diet_records:[],w.value=Array.isArray(t.exercise_records)?t.exercise_records:[],t.diagnosis&&(u.value||(u.value=t.diagnosis.patient_name||""),c.value||(c.value=Number(t.diagnosis.age)||0),v.value||(v.value=Number(t.diagnosis.gender)||0),l.value||(l.value=Number(t.diagnosis.patient_id)||0))}else y.value=[],x.value=[],w.value=[],(null==e?void 0:e.msg)&&i(e.msg);if(r&&1===r.code){const e=Array.isArray(r.data)?r.data:[];S.value=e.filter(e=>N.value.includes(String((null==e?void 0:e.note_date)||"")))}else S.value=[];await ea(),await En()}catch(r){e.index.showToast({title:"加载失败,请稍后再试",icon:"none"})}finally{if(p.value=!1,Lt.value&&!Ve.value){const e=++Mt;setTimeout(()=>{e!==Mt||Ve.value||function(){const e=function(){const e=Z.value.fasting,t=Z.value.postprandial,a=Z.value.other,n=`${u.value||"您"}的最新血糖情况:`,i=[];if(e&&"—"!==e.value){let t=`空腹血糖 ${Ot(e.value)} 毫摩每升`;e.isHigh?t+=",偏高,请遵医嘱。":t+="。",e.trend&&"flat"!==e.trend.dir&&(t+=`比上次${"up"===e.trend.dir?"升高":"下降"} ${Ot(e.trend.delta.toFixed(1))}。`),i.push(t)}if(t&&"—"!==t.value){let e=`餐后血糖 ${Ot(t.value)} 毫摩每升`;t.isHigh?e+=",偏高,请注意饮食。":e+="。",t.trend&&"flat"!==t.trend.dir&&(e+=`比上次${"up"===t.trend.dir?"升高":"下降"} ${Ot(t.trend.delta.toFixed(1))}。`),i.push(e)}if(a&&"—"!==a.value){let e=`其他时段血糖 ${Ot(a.value)} 毫摩每升`;a.isHigh?e+=",偏高,请遵医嘱。":e+="。",a.trend&&"flat"!==a.trend.dir&&(e+=`比上次${"up"===a.trend.dir?"升高":"下降"} ${Ot(a.trend.delta.toFixed(1))}。`),i.push(e)}if(!i.length)return`${u.value||"您"}近期暂无血糖记录。`;return n+i.join(" ")}();e&&Bt(e)}()},350)}}}function se(){re()}function de(e){const t=O.value[e];return!!t&&(null!==P(t.fasting_blood_sugar)||null!==P(t.postprandial_blood_sugar)||null!==P(t.other_blood_sugar)||null!==P(t.systolic_pressure)||null!==P(t.diastolic_pressure))}function ce(e){const t=O.value[e],a=z.value[e],n=I.value[e];if(!t&&!a&&!n)return 0;let i=0;if(t){i+=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure"].filter(e=>null!==P(t[e])).length}return a&&(a.breakfast_foods||a.lunch_foods||a.dinner_foods)&&(i+=1),n&&(n.exercise_type||n.duration)&&(i+=1),0===i?0:1===i?1:i<=3?2:3}e.computed(()=>function(e=(new Date).getHours()){const t=Number(e)||0;return t<5?{text:"夜深了",icon:"moon"}:t<11?{text:"早上好",icon:"sun"}:t<13?{text:"中午好",icon:"sun"}:t<18?{text:"下午好",icon:"sun"}:t<22?{text:"晚上好",icon:"sunset"}:{text:"夜深了",icon:"moon"}}());const ve=e.computed(()=>de(W.value)),fe=e.computed(()=>{const e=new Date;let t=0,a=!1;for(let n=0;n<90;n++){const i=new Date(e);i.setDate(e.getDate()-n);if(!de(T(i))){if(0===n){a=!0;continue}break}t++}return{days:t,startedFromYesterday:a}}),ge=e.computed(()=>{const e=[],t=new Date,a=["日","一","二","三","四","五","六"];for(let n=6;n>=0;n--){const i=new Date(t);i.setDate(t.getDate()-n);const o=T(i);e.push({date:o,label:a[i.getDay()],isToday:0===n,hasRecord:de(o)})}return e}),pe=e.computed(()=>ge.value.filter(e=>e.hasRecord).length);function me(e){return function(e){const t=O.value[e];return!(!t||null===P(t.fasting_blood_sugar))}(e)&&function(e){const t=O.value[e];return!(!t||null===P(t.postprandial_blood_sugar))}(e)}function be(e){const t=O.value[e];return!!t&&(t.isHighFasting||t.isHighPostprandial)}const _e=e.computed(()=>ge.value.filter(e=>me(e.date)).length),he=e.computed(()=>{const e=E.value;if(!e||!e.length)return[];const t=[...e].sort(),a=new Date(t[0]),n=new Date(t[t.length-1]),i=(a.getDay()+6)%7,o=(n.getDay()+6)%7,l=new Date(a);l.setDate(a.getDate()-i);const u=new Date(n);u.setDate(n.getDate()+(6-o));const r=Math.round((u-l)/864e5)+1,s=[];let d=new Date(l);for(let c=0;c<Math.ceil(r/7);c++){const e=[];for(let a=0;a<7;a++){const a=T(d),n=t.includes(a);e.push({date:a,day:d.getDate(),inRange:n,isToday:a===W.value,level:n?ce(a):-1,isHigh:!!n&&be(a)}),d.setDate(d.getDate()+1)}s.push(e)}return s}),ye=e.computed(()=>{const e=he.value;return e.length?e.flat():[]}),xe=e.computed(()=>{let e=0;for(const t of he.value)for(const a of t)a.inRange&&a.level>0&&e++;return e}),we=e.computed(()=>{let e=0;for(const t of he.value)for(const a of t)a.inRange&&e++;return e}),Se=e.computed(()=>{const e=he.value;if(!e.length)return"";const t=new Map;for(const l of e)for(const e of l){if(!e.inRange)continue;const[a,n]=e.date.split("-"),i=`${a}-${n}`;t.set(i,(t.get(i)||0)+1)}if(!t.size){const t=e[0][0].date.split("-");return`${Number(t[0])}年${Number(t[1])}月`}let a="",n=-1;for(const[l,u]of t)u>n&&(a=l,n=u);const[i,o]=a.split("-");return`${Number(i)}年${Number(o)}月`});const ke=e.computed(()=>{const e=new Date,t=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${e.getFullYear()}-${t}-${a} ${["周日","周一","周二","周三","周四","周五","周六"][e.getDay()]}`}),Te=e.ref({visible:!1,loading:!1,submitting:!1,id:0,fasting_blood_sugar:"",postprandial_blood_sugar:"",other_blood_sugar:"",remark:""}),$e=e.ref({visible:!1,loading:!1,submitting:!1,id:0,systolic_pressure:"",diastolic_pressure:"",western_medicine:"",insulin:"",remark:""});function De(){$t(),Ut()}function Ne(e,t){var a;Te.value[e]=(null==(a=null==t?void 0:t.detail)?void 0:a.value)??""}async function Ee(){if(!o.value)return void i("请先选择就诊卡");if(e.index.getStorageSync("token")){De(),Te.value={visible:!1,loading:!1,submitting:!1,id:0,fasting_blood_sugar:"",postprandial_blood_sugar:"",other_blood_sugar:"",remark:"",visible:!0,loading:!0};try{const e=await a.apiUrl({url:"/api/tcm/dailyTodayBloodRecord",method:"GET",data:{diagnosis_id:o.value}},!1);if(e&&1===e.code&&e.data&&e.data.record){const t=e.data.record;Te.value.id=Number(t.id)||0,Te.value.fasting_blood_sugar=He(t.fasting_blood_sugar),Te.value.postprandial_blood_sugar=He(t.postprandial_blood_sugar),Te.value.other_blood_sugar=He(t.other_blood_sugar),Te.value.remark=String(t.remark||""),ta.value&&i("今日血糖已录入,如需修改可在下方调整",{duration:2600})}}catch(t){}finally{Te.value.loading=!1}}else i("请先登录后再录入")}function Pe(){Te.value.submitting||(ot(),$t(),Te.value.visible=!1)}async function Re(){if(Te.value.submitting||Te.value.loading)return;ct.active&&$t();const e=Te.value;if([e.fasting_blood_sugar,e.postprandial_blood_sugar,e.other_blood_sugar].some(e=>""!==e&&null!==e&&Number(e)>0)||!(!e.remark||!e.remark.trim())){Te.value.submitting=!0;try{const t=await a.apiUrl({url:"/api/tcm/dailySaveBloodRecord",method:"POST",data:{diagnosis_id:o.value,fasting_blood_sugar:e.fasting_blood_sugar,postprandial_blood_sugar:e.postprandial_blood_sugar,other_blood_sugar:e.other_blood_sugar,remark:e.remark}},!1);t&&1===t.code?(i(t.msg||"今日血糖已录入完成",{icon:"success"}),Te.value.visible=!1,await re(),await ea(),ja("血糖")):i(t&&t.msg||"保存失败")}catch(t){i("网络异常,请稍后再试")}finally{Te.value.submitting=!1}}else i("请至少填写一项数据")}function Ae(){Te.value.id&&!Te.value.submitting&&(ct.active&&$t(),e.index.showModal({title:"删除确认",content:"确定删除今天已录入的血糖数据吗?删除后无法恢复。",confirmColor:"#dc2626",success:async t=>{if(t.confirm){Te.value.submitting=!0;try{const t=await a.apiUrl({url:"/api/tcm/dailyDeleteBloodRecord",method:"POST",data:{diagnosis_id:o.value,id:Te.value.id}},!1);t&&1===t.code?(e.index.showToast({title:"已删除",icon:"success"}),Te.value.visible=!1,await re(),await ea()):i(t&&t.msg||"删除失败")}catch(n){e.index.showToast({title:"网络异常,请稍后再试",icon:"none"})}finally{Te.value.submitting=!1}}}}))}function Le(e,t){var a;const n=(null==(a=null==t?void 0:t.detail)?void 0:a.value)??"";$e.value[e]=n}function He(e){return null==e||""===e||0===e||"0"===e||"object"==typeof e?"":String(e)}function Fe(){$e.value.submitting||(ot(),$e.value.visible=!1,e.nextTick$1(()=>{}))}const Me=e.ref({visible:!1,loading:!1,submitting:!1,id:0,breakfast_foods:"",lunch_foods:"",dinner_foods:"",note:""}),je=e.ref(null);function Ce(){const e=je.value;if(e&&(e.breakfast&&(Me.value.breakfast_foods=e.breakfast),e.lunch&&(Me.value.lunch_foods=e.lunch),e.dinner&&(Me.value.dinner_foods=e.dinner),e.tips)){const t=String(Me.value.note||"").trim();Me.value.note=t?`${t};${e.tips}`:e.tips}}function Ue(e,t){var a;Me.value[e]=(null==(a=null==t?void 0:t.detail)?void 0:a.value)??""}async function Be(t={}){var n,l;const u=!!t.autoFill;if(je.value||(je.value=e.consumeDietAiPrefill()),!o.value)return void i("请先选择就诊卡");if(e.index.getStorageSync("token")){De(),Me.value={visible:!1,loading:!1,submitting:!1,id:0,breakfast_foods:"",lunch_foods:"",dinner_foods:"",note:"",visible:!0,loading:!0};try{const e=await a.apiUrl({url:"/api/tcm/dailyTodayDietRecord",method:"GET",data:{diagnosis_id:o.value}},!1);if(1===(null==e?void 0:e.code)&&(null==(n=e.data)?void 0:n.record)){const t=e.data.record;Me.value.id=Number(t.id)||0,Me.value.breakfast_foods=String(t.breakfast_foods||""),Me.value.lunch_foods=String(t.lunch_foods||""),Me.value.dinner_foods=String(t.dinner_foods||""),Me.value.note=String(t.note||""),na.value&&i("今日饮食已录入,如需修改可在下方调整",{duration:2600})}}catch(r){}finally{Me.value.loading=!1,u&&(null==(l=je.value)?void 0:l.breakfast)&&Ce()}}else i("请先登录后再录入")}function Oe(){Me.value.submitting||(ot(),Me.value.visible=!1,je.value=null,e.nextTick$1(()=>{}))}async function ze(){if(Me.value.submitting||Me.value.loading)return;const e=Me.value;if(e.breakfast_foods.trim()||e.lunch_foods.trim()||e.dinner_foods.trim()){Me.value.submitting=!0;try{const t=await a.apiUrl({url:"/api/tcm/dailySaveDietRecord",method:"POST",data:{diagnosis_id:o.value,breakfast_foods:e.breakfast_foods,lunch_foods:e.lunch_foods,dinner_foods:e.dinner_foods,note:e.note}},!1);1===(null==t?void 0:t.code)?(i(t.msg||"今日饮食已录入完成",{icon:"success"}),Me.value.visible=!1,await re(),await ea(),ja("饮食")):i(t&&t.msg||"保存失败")}catch(t){i("网络异常,请稍后再试")}finally{Me.value.submitting=!1}}else i("请至少填写一餐饮食")}const Ie=[{value:1,label:"低强度"},{value:2,label:"中强度"},{value:3,label:"高强度"}],Ge=e.ref({visible:!1,loading:!1,submitting:!1,id:0,exercise_type:"",duration:"",intensity:2,note:""}),Ve=e.computed(()=>Te.value.visible||$e.value.visible||Me.value.visible||Ge.value.visible),qe=e.ref(""),{sttListening:We,sttHolding:Ye,sttSupported:Xe,beginHoldSpeech:Je,endHoldSpeech:Ke}=e.useSpeechToText({onResult(t){ct.active||function(t){const a=String(t||"").trim();if(!a)return;const n=qe.value;let o={},l=null;"glucose"===n?(o=e.parseGlucose(a),l=Te):"bp"===n?(o=e.parseBloodPressure(a),l=$e):"diet"===n?(o=e.parseDiet(a),l=Me):"exercise"===n&&(o=e.parseExercise(a),l=Ge);if(!l)return;const u=Object.keys(o);if(!u.length)return void("diet"===n?(dt(l,"note",a),i("已记入饮食备注,请确认")):"glucose"===n?(dt(l,"remark",a),i("未识别到血糖数值,已记入备注")):i("bp"===n?"未识别到血压数值,请重试或手动填写":"没听清,请再说一次"));u.forEach(e=>{"note"===e||"remark"===e||"western_medicine"===e||"insulin"===e?dt(l,e,o[e]):l.value[e]=o[e]});const r=e.summarizeParsed(o);i(r?`已识别:${r}`:"已填写",{icon:"none",duration:2200})}(t)},onSettle:e=>!!ct.active&&(function(e){if(!ct.active)return;if("listening"!==ct.phase)return;bt();const t=ct.heardText;let a=String(e||"").trim();!a&&ct.barged&&t&&(a=t);if(ct.heardText=a,"confirm"===ct.stage)return void function(e){if(e&&/提交|确认|可以|好的|好了|是的|对|要|提交吧|保存/.test(e))return void Tt("好的,正在为您提交。",()=>{$t(),Re()});if(e&&/取消|不提交|不要|先不|算了|退出|关闭/.test(e))return void Tt("已为您填好,请核对后手动提交。",()=>$t());if(ct.retries<2){ct.retries+=1;const e=gt;ct.stage="confirm",ct.phase="asking",ct.botText='没听清,要现在提交吗?说"提交"或"取消"。',Bt(ct.botText,{force:!0,onDone:()=>{e===gt&&ct.active&&yt()}})}else Tt("已为您填好,请核对后手动提交。",()=>$t())}(a);const n=_t();if(!n)return void kt();const i=wt(a)??(ct.pendingValue||null);if(ct.pendingValue="",null!==i)return Te.value[n.field]=i,ct.collected.push({label:n.label,value:i}),ct.retries=0,void St(`好的,${n.label}已记录。`);if(a&&/退出|取消|关闭/.test(a))return void Tt("已为您关闭语音问答,可以手动填写。",()=>$t());if(a&&/跳过|没有|不测|没测|没量|不用|下一/.test(a))return void St(`好的,${n.label}先空着。`);ct.retries<2?(ct.retries+=1,ht("没听清,")):(ct.retries=0,St(`暂时没听清${n.label},先空着。`))}(e),!0),onError:t=>!!e.isBenignSttError(t)||!!ct.active&&(function(){if(!ct.active)return;if(bt(),ct.errorRetries<3){ct.errorRetries+=1;const e=gt;ct.phase="asking",vt=setTimeout(()=>{e===gt&&ct.active&&yt()},600)}else ct.errorRetries=0,St("录音没成功,这项先空着。")}(),!0),onPartial(e){ct.active&&function(e){if(!ct.active)return;if("collect"!==ct.stage)return;if("listening"!==ct.phase)return;const t=wt(e);if(null===t)return;const a=gt;ct.pendingValue=t,ct.heardText=e,ct.barged||(ct.barged=!0,pt(),vt=setTimeout(()=>{a===gt&&ct.active&&xt()},1800));mt(),ft=setTimeout(()=>{a===gt&&ct.active&&xt()},550)}(e)},showToast:e=>i(e)});let Qe=null,Ze="";const et=e.ref(!1);let tt="";function at(){}function nt(e){return function(e){return qe.value===e&&(Ye.value||We.value)}(e)||function(e){return et.value&&tt===e}(e)}function it(){Qe&&(clearTimeout(Qe),Qe=null)}function ot(){et.value=!1,tt="",it(),Ze="",lt()}function lt(){Ye.value||We.value?Ke():Ke(!0)}function ut(e){Xe.value?(ct.active&&$t(),et.value=!0,tt=e,it(),Ze=e,Qe=setTimeout(()=>{Qe=null,et.value&&tt===e&&Ze===e&&(qe.value=e,Je())},320)):i("当前环境不支持语音输入")}function rt(){const e=et.value,t=!!Ze,a=Ye.value||We.value;et.value=!1,tt="",it(),Ze="",(a||e)&<(),t&&!a&&i("请长按说话",{icon:"none",duration:1500})}function st(){et.value?ct.active&&"listening"===ct.phase?function(){if(et.value=!1,tt="",!ct.active||"listening"!==ct.phase)return void((Ye.value||We.value)&<());if(bt(),Ye.value||We.value)return void function(){if(!ct.active||"listening"!==ct.phase)return;if("collect"===ct.stage&&ct.pendingValue)return void xt();bt(),Ke()}();lt()}():rt():(Ye.value||We.value)&&qe.value&&!ct.active&&rt()}function dt(e,t,a){const n=String(a||"").trim();if(!n)return;const i=String(e.value[t]||"").trim();e.value[t]=i?`${i};${n}`:n}const ct=e.reactive({active:!1,phase:"idle",stage:"collect",stepIndex:0,retries:0,errorRetries:0,barged:!1,pendingValue:"",botText:"",heardText:"",steps:[{field:"fasting_blood_sugar",label:"空腹血糖",question:"请问空腹血糖是多少?"},{field:"postprandial_blood_sugar",label:"餐后血糖",question:"餐后血糖是多少?"},{field:"other_blood_sugar",label:"其他时段血糖",question:"其他时段血糖是多少?"}],collected:[]});let vt=null,ft=null,gt=0;function pt(){vt&&(clearTimeout(vt),vt=null)}function mt(){ft&&(clearTimeout(ft),ft=null)}function bt(){pt(),mt()}function _t(){return ct.steps[ct.stepIndex]||null}function ht(e=""){const t=_t();if(!t)return void kt();const a=gt;ct.phase="asking",ct.errorRetries=0,ct.barged=!1,ct.pendingValue="",ct.heardText="",ct.botText=`${e}${t.question}`,bt(),Bt(ct.botText,{force:!0,onDone:()=>{a===gt&&ct.active&&yt()}})}function yt(){if(!ct.active)return;const e=gt;ct.pendingValue="",ct.heardText="",bt(),ct.phase="asking",vt=setTimeout(()=>{e===gt&&ct.active&&(ct.phase="listening")},250)}function xt(){if(!ct.active)return;const e=_t(),t=ct.pendingValue;ct.pendingValue="",bt(),Ke(),e&&t&&(Te.value[e.field]=t,ct.collected.push({label:e.label,value:t}),ct.retries=0,St(`好的,${e.label}已记录。`))}function wt(t){if(!t)return null;const a=e.normalizeNumbers(t).match(/\d+(?:\.\d+)?/);if(!a)return null;const n=Number(a[0]);return!Number.isFinite(n)||n<=0?null:a[0]}function St(e=""){ct.stepIndex+=1,ct.retries=0,ct.errorRetries=0,ct.stepIndex>=ct.steps.length?kt(e):ht(e)}function kt(e=""){if(!ct.collected.length)return void Tt(`${e}还没有录入任何血糖数据,您可以手动填写或重新开始语音问答。`,()=>$t());const t=ct.collected.map(e=>`${e.label}${e.value}`).join(",");ct.stage="confirm",ct.phase="asking",ct.retries=0,ct.heardText="",ct.botText=`${e}已为您填写:${t}。要现在提交吗?说"提交"确认,或说"取消"。`;const a=gt;Bt(ct.botText,{force:!0,onDone:()=>{a===gt&&ct.active&&yt()}})}function Tt(e,t){ct.botText=e;const a=gt;Bt(e,{force:!0,onDone:()=>{a===gt&&"function"==typeof t&&t()}})}function $t(){bt(),gt+=1,Ke(),Ut(),ct.active=!1,ct.phase="idle",ct.stage="collect",ct.barged=!1,ct.pendingValue="",ct.heardText=""}function Dt(e,t){var a;Ge.value[e]=(null==(a=null==t?void 0:t.detail)?void 0:a.value)??""}function Nt(){Ge.value.submitting||(ot(),Ge.value.visible=!1,e.nextTick$1(()=>{}))}async function Et(){if(Ge.value.submitting||Ge.value.loading)return;const e=Ge.value;if(e.exercise_type.trim()||e.duration){Ge.value.submitting=!0;try{const t=await a.apiUrl({url:"/api/tcm/dailySaveExerciseRecord",method:"POST",data:{diagnosis_id:o.value,exercise_type:e.exercise_type,duration:e.duration,intensity:e.intensity,note:e.note}},!1);1===(null==t?void 0:t.code)?(i(t.msg||"今日运动已录入完成",{icon:"success"}),Ge.value.visible=!1,await re(),await ea(),ja("运动")):i(t&&t.msg||"保存失败")}catch(t){i("网络异常,请稍后再试")}finally{Ge.value.submitting=!1}}else i("请填写运动类型或时长")}async function Pt(){if($e.value.submitting||$e.value.loading)return;const t=$e.value;if([t.systolic_pressure,t.diastolic_pressure].some(e=>""!==e&&null!==e&&Number(e)>0)||!!(String(t.western_medicine||"").trim()||String(t.insulin||"").trim()||String(t.remark||"").trim())){$e.value.submitting=!0;try{const e=await a.apiUrl({url:"/api/tcm/dailySaveBloodRecord",method:"POST",data:{diagnosis_id:o.value,systolic_pressure:t.systolic_pressure,diastolic_pressure:t.diastolic_pressure,western_medicine:t.western_medicine,insulin:t.insulin,remark:t.remark}},!1);e&&1===e.code?(i(e.msg||"今日血压已录入完成",{icon:"success"}),$e.value.visible=!1,await re(),await ea(),ja("血压")):i(e&&e.msg||"保存失败")}catch(n){e.index.showToast({title:"网络异常,请稍后再试",icon:"none"})}finally{$e.value.submitting=!1}}else e.index.showToast({title:"请至少填写一项数据",icon:"none"})}function Rt(){$e.value.id&&!$e.value.submitting&&e.index.showModal({title:"删除确认",content:"确定删除今天已录入的数据吗?删除后无法恢复。",confirmColor:"#dc2626",success:async t=>{if(t.confirm){$e.value.submitting=!0;try{const t=await a.apiUrl({url:"/api/tcm/dailyDeleteBloodRecord",method:"POST",data:{diagnosis_id:o.value,id:$e.value.id}},!1);t&&1===t.code?(e.index.showToast({title:"已删除",icon:"success"}),$e.value.visible=!1,re()):i(t&&t.msg||"删除失败")}catch(n){e.index.showToast({title:"网络异常,请稍后再试",icon:"none"})}finally{$e.value.submitting=!1}}}})}e.computed(()=>"listening"===ct.phase?"confirm"===ct.stage?"按住作答区:说提交或取消,松手结束":"按住下方作答区说话,松手结束":"asking"===ct.phase?"正在提问…":"");const At=e.ref(!0),Lt=e.ref(!1),Ht=e.ref(!1);let Ft=null,Mt=0,jt=0;function Ct(){if(Ft){try{Ft.stop()}catch(e){}try{Ft.destroy&&Ft.destroy()}catch(e){}Ft=null}}function Ut(){jt+=1,Ct(),Ht.value=!1}function Bt(t,a={}){const{force:o=!1,onDone:l}=a||{};let u=!1;const r=()=>{if(!u&&(u=!0,"function"==typeof l))try{l()}catch(e){}};if(!At.value&&!o)return void r();const s=function(e){return null==e?"":"string"==typeof e?e.replace(/\s+/g," ").trim():Array.isArray(e)?e.map(e=>"string"==typeof e?e:e&&"object"==typeof e?e.title||e.label||e.desc||e.msg||e.message||"":n(e,"")).filter(Boolean).join(","):"object"==typeof e?e.title||e.label||e.desc||e.msg||e.message||"":n(e,"")}(t);if(!s)return void r();Ut();const d=++jt;try{const t=requirePlugin("WechatSI");return Ht.value=!0,void t.textToSpeech({lang:"zh_CN",tts:!0,content:s,success:t=>{if(d===jt){if(!t||!t.filename)return Ht.value=!1,void r();Ct(),Ft=e.index.createInnerAudioContext(),Ft.src=t.filename,Ft.obeyMuteSwitch=!1,Ft.onPlay(()=>{Ht.value=!0}),Ft.onEnded(()=>{Ht.value=!1,r()}),Ft.onError(()=>{Ht.value=!1,r()}),Ft.onStop(()=>{Ht.value=!1,r()}),Ft.play()}else r()},fail:t=>{Ht.value=!1,console.warn("WechatSI textToSpeech failed",t),e.index.showToast({title:"语音不可用,请检查网络/插件",icon:"none",duration:2e3}),r()}})}catch(c){console.warn("WechatSI plugin not available",c)}i(s,{duration:3200}),setTimeout(r,Math.min(6e3,1200+180*s.length))}function Ot(e){return null==e||""===e?"":String(e).replace(/(\d+)\.(\d+)/g,(e,t,a)=>`${t}点${a}`)}function zt(){const t=e.index.getSystemInfoSync(),a=Number(t.statusBarHeight)||0,n=e.index.upx2px(300);let i=e.index.upx2px(24);try{const a="function"==typeof e.index.getMenuButtonBoundingClientRect?e.index.getMenuButtonBoundingClientRect():null;a&&a.width>0&&(i=t.windowWidth-a.left+e.index.upx2px(8))}catch(l){}const o=a+n;r.value={height:o-35+"px",paddingTop:`${a}px`,boxSizing:"border-box"},s.value={paddingRight:`${i}px`},d.value={paddingTop:`${o+e.index.upx2px(24)}px`}}async function It(t){t=t||{},zt(),g=!1,f.value=!0;const r=Number(t.diagnosis_id||t.id||0);Number(t.patient_id||0),t.patient_name&&decodeURIComponent(String(t.patient_name)),Number(t.age),Number(t.gender);if(!(await ie())||!te())return f.value=!1,void i("登录失败,请稍后重试");!function(){try{const t=e.index.getStorageSync("userData");if(!t)return;const a=String(t.real_name||t.nickname||"").trim();!u.value&&a&&(u.value=a);const n=Number(t.sex);v.value||1!==n&&2!==n||(v.value=1===n?1:0),!c.value&&t.age&&(c.value=Number(t.age)||0)}catch(t){}}();const s=await oe();if(Array.isArray(s)&&s.length>0){let e=null;r&&(e=s.find(e=>Number(e.id)===Number(r))),e||(e=s[0]),await le(e)}else if(o.value=0,l.value=0,u.value="",c.value=0,v.value=0,ue()&&await async function(){if(o.value)return!0;const e=await a.apiUrl({url:"/api/tcm/dailyEnsurePhoneContext",method:"POST",data:{}},!1);return e&&1===e.code&&e.data&&e.data.diagnosis_id?(await le({id:e.data.diagnosis_id,patient_id:e.data.patient_id,patient_name:e.data.patient_name||"",age:e.data.age||0,gender:e.data.gender||0}),(e.data.created||e.data.linked_existing)&&await oe(),!0):e&&e.data&&e.data.need_mobile?"need_mobile":(i(n(null==e?void 0:e.msg,"无法加载记录")),!1)}(),!o.value)return f.value=!1,ue()?i("暂时无法加载记录,请稍后重试"):i("请先在统计页授权手机号后再查看记录"),void setTimeout(()=>{getCurrentPages().length>1?e.index.navigateBack():e.index.redirectTo({url:"/tongji/pages/weekly"})},1600);f.value=!1,await re(),"1"!==t.openDiet&&1!==t.openDiet||await Be({autoFill:!0})}e.onLoad(e=>{It(e)}),e.onShareAppMessage(()=>{const e=mn.value,t=cn.value;return{title:dn.value||`【稳糖打卡】${e.patientLabel}本周记录${e.recordDays}天(邀请码今日有效)`,path:t?`/tongji/pages/index?from=share&invite_code=${t}`:"/tongji/pages/more"}}),e.onShow(()=>{zt(),f.value||g||o.value&&En()}),e.onPullDownRefresh(async()=>{await ie()&&await re(),e.index.stopPullDownRefresh()}),e.onHide(()=>{ot(),$t(),Ut()}),e.onUnload(()=>{ot(),$t(),Ut(),Aa()});const Gt=e.ref(0),Vt=e.ref([]),qt=e.ref({}),Wt=e.ref([]),Yt=e.ref(0),Xt=e.ref(""),Jt=e.ref(!1),Kt=e.ref(!1);function Qt(e){return!(!e||1!==Number(e.code))}function Zt(e){if(e&&"object"==typeof e){Gt.value=Number(e.points)||0,Vt.value=Array.isArray(e.badges)?[...e.badges]:[];try{qt.value=e.task_awards?JSON.parse(JSON.stringify(e.task_awards)):{}}catch(t){qt.value=e.task_awards||{}}Wt.value=Array.isArray(e.today_tasks)?ca(e.today_tasks.map(e=>({id:String(e.id||""),name:String(e.name||""),points:Number(e.points)||0,completed:!!e.completed,claimed:!!e.claimed}))):[],Yt.value=Number(e.claimable_points)||0,e.message&&(Xt.value=String(e.message))}}async function ea(){if(te()&&o.value)try{const e=await a.apiUrl({url:"/api/tcm/dailyGetGamify",method:"GET",data:{diagnosis_id:o.value}},!1);Qt(e)&&e.data&&Zt(e.data)}catch(e){console.error("获取游戏化数据失败",e)}}const ta=e.computed(()=>{const e=O.value[W.value];return!!e&&(null!==P(e.fasting_blood_sugar)||null!==P(e.postprandial_blood_sugar)||null!==P(e.other_blood_sugar))}),aa=e.computed(()=>{const e=O.value[W.value];return!!e&&(null!==P(e.systolic_pressure)||null!==P(e.diastolic_pressure))}),na=e.computed(()=>{const e=W.value,t=z.value[e];return!(!t||!(t.breakfast_foods||t.lunch_foods||t.dinner_foods))}),ia=e.computed(()=>{const e=W.value,t=I.value[e];return!(!t||!t.exercise_type&&!t.duration)}),oa=["glucose","bp","diet","exercise"],la={glucose:"glucose",bp:"activity",diet:"utensils",exercise:"flame"};function ua(e,t,a={}){if(t[e])return!0;if(t.blood){if("glucose"===e&&a.glucose)return!0;if("bp"===e&&a.bp)return!0}return!1}function ra(){return{glucose:ta.value,bp:aa.value,diet:na.value,exercise:ia.value}}function sa(e,t=!1){const a=ra();return Object.prototype.hasOwnProperty.call(a,e)?!!a[e]:!!t}function da(e){return la[e]||"check-circle"}function ca(e){if(!Array.isArray(e)||!e.length)return[];const t=new Set(e.map(e=>e.id));if(t.has("glucose")||t.has("bp"))return e;if(t.has("blood")){const t=e.find(e=>"blood"===e.id),a=e.filter(e=>"blood"!==e.id);return t?[{...t,id:"glucose",name:"测血糖"},{...t,id:"bp",name:"测血压"},...a]:e}return e}const va=e.computed(()=>{const e=W.value,t=qt.value[e]||{},a=ra(),n=e=>({...e,completed:sa(e.id,e.completed),claimed:ua(e.id,t,a)});return Wt.value.length?ca(Wt.value).map(n):[{id:"glucose",name:"测血糖",points:10,completed:a.glucose,claimed:ua("glucose",t,a)},{id:"bp",name:"测血压",points:10,completed:a.bp,claimed:ua("bp",t,a)},{id:"diet",name:"饮食",points:10,completed:a.diet,claimed:ua("diet",t,a)},{id:"exercise",name:"运动",points:10,completed:a.exercise,claimed:ua("exercise",t,a)}]}),fa=e.computed(()=>{const e=new Map(va.value.map(e=>[e.id,e]));return oa.map(t=>e.get(t)).filter(Boolean)}),ga=e.computed(()=>va.value.filter(e=>e.completed&&!e.claimed).reduce((e,t)=>e+t.points,0)),pa=e.computed(()=>ga.value>0),ma=e.computed(()=>{const e=fa.value;return e.length>0&&e.every(e=>e.completed&&e.claimed)}),ba=e.computed(()=>fa.value.find(e=>!e.completed)||null),_a=e.computed(()=>{if(pa.value)return`有 ${ga.value} 积分待领,点击浇水查看进度并领取`;if(ma.value)return"今日任务已全部完成,小树喝饱啦 🌱";const e=ba.value;return e?`还差「${e.name}」等项,点击浇水查看今日进度`:"点击浇水查看今日任务进度"}),ha=e.computed(()=>{const e=va.value;return e.length>0&&e.every(e=>e.completed&&e.claimed)});e.computed(()=>{var e;const t=[],a=Number(null==(e=fe.value)?void 0:e.days)||0;return ve.value&&t.push({id:"today",label:"今日打卡",icon:"check-circle",color:"#386641"}),a>=3&&t.push({id:"streak",label:`连击${a}天`,icon:"flame",color:"#EA580C"}),a>=7&&t.push({id:"week",label:"一周达人",icon:"trophy",color:"#CA8A04"}),pe.value>=5&&t.push({id:"w5",label:"本周5天+",icon:"calendar",color:"#204E2B"}),Gt.value>=50&&t.push({id:"p50",label:"积分50+",icon:"sparkles",color:"#204E2B"}),Gt.value>=100&&t.push({id:"p100",label:"积分破百",icon:"trophy",color:"#7C3AED"}),Gt.value>=200&&t.push({id:"p200",label:"积分200+",icon:"sparkles",color:"#7C3AED"}),Ba.value>=3&&t.push({id:"tree3",label:"小树苗",icon:"glucose",color:"#0D9488"}),Ba.value>=5&&t.push({id:"tree5",label:"拔节高",icon:"activity",color:"#386641"}),Ba.value>=7&&t.push({id:"tree7",label:"初绽香",icon:"heart",color:"#EA580C"}),Ua.value.isMax&&t.push({id:"tree9",label:"圆满树",icon:"trophy",color:"#CA8A04"}),t});const ya=e.ref(!1),xa=e.ref(""),wa=e.ref(""),Sa=e.ref(null);e.ref(!1);const ka=e.ref("");let Ta=null,$a=null;const Da=e.ref([]),Na=e.ref([]),Ea=e.ref(null),Pa=e.ref([]);let Ra=[];function Aa(){Ra.forEach(e=>clearTimeout(e)),Ra=[],Da.value=[],Na.value=[],Ea.value=null,Pa.value=[]}function La(){Ra.push(setTimeout(()=>{Kt.value=!0,function(){const e=Date.now(),t=[];for(let n=0;n<12;n++)t.push({key:`s${e}_${n}`,left:40+40*(Math.random()-.5),top:40+40*(Math.random()-.5),dur:.6+.4*Math.random()});Na.value=t,Ra.push(setTimeout(()=>{Na.value=[]},1e3)),Ea.value={key:`sd${e}`},Ra.push(setTimeout(()=>{Ea.value=null},2e3));const a=[];for(let n=0;n<20;n++)a.push({key:`p${e}_${n}`,left:100*Math.random(),size:32+32*Math.random(),delay:.05*n,kind:Math.random()>.5?"south":"tri"});Pa.value=a,Ra.push(setTimeout(()=>{Pa.value=[]},1500))}(),Ra.push(setTimeout(()=>{Kt.value=!1},800))},600))}function Ha(){try{e.index.vibrateShort({type:"light"})}catch(t){}}function Fa(e,t=""){Ta&&clearTimeout(Ta),xa.value=e,wa.value=t,ya.value=!0,Ta=setTimeout(()=>{ya.value=!1,wa.value=""},2400)}function Ma(){if(Jt.value)return;i(e.pickTreeWhisper(Ba.value),{duration:2800}),Ha()}function ja(e="",t=900){setTimeout(()=>{if(ga.value>0){return void i(`${e?`今日${e}已录入完成,`:"今日已录入完成,"}点击「给小树浇水」领取 ${ga.value} 积分`,{duration:3200})}const t=ba.value;if(t){return void i(`${e?`今日${e}已录入完成。`:"今日该项已录入完成。"}继续完成「${t.name}」,再给小树浇水领积分`,{duration:3200})}ma.value&&i("今日任务已全部完成,小树喝饱啦 🌱",{duration:2800})},t)}async function Ca(){if(!o.value)return;if(Jt.value)return;if(!pa.value)return;const t=Ba.value;Jt.value=!0,Aa(),function(){const e=Date.now(),t=[];for(let a=0;a<15;a++)t.push({key:`d${e}_${a}`,left:100*Math.random(),delay:.4*Math.random()});Da.value=t,Ra.push(setTimeout(()=>{Da.value=[]},600))}(),La(),Ha(),Ra.push(setTimeout(()=>{Jt.value=!1},1400));try{const u=await a.apiUrl({url:"/api/tcm/dailyWaterTree",method:"POST",data:{diagnosis_id:o.value}},!1);if(!Qt(u))return void i(u&&u.msg||"浇水失败");const r=u.data&&"object"==typeof u.data?u.data:{},s=Number(r.added_points)||0;Zt({...r,message:r.message||u.msg||""}),await e.nextTick$1();const d=n(r.message||u.msg,"");if(s>0){l=s,Sa.value={text:l,key:Date.now()},setTimeout(()=>{Sa.value=null},1100),Ha(),nn(),Fa("浇水成功",d||`+${s} 稳糖积分,小树咕咚喝饱啦`);(Array.isArray(r.claimed_tasks)?r.claimed_tasks:[]).forEach(e=>{var t;(t=e)&&(ka.value=t,$a&&clearTimeout($a),$a=setTimeout(()=>{ka.value=""},700))});const a=Ba.value;if(a>t){const t=e.TREE_LEVELS[a]||e.TREE_LEVELS[0];setTimeout(()=>Fa("小树升级啦",`Lv.${a} ${t.name} · ${t.desc}`),520)}return void setTimeout(()=>{va.value.every(e=>e.completed&&e.claimed)&&Fa("今日任务大满贯","明天继续来浇浇水吧")},900)}d&&i(d,{duration:2800});const c=va.value.find(e=>!e.completed&&!e.claimed);if(c)return void Tn(c);const v=Array.isArray(r.pending_tasks)?r.pending_tasks:[];if(v.length){const e=va.value.find(e=>e.id===v[0].id)||va.value.find(e=>e.name===v[0].name);return void(e&&!e.completed?Tn(e):d||i(`先完成:${v[0].name}`,{duration:2800}))}if(Number(r.claimable_points)>0)return void i("还有积分待领取,请再点一次浇水");ha.value&&!d&&i("今日奖励已全部领取",{duration:2800})}catch(u){i("浇水失败,请稍后重试")}var l}const Ua=e.computed(()=>e.calcTreeFromPoints(Gt.value)),Ba=e.computed(()=>Ua.value.level),Oa=e.computed(()=>Ua.value.progress),za=e.computed(()=>Ua.value.name),Ia=e.computed(()=>e.speciesEmojiAtLevel(Ga.value,Ba.value));e.computed(()=>Ua.value.mood);const Ga=e.ref("classic"),Va=e.ref(!1),qa=e.estimateDaysToMaxLevel(),Wa=e.computed(()=>e.getTreeSpecies(Ga.value));function Ya(e=o.value){return`tongji_tree_species_v1_${Number(e)||0}`}function Xa(){Va.value=!0}function Ja(){Va.value=!1}const Ka=e.ref(!1),Qa=e.computed(()=>fa.value.map(e=>{let t="未记录",a="pending",n="今日尚未打开此项";return e.claimed?(t="已完成",a="claimed",n="今日已录入,积分已领取"):e.completed&&(t="待浇水",a="water",n=`今日已录入,浇水可领 +${e.points} 积分`),{...e,statusLabel:t,statusKind:a,statusSub:n}})),Za=e.computed(()=>{if(ma.value)return"今日四项任务已全部完成并领取,小树喝饱啦,明天继续加油 🌱";const e=fa.value.filter(e=>!e.completed),t=fa.value.filter(e=>e.completed&&!e.claimed);return pa.value?`今日已打开 ${t.length} 项记录,浇水可领 ${ga.value} 积分`:e.length?`今日还差 ${e.length} 项未打开:${e.map(e=>e.name).join("、")}`:"先完成今日记录,再给小树浇水领积分"}),en=e.computed(()=>{const e=Wa.value;return Ua.value.isMax?`${e.name} 已满级 · 继续打卡巩固习惯`:`${e.name} · Lv.${Ba.value} ${za.value} · 再积 ${Ua.value.pointsToNext} 分升级「${Ua.value.nextName}」`});function tn(){Jt.value||(an(),Ha())}function an(){Ka.value=!0}function nn(){Ka.value=!1}function on(){nn(),Ca()}function ln(){const e=ba.value;e?(nn(),Tn(e,{skipGuide:!0})):nn()}const un=e.computed(()=>Ua.value.isMax?"已满级 · 圆满树":`${Ua.value.xpInLevel}/${Ua.value.xpNeed} XP`);e.computed(()=>Ua.value.isMax?"您已养成满级稳糖树,习惯就是最好的奖励":ga.value>0?`浇水后可再积 ${ga.value} 分,离升级更近一步`:`再积 ${Ua.value.pointsToNext} 分,升级「${Ua.value.nextName}」`);const rn=e.computed(()=>{if(Ua.value.isMax)return"已满级,继续浇水巩固习惯";return`还差 ${Ua.value.pointsToNext} XP 升级至 Lv.${Ba.value+1}`}),sn=e.ref(!1),dn=e.ref(""),cn=e.ref(""),vn=e.ref({like_count:0,summary_line:"分享战报给家人,邀请他们为您点赞鼓劲",recent:[]}),fn=e.ref(0);function gn(e=o.value){return`tongji_family_like_seen_${Number(e)||0}_${W.value}`}function pn(t=o.value){try{return Number(e.index.getStorageSync(gn(t)))||0}catch(a){return 0}}const mn=e.computed(()=>{const e=(u.value||"我").trim(),t=e.length>6?`${e.slice(0,6)}…`:e,a=new Date,n=`${a.getFullYear()}年 第${function(e){const t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),a=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-a);const n=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t-n)/864e5+1)/7)}(a)}周`,i=pe.value,o=_e.value;let l="坚持记录,就是在照顾未来的自己。";return l=i>=7?"本周每天都留下了记录,这份自律值得骄傲!":o>=5?`本周有 ${o} 天完成了空腹+餐后记录,习惯越来越稳。`:i>=4?`本周已记录 ${i} 天,比不记录强一百倍。`:i>0?"好的开始!下周试着多记录几天。":"从今天记一笔开始,小树就会发芽。",{patientLabel:t,weekLabel:n,recordDays:i,completeDays:o,streakDays:fe.value.days,quote:l}}),bn=e.computed(()=>Ba.value);e.computed(()=>Number(invitePreview.value.tree_level)||0),e.computed(()=>{const e=invitePreview.value.daily_records;return Array.isArray(e)?e:[]});const _n=["每天记一笔,就是在照顾未来的自己。","坚持记录比纠结数值更重要,您做得很好。","给树浇浇水,也给自己点个赞。","家人会看到您的努力,习惯比完美更珍贵。","空腹、餐后各记一次,完整一日更有成就感。"],hn=e.ref(0),yn=e.computed(()=>{const e=fa.value.find(e=>!e.completed);return"glucose"===(null==e?void 0:e.id)?"先完成血糖记录,再给小树浇水领积分。":"bp"===(null==e?void 0:e.id)?"先测血压并记录,再给小树浇水领积分。":"diet"===(null==e?void 0:e.id)?"记下今日饮食,再给小树浇水领积分。":"exercise"===(null==e?void 0:e.id)?"动一动、记一记,再给小树浇水领积分。":pa.value?`有 ${ga.value} 积分待领,点击「给小树浇水」吧。`:ma.value?"今日任务已全部完成,小树喝饱啦,明天继续加油。":_n[hn.value%_n.length]}),xn=e.computed(()=>{const e=yn.value,t=["给小树浇水","今日第一格就亮起来"];for(const a of t)if(e.includes(a)){const t=e.indexOf(a);return{prefix:e.slice(0,t),highlight:a,suffix:e.slice(t+a.length)}}return{prefix:e,highlight:"",suffix:""}});function wn(){hn.value=(hn.value+1)%_n.length;const e=_n[hn.value];At.value?Bt(e):i(e,{duration:2800})}function Sn(){getCurrentPages().length>1?e.index.navigateBack({delta:1}):e.index.navigateTo({url:"/tongji/pages/weekly"})}function kn(){e.index.navigateTo({url:"/tongji/pages/weekly"})}function Tn(t,n={}){if(!t)return;const l=!!n.skipGuide;if(!t.completed){if(sa(t.id,t.completed))return i(`今日「${t.name}」已录入${t.claimed?",积分已领取":",请去浇水领积分"}`,{duration:2800}),void(t.claimed||an());if(!o.value)return void i("请先选择就诊卡");return e.index.getStorageSync("token")?(l||i(`完成「${t.name}」后,点击「给小树浇水」领积分`,{duration:2600}),"glucose"===t.id?void Ee():"bp"===t.id?void async function(){if(!o.value)return void i("请先选择就诊卡");if(e.index.getStorageSync("token")){De(),$e.value={visible:!1,loading:!1,submitting:!1,id:0,systolic_pressure:"",diastolic_pressure:"",western_medicine:"",insulin:"",remark:"",visible:!0,loading:!0};try{const e=await a.apiUrl({url:"/api/tcm/dailyTodayBloodRecord",method:"GET",data:{diagnosis_id:o.value}},!1);if(e&&1===e.code&&e.data&&e.data.record){const t=e.data.record;$e.value.id=Number(t.id)||0,$e.value.systolic_pressure=He(t.systolic_pressure),$e.value.diastolic_pressure=He(t.diastolic_pressure),$e.value.western_medicine=String(t.western_medicine||""),$e.value.insulin=String(t.insulin||""),$e.value.remark=String(t.remark||""),aa.value&&i("今日血压已录入,如需修改可在下方调整",{duration:2600})}}catch(t){}finally{$e.value.loading=!1}}else i("请先登录后再录入")}():"diet"===t.id?void Be():"exercise"===t.id?void async function(){var t;if(!o.value)return void i("请先选择就诊卡");if(e.index.getStorageSync("token")){De(),Ge.value={visible:!1,loading:!1,submitting:!1,id:0,exercise_type:"",duration:"",intensity:2,note:"",visible:!0,loading:!0};try{const e=await a.apiUrl({url:"/api/tcm/dailyTodayExerciseRecord",method:"GET",data:{diagnosis_id:o.value}},!1);if(1===(null==e?void 0:e.code)&&(null==(t=e.data)?void 0:t.record)){const t=e.data.record;Ge.value.id=Number(t.id)||0,Ge.value.exercise_type=String(t.exercise_type||""),Ge.value.duration=He(t.duration),Ge.value.intensity=Number(t.intensity)||2,Ge.value.note=String(t.note||""),ia.value&&i("今日运动已录入,如需修改可在下方调整",{duration:2600})}}catch(n){}finally{Ge.value.loading=!1}}else i("请先登录后再录入")}():"blood"===t.id?void Ee():void i(`请先完成:${t.name}`)):void i("请先登录后再录入")}t.claimed?i(`今日「${t.name}」已录入,积分已领取`):an()}async function $n(){if(!o.value)return"";const t=`tongji_invite_${o.value}_${W.value}`;try{const a=e.index.getStorageSync(t);if(a&&a.invite_code&&a.invite_date===W.value)return cn.value=a.invite_code,a.invite_code}catch(n){}try{const l=await a.apiUrl({url:"/api/tcm/dailyCreateShareInvite",method:"POST",data:{diagnosis_id:o.value}},!1);if(l&&1===l.code&&l.data&&l.data.invite_code){const a=l.data.invite_code;cn.value=a;try{e.index.setStorageSync(t,{invite_code:a,invite_date:W.value})}catch(n){}return a}(null==l?void 0:l.msg)&&i(l.msg)}catch(n){i("生成邀请码失败")}return""}async function Dn(){const e=await $n();if(!e)return;const t=mn.value;dn.value=`【稳糖打卡】${t.patientLabel}本周记录${t.recordDays}天,邀请码 ${e}(今日有效)`}function Nn(){sn.value=!1}async function En(){if(!te()||!o.value)return;if(e.index.getStorageSync("token"))try{const t=await a.apiUrl({url:"/api/tcm/dailyFamilyLikeSummary",method:"GET",data:{diagnosis_id:o.value}},!1);if(t&&1===t.code&&t.data){const a=pn(),n=Math.max(fn.value,a),i=Number(t.data.like_count)||0;if(vn.value={like_count:i,summary_line:t.data.summary_line||"",recent:Array.isArray(t.data.recent)?t.data.recent:[]},i>n){const e=i-n;Fa(1===e&&0===n?"首个家人点赞":"收到家人鼓励",1===e?"分享真的有用,继续加油":`新增 ${e} 位家人点赞,共 ${i} 人`),Ha()}fn.value=i,function(t,a=o.value){try{e.index.setStorageSync(gn(a),Number(t)||0)}catch(n){}}(i)}}catch(t){}}function Pn(){vn.value.like_count>0?At.value?Bt(vn.value.summary_line):i(vn.value.summary_line,{duration:2400}):async function(){o.value?(await $n(),sn.value=!0):i("请先选择就诊卡")}()}return(t,n)=>e.e({a:e.p({show:ya.value,title:xa.value,subtitle:wa.value}),b:Pa.value.length},Pa.value.length?{c:e.f(Pa.value,(t,a,n)=>({a:e.t("south"===t.kind?"↓":"▼"),b:t.key,c:"south"===t.kind?1:"",d:t.left+"vw",e:t.size+"rpx",f:t.delay+"s"}))}:{},{d:f.value},(f.value,{}),{e:!f.value},f.value?{}:e.e({f:e.p({name:"chevron-left",size:"md",color:"#ffffff"}),g:e.o(Sn),h:e.t(u.value||"健康档案"),i:e.p({name:"glucose",size:"sm",color:"#ffffff"}),j:e.o(kn),k:e.p({name:"refresh",size:"md",color:"#ffffff"}),l:e.o(se),m:e.s(s.value),n:e.s(r.value),o:e.t(Gt.value),p:e.f(fa.value,(t,a,n)=>e.e({a:t.completed},t.completed?{b:"af10235a-4-"+n,c:e.p({name:"check",size:"sm",color:"#006c49"})}:{},{d:t.completed?"":1,e:e.t(t.points),f:"af10235a-5-"+n,g:e.p({name:da(t.id),size:"sm",color:"#006c49"}),h:e.t(t.name),i:t.completed&&t.claimed},(t.completed&&t.claimed||t.completed,{}),{j:t.completed,k:t.id,l:t.completed?1:"",m:e.o(e=>Tn(t),t.id)})),q:e.t(Ba.value),r:e.t(za.value),s:e.t(Wa.value.name),t:e.p({name:"chevron-right",size:"sm",color:"#006c49"}),v:e.o(Xa),w:Ua.value.isMax},Ua.value.isMax?{x:e.t(rn.value)}:{y:e.t(Ua.value.pointsToNext),z:e.t(Ba.value+1)},{A:e.t(un.value),B:Oa.value+"%",C:e.f(Da.value,(e,t,a)=>({a:e.key,b:e.left+"%",c:e.delay+"s"})),D:e.t(Ia.value),E:Kt.value?1:"",F:e.f(Na.value,(e,t,a)=>({a:e.key,b:e.left+"%",c:e.top+"%",d:e.dur+"s"})),G:Ea.value},Ea.value?{H:Ea.value.key}:{},{I:Sa.value},Sa.value?{J:e.t(Sa.value.text),K:Sa.value.key}:{},{L:e.o(Ma),M:e.p({name:"droplet",size:"md",color:"#FFFFFF"}),N:Jt.value?1:"",O:e.o(tn),P:e.t(_a.value),Q:o.value},o.value?e.e({R:e.f(h,(t,a,n)=>({a:e.t(t.label),b:t.value,c:_.value===t.value?1:"",d:e.o(e=>{return a=t.value,void(_.value!==a&&(_.value=a,re()));var a},t.value)})),S:he.value.length>0},he.value.length>0?{T:e.t(Se.value),U:e.t(xe.value),V:e.t(we.value),W:e.p({name:"chevron-right",size:"md",color:"#006c49"}),X:e.f(ye.value,(t,n,i)=>e.e({a:e.t(t.day),b:t.inRange&&t.level>0},t.inRange&&t.level>0?{c:t.isHigh?1:""}:{},{d:t.date,e:t.inRange?"":1,f:t.inRange&&t.level>0&&!t.isHigh?1:"",g:t.inRange&&t.isHigh?1:"",h:t.isToday&&t.inRange&&0===t.level?1:"",i:t.inRange&&0===t.level&&!t.isToday?1:"",j:!t.inRange&&t.level<0?1:"",k:e.o(n=>{return t.inRange&&t.level>0?(i=t.date,void(Y.value.some(e=>e.date===i)?e.index.createSelectorQuery().in(a).select(`#day-${i.replace(/-/g,"")}`).boundingClientRect().selectViewport().scrollOffset().exec(t=>{if(!t||!t[0])return;const a=t[0].top+(t[1]?t[1].scrollTop:0)-80;e.index.pageScrollTo({scrollTop:a,duration:280})}):e.index.showToast({title:"该日无记录",icon:"none"}))):null;var i},t.date)})),Y:e.t(ve.value?"今日已完成记录":"今日还没有记录"),Z:e.o(e=>Ee())}:{},{aa:e.t(Y.value.length),ab:p.value},p.value||0===Y.value.length?{}:{ad:e.f(Y.value,(t,a,n)=>e.e({a:e.t(t.dateLabel),b:e.t(t.weekday),c:t.blood},t.blood?e.e({d:t.blood.isHighFasting},(t.blood.isHighFasting||t.blood.isLowFasting,{}),{e:t.blood.isLowFasting,f:e.t(U(t.blood.fasting_blood_sugar)),g:t.blood.isHighFasting?1:"",h:t.blood.isLowFasting?1:"",i:t.blood.isHighFasting?1:"",j:t.blood.isLowFasting?1:"",k:"——"!==U(t.blood.postprandial_blood_sugar)},"——"!==U(t.blood.postprandial_blood_sugar)?e.e({l:t.blood.isHighPostprandial},(t.blood.isHighPostprandial||t.blood.isLowPostprandial,{}),{m:t.blood.isLowPostprandial,n:e.t(U(t.blood.postprandial_blood_sugar)),o:t.blood.isHighPostprandial?1:"",p:t.blood.isLowPostprandial?1:""}):{},{q:t.blood.isHighPostprandial?1:"",r:t.blood.isLowPostprandial?1:""}):{},{s:t.date,t:`day-${t.date.replace(/-/g,"")}`}))},{ac:0===Y.value.length,ae:e.p({name:"heart",size:"md",color:"#a43a3a"}),af:e.p({name:"chevron-right",size:"md",color:"#6c7a71"}),ag:e.o(Pn)}):{},{ah:o.value},o.value?e.e({ai:e.t(xn.value.prefix),aj:xn.value.highlight},xn.value.highlight?{ak:e.t(xn.value.highlight)}:{},{al:e.t(xn.value.suffix),am:e.o(wn)}):{},{an:b.value.length>0},b.value.length>0?{ao:e.t(b.value.length),ap:e.f(b.value,(t,a,n)=>e.e({a:e.t(t.patient_name||"未填"),b:t.age},t.age?{c:e.t(t.age)}:{},{d:t.id,e:Number(t.id)===Number(o.value)?1:"",f:e.o(e=>async function(e){e&&Number(e.id)!==Number(o.value)&&(y.value=[],x.value=[],w.value=[],S.value=[],k.value=null,await le(e),re())}(t),t.id)}))}:{},{aq:e.s(d.value),ar:Te.value.visible},Te.value.visible?e.e({as:e.t(Te.value.id?"修改今日血糖":"录入今日血糖"),at:e.t(ke.value),av:e.t(u.value||"本人"),aw:e.o(Pe),ax:Te.value.loading},Te.value.loading?{}:e.e({ay:e.unref(Xe)},e.unref(Xe)?{az:e.p({active:nt("glucose"),"on-dark":nt("glucose")}),aA:e.t(nt("glucose")?"正在聆听…松手结束":"长按说话,自动填写"),aB:nt("glucose")?1:"",aC:ct.active?1:"",aD:e.o(e=>ut("glucose")),aE:e.o(rt),aF:e.o(rt),aG:e.o(at)}:{},{aH:Te.value.fasting_blood_sugar,aI:e.o(e=>Ne("fasting_blood_sugar",e)),aJ:Te.value.postprandial_blood_sugar,aK:e.o(e=>Ne("postprandial_blood_sugar",e)),aL:Te.value.other_blood_sugar,aM:e.o(e=>Ne("other_blood_sugar",e)),aN:Te.value.remark,aO:e.o(e=>Ne("remark",e)),aP:!et.value,aQ:e.o(st),aR:e.o(st)}),{aS:Te.value.id},Te.value.id?{aT:Te.value.submitting?1:"",aU:e.o(Ae)}:{},{aV:e.t(Te.value.submitting?"提交中…":Te.value.id?"保存修改":"提交录入"),aW:Te.value.submitting||Te.value.loading?1:"",aX:e.o(Re),aY:e.o(()=>{}),aZ:e.o(Pe)}):{},{ba:$e.value.visible},$e.value.visible?e.e({bb:e.t($e.value.id?"修改今日血压":"录入今日血压"),bc:e.t(ke.value),bd:e.t(u.value||"本人"),be:e.o(Fe),bf:$e.value.loading},$e.value.loading?{}:{bg:e.p({active:nt("bp"),"on-dark":nt("bp")}),bh:e.t(nt("bp")?"正在聆听…松手结束":"长按说话,自动填写"),bi:nt("bp")?1:"",bj:e.o(e=>ut("bp")),bk:e.o(rt),bl:e.o(rt),bm:e.o(at),bn:$e.value.systolic_pressure,bo:e.o(e=>Le("systolic_pressure",e)),bp:$e.value.diastolic_pressure,bq:e.o(e=>Le("diastolic_pressure",e)),br:$e.value.western_medicine,bs:e.o(e=>Le("western_medicine",e)),bt:$e.value.insulin,bv:e.o(e=>Le("insulin",e)),bw:!et.value,bx:e.o(st),by:e.o(st)},{bz:$e.value.id},$e.value.id?{bA:$e.value.submitting?1:"",bB:e.o(Rt)}:{},{bC:e.t($e.value.submitting?"提交中…":"保存"),bD:$e.value.submitting||$e.value.loading?1:"",bE:e.o(Pt),bF:e.o(()=>{}),bG:e.o(Fe)}):{},{bH:Me.value.visible},Me.value.visible?e.e({bI:e.t(ke.value),bJ:e.o(Oe),bK:Me.value.loading},Me.value.loading?{}:e.e({bL:je.value&&je.value.breakfast},je.value&&je.value.breakfast?e.e({bM:e.t(je.value.breakfast),bN:je.value.drinks},je.value.drinks?{bO:e.t(je.value.drinks)}:{},{bP:e.t(je.value.lunch),bQ:e.t(je.value.dinner),bR:e.o(Ce)}):{},{bS:e.p({active:nt("diet"),"on-dark":nt("diet")}),bT:e.t(nt("diet")?"正在聆听…松手结束":"长按说话,自动填写"),bU:nt("diet")?1:"",bV:e.o(e=>ut("diet")),bW:e.o(rt),bX:e.o(rt),bY:e.o(at),bZ:Me.value.breakfast_foods,ca:e.o(e=>Ue("breakfast_foods",e)),cb:Me.value.lunch_foods,cc:e.o(e=>Ue("lunch_foods",e)),cd:Me.value.dinner_foods,ce:e.o(e=>Ue("dinner_foods",e)),cf:Me.value.note,cg:e.o(e=>Ue("note",e)),ch:!et.value,ci:e.o(st),cj:e.o(st)}),{ck:e.t(Me.value.submitting?"提交中…":"保存饮食"),cl:Me.value.submitting?1:"",cm:e.o(ze),cn:e.o(()=>{}),co:e.o(Oe)}):{},{cp:Ge.value.visible},Ge.value.visible?e.e({cq:e.t(ke.value),cr:e.o(Nt),cs:Ge.value.loading},Ge.value.loading?{}:{ct:e.p({active:nt("exercise"),"on-dark":nt("exercise")}),cv:e.t(nt("exercise")?"正在聆听…松手结束":"长按说话,自动填写"),cw:nt("exercise")?1:"",cx:e.o(e=>ut("exercise")),cy:e.o(rt),cz:e.o(rt),cA:e.o(at),cB:Ge.value.exercise_type,cC:e.o(e=>Dt("exercise_type",e)),cD:Ge.value.duration,cE:e.o(e=>Dt("duration",e)),cF:e.f(Ie,(t,a,n)=>({a:e.t(t.label),b:t.value,c:Ge.value.intensity===t.value?1:"",d:e.o(e=>Ge.value.intensity=t.value,t.value)})),cG:!et.value,cH:e.o(st),cI:e.o(st)},{cJ:e.t(Ge.value.submitting?"提交中…":"保存运动"),cK:Ge.value.submitting?1:"",cL:e.o(Et),cM:e.o(()=>{}),cN:e.o(Nt)}):{},{cO:(e.unref(Ye)||e.unref(We))&&!Ve.value&&!ct.active},!e.unref(Ye)&&!e.unref(We)||Ve.value||ct.active?{}:{cP:e.p({name:"mic",size:"lg",color:"#ffffff"}),cQ:e.unref(We)?1:"",cR:e.t(e.unref(We)?"正在聆听…":"准备录音…")},{cS:sn.value},sn.value?{cT:e.o(Nn),cU:e.p({level:bn.value,size:"md"}),cV:e.t(mn.value.patientLabel),cW:e.t(mn.value.weekLabel),cX:e.t(mn.value.recordDays),cY:e.t(mn.value.completeDays),cZ:e.t(mn.value.streakDays),da:e.t(mn.value.quote),db:e.o(Dn),dc:e.o(Nn),dd:e.o(()=>{}),de:e.o(Nn)}:{},{df:Ka.value},Ka.value?e.e({dg:e.o(nn),dh:e.t(Za.value),di:e.f(Qa.value,(t,a,n)=>({a:"af10235a-17-"+n,b:e.p({name:da(t.id),size:"sm",color:"#006c49"}),c:e.t(t.name),d:e.t(t.statusSub),e:e.t(t.statusLabel),f:t.id,g:e.n("is-"+t.statusKind)})),dj:en.value},en.value?{dk:e.t(en.value)}:{},{dl:pa.value},pa.value?{dm:e.t(ga.value),dn:e.o(on)}:ba.value?{dq:e.t(ba.value.name),dr:e.o(ln)}:{ds:e.o(nn)},{dp:ba.value,dt:e.o(()=>{}),dv:e.o(nn)}):{},{dw:Va.value},Va.value?{dx:e.o(Ja),dy:e.t(e.unref(qa)),dz:e.t(e.unref(e.TREE_XP_PER_LEVEL)),dA:e.f(e.unref(e.TREE_SPECIES_LIST),(t,a,n)=>({a:e.t(e.unref(e.speciesEmojiAtLevel)(t.id,Ba.value)),b:e.t(t.name),c:e.t(t.tagline),d:e.f(e.unref(e.speciesGrowthRoadmap)(t.id),(t,a,n)=>({a:e.t(t.emoji),b:e.t(t.level),c:e.t(t.name),d:t.level,e:Ba.value>=t.level?1:"",f:Ba.value===t.level?1:""})),e:t.id,f:Ga.value===t.id?1:"",g:e.o(a=>function(t){if(e.getTreeSpecies(t)){Ga.value=t;try{e.index.setStorageSync(Ya(),t)}catch(a){}Va.value=!1,i(`已切换为「${e.getTreeSpecies(t).name}」`,{duration:2200}),Ha()}}(t.id),t.id)})),dB:e.o(()=>{}),dC:e.o(Ja)}:{}),{dD:e.o(st),dE:e.o(st)})}},l=e._export_sfc(o,[["__scopeId","data-v-af10235a"]]);o.__runtimeHooks=2,wx.createPage(l);
|