Files
zyt/server/public/admin/assets/progress-CyS-BQry.js
T
2026-04-07 18:13:03 +08:00

2 lines
10 KiB
JavaScript

import{d as pt,X as ut,Q as ct,P as mt,C as _t,i as ft,F as vt,G as gt,L as ht,N as bt,U as yt,a2 as kt,M as Nt,T as Et}from"./element-plus-D_tJqBgC.js";import{w as Ct}from"./@vue/runtime-dom-iFk_KP8y.js";import{a as Vt}from"./vue-router-CYz6RFzi.js";import{d as xt}from"./dayjs-DG77mNTn.js";import{g as Dt,N as Tt,J as H,u as St,O as It}from"./@element-plus/icons-vue-CmwKjXis.js";import{d as Mt,a as J}from"./doctor-ERC0u9ds.js";import{f as j,b as Rt,d as Pt,ak as l,I as r,J as o,a,aN as i,O as h,F as z,ap as K,G as T,H as V,aP as Yt,A as w}from"./@vue/runtime-core-C0pg79pw.js";import{o as R,y as S,r as $t}from"./@vue/reactivity-BIbyPIZJ.js";import{Q as p,o as Q}from"./@vue/shared-mAAVTE9n.js";import{_ as wt}from"./index-CLJhkNLF.js";import"./lodash-es-BADexyn7.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-Ba_jX6-d.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-DIKi2bJB.js";import"./@vueuse/shared-D8934tfB.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-DYKKs4Al.js";import"./tslib-BDyQ-Jie.js";import"./zrender-CTTuYiLF.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-BVMzZUvF.js";const At={class:"dp-page"},Bt={class:"dp-glass dp-toolbar"},Ut={class:"dp-toolbar-row"},zt={class:"dp-field-label"},Ft={class:"dp-field-label"},Ot={class:"dp-field-label"},Lt={class:"dp-toolbar-actions"},Gt={key:0,class:"dp-glass dp-doc-section"},Ht={class:"dp-section-head"},Jt={class:"dp-glass dp-table-wrap"},Kt={class:"dp-table-head"},Qt={class:"dp-table-head-left"},jt={key:0,class:"dp-table-range"},qt={class:"dp-table-badges"},Xt={key:0,class:"dp-chip dp-chip--doc"},Zt={key:1,class:"dp-chip dp-chip--count"},Wt={key:2,class:"dp-chip dp-chip--muted"},te={class:"dp-cell-user"},ee={class:"dp-avatar"},se={class:"dp-user-meta"},ae={class:"dp-user-name"},ne={class:"dp-user-phone"},oe={class:"dp-time"},le={class:"dp-steps"},ie={class:"dp-step-dot"},de={class:"dp-step-text"},re={class:"dp-step-name"},pe={key:0,class:"dp-step-hint"},ue={key:1,class:"dp-muted"},ce={key:1,class:"dp-muted"},me=j({name:"doctorProgress"}),_e=j({...me,setup(fe){const q=Vt(),I=R(!1),b=R([]),m=R(void 0),E=R([]),P=()=>xt().format("YYYY-MM-DD"),v=R([P(),P()]),_=$t({status:"",patient_name:""}),F=w(()=>{const e=m.value;if(e===void 0)return"";const t=b.value.find(n=>Number(n.id)===e);return t?String(t.name||t.account||""):""});function O(){const e=_.status;return e===""||e===void 0||e===null}const Y=w(()=>O()?E.value.filter(e=>Number(e.status)===3).length:0),A=w(()=>O()?E.value.filter(e=>Number(e.status)!==3):E.value),X=w(()=>Y.value>0&&A.value.length===0?`本时段有 ${Y.value} 条「已完成」已隐藏,可在状态中选择「已完成」查看`:"该时段内暂无挂号");function Z(e){const t=String(e||"?").trim();return t?t[0]:"?"}function W(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 tt(e){return e===3?"success":e===4?"warning":e===2?"info":"primary"}function L(e){const t=Number(e.status)===2,n=!t&&[1,3,4].includes(Number(e.status)),u=!!e.diagnosis_confirmed,d=Number(e.status)===3,f=!!e.has_prescription;return[{label:"挂号",done:n,current:n&&!u&&Number(e.status)===1,hint:t?"已取消":Number(e.status)===4?"已过号":""},{label:"确认诊单",done:u,current:n&&!u,hint:""},{label:"就诊中",done:d,current:n&&u&&!d&&Number(e.status)===1,hint:Number(e.status)===1&&u?"待完诊":""},{label:"开方",done:f,current:d&&!f,hint:""}]}function et(e){const n=L(e).filter(u=>u.done).length;return Math.round(n/4*100)}const B=2e3,st=15e3;let $=null;async function at(){const e=await Mt({role_id:1,page_type:0,page_no:1,progress_board:1});if(b.value=(e==null?void 0:e.lists)||[],!b.value.length){m.value=void 0,E.value=[];return}const t=b.value.some(n=>Number(n.id)===m.value);(m.value===void 0||!t)&&(m.value=Number(b.value[0].id))}async function y(e){var n,u;if(m.value===void 0){E.value=[];return}const t=(e==null?void 0:e.silent)===!0;t||(I.value=!0);try{const d={doctor_id:m.value,page_type:1,page_no:1,page_size:B,prescription_today_only:1,exclude_cancelled:1,progress_board:1};((n=v.value)==null?void 0:n.length)===2&&(d.start_date=v.value[0],d.end_date=v.value[1]),_.status!==""&&(d.status=_.status),(u=_.patient_name)!=null&&u.trim()&&(d.patient_name=_.patient_name.trim());const f=await J(d);let g=(f==null?void 0:f.lists)||[];const x=Number((f==null?void 0:f.count)??g.length);if(x>g.length&&g.length>=B){const C=[],D=Math.min(Math.ceil(x/B),20);for(let k=2;k<=D;k++){const c=await J({...d,page_no:k}),M=(c==null?void 0:c.lists)||[];if(!M.length)break;C.push(...M)}g=[...g,...C]}E.value=[...g].sort((C,D)=>{const k=`${C.appointment_date||""} ${C.appointment_time||""}`,c=`${D.appointment_date||""} ${D.appointment_time||""}`;return k.localeCompare(c)})}catch(d){console.error(d),t||(E.value=[])}finally{t||(I.value=!1)}}function nt(){typeof document<"u"&&document.hidden||y({silent:!0}).catch(()=>{})}function ot(){_.status="",_.patient_name="",v.value=[P(),P()],y()}function lt(e){q.push({path:"/tcm/diagnosis",query:{id:String(e)}})}return Rt(async()=>{await at(),await y(),$=setInterval(nt,st)}),Pt(()=>{$!=null&&(clearInterval($),$=null)}),(e,t)=>{var G;const n=pt,u=ut,d=ct,f=mt,g=_t,x=ft,C=vt,D=gt,k=Et,c=bt,M=yt,it=kt,dt=Nt,rt=ht;return l(),r("div",At,[o("section",Bt,[o("div",Ut,[o("span",zt,[a(n,null,{default:i(()=>[a(S(Dt))]),_:1}),t[9]||(t[9]=h(" 预约日期 ",-1))]),a(u,{modelValue:v.value,"onUpdate:modelValue":t[0]||(t[0]=s=>v.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]=()=>y())},null,8,["modelValue"]),o("span",Ft,[a(n,null,{default:i(()=>[a(S(Tt))]),_:1}),t[10]||(t[10]=h(" 状态 ",-1))]),a(f,{modelValue:_.status,"onUpdate:modelValue":t[2]||(t[2]=s=>_.status=s),placeholder:"全部",clearable:"",class:"dp-field-select",onChange:t[3]||(t[3]=()=>y())},{default:i(()=>[a(d,{label:"全部状态",value:""}),a(d,{label:"已预约(待就诊)",value:"1"}),a(d,{label:"已完成",value:"3"}),a(d,{label:"已过号",value:"4"})]),_:1},8,["modelValue"]),o("span",Ot,[a(n,null,{default:i(()=>[a(S(H))]),_:1}),t[11]||(t[11]=h(" 患者 ",-1))]),a(g,{modelValue:_.patient_name,"onUpdate:modelValue":t[4]||(t[4]=s=>_.patient_name=s),placeholder:"姓名",clearable:"",class:"dp-field-search",onKeyup:t[5]||(t[5]=Ct(()=>y(),["enter"]))},null,8,["modelValue"]),o("div",Lt,[a(x,{type:"primary",loading:I.value,icon:S(H),onClick:t[6]||(t[6]=()=>y())},{default:i(()=>[...t[12]||(t[12]=[h(" 查询 ",-1)])]),_:1},8,["loading","icon"]),a(x,{icon:S(St),onClick:ot},{default:i(()=>[...t[13]||(t[13]=[h("重置",-1)])]),_:1},8,["icon"])])])]),b.value.length?(l(),r("section",Gt,[o("div",Ht,[a(n,{class:"dp-section-icon"},{default:i(()=>[a(S(It))]),_:1}),t[14]||(t[14]=o("span",{class:"dp-section-title"},"选择医生",-1)),t[15]||(t[15]=o("span",{class:"dp-section-hint"},"切换后自动加载该医生挂号",-1))]),a(D,{modelValue:m.value,"onUpdate:modelValue":t[7]||(t[7]=s=>m.value=s),class:"dp-doc-pills",onChange:t[8]||(t[8]=()=>y())},{default:i(()=>[(l(!0),r(z,null,K(b.value,s=>(l(),T(C,{key:s.id,label:Number(s.id),class:"dp-doc-pill"},{default:i(()=>[h(p(s.name||s.account||"—"),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])):V("",!0),Yt((l(),r("section",Jt,[o("div",Kt,[o("div",Qt,[t[16]||(t[16]=o("span",{class:"dp-table-title"},"患者列表",-1)),((G=v.value)==null?void 0:G.length)===2?(l(),r("span",jt,p(v.value[0])+" ~ "+p(v.value[1]),1)):V("",!0)]),o("div",qt,[F.value?(l(),r("span",Xt,p(F.value),1)):V("",!0),m.value!==void 0&&!I.value?(l(),r("span",Zt,p(A.value.length)+" 人",1)):V("",!0),Y.value>0?(l(),r("span",Wt,"已隐藏已完成 "+p(Y.value),1)):V("",!0)])]),b.value.length?m.value===void 0?(l(),T(k,{key:1,description:"请选择医生"})):(l(),T(dt,{key:2,data:A.value,class:"dp-table",size:"default","empty-text":X.value},{default:i(()=>[a(c,{label:"患者","min-width":"140",fixed:"left"},{default:i(({row:s})=>[o("div",te,[o("div",ee,p(Z(s.patient_name)),1),o("div",se,[o("span",ae,p(s.patient_name||"—"),1),o("span",ne,p(s.patient_phone||"—"),1)])])]),_:1}),a(c,{label:"预约时间",width:"170"},{default:i(({row:s})=>[o("span",oe,p(W(s)),1)]),_:1}),a(c,{label:"挂号",width:"104",align:"center"},{default:i(({row:s})=>[a(M,{type:tt(s.status),effect:"light",round:"",size:"small"},{default:i(()=>[h(p(s.status_desc),1)]),_:2},1032,["type"])]),_:1}),a(c,{label:"面诊进度","min-width":"360"},{default:i(({row:s})=>[o("div",le,[(l(!0),r(z,null,K(L(s),(N,U)=>(l(),r(z,{key:U},[o("div",{class:Q(["dp-step",{"is-done":N.done,"is-current":N.current&&!N.done}])},[o("div",ie,p(U+1),1),o("div",de,[o("span",re,p(N.label),1),N.hint?(l(),r("span",pe,p(N.hint),1)):V("",!0)])],2),U<3?(l(),r("div",{key:0,class:Q(["dp-step-line",{"is-done":N.done}])},null,2)):V("",!0)],64))),128))]),a(it,{percentage:et(s),"stroke-width":8,class:"dp-progress"},null,8,["percentage"])]),_:1}),a(c,{label:"处方",width:"92",align:"center"},{default:i(({row:s})=>[s.has_prescription?(l(),T(M,{key:0,type:"success",effect:"dark",round:"",size:"small"},{default:i(()=>[...t[17]||(t[17]=[h("已开",-1)])]),_:1})):(l(),r("span",ue,"未开"))]),_:1}),a(c,{label:"操作",width:"96",fixed:"right",align:"center"},{default:i(({row:s})=>[s.diagnosis_id?(l(),T(x,{key:0,type:"primary",size:"small",round:"",plain:"",onClick:N=>lt(s.diagnosis_id)},{default:i(()=>[...t[18]||(t[18]=[h(" 诊单 ",-1)])]),_:1},8,["onClick"])):(l(),r("span",ce,"—"))]),_:1})]),_:1},8,["data","empty-text"])):(l(),T(k,{key:0,description:"暂无医生数据"}))])),[[rt,I.value]])])}}}),ts=wt(_e,[["__scopeId","data-v-879beb70"]]);export{ts as default};