2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{d as Nt,R as Et,Q as St,P as xt,C as Vt,i as It,F as Mt,G as $t,L as Ct,N as Tt,T as At,a1 as Dt,M as Rt,W as Pt}from"./element-plus-Bolc0EfP.js";import{w as Ut}from"./@vue/runtime-dom-DDAG46FW.js";import{a as Yt}from"./vue-router-QlpZ4wdW.js";import{d as K}from"./dayjs-DG77mNTn.js";import{k as Bt,a1 as zt,O as et,x as Ft,Z as Lt}from"./@element-plus/icons-vue-B0jSCQ-G.js";import{f as Ot,a as nt}from"./doctor-CFJdb4Tm.js";import{u as Gt,_ as Kt}from"./index-Q-68fWIq.js";import{f as at,b as jt,d as qt,ak as i,I as p,J as a,a as o,aN as u,O as k,F as z,ap as st,G as $,H as N,aP as Ht,A as C}from"./@vue/runtime-core-C6bnekPw.js";import{n as T,y as A,r as Qt}from"./@vue/reactivity-DiY1c2vO.js";import{Q as c,o as j}from"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./lodash-D3kF6u-c.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.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"./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 Wt={class:"dp-page"},Zt={class:"dp-glass dp-toolbar"},Jt={class:"dp-toolbar-row"},Xt={class:"dp-field-label"},wt={class:"dp-field-label"},te={class:"dp-field-label"},ee={class:"dp-toolbar-actions"},ne={key:0,class:"dp-glass dp-doc-section"},se={class:"dp-section-head"},ae={class:"dp-glass dp-table-wrap"},oe={class:"dp-table-head"},le={class:"dp-table-head-left"},ie={key:0,class:"dp-table-range"},re={class:"dp-table-badges"},de={key:0,class:"dp-chip dp-chip--account"},ue={key:1,class:"dp-chip dp-chip--doc"},pe={key:2,class:"dp-chip dp-chip--count"},ce={key:3,class:"dp-chip dp-chip--muted"},me={class:"dp-my-patients-eta"},_e={class:"dp-cell-user-body"},fe={class:"dp-avatar"},ve={class:"dp-user-meta"},ge={class:"dp-user-name"},he={class:"dp-user-phone"},be={class:"dp-time"},ye={class:"dp-steps"},ke={class:"dp-step-dot"},Ne={class:"dp-step-text"},Ee={class:"dp-step-name"},Se={key:0,class:"dp-step-hint"},xe={key:1,class:"dp-muted"},Ve={key:1,class:"dp-muted"},Ie=at({name:"doctorProgress"}),Me=at({...Ie,setup($e){const ot=Yt(),q=Gt(),D=T(!1),E=T([]),f=T(void 0),S=T([]),R=()=>K().format("YYYY-MM-DD"),b=T([R(),R()]),v=Qt({status:"",patient_name:""}),H=C(()=>{const e=f.value;if(e===void 0)return"";const t=E.value.find(n=>Number(n.id)===e);return t?String(t.name||t.account||""):""}),lt=C(()=>{var t;const e=(t=q.userInfo)==null?void 0:t.id;return e!=null&&e!==""?Number(e):NaN}),Q=C(()=>{const e=q.userInfo||{};return String(e.name||e.account||"").trim()});function F(e){const t=lt.value;if(Number.isNaN(t))return!1;const n=e==null?void 0:e.assistant_id;return n==null||n===""?!1:Number(n)===t}const it=15,W=T(0);let P=null;function Z(e){const t=String(e.appointment_date||"");let n=e.appointment_time||"";return typeof n=="string"&&n.length>5&&(n=n.slice(0,5)),`${t} ${n}`.trim()}function rt(e){const t=e.appointment_date;if(!t)return null;let n=e.appointment_time||"00:00";typeof n=="string"&&n.length>5&&(n=n.slice(0,5));const l=K(`${t} ${n}`);return l.isValid()?l:null}function J(e){const t=Math.max(0,Math.round(e));if(t===0)return"不到 1 分钟";if(t<60)return`${t} 分钟`;const n=Math.floor(t/60),l=t%60;return l===0?`${n} 小时`:`${n} 小时${l} 分钟`}function dt(e){if(W.value,!F(e))return"";const t=Number(e.status);if(t===3)return"面诊已完成(医生已点完成)";if(t===4)return"已过号,无法按序预估";if(t!==1)return"";const n=K(),l=rt(e),r=l?l.isAfter(n):!1,m=r&&l?Math.max(0,l.diff(n,"minute")):0,y=S.value.filter(d=>d.appointment_date===e.appointment_date&&Number(d.status)===1).slice().sort((d,I)=>{const B=Z(d).localeCompare(Z(I));return B!==0?B:Number(d.id)-Number(I.id)}).findIndex(d=>Number(d.id)===Number(e.id)),g=y>=0?y:0,V=g*it,_=[];return r&&_.push(`距预约时段还有约 ${J(m)}`),g===0?_.push(r?"到号后可优先安排面诊":"已到号,可尽快面诊"):_.push(`前面约 ${g} 人,按序粗估约 ${J(V)}`),_.join(";")}function X(){const e=v.status;return e===""||e===void 0||e===null}const U=C(()=>X()?S.value.filter(e=>Number(e.status)===3).length:0),L=C(()=>X()?S.value.filter(e=>Number(e.status)!==3):S.value),ut=C(()=>U.value>0&&L.value.length===0?`本时段有 ${U.value} 条「已完成」已隐藏,可在状态中选择「已完成」查看`:"该时段内暂无挂号");function pt(e){const t=String(e||"?").trim();return t?t[0]:"?"}function ct(e){const t=e.appointment_date||"";let n=e.appointment_time||"";return typeof n=="string"&&n.length>5&&(n=n.slice(0,5)),t?`${t} ${n}`.trim():"—"}function mt(e){return e===3?"success":e===4?"warning":e===2?"info":"primary"}function w(e){const t=Number(e.status)===2,n=!t&&[1,3,4].includes(Number(e.status)),l=!!e.diagnosis_confirmed,r=Number(e.status)===3,m=!!e.has_prescription;return[{label:"挂号",done:n,current:n&&!l&&Number(e.status)===1,hint:t?"已取消":Number(e.status)===4?"已过号":""},{label:"确认诊单",done:l,current:n&&!l,hint:""},{label:"就诊中",done:r,current:n&&l&&!r&&Number(e.status)===1,hint:Number(e.status)===1&&l?"待完诊":""},{label:"开方",done:m,current:r&&!m,hint:""}]}function _t(e){const n=w(e).filter(l=>l.done).length;return Math.round(n/4*100)}const O=2e3,ft=15e3;let Y=null;async function vt(){const e=await Ot({role_id:1,page_type:0,page_no:1,progress_board:1});if(E.value=(e==null?void 0:e.lists)||[],!E.value.length){f.value=void 0,S.value=[];return}const t=E.value.some(n=>Number(n.id)===f.value);(f.value===void 0||!t)&&(f.value=Number(E.value[0].id))}async function x(e){var n,l;if(f.value===void 0){S.value=[];return}const t=(e==null?void 0:e.silent)===!0;t||(D.value=!0);try{const r={doctor_id:f.value,page_type:1,page_no:1,page_size:O,prescription_today_only:1,exclude_cancelled:1,progress_board:1};((n=b.value)==null?void 0:n.length)===2&&(r.start_date=b.value[0],r.end_date=b.value[1]),v.status!==""&&(r.status=v.status),(l=v.patient_name)!=null&&l.trim()&&(r.patient_name=v.patient_name.trim());const m=await nt(r);let h=(m==null?void 0:m.lists)||[];const y=Number((m==null?void 0:m.count)??h.length);if(y>h.length&&h.length>=O){const g=[],V=Math.min(Math.ceil(y/O),20);for(let _=2;_<=V;_++){const d=await nt({...r,page_no:_}),I=(d==null?void 0:d.lists)||[];if(!I.length)break;g.push(...I)}h=[...h,...g]}S.value=[...h].sort((g,V)=>{const _=`${g.appointment_date||""} ${g.appointment_time||""}`,d=`${V.appointment_date||""} ${V.appointment_time||""}`;return _.localeCompare(d)})}catch(r){console.error(r),t||(S.value=[])}finally{t||(D.value=!1)}}function gt(){typeof document<"u"&&document.hidden||x({silent:!0}).catch(()=>{})}function ht(){v.status="",v.patient_name="",b.value=[R(),R()],x()}function bt(e){ot.push({path:"/tcm/diagnosis",query:{id:String(e)}})}return jt(async()=>{await vt(),await x(),Y=setInterval(gt,ft),P=setInterval(()=>{W.value+=1},6e4)}),qt(()=>{Y!=null&&(clearInterval(Y),Y=null),P!=null&&(clearInterval(P),P=null)}),(e,t)=>{var tt;const n=Nt,l=Et,r=St,m=xt,h=Vt,y=It,g=Mt,V=$t,_=Pt,d=Tt,I=At,B=Dt,yt=Rt,kt=Ct;return i(),p("div",Wt,[a("section",Zt,[a("div",Jt,[a("span",Xt,[o(n,null,{default:u(()=>[o(A(Bt))]),_:1}),t[9]||(t[9]=k(" 预约日期 ",-1))]),o(l,{modelValue:b.value,"onUpdate:modelValue":t[0]||(t[0]=s=>b.value=s),type:"daterange","range-separator":"—","start-placeholder":"开始","end-placeholder":"结束","value-format":"YYYY-MM-DD","unlink-panels":"",class:"dp-field-date",onChange:t[1]||(t[1]=()=>x())},null,8,["modelValue"]),a("span",wt,[o(n,null,{default:u(()=>[o(A(zt))]),_:1}),t[10]||(t[10]=k(" 状态 ",-1))]),o(m,{modelValue:v.status,"onUpdate:modelValue":t[2]||(t[2]=s=>v.status=s),placeholder:"全部",clearable:"",class:"dp-field-select",onChange:t[3]||(t[3]=()=>x())},{default:u(()=>[o(r,{label:"全部状态",value:""}),o(r,{label:"已预约(待就诊)",value:"1"}),o(r,{label:"已完成",value:"3"}),o(r,{label:"已过号",value:"4"})]),_:1},8,["modelValue"]),a("span",te,[o(n,null,{default:u(()=>[o(A(et))]),_:1}),t[11]||(t[11]=k(" 患者 ",-1))]),o(h,{modelValue:v.patient_name,"onUpdate:modelValue":t[4]||(t[4]=s=>v.patient_name=s),placeholder:"姓名",clearable:"",class:"dp-field-search",onKeyup:t[5]||(t[5]=Ut(()=>x(),["enter"]))},null,8,["modelValue"]),a("div",ee,[o(y,{type:"primary",loading:D.value,icon:A(et),onClick:t[6]||(t[6]=()=>x())},{default:u(()=>[...t[12]||(t[12]=[k(" 查询 ",-1)])]),_:1},8,["loading","icon"]),o(y,{icon:A(Ft),onClick:ht},{default:u(()=>[...t[13]||(t[13]=[k("重置",-1)])]),_:1},8,["icon"])])])]),E.value.length?(i(),p("section",ne,[a("div",se,[o(n,{class:"dp-section-icon"},{default:u(()=>[o(A(Lt))]),_:1}),t[14]||(t[14]=a("span",{class:"dp-section-title"},"选择医生",-1)),t[15]||(t[15]=a("span",{class:"dp-section-hint"},"切换后自动加载该医生挂号",-1))]),o(V,{modelValue:f.value,"onUpdate:modelValue":t[7]||(t[7]=s=>f.value=s),class:"dp-doc-pills",onChange:t[8]||(t[8]=()=>x())},{default:u(()=>[(i(!0),p(z,null,st(E.value,s=>(i(),$(g,{key:s.id,label:Number(s.id),class:"dp-doc-pill"},{default:u(()=>[k(c(s.name||s.account||"—"),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])):N("",!0),Ht((i(),p("section",ae,[a("div",oe,[a("div",le,[t[16]||(t[16]=a("span",{class:"dp-table-title"},"患者列表",-1)),((tt=b.value)==null?void 0:tt.length)===2?(i(),p("span",ie,c(b.value[0])+" ~ "+c(b.value[1]),1)):N("",!0)]),a("div",re,[Q.value?(i(),p("span",de,"当前账号 "+c(Q.value),1)):N("",!0),H.value?(i(),p("span",ue,c(H.value),1)):N("",!0),f.value!==void 0&&!D.value?(i(),p("span",pe,c(L.value.length)+" 人",1)):N("",!0),U.value>0?(i(),p("span",ce,"已隐藏已完成 "+c(U.value),1)):N("",!0)])]),E.value.length?f.value===void 0?(i(),$(_,{key:1,description:"请选择医生"})):(i(),$(yt,{key:2,data:L.value,class:"dp-table",size:"default","empty-text":ut.value},{default:u(()=>[o(d,{label:"患者","min-width":"200",fixed:"left"},{default:u(({row:s})=>[a("div",{class:j(["dp-cell-user",{"is-my-patients":F(s)}])},[F(s)?(i(),p(z,{key:0},[t[17]||(t[17]=a("div",{class:"dp-my-patients-caption"},"我的患者",-1)),a("div",me,c(dt(s)),1)],64)):N("",!0),a("div",_e,[a("div",fe,c(pt(s.patient_name)),1),a("div",ve,[a("span",ge,c(s.patient_name||"—"),1),a("span",he,c(s.patient_phone||"—"),1)])])],2)]),_:1}),o(d,{label:"预约时间",width:"170"},{default:u(({row:s})=>[a("span",be,c(ct(s)),1)]),_:1}),o(d,{label:"挂号",width:"104",align:"center"},{default:u(({row:s})=>[o(I,{type:mt(s.status),effect:"light",round:"",size:"small"},{default:u(()=>[k(c(s.status_desc),1)]),_:2},1032,["type"])]),_:1}),o(d,{label:"面诊进度","min-width":"360"},{default:u(({row:s})=>[a("div",ye,[(i(!0),p(z,null,st(w(s),(M,G)=>(i(),p(z,{key:G},[a("div",{class:j(["dp-step",{"is-done":M.done,"is-current":M.current&&!M.done}])},[a("div",ke,c(G+1),1),a("div",Ne,[a("span",Ee,c(M.label),1),M.hint?(i(),p("span",Se,c(M.hint),1)):N("",!0)])],2),G<3?(i(),p("div",{key:0,class:j(["dp-step-line",{"is-done":M.done}])},null,2)):N("",!0)],64))),128))]),o(B,{percentage:_t(s),"stroke-width":8,class:"dp-progress"},null,8,["percentage"])]),_:1}),o(d,{label:"处方",width:"92",align:"center"},{default:u(({row:s})=>[s.has_prescription?(i(),$(I,{key:0,type:"success",effect:"dark",round:"",size:"small"},{default:u(()=>[...t[18]||(t[18]=[k("已开",-1)])]),_:1})):(i(),p("span",xe,"未开"))]),_:1}),o(d,{label:"操作",width:"96",fixed:"right",align:"center"},{default:u(({row:s})=>[s.diagnosis_id?(i(),$(y,{key:0,type:"primary",size:"small",round:"",plain:"",onClick:M=>bt(s.diagnosis_id)},{default:u(()=>[...t[19]||(t[19]=[k(" 诊单 ",-1)])]),_:1},8,["onClick"])):(i(),p("span",Ve,"—"))]),_:1})]),_:1},8,["data","empty-text"])):(i(),$(_,{key:0,description:"暂无医生数据"}))])),[[kt,D.value]])])}}}),fn=Kt(Me,[["__scopeId","data-v-607f52e0"]]);export{fn as default};
|