# Conflicts: # server/public/admin/assets/.pnpm-Cy9nIqIg.js # server/public/admin/assets/403-DZv43rg8.js # server/public/admin/assets/404-BdEnY8Op.js # server/public/admin/assets/@tencentcloud/call-engine-js-DC0nMlpX.js # server/public/admin/assets/@tencentcloud/chat-BgZr4keH.js # server/public/admin/assets/@tencentcloud/chat-uikit-engine-D2vNRuTA.js # server/public/admin/assets/AppointmentRecordPanel-BLiYiAbY.js # server/public/admin/assets/AssignLogPanel-B37Pa478.js # server/public/admin/assets/AssistantWatchCallDialog-CwSHnJSG.js # server/public/admin/assets/BloodRecordList-Drn0jNIG.js # server/public/admin/assets/CaseRecordList-DOWsaiL5.js # server/public/admin/assets/ConsultationTranscriptPanel-fqClePUL.js # server/public/admin/assets/DailyMatrix-B_BuE6Wk.js # server/public/admin/assets/DiagnosisTodoList-BvKuWevJ.js # server/public/admin/assets/DietRecordList-CNcxCdHz.js # server/public/admin/assets/ExerciseRecordList-DcrDxj4-.js # server/public/admin/assets/FollowupAudioField-DwFRovp6.js # server/public/admin/assets/FollowupAudioPanel-161TbfEd.js # server/public/admin/assets/FollowupAudioReview-DUx7pf7f.js # server/public/admin/assets/GancaoSubmissionReconcileButton.vue_vue_type_script_setup_true_lang-8OIk4lHB.js # server/public/admin/assets/ImChatRecordPanel-DHff4nFV.js # server/public/admin/assets/MediaSourceSelect-DAiidBXd.js # server/public/admin/assets/MediaSourceSelect.vue_vue_type_script_setup_true_lang-BnUzDRdh.js # server/public/admin/assets/MessageBubble-bYTr-oyb.js # server/public/admin/assets/NoteTimeline-jPsAfPnk.js # server/public/admin/assets/OrderActionHost-CM9FpHNh.js # server/public/admin/assets/OrderPanel-Co_XYZDR.js # server/public/admin/assets/PatientCaseCard-CDC9oDgL.js # server/public/admin/assets/PatientInfoCard-wIayMpdX.js # server/public/admin/assets/PatientOrderList-C0nBgRYQ.js # server/public/admin/assets/PrescriptionAiBatchGenerateDialog--28G2reg.js # server/public/admin/assets/PrescriptionAiReportDialog-BElqcJhz.js # server/public/admin/assets/PrescriptionOrderDetailDrawer-C1YLaoua.js # server/public/admin/assets/PrescriptionOrderTimeDialog.vue_vue_type_script_setup_true_lang-zSycYEpH.js # server/public/admin/assets/ProgressPanel-DuOaWdPj.js # server/public/admin/assets/PromotionAutomationForm-CEi-wURu.js # server/public/admin/assets/RecordingPlaybackBlock-B1YEgQib.js # server/public/admin/assets/RecordingVideoPlayer-CzGfJLYq.js # server/public/admin/assets/SendPanel-C81B60j9.js # server/public/admin/assets/TrackingMatrix-Dvlry4c2.js # server/public/admin/assets/TrackingNoteTimeline-CcOnnAQR.js # server/public/admin/assets/WecomFloatingWidgetBuilder-BZ1rtSPX.js # server/public/admin/assets/WelcomeMessageEditor-FXBSgF_s.js # server/public/admin/assets/account-adjust.vue_vue_type_script_setup_true_lang-BDg3Vt-5.js # server/public/admin/assets/account_cost-1Kig3__5.js # server/public/admin/assets/add-CnMHBvcC.js # server/public/admin/assets/admin-mWKPRS5Z.js # server/public/admin/assets/ai_mcp-BdB18eax.js # server/public/admin/assets/appointment-BABD2Tar.js # server/public/admin/assets/article-B2IS97ge.js # server/public/admin/assets/asset-fny0UJmY.js # server/public/admin/assets/attr-BO203wr6.js # server/public/admin/assets/attr-CYxX_t_S.js # server/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang-BK3AJqkU.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-C1vfB9ju.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CA3Eqz_I.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CISdFe5h.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CfyBAgmS.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-LP4IWWFR.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-R-6FX7Mu.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-bgUhDqjK.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-hGjVuUay.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-hudO2m34.js # server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-i4BbFcAt.js # server/public/admin/assets/auth.vue_vue_type_script_setup_true_lang-BoZeVoZP.js # server/public/admin/assets/balance_details-DOLi1Dm0.js # server/public/admin/assets/bind-work-wechat-DFHKss6n.js # server/public/admin/assets/cache-nfUb4Iya.js # server/public/admin/assets/change-password-CeOlId8o.js # server/public/admin/assets/code-B18aVPXd.js # server/public/admin/assets/code-preview.vue_vue_type_script_setup_true_lang-DGCCjmlM.js # server/public/admin/assets/commission-settlement-CdEu_C9J.js # server/public/admin/assets/commission-settlement-CdlIY0iL.css # server/public/admin/assets/config-J5lzqSHX.js # server/public/admin/assets/consumer-BpKM0EGl.js # server/public/admin/assets/content-69Fk_4pj.js # server/public/admin/assets/content-BKD0OzuH.js # server/public/admin/assets/content-CBy84fnS.js # server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-AQZfsEkF.js # server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-BlBOVIVr.js # server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-ByXjA9a8.js # server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-DBQ1TxzP.js # server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-DSdHmkxS.js # server/public/admin/assets/cost-edit.vue_vue_type_script_setup_true_lang-CFW87alA.js # server/public/admin/assets/data-table.vue_vue_type_script_setup_true_lang-DLwRo6Tk.js # server/public/admin/assets/dayjs-LzqDqVlD.js # server/public/admin/assets/decoration-DiTN-PkH.js # server/public/admin/assets/decoration-img-BHQwkVvP.js # server/public/admin/assets/default_reply-D8zCYW7U.js # server/public/admin/assets/department-DWsa1OjT.js # server/public/admin/assets/dept-tongji-eyhTfbdn.js # server/public/admin/assets/desktop_workstation-DjyYOet-.js # server/public/admin/assets/detail-BZAR9ddi.js # server/public/admin/assets/detail-CFyC8ImZ.js # server/public/admin/assets/dict-K5jXOVeu.js # server/public/admin/assets/doctor-67HUqvH6.js # server/public/admin/assets/edit-BVGUIRWC.js # server/public/admin/assets/edit-BYRC6YDz.css # server/public/admin/assets/edit-CiIgrwSx.js # server/public/admin/assets/edit-CtQmrXFk.js # server/public/admin/assets/edit-DFAdp19K.js # server/public/admin/assets/edit-DNccqn8z.js # server/public/admin/assets/edit-DjWNlPnW.js # server/public/admin/assets/edit-Qrv_aqRa.js # server/public/admin/assets/edit-vVRINxRB.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-B_oC0AEU.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-C7-_pAL8.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CTFgk6QV.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CX_KUDU8.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DyP0DJmF.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DyqPlqpu.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-KBdoyuFG.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-NbrHRZf2.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-z-MjcUR0.js # server/public/admin/assets/edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-DKmZkTfn.js # server/public/admin/assets/environment-CypnLxrG.js # server/public/admin/assets/error-qleaM0eA.js # server/public/admin/assets/fans-BEy6y9dV.js # server/public/admin/assets/file-BbPuzGA_.js # server/public/admin/assets/file-CYwMKS77.js # server/public/admin/assets/filing-CD0AWXGl.js # server/public/admin/assets/finance-D_CR5ikx.js # server/public/admin/assets/first_visit-D4R0U3AW.js # server/public/admin/assets/follow_reply-c3sC_GVa.js # server/public/admin/assets/footer.vue_vue_type_script_setup_true_lang-g2gc-rGu.js # server/public/admin/assets/guahao-Dx7MIOXD.js # server/public/admin/assets/h5-DEYp6ziA.js # server/public/admin/assets/icon-CXrybs-g.js # server/public/admin/assets/im-business-message-parse-D_ibrMLq.js # server/public/admin/assets/index-01yWb2WC.js # server/public/admin/assets/index-6D3QYnU-.js # server/public/admin/assets/index-B1iWGyoA.js # server/public/admin/assets/index-B4AHD13Q.js # server/public/admin/assets/index-BBfgtFWE.js # server/public/admin/assets/index-BBw5kvK3.js # server/public/admin/assets/index-BDAWyLAZ.js # server/public/admin/assets/index-BJGIfP1w.js # server/public/admin/assets/index-BQUdwcn-.js # server/public/admin/assets/index-BSMBP3_x.js # server/public/admin/assets/index-BdkP3TxP.js # server/public/admin/assets/index-BgMeTKOG.js # server/public/admin/assets/index-Bmrtumah.js # server/public/admin/assets/index-Brsj06xV.js # server/public/admin/assets/index-Burmlw_C.js # server/public/admin/assets/index-C06c4h92.js # server/public/admin/assets/index-C1h5WVyC.js # server/public/admin/assets/index-C2Gny0kk.js # server/public/admin/assets/index-C5O-FG0j.js # server/public/admin/assets/index-C8BoF1ue.js # server/public/admin/assets/index-CJuWPVul.js # server/public/admin/assets/index-CV08lFR0.js # server/public/admin/assets/index-C_WKJDWz.js # server/public/admin/assets/index-Cew5Amf6.js # server/public/admin/assets/index-CkXW7n_b.js # server/public/admin/assets/index-CprgR4Ho.js # server/public/admin/assets/index-Csf0cSVI.js # server/public/admin/assets/index-Cux23s8_.js # server/public/admin/assets/index-D0fXvBxu.js # server/public/admin/assets/index-D8yz_vWn.js # server/public/admin/assets/index-DBKQxzkM.js # server/public/admin/assets/index-DIjSXq4q.js # server/public/admin/assets/index-DIqVZCk0.js # server/public/admin/assets/index-DNsVxejj.js # server/public/admin/assets/index-DPWF9bqo.js # server/public/admin/assets/index-DQ51fSAo.js # server/public/admin/assets/index-DQ9Uu3LT.js # server/public/admin/assets/index-DWRHbuqT.js # server/public/admin/assets/index-Db2Y9m7h.js # server/public/admin/assets/index-DcHdMI2B.js # server/public/admin/assets/index-DgPgE-Vl.js # server/public/admin/assets/index-Dr8oROcK.js # server/public/admin/assets/index-Ds_Mrym4.js # server/public/admin/assets/index-DtSyPsbW.js # server/public/admin/assets/index-GT7BM7PS.js # server/public/admin/assets/index-JZkFc8I0.js # server/public/admin/assets/index-hNEe3rMW.js # server/public/admin/assets/index-kMiV0948.js # server/public/admin/assets/index-qwjw9zcC.js # server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-BClfSqof.js # server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-BtlhchBa.js # server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-C6aeOkz-.js # server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-Cxgoepog.js # server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-Dx6SeCGU.js # server/public/admin/assets/index.vue_vue_type_style_index_0_lang-DFOUY-wL.js # server/public/admin/assets/information-D4VXaoVX.js # server/public/admin/assets/keyword_reply-CtUT2T_C.js # server/public/admin/assets/link-DAAa4-8h.js # server/public/admin/assets/list-B31OC0dY.js # server/public/admin/assets/login-D-CTVkUr.js # server/public/admin/assets/login_register-BiM6Wf25.js # server/public/admin/assets/medicine-BGJ8mZD8.js # server/public/admin/assets/medicine-CNGccw4f.js # server/public/admin/assets/menu-BhV_PotF.js # server/public/admin/assets/menu-CixPRDpt.js # server/public/admin/assets/menu-set.vue_vue_type_script_setup_true_lang-B0ghs-Pc.js # server/public/admin/assets/message-DWVo1Jk8.js # server/public/admin/assets/mobile-style.vue_vue_type_script_setup_true_lang-B9BK24HQ.js # server/public/admin/assets/mubiao-A1xD0JzP.js # server/public/admin/assets/mubiao-dept-card-DDiegAnr.js # server/public/admin/assets/mubiao-dept-node-Cmw8YiIy.js # server/public/admin/assets/oa-attr-DZLm3ufW.js # server/public/admin/assets/oa-menu-form-edit.vue_vue_type_script_setup_true_lang-CXz4UbLJ.js # server/public/admin/assets/oa-menu-form.vue_vue_type_script_setup_true_lang-BPJDNffP.js # server/public/admin/assets/open_setting-YVf3y2zz.js # server/public/admin/assets/order-Bc7o9SOH.js # server/public/admin/assets/overflow-DhSFQzu9.js # server/public/admin/assets/paiban-BY9Nnrmr.js # server/public/admin/assets/patient-DxJlPLVv.js # server/public/admin/assets/patient-call-q2qMhhFV.js # server/public/admin/assets/pay-DWoC89w_.js # server/public/admin/assets/pc-CDHcPjgN.js # server/public/admin/assets/perm-DaS8_T_U.js # server/public/admin/assets/picker-ruBeJVAv.js # server/public/admin/assets/picker.vue_vue_type_script_setup_true_lang-DsjIkNAZ.js # server/public/admin/assets/popover_input-CrckcagQ.js # server/public/admin/assets/post-DGDTwH-Z.js # server/public/admin/assets/prescription-drawer-DN1NpnaF.js # server/public/admin/assets/preview-BbXyDhjZ.js # server/public/admin/assets/preview-pc-DIFp8DvX.js # server/public/admin/assets/progress-BUj9Y2lB.js # server/public/admin/assets/protocol-Clsp_lEu.js # server/public/admin/assets/qywx-CxG05a7f.js # server/public/admin/assets/recharge_record-CymZKQ4E.js # server/public/admin/assets/refund-log.vue_vue_type_script_setup_true_lang-Choelpx6.js # server/public/admin/assets/refund_record-BLbeOAEj.js # server/public/admin/assets/relations-add.vue_vue_type_script_setup_true_lang-BRi9G5mf.js # server/public/admin/assets/role-Czcmecam.js # server/public/admin/assets/roster-Bh9PjuXi.js # server/public/admin/assets/rtc-detect-BFElJVVn.js # server/public/admin/assets/self_input_stats-P0WLo9tC.js # server/public/admin/assets/setting-CCd8WCbC.js # server/public/admin/assets/setup-HuwOPKIm.js # server/public/admin/assets/statistics-Cj3WlBni.js # server/public/admin/assets/stats-E_9WKdl6.js # server/public/admin/assets/style-DoPXLvzO.js # server/public/admin/assets/tabbar-DD2RRhme.js # server/public/admin/assets/tcm-E9u-W8Oy.js # server/public/admin/assets/theme-picker-NdSgC88S.js # server/public/admin/assets/tim-profanity-filter-plugin-BvbMOVpi.js # server/public/admin/assets/tim-upload-plugin-D7nWSdhF.js # server/public/admin/assets/tongji-yCfKN-LL.js # server/public/admin/assets/upload-CjtahvI1.js # server/public/admin/assets/useDictOptions-LZFsDBEH.js # server/public/admin/assets/useListTimeFilter-CUZgt-II.js # server/public/admin/assets/useLockFn-C2guENRT.js # server/public/admin/assets/useMediaSourceOptions-wCazM6uJ.js # server/public/admin/assets/useMenuOa-92GS9rAv.js # server/public/admin/assets/usePaging-DzgVFG9b.js # server/public/admin/assets/user-DHg9QKqg.js # server/public/admin/assets/weapp-C5C4Oypv.js # server/public/admin/assets/weapp-CgFixEn4.js # server/public/admin/assets/website-Dk_rtWyw.js # server/public/admin/assets/wx_oa-BR5bK2fX.js # server/public/admin/assets/yeji-BlMBwtyi.js # server/public/admin/assets/yeji-edit.vue_vue_type_script_setup_true_lang-AeltfJWh.js # server/public/admin/index.html
2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{o as ie,p as m,ap as de,aq as re,q as d,r,s as e,T as s,v as p,D as h,u as f,cQ as ue,w as ce,L as v,ae as k,F as x,G as L,P as G,O as Q,bx as _e,ac as me,bo as pe,bm as ve,bn as ge,bl as he,C as fe,M as we,aC as ye}from"./.pnpm-Cy9nIqIg.js";import{_ as be}from"./index.vue_vue_type_script_setup_true_lang-C6aeOkz-.js";import{d as $}from"./dayjs-LzqDqVlD.js";import{u as ke}from"./usePaging-DzgVFG9b.js";import{r as xe}from"./first_visit-DCAge5VK.js";import{_ as De}from"./index-BGCyUBQ6.js";const Ne={class:"progress-board"},Ce={class:"board-section overview-section"},Se={class:"section-heading"},qe={class:"heading-copy"},Me={class:"heading-badge"},$e={class:"scope-chip"},Pe={class:"overview-grid"},Ae={class:"overview-card"},Le={class:"overview-card"},Te={key:0},Ve={key:1},Ye={key:0,class:"remaining-detail"},Ee={class:"remaining-detail-heading"},ze={class:"remaining-doctor-list"},Be={class:"remaining-doctor-identity"},Re={class:"doctor-index"},Ie={class:"remaining-doctor-metrics"},Oe={class:"is-remaining"},Fe={class:"board-section schedule-section"},je={class:"section-heading"},Ue={class:"heading-copy"},Ge={class:"heading-badge"},Qe={class:"schedule-range"},We={class:"schedule-grid"},He=["aria-pressed","onClick"],Je={class:"schedule-date"},Ke={class:"schedule-card-stats"},Xe={class:"schedule-card-action"},Ze={class:"schedule-drilldown"},es={class:"drilldown-heading"},ss={key:0,class:"doctor-schedule-list"},ts={class:"doctor-identity"},ns={class:"doctor-index"},os={class:"doctor-windows"},ls={class:"doctor-metric"},as={class:"doctor-metric doctor-metric-booked"},is={key:0,class:"doctor-metric doctor-metric-completed"},ds={class:"doctor-metric doctor-metric-passed"},rs={class:"doctor-metric doctor-metric-empty"},us={class:"board-section queue-section"},cs={class:"section-heading queue-heading"},_s={class:"heading-copy"},ms={class:"queue-count"},ps={class:"queue-number"},vs={class:"patient-cell"},gs={class:"appointment-clock"},hs={key:0,class:"pagination-wrap"},fs=ie({__name:"ProgressPanel",emits:["openDiagnosis"],setup(ws,{expose:W,emit:H}){const J=H,w=$().format("YYYY-MM-DD"),y=we(w),P=ye({keyword:"",status:1,start_date:w,end_date:w}),{pager:a,getLists:N,resetPage:K}=ke({fetchFun:xe,params:P,size:15,firstLoading:!0,latestOnly:!0}),g=m(()=>{var t,o,i,_,c,C,S,q,M,n,b,B,R,I,O,F,j,U;return{totalVisits:Number(((o=(t=a.extend)==null?void 0:t.today_overview)==null?void 0:o.total_visits)||0),booked:Number(((_=(i=a.extend)==null?void 0:i.today_overview)==null?void 0:_.booked)||0),completed:Number(((C=(c=a.extend)==null?void 0:c.today_overview)==null?void 0:C.completed)||0),missed:Number(((q=(S=a.extend)==null?void 0:S.today_overview)==null?void 0:q.missed)||0),emptySlots:Number(((n=(M=a.extend)==null?void 0:M.today_overview)==null?void 0:n.empty_slots)||0),passedSlots:Number(((B=(b=a.extend)==null?void 0:b.today_overview)==null?void 0:B.passed_slots)||0),remainingSlots:Number(((I=(R=a.extend)==null?void 0:R.today_overview)==null?void 0:I.remaining_slots)??((F=(O=a.extend)==null?void 0:O.today_overview)==null?void 0:F.empty_slots)??0),doctorCount:Number(((U=(j=a.extend)==null?void 0:j.today_overview)==null?void 0:U.doctor_count)||0)}}),l=m(()=>{var t;return((t=a.extend)==null?void 0:t.schedule_mode)==="ownership"}),D=m(()=>{var o;const t=Array.isArray((o=a.extend)==null?void 0:o.week_schedule)?a.extend.week_schedule:[];return t.length?t:Array.from({length:7},(i,_)=>{const c=$().add(_,"day");return{date:c.format("YYYY-MM-DD"),date_text:c.format("MM-DD"),weekday:`周${"日一二三四五六"[c.day()]}`,total_slots:0,booked_slots:0,passed_slots:0,remaining_slots:0,empty_slots:0,doctor_count:0,doctors:[],total_appointments:0,waiting_appointments:0,completed_appointments:0,missed_appointments:0}})}),u=m(()=>D.value.find(t=>t.date===y.value)||D.value[0]||{date:w,date_text:$().format("MM-DD"),weekday:`周${"日一二三四五六"[$().day()]}`,total_slots:0,booked_slots:0,passed_slots:0,remaining_slots:0,empty_slots:0,doctor_count:0,doctors:[],total_appointments:0,waiting_appointments:0,completed_appointments:0,missed_appointments:0}),T=m(()=>{var t;return Array.isArray((t=u.value)==null?void 0:t.doctors)?u.value.doctors:[]}),V=m(()=>{const t=D.value.find(i=>i.date===w);return(Array.isArray(t==null?void 0:t.doctors)?t.doctors:[]).map(i=>({...i,remaining_slots:Number(i.remaining_slots??i.empty_slots??0),passed_slots:Number(i.passed_slots||0)})).sort((i,_)=>_.remaining_slots-i.remaining_slots||_.booked_slots-i.booked_slots||String(i.doctor_name||"").localeCompare(String(_.doctor_name||""),"zh-CN"))}),Y=m(()=>{const t=u.value;return`${t.date_text||""} ${t.weekday||""} `}),E=m(()=>y.value===w?"今日":Y.value.trim()||y.value),X=m(()=>{var t,o;return((o=(t=a.extend)==null?void 0:t.scope)==null?void 0:o.label)||"按权限加载"}),Z=m(()=>{const t=D.value;return t.length?`${t[0].date_text} 至 ${t[t.length-1].date_text}`:""});let A=null;function ee(t){return N(t)}function se(t){t&&(y.value=t,P.start_date=t,P.end_date=t,K())}function z(t){const o=l.value?t.appointment_times:t.schedule_windows,i=Array.isArray(o)?o.filter(Boolean):[];return i.length?i.join("、"):l.value?"暂无预约时刻":"未设置具体时段"}function te(t){return String(t.appointment_time||"").slice(0,5)||"—"}function ne(t){if(t.queue_status==="consulting")return"0(进行中)";if(t.queue_status==="next")return"0(待接诊)";const o=Math.max(0,Number(t.ahead_count||0));return o===0?"0 位":`${o} 位 · 约 ${Number(t.estimated_wait_minutes||o*15)} 分钟`}function oe(t){return t==="consulting"?"success":t==="next"?"warning":t==="completed"?"success":t==="missed"?"danger":"info"}function le({row:t}){return Number(t.is_self_patient)===1?"queue-row-self":""}function ae(t){J("openDiagnosis",t)}return W({refresh:ee,loading:m(()=>a.loading)}),de(()=>{N(),A=setInterval(()=>N({silent:!0}),15e3)}),re(()=>{A&&clearInterval(A)}),(t,o)=>{const i=ce,_=_e,c=ve,C=ge,S=he,q=be,M=pe;return d(),r("div",Ne,[e("section",Ce,[e("div",Se,[e("div",qe,[o[1]||(o[1]=e("h2",null,"今日面诊概览",-1)),e("span",Me,s(l.value?"按本人归属":"与排班合并"),1)]),e("span",$e,[p(i,null,{default:h(()=>[p(f(ue))]),_:1}),v(s(X.value),1)])]),e("div",Pe,[e("article",Ae,[e("span",null,s(l.value?"今日本人面诊":"今日面诊总号源"),1),e("strong",null,s(g.value.totalVisits),1),e("small",null,s(g.value.doctorCount)+" 位"+s(l.value?"接诊":"排班")+"医生",1)]),e("article",Le,[e("span",null,s(l.value?"待面诊":"已预约"),1),e("strong",null,s(g.value.booked),1),e("small",null,s(l.value?"本人归属患者的有效挂号":"按有效挂号占用号源"),1)]),e("article",{class:k(["overview-card",l.value?"overview-card-completed":"overview-card-empty"])},[e("span",null,s(l.value?"已完成":"空号"),1),e("strong",null,s(l.value?g.value.completed:g.value.remainingSlots),1),l.value?(d(),r("small",Te,"已过号 "+s(g.value.missed)+" 人",1)):(d(),r("small",Ve,"过号 "+s(g.value.passedSlots)+" · 未挂号 "+s(g.value.remainingSlots),1))],2)]),!l.value&&V.value.length?(d(),r("div",Ye,[e("div",Ee,[o[2]||(o[2]=e("h3",null,"医生剩余号源详情",-1)),e("span",null,"合计剩余可约 "+s(g.value.remainingSlots),1)]),e("div",ze,[(d(!0),r(x,null,L(V.value,(n,b)=>(d(),r("article",{key:n.doctor_id,class:"remaining-doctor-row"},[e("div",Be,[e("span",Re,s(b+1),1),e("div",null,[e("strong",null,s(n.doctor_name),1),e("small",null,s(z(n)),1)])]),e("div",Ie,[e("span",null,[o[3]||(o[3]=v("过号 ",-1)),e("strong",null,s(n.passed_slots||0),1)]),e("span",Oe,[o[4]||(o[4]=v("未挂号 / 剩余 ",-1)),e("strong",null,s(n.remaining_slots||0),1)])])]))),128))])])):G("",!0)]),e("section",Fe,[e("div",je,[e("div",Ue,[e("h2",null,s(l.value?"近一周面诊安排":"近一周排班"),1),e("span",Ge,s(l.value?"本人患者":"今日起 7 天"),1)]),e("span",Qe,s(Z.value),1)]),e("div",We,[(d(!0),r(x,null,L(D.value,n=>(d(),r("button",{key:n.date,type:"button",class:k(["schedule-card",{"is-today":n.date===f(w),"is-selected":n.date===y.value}]),"aria-pressed":n.date===y.value,onClick:b=>se(n.date)},[e("span",Je,s(n.date_text)+" "+s(n.weekday),1),e("strong",null,s(l.value?n.total_appointments:n.total_slots),1),e("span",Ke,[e("span",null,s(l.value?"待诊":"已约")+" "+s(l.value?n.waiting_appointments:n.booked_slots),1),o[5]||(o[5]=e("i",null,"/",-1)),e("span",{class:k({"is-completed":l.value})},s(l.value?"完成":"剩余")+" "+s(l.value?n.completed_appointments:n.remaining_slots??n.empty_slots),3)]),e("span",Xe,[e("span",null,s(n.doctor_count)+" 位医生",1),e("span",null,s(n.date===y.value?"正在查看":"查看明细")+" ›",1)])],10,He))),128))]),e("div",Ze,[e("div",es,[e("div",null,[e("h3",null,s(Y.value)+s(l.value?"面诊安排":"排班明细"),1),e("p",null,"共 "+s(u.value.doctor_count)+" 位"+s(l.value?"接诊":"排班")+"医生,点击上方日期可切换",1)]),e("div",{class:k(["drilldown-summary",{"is-ownership":l.value}])},[e("span",null,[v(s(l.value?"面诊总数":"总号源")+" ",1),e("strong",null,s(l.value?u.value.total_appointments:u.value.total_slots),1)]),e("span",null,[v(s(l.value?"待面诊":"已预约")+" ",1),e("strong",null,s(l.value?u.value.waiting_appointments:u.value.booked_slots),1)]),l.value?(d(),r(x,{key:0},[e("span",null,[o[6]||(o[6]=v("已完成 ",-1)),e("strong",null,s(u.value.completed_appointments),1)]),e("span",null,[o[7]||(o[7]=v("已过号 ",-1)),e("strong",null,s(u.value.missed_appointments),1)])],64)):(d(),r(x,{key:1},[e("span",null,[o[8]||(o[8]=v("过号 ",-1)),e("strong",null,s(u.value.passed_slots||0),1)]),e("span",null,[o[9]||(o[9]=v("剩余可约 ",-1)),e("strong",null,s(u.value.remaining_slots??u.value.empty_slots),1)])],64))],2)]),T.value.length?(d(),r("div",ss,[(d(!0),r(x,null,L(T.value,(n,b)=>(d(),r("article",{key:n.doctor_id,class:k(["doctor-schedule-row",{"is-ownership":l.value}])},[e("div",ts,[e("span",ns,s(b+1),1),e("div",null,[e("strong",null,s(n.doctor_name),1),e("small",null,s(l.value?"本人患者接诊医生":"医生排班"),1)])]),e("div",os,[e("span",null,s(l.value?"预约时刻":"排班时段"),1),e("strong",null,s(z(n)),1)]),e("div",ls,[e("span",null,s(l.value?"面诊总数":"总号源"),1),e("strong",null,s(l.value?n.total_appointments:n.total_slots),1)]),e("div",as,[e("span",null,s(l.value?"待面诊":"已预约"),1),e("strong",null,s(l.value?n.waiting_appointments:n.booked_slots),1)]),l.value?(d(),r("div",is,[o[10]||(o[10]=e("span",null,"完成 / 过号",-1)),e("strong",null,s(n.completed_appointments)+" / "+s(n.missed_appointments),1)])):(d(),r(x,{key:1},[e("div",ds,[o[11]||(o[11]=e("span",null,"过号",-1)),e("strong",null,s(n.passed_slots||0),1)]),e("div",rs,[o[12]||(o[12]=e("span",null,"未挂号 / 剩余",-1)),e("strong",null,s(n.remaining_slots??n.empty_slots),1)])],64))],2))),128))])):(d(),Q(_,{key:1,"image-size":56,description:l.value?"该日期暂无本人归属患者的有效挂号":"该日期暂无当前权限范围内的医生排班"},null,8,["description"]))])]),e("section",us,[e("div",cs,[e("div",_s,[e("h2",null,s(E.value)+"候诊列表",1),o[13]||(o[13]=e("span",{class:"heading-badge"},"按医生排队",-1)),e("span",ms,"共 "+s(f(a).count)+" 人",1)]),o[14]||(o[14]=e("span",{class:"refresh-time"},"每 15 秒自动刷新",-1))]),me((d(),Q(S,{data:f(a).lists,class:"queue-table","row-class-name":le,onRowDblclick:ae},{empty:h(()=>[p(_,{description:`当前权限范围内${E.value}暂无候诊患者`},null,8,["description"])]),default:h(()=>[p(c,{label:"排队",width:"92"},{default:h(({row:n})=>[e("span",ps,s(n.queue_no||"—"),1)]),_:1}),p(c,{label:"患者","min-width":"170"},{default:h(({row:n})=>[e("div",vs,[e("strong",null,s(n.patient_name||"未命名患者"),1),e("span",null,s(n.phone_masked||"无手机号"),1)])]),_:1}),p(c,{prop:"doctor_name",label:"医生","min-width":"130","show-overflow-tooltip":""}),p(c,{label:"预约时间","min-width":"135"},{default:h(({row:n})=>[e("span",gs,s(te(n)),1)]),_:1}),p(c,{label:"前方等待","min-width":"180"},{default:h(({row:n})=>[e("span",{class:k(["waiting-text",`is-${n.queue_status||"waiting"}`])},s(ne(n)),3)]),_:1}),p(c,{label:"状态","min-width":"110"},{default:h(({row:n})=>[p(C,{size:"small",round:"",effect:"light",type:oe(n.queue_status)},{default:h(()=>[v(s(n.queue_status_text||"等待中"),1)]),_:2},1032,["type"])]),_:1})]),_:1},8,["data"])),[[M,f(a).loading]]),f(a).count>f(a).size?(d(),r("div",hs,[p(q,{modelValue:f(a),"onUpdate:modelValue":o[0]||(o[0]=n=>fe(a)?a.value=n:null),onChange:f(N)},null,8,["modelValue","onChange"])])):G("",!0)])])}}}),Cs=De(fs,[["__scopeId","data-v-315ced2e"]]);export{Cs as default};
|