2 lines
28 KiB
JavaScript
2 lines
28 KiB
JavaScript
import{F as Pt,i as Wt,d as Qt,P as Lt,Q as Mt,J as Ot,M as Tt,N as Yt,p as Bt,n as Ht,o as jt,L as Gt,Y as Jt,G as Kt,D as Xt,h as Zt,a5 as ea,a6 as ta,U as aa,R as la,v as sa,e as na}from"./element-plus-CFxTwCZ2.js";import{_ as ia}from"./index.vue_vue_type_script_setup_true_lang-CaamePaH.js";import{w as oa,q as da}from"./@vue/runtime-dom-iFk_KP8y.js";import{D as fe,E as ra,i as ua,F as We,G as ma,m as Qe,H as Le,I as pa,J as ca,K as _a,L as fa}from"./tcm-CEDF0dA_.js";import{f as va}from"./order-B2Np0-0y.js";import{d as ga}from"./doctor-CWMDoMqr.js";import{u as ya}from"./usePaging-D4wPHtKU.js";import{a as ha,j as Me,f as v,d as ba}from"./index-DqzX0p3J.js";import{g as Oe}from"./weapp-Dnx64MKA.js";import{h as G,E as ka}from"./edit-CIb_NJzO.js";import{e as Te,S as Ca,R as Ye,b as Va,F as xa,G as wa,l as Da}from"./@element-plus/icons-vue-cboVPb4D.js";import{_ as Ea}from"./detail.vue_vue_type_script_setup_true_lang-y-pF77i-.js";import Ra from"./appointment-EUrgBCoK.js";import{u as $a}from"./vue-router-CYz6RFzi.js";import{d as za}from"./dayjs-DG77mNTn.js";import{f as Be,b as Ia,n as Aa,as as Fa,ak as i,I as p,a as s,aN as n,J as o,F as D,ap as $,O as m,H as h,aP as P,G as g,A as ve}from"./@vue/runtime-core-C0pg79pw.js";import{y as l,a as T,r as ze,o as u}from"./@vue/reactivity-BIbyPIZJ.js";import{o as se,Q as c}from"./@vue/shared-mAAVTE9n.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";import"./picker-DsltUfs3.js";import"./index-Dn-pwuas.js";import"./index-CHkSemYM.js";import"./index-DrGLRjBU.js";import"./index-H3KMCy3k.js";import"./index.vue_vue_type_script_setup_true_lang-DNaQ2ceB.js";import"./vuedraggable-C3E4D3Yv.js";import"./vue-tI-HfQaQ.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./BloodRecordList-BS0mske4.js";import"./CaseRecordList-1NwayiPu.js";import"./CallRecordPanel-C_tba6F8.js";import"./ImChatRecordPanel-CJDxJ90z.js";import"./html2canvas-QH1iLAAe.js";const Sa={class:"tcm-diagnosis"},Ua={class:"filter-main"},Na={class:"date-chips"},qa=["onClick"],Pa={key:0},Wa={class:"search-row"},Qa={class:"filter-chips"},La=["onClick"],Ma=["onClick"],Oa={class:"filter-more"},Ta={class:"list-header"},Ya={class:"list-actions"},Ba={key:0,class:"list-selected"},Ha={class:"table-wrap px-4"},ja={class:"patient-cell"},Ga={class:"patient-avatar"},Ja={class:"patient-info"},Ka={class:"patient-name"},Xa={class:"patient-meta"},Za={class:"apt-doctor"},el={class:"apt-time"},tl={key:1,class:"apt-none"},al={key:0,class:"status-confirmed"},ll={key:1,class:"status-unconfirmed"},sl={class:"diagnosis-cell"},nl={class:"diagnosis-date"},il={key:0,class:"diagnosis-extra"},ol={class:"assistant-cell"},dl={key:0,class:"status-prescribed"},rl={key:1,class:"status-unprescribed"},ul={class:"action-cell"},ml={class:"pagination-wrap"},pl={class:"flex flex-col items-center justify-center py-4"},cl={key:0,class:"text-center"},_l={key:1,class:"text-center"},fl=["src"],vl={class:"mt-4 text-sm text-gray-600"},gl={key:2,class:"text-center text-gray-500"},yl={class:"text-gray-500"},hl={class:"text-gray-500"},bl={class:"font-medium"},kl={class:"font-medium"},Cl={key:0,class:"mb-4"},Vl={key:0},xl={key:0,class:"mt-2"},wl={key:1,class:"mt-2"},Dl={class:"mb-4"},El={class:"flex gap-2"},Rl={key:0,class:"text-center text-gray-400 py-10"},$l={key:1,class:"record-list"},zl={class:"record-header"},Il={class:"flex items-center gap-2"},Al={class:"font-medium text-sm"},Fl={class:"flex items-center gap-2"},Sl={class:"text-xs text-gray-400"},Ul={class:"record-content"},Nl={key:0,class:"mt-1"},ql={key:2,class:"text-center mt-4"},Pl=Be({name:"tcmDiagnosis"}),Wl=Be({...Pl,setup(Ql){const y=ze({patient_name:"",diagnosis_type:"",syndrome_type:"",assistant_id:"",start_time:"",end_time:"",diagnosis_confirmed:"",appointment_date:"",has_appointment:""}),He=u("all"),J=u(!1),je=[{label:"全部",value:""},{label:"已挂号",value:"1"},{label:"未挂号",value:"0"}],Ge=[{label:"全部",value:""},{label:"已确认",value:"1"},{label:"未确认",value:"0"}],Je=t=>{y.has_appointment=t,E.page=1,b(),W()},Ke=t=>{y.diagnosis_confirmed=t,E.page=1,b(),W()},K=()=>{E.page=1,b(),W()},Xe=ve(()=>[{label:"当天挂号",value:ne.value},{label:"明天挂号",value:ye.value},{label:"后天挂号",value:he.value},{label:"全部",value:""}]),ge=u({}),Ze=async t=>{y.appointment_date=t,E.page=1,await b(),W()},W=async()=>{try{const[t,e,r]=await Promise.all([fe({appointment_date:ne.value,page_no:1,page_size:1}),fe({appointment_date:ye.value,page_no:1,page_size:1}),fe({appointment_date:he.value,page_no:1,page_size:1})]);ge.value={[ne.value]:(t==null?void 0:t.count)??0,[ye.value]:(e==null?void 0:e.count)??0,[he.value]:(r==null?void 0:r.count)??0}}catch(t){console.error("获取日期数量失败",t)}},Y=t=>String(t).padStart(2,"0"),ne=ve(()=>{const t=new Date;return`${t.getFullYear()}-${Y(t.getMonth()+1)}-${Y(t.getDate())}`}),ye=ve(()=>{const t=new Date;return t.setDate(t.getDate()+1),`${t.getFullYear()}-${Y(t.getMonth()+1)}-${Y(t.getDate())}`}),he=ve(()=>{const t=new Date;return t.setDate(t.getDate()+2),`${t.getFullYear()}-${Y(t.getMonth()+1)}-${Y(t.getDate())}`}),ie=u([]),oe=u([]),X=u([]),et=async()=>{try{const[t,e,r]=await Promise.all([Me({type:"diagnosis_type"}),Me({type:"syndrome_type"}),ra()]);ie.value=(t==null?void 0:t.diagnosis_type)||[],oe.value=(e==null?void 0:e.syndrome_type)||[],X.value=r||[]}catch(t){console.error("获取字典数据失败:",t)}},de=(t,e)=>{const r=t.find(d=>d.value===e);return r?r.name:e||"-"},tt=t=>{if(!t&&t!==0)return"-";const e=typeof t=="string"?parseInt(t):t;if(X.value.length===0)return"...";const r=X.value.find(d=>(typeof d.id=="string"?parseInt(d.id):d.id)===e);return r?r.name:"-"},{pager:E,getLists:b}=ya({fetchFun:fe,params:y}),at=()=>{He.value="all",y.patient_name="",y.diagnosis_type="",y.syndrome_type="",y.assistant_id="",y.diagnosis_confirmed="",y.appointment_date="",y.has_appointment="",E.page=1,b(),W()},Ie=t=>{const e=t.DiagnosisViewRecord||[];return e.length>0&&e.some(r=>r.is_confirmed==1)},lt=({row:t})=>Ie(t)?t.has_appointment?"":"row-no-appointment":"row-unconfirmed",Z=u(),st=u(),Ae=u(),be=ha(),B=u(!1),re=u(),ke=u(!1),_=ze({patient_id:"",patient_name:"",phone:"",order_type:"",amount:0,remark:""}),nt={order_type:[{required:!0,message:"请选择订单类型",trigger:"change"}],amount:[{required:!0,message:"请输入订单金额",trigger:"blur"}]},it=t=>{var e;_.patient_id=t.patient_id||t.id,_.patient_name=t.patient_name,_.phone=t.phone||"",_.order_type="",_.amount=0,_.remark="",(e=re.value)==null||e.clearValidate(),B.value=!0},ot=()=>{var t;_.patient_id="",_.patient_name="",_.phone="",_.order_type="",_.amount=0,_.remark="",(t=re.value)==null||t.clearValidate()},dt=async()=>{var t;try{await((t=re.value)==null?void 0:t.validate()),ke.value=!0;const e=await va({patient_id:_.patient_id,order_type:_.order_type,amount:_.amount,remark:_.remark});B.value=!1,b();const r=e==null?void 0:e.order_no;if(r){z.value=!0,A.value=!0,F.value="",Q.value={patient_name:_.patient_name};try{const d=await ua({order_no:r});d!=null&&d.qrcode_url?F.value=d.qrcode_url:v.msgError("二维码生成失败")}catch(d){v.msgError((d==null?void 0:d.msg)||"生成二维码失败")}finally{A.value=!1}}}catch(e){console.error("创建订单失败:",e)}finally{ke.value=!1}},z=u(!1),A=u(!1),F=u(""),Q=u(null),Ce=u("小程序二维码"),Ve=u("confirm"),S=u([]),L=u(!1),xe=u(!1),ee=u("batch"),te=u(null),U=u({assistant_id:null}),rt=t=>{S.value=t.map(e=>e.id)},ut=t=>{ee.value="single",te.value=t,U.value.assistant_id=t.assistant_id?Number(t.assistant_id):null,L.value=!0},mt=()=>{if(S.value.length===0){v.msgWarning("请先选择要指派的诊单");return}ee.value="batch",te.value=null,U.value.assistant_id=null,L.value=!0},pt=async()=>{if(!U.value.assistant_id){v.msgWarning("请选择医助");return}xe.value=!0;try{if(ee.value==="single")await We({id:te.value.id,assistant_id:U.value.assistant_id});else{const t=S.value.map(e=>We({id:e,assistant_id:U.value.assistant_id}));await Promise.all(t),S.value=[]}L.value=!1,b()}catch(t){console.error("指派失败:",t)}finally{xe.value=!1}},ct=()=>{Z.value.open("add")},_t=t=>{Z.value.open("edit",t)},ft=async t=>{await v.confirm("确定要删除该诊单吗?"),await _a({id:t}),b()},vt=(t,e)=>{switch(t){case"assign":ut(e);break;case"videoQr":if(!e.has_appointment){v.msgWarning("未挂号患者无法生成视频二维码,请先预约医生");return}Se(e);break;case"confirmQr":Ue(e);break;case"cancelApt":gt(e);break;case"order":it(e);break;case"delete":ft(e.id);break}},gt=async t=>{if(!t.has_appointment||!t.appointment_id){v.msgWarning("该诊单未挂号或挂号信息异常");return}try{await v.confirm(`确定要取消患者「${t.patient_name}」的挂号吗?`),await ga({id:t.appointment_id}),v.msgSuccess("取消挂号成功"),b(),W()}catch(e){e!=="cancel"&&v.msgError((e==null?void 0:e.msg)||"取消挂号失败")}},yt=t=>{var e;if(!t.patient_id){v.msgWarning("患者信息不完整");return}(e=Ae.value)==null||e.open(t)},H=u(!1),we=u(!1),Fe=u(),R=ze({id:0,patient_name:"",id_card:""}),ht={id_card:[{required:!0,validator:(t,e,r)=>{if(!e){r(new Error("请输入身份证号"));return}const d=/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(e),C=/^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/.test(e);d||C?r():r(new Error("请输入15或18位有效身份证号"))},trigger:"blur"}]},bt=t=>{R.id=t.id,R.patient_name=t.patient_name||"-",R.id_card=t.id_card||"",H.value=!0},kt=async()=>{var t;await((t=Fe.value)==null?void 0:t.validate()),we.value=!0;try{await ma({id:R.id,id_card:R.id_card}),v.msgSuccess("补全成功,年龄已自动更新"),H.value=!1,b()}catch(e){v.msgError((e==null?void 0:e.msg)||"补全失败")}finally{we.value=!1}},Se=async t=>{var e;if(!t.has_appointment){v.msgWarning("未挂号患者无法生成视频二维码,请先预约医生");return}if(!t.patient_id){v.msgWarning("患者信息不完整");return}Ve.value="video",Q.value=t,z.value=!0,A.value=!0,F.value="",Ce.value="视频二维码";try{const r=await Oe();if(!(r!=null&&r.app_id)){v.msgError("小程序未配置,请先配置小程序信息"),z.value=!1;return}const d=await Qe({doctor_id:t.appointment_doctor_id,diagnosis_id:t.appointment_doctor_id,patient_id:t.patient_id,share_user_id:((e=be.userInfo)==null?void 0:e.id)||"",mini_program_path:"pages/login/login"});d!=null&&d.qrcode_url?F.value=d.qrcode_url:v.msgError("二维码生成失败")}catch(r){v.msgError((r==null?void 0:r.msg)||"生成二维码失败,请重试")}finally{A.value=!1}},Ue=async t=>{if(!t.patient_id){v.msgWarning("患者信息不完整");return}Ve.value="confirm",Q.value=t,z.value=!0,A.value=!0,F.value="",Ce.value="诊单二维码";try{const e=await Oe();if(!(e!=null&&e.app_id)){v.msgError("小程序未配置,请先配置小程序信息"),z.value=!1;return}const r=be.userInfo,d=await Qe({diagnosis_id:t.id,doctor_id:t.appointment_doctor_id,patient_id:t.patient_id,share_user_id:(r==null?void 0:r.id)||""});d!=null&&d.qrcode_url?F.value=d.qrcode_url:v.msgError("二维码生成失败")}catch(e){console.error("生成小程序二维码失败:",e),v.msgError((e==null?void 0:e.msg)||"生成二维码失败,请重试")}finally{A.value=!1}},Ct=()=>{Q.value&&(Ve.value==="video"?Se(Q.value):Ue(Q.value))},ue=u(!1),V=u(null),N=u([]),me=u(0),De=u(!1),x=u(null),M=u(""),Ee=u(!1),Re=u(1),Vt=t=>{if(!t)return"-";const e=String(t).length===10?t*1e3:t;return za(e).format("YYYY-MM-DD HH:mm")},xt=async t=>{V.value=t,ue.value=!0,N.value=[],me.value=0,x.value=null,M.value="",Re.value=1,De.value=!0;try{const[e,r]=await Promise.all([Le({diagnosis_id:t.id,patient_id:t.patient_id,page_no:1,page_size:20}),fa({patient_id:t.patient_id||t.id}).catch(()=>null)]);N.value=(e==null?void 0:e.lists)||[],me.value=(e==null?void 0:e.count)||0,x.value=r}catch(e){console.error("加载企业微信记录失败:",e)}finally{De.value=!1}},wt=async()=>{if(V.value){Re.value++;try{const t=await Le({diagnosis_id:V.value.id,patient_id:V.value.patient_id,page_no:Re.value,page_size:20});N.value.push(...(t==null?void 0:t.lists)||[])}catch(t){console.error("加载更多记录失败:",t)}}},Dt=async()=>{var t;if(!M.value.trim()){v.msgWarning("请输入内容");return}Ee.value=!0;try{await pa({diagnosis_id:V.value.id,patient_id:V.value.patient_id,content:M.value.trim(),msg_type:"note",staff_name:((t=be.userInfo)==null?void 0:t.name)||"",external_name:V.value.patient_name||""}),M.value="",xt(V.value)}catch(e){v.msgError((e==null?void 0:e.msg)||"添加失败")}finally{Ee.value=!1}},Et=async t=>{await v.confirm("确定删除该记录吗?");try{await ca({id:t}),N.value=N.value.filter(e=>e.id!==t),me.value--}catch(e){v.msgError((e==null?void 0:e.msg)||"删除失败")}},Rt=$a();return Ia(async()=>{await et(),y.appointment_date=ne.value,b(),W();const t=Rt.query.id;t&&Z.value&&Aa(()=>Z.value.open("edit",Number(t)))}),(t,e)=>{var Pe;const r=Pt,d=Wt,C=Qt,w=Mt,ae=Lt,Ne=Ot,q=Yt,j=jt,$t=Ht,zt=Bt,It=Tt,At=ia,pe=Jt,I=Xt,$e=Kt,Ft=Zt,ce=ta,O=aa,St=ea,Ut=la,Nt=sa,qt=na,le=Fa("perms"),qe=Gt;return i(),p("div",Sa,[s(Ne,{class:"filter-card !border-none",shadow:"never"},{default:n(()=>[o("div",Ua,[o("div",Na,[(i(!0),p(D,null,$(l(Xe),a=>(i(),p("span",{key:a.value,class:se(["chip",{active:l(y).appointment_date===a.value}]),onClick:k=>Ze(a.value)},[m(c(a.label)+" ",1),a.value&&l(ge)[a.value]!==void 0?(i(),p("em",Pa,c(l(ge)[a.value]),1)):h("",!0)],10,qa))),128))]),o("div",Wa,[s(r,{modelValue:l(y).patient_name,"onUpdate:modelValue":e[0]||(e[0]=a=>l(y).patient_name=a),placeholder:"患者姓名",clearable:"",class:"search-input",onKeyup:oa(K,["enter"])},null,8,["modelValue"]),s(d,{type:"primary",onClick:K},{default:n(()=>[...e[22]||(e[22]=[m("查询",-1)])]),_:1})])]),o("div",Qa,[e[23]||(e[23]=o("span",{class:"chip-label"},"挂号:",-1)),(i(),p(D,null,$(je,a=>o("span",{key:a.value,class:se(["chip","chip-sm",{active:l(y).has_appointment===a.value}]),onClick:k=>Je(a.value)},c(a.label),11,La)),64)),e[24]||(e[24]=o("span",{class:"chip-divider"},null,-1)),e[25]||(e[25]=o("span",{class:"chip-label"},"确认:",-1)),(i(),p(D,null,$(Ge,a=>o("span",{key:a.value,class:se(["chip","chip-sm",{active:l(y).diagnosis_confirmed===a.value}]),onClick:k=>Ke(a.value)},c(a.label),11,Ma)),64)),s(d,{link:"",type:"primary",size:"small",class:"more-btn",onClick:e[1]||(e[1]=a=>J.value=!l(J))},{default:n(()=>[m(c(l(J)?"收起":"更多筛选")+" ",1),s(C,{class:se({"rotate-180":l(J)})},{default:n(()=>[s(l(Te))]),_:1},8,["class"])]),_:1})]),P(o("div",Oa,[s(ae,{modelValue:l(y).diagnosis_type,"onUpdate:modelValue":e[2]||(e[2]=a=>l(y).diagnosis_type=a),placeholder:"诊断类型",clearable:"",size:"small",onChange:K},{default:n(()=>[(i(!0),p(D,null,$(l(ie),a=>(i(),g(w,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(ae,{modelValue:l(y).syndrome_type,"onUpdate:modelValue":e[3]||(e[3]=a=>l(y).syndrome_type=a),placeholder:"证型",clearable:"",size:"small",onChange:K},{default:n(()=>[(i(!0),p(D,null,$(l(oe),a=>(i(),g(w,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(ae,{modelValue:l(y).assistant_id,"onUpdate:modelValue":e[4]||(e[4]=a=>l(y).assistant_id=a),placeholder:"医助",clearable:"",filterable:"",size:"small",onChange:K},{default:n(()=>[(i(!0),p(D,null,$(l(X),a=>(i(),g(w,{key:a.id,label:a.name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(d,{size:"small",onClick:at},{default:n(()=>[...e[26]||(e[26]=[m("重置",-1)])]),_:1})],512),[[da,l(J)]])]),_:1}),s(Ne,{class:"!border-none mt-3 list-card",shadow:"never"},{default:n(()=>[o("div",Ta,[o("div",Ya,[P((i(),g(d,{type:"primary",onClick:ct},{default:n(()=>[...e[27]||(e[27]=[m("新增诊单",-1)])]),_:1})),[[le,["tcm.diagnosis/add"]]]),P((i(),g(d,{type:"success",onClick:mt,disabled:l(S).length===0},{default:n(()=>[...e[28]||(e[28]=[m(" 批量指派医助 ",-1)])]),_:1},8,["disabled"])),[[le,["tcm.diagnosis/assign"]]])]),l(S).length>0?(i(),p("div",Ba,"已选 "+c(l(S).length)+" 条",1)):h("",!0)]),o("div",Ha,[P((i(),g(It,{data:l(E).lists,size:"default",onSelectionChange:rt,"row-class-name":lt,class:"diagnosis-table",stripe:""},{default:n(()=>[s(q,{type:"selection",width:"48",align:"center"}),s(q,{label:"患者","min-width":"150"},{default:n(({row:a})=>[o("div",ja,[o("div",Ga,c((a.patient_name||"患").charAt(0)),1),o("div",Ja,[o("div",Ka,c(a.patient_name),1),o("div",Xa,c(a.id)+" · "+c(a.gender_desc||"-")+" · "+c(a.age??"-")+"岁",1)])])]),_:1}),s(q,{label:"挂号","min-width":"180"},{default:n(({row:a})=>[o("div",{class:se(["appointment-cell",{"has-apt":a.has_appointment}])},[a.has_appointment?(i(),p(D,{key:0},[e[29]||(e[29]=o("div",{class:"apt-badge"},"已挂号",-1)),o("div",Za,c(a.appointment_doctor_name||"-"),1),o("div",el,c(a.appointment_time_text||"-"),1)],64)):(i(),p("span",tl,"未挂号"))],2)]),_:1}),s(q,{label:"确认",width:"88",align:"center"},{default:n(({row:a})=>[Ie(a)?(i(),p("span",al,"已确认")):(i(),p("span",ll,"未确认"))]),_:1}),s(q,{label:"诊断","min-width":"130"},{default:n(({row:a})=>[o("div",sl,[o("span",nl,c(a.diagnosis_date_text||"-"),1),de(l(ie),a.diagnosis_type)||de(l(oe),a.syndrome_type)?(i(),p("span",il,c([de(l(ie),a.diagnosis_type),de(l(oe),a.syndrome_type)].filter(Boolean).join(" · ")),1)):h("",!0)])]),_:1}),s(q,{label:"助理",width:"72","show-overflow-tooltip":""},{default:n(({row:a})=>[o("span",ol,c(tt(a.assistant_id||a.assistant)),1)]),_:1}),s(q,{label:"开方",width:"72",align:"center"},{default:n(({row:a})=>[a.has_prescription?(i(),p("span",dl,"已开方")):(i(),p("span",rl,"未开方"))]),_:1}),s(q,{label:"操作",width:"260",fixed:"right",align:"left"},{default:n(({row:a})=>[o("div",ul,[P((i(),g(d,{type:"primary",link:"",size:"small",onClick:k=>_t(a.id)},{default:n(()=>[...e[30]||(e[30]=[m("诊单",-1)])]),_:1},8,["onClick"])),[[le,["tcm.diagnosis/edit"]]]),P((i(),g(d,{type:"success",link:"",size:"small",onClick:k=>yt(a)},{default:n(()=>[...e[31]||(e[31]=[m("预约",-1)])]),_:1},8,["onClick"])),[[le,["tcm.diagnosis/guahao"]]]),P((i(),g(d,{type:"warning",link:"",size:"small",onClick:k=>bt(a)},{default:n(()=>[...e[32]||(e[32]=[m("补全身份证",-1)])]),_:1},8,["onClick"])),[[le,["tcm.diagnosis/edit"]]]),s(zt,{trigger:"click",onCommand:k=>vt(k,a),placement:"bottom-end"},{dropdown:n(()=>[s($t,null,{default:n(()=>[l(G)(["tcm.diagnosis/assign"])?(i(),g(j,{key:0,command:"assign"},{default:n(()=>[s(C,null,{default:n(()=>[s(l(Ca))]),_:1}),e[34]||(e[34]=m("指派",-1))]),_:1})):h("",!0),a.has_appointment&&l(G)(["tcm.diagnosis/videoQr"])?(i(),g(j,{key:1,command:"videoQr"},{default:n(()=>[s(C,null,{default:n(()=>[s(l(Ye))]),_:1}),e[35]||(e[35]=m("视频二维码",-1))]),_:1})):h("",!0),l(G)(["tcm.diagnosis/guahao"])&&a.has_appointment?(i(),g(j,{key:2,command:"confirmQr"},{default:n(()=>[s(C,null,{default:n(()=>[s(l(Ye))]),_:1}),e[36]||(e[36]=m("二维码",-1))]),_:1})):h("",!0),a.has_appointment&&l(G)(["tcm.diagnosis/guahao"])?(i(),g(j,{key:3,command:"cancelApt"},{default:n(()=>[s(C,null,{default:n(()=>[s(l(Va))]),_:1}),e[37]||(e[37]=m("取消挂号",-1))]),_:1})):h("",!0),l(G)(["tcm.diagnosis/order"])?(i(),g(j,{key:4,command:"order"},{default:n(()=>[s(C,null,{default:n(()=>[s(l(xa))]),_:1}),e[38]||(e[38]=m("创建订单",-1))]),_:1})):h("",!0),l(G)(["tcm.diagnosis/delete"])?(i(),g(j,{key:5,command:"delete",divided:""},{default:n(()=>[s(C,null,{default:n(()=>[s(l(wa))]),_:1}),e[39]||(e[39]=o("span",{class:"text-danger"},"删除",-1))]),_:1})):h("",!0)]),_:2},1024)]),default:n(()=>[s(d,{type:"info",link:"",size:"small"},{default:n(()=>[e[33]||(e[33]=m("更多",-1)),s(C,{class:"el-icon--right"},{default:n(()=>[s(l(Te))]),_:1})]),_:1})]),_:2},1032,["onCommand"])])]),_:1})]),_:1},8,["data"])),[[qe,l(E).loading]]),o("div",ml,[s(At,{modelValue:l(E),"onUpdate:modelValue":e[5]||(e[5]=a=>T(E)?E.value=a:null),onChange:l(b)},null,8,["modelValue","onChange"])])])]),_:1}),s(ka,{ref_key:"editRef",ref:Z,onSuccess:l(b)},null,8,["onSuccess"]),s(Ea,{ref_key:"detailRef",ref:st},null,512),s(Ra,{ref_key:"appointmentRef",ref:Ae,onSuccess:l(b)},null,8,["onSuccess"]),s(pe,{modelValue:l(z),"onUpdate:modelValue":e[7]||(e[7]=a=>T(z)?z.value=a:null),title:l(Ce),width:"400px","close-on-click-modal":!1},{footer:n(()=>[s(d,{onClick:e[6]||(e[6]=a=>z.value=!1)},{default:n(()=>[...e[42]||(e[42]=[m("关闭",-1)])]),_:1}),l(A)?h("",!0):(i(),g(d,{key:0,type:"primary",onClick:Ct},{default:n(()=>[...e[43]||(e[43]=[m(" 重新生成 ",-1)])]),_:1}))]),default:n(()=>{var a;return[o("div",pl,[l(A)?(i(),p("div",cl,[s(C,{class:"is-loading",size:40},{default:n(()=>[s(l(Da))]),_:1}),e[40]||(e[40]=o("div",{class:"mt-4 text-gray-500"},"生成中...",-1))])):l(F)?(i(),p("div",_l,[o("img",{src:l(F),alt:"小程序二维码",class:"w-64 h-64 border border-gray-200 rounded"},null,8,fl),o("div",vl,[o("div",null,"患者:"+c((a=l(Q))==null?void 0:a.patient_name),1),e[41]||(e[41]=o("div",{class:"mt-2"},"请使用企业微信扫描二维码,然后转发给患者",-1))])])):(i(),p("div",gl," 生成失败,请重试 "))])]}),_:1},8,["modelValue","title"]),s(pe,{modelValue:l(L),"onUpdate:modelValue":e[10]||(e[10]=a=>T(L)?L.value=a:null),title:l(ee)==="batch"?"批量指派医助":"指派医助",width:"500px"},{footer:n(()=>[s(d,{onClick:e[9]||(e[9]=a=>L.value=!1)},{default:n(()=>[...e[44]||(e[44]=[m("取消",-1)])]),_:1}),s(d,{type:"primary",onClick:pt,loading:l(xe)},{default:n(()=>[...e[45]||(e[45]=[m(" 确定指派 ",-1)])]),_:1},8,["loading"])]),default:n(()=>[s($e,{model:l(U),"label-width":"100px"},{default:n(()=>[s(I,{label:"选择医助",required:""},{default:n(()=>[s(ae,{modelValue:l(U).assistant_id,"onUpdate:modelValue":e[8]||(e[8]=a=>l(U).assistant_id=a),placeholder:"请选择医助",class:"w-full",filterable:"",clearable:"","value-key":"id"},{default:n(()=>[(i(!0),p(D,null,$(l(X),a=>(i(),g(w,{key:a.id,label:a.name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),l(ee)==="batch"?(i(),g(I,{key:0,label:"已选择"},{default:n(()=>[o("div",yl,c(l(S).length)+" 条诊单记录",1)]),_:1})):(i(),g(I,{key:1,label:"诊单信息"},{default:n(()=>{var a,k;return[o("div",hl,[o("div",null,"患者:"+c((a=l(te))==null?void 0:a.patient_name),1),o("div",null,"诊断日期:"+c((k=l(te))==null?void 0:k.diagnosis_date_text),1)])]}),_:1}))]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),s(pe,{modelValue:l(B),"onUpdate:modelValue":e[15]||(e[15]=a=>T(B)?B.value=a:null),title:"创建订单",width:"600px",onClose:ot},{footer:n(()=>[s(d,{onClick:e[14]||(e[14]=a=>B.value=!1)},{default:n(()=>[...e[46]||(e[46]=[m("取消",-1)])]),_:1}),s(d,{type:"primary",onClick:dt,loading:l(ke)},{default:n(()=>[...e[47]||(e[47]=[m("创建订单",-1)])]),_:1},8,["loading"])]),default:n(()=>[s($e,{ref_key:"orderFormRef",ref:re,model:l(_),rules:nt,"label-width":"100px"},{default:n(()=>[s(I,{label:"患者"},{default:n(()=>[o("span",bl,c(l(_).patient_name)+" ("+c(l(_).phone)+")",1)]),_:1}),s(I,{label:"订单类型",prop:"order_type"},{default:n(()=>[s(ae,{modelValue:l(_).order_type,"onUpdate:modelValue":e[11]||(e[11]=a=>l(_).order_type=a),placeholder:"请选择",class:"w-full"},{default:n(()=>[s(w,{label:"挂号费",value:1}),s(w,{label:"问诊费",value:2}),s(w,{label:"药品费用",value:3}),s(w,{label:"首付费用",value:4}),s(w,{label:"尾款费用",value:5}),s(w,{label:"其他费用",value:6}),s(w,{label:"全部费用",value:7})]),_:1},8,["modelValue"])]),_:1}),s(I,{label:"订单金额",prop:"amount"},{default:n(()=>[s(Ft,{modelValue:l(_).amount,"onUpdate:modelValue":e[12]||(e[12]=a=>l(_).amount=a),min:0,step:.01,precision:2,placeholder:"请输入金额",class:"w-full"},null,8,["modelValue"])]),_:1}),s(I,{label:"备注",prop:"remark"},{default:n(()=>[s(r,{modelValue:l(_).remark,"onUpdate:modelValue":e[13]||(e[13]=a=>l(_).remark=a),type:"textarea",rows:3,placeholder:"请输入备注(可选)"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),s(pe,{modelValue:l(H),"onUpdate:modelValue":e[18]||(e[18]=a=>T(H)?H.value=a:null),title:"补全身份证号",width:"400px","close-on-click-modal":!1,onClose:e[19]||(e[19]=a=>l(R).id_card="")},{footer:n(()=>[s(d,{onClick:e[17]||(e[17]=a=>H.value=!1)},{default:n(()=>[...e[48]||(e[48]=[m("取消",-1)])]),_:1}),s(d,{type:"primary",onClick:kt,loading:l(we)},{default:n(()=>[...e[49]||(e[49]=[m("提交(自动更新年龄)",-1)])]),_:1},8,["loading"])]),default:n(()=>[s($e,{ref_key:"fillIdCardFormRef",ref:Fe,model:l(R),rules:ht,"label-width":"80px"},{default:n(()=>[s(I,{label:"患者"},{default:n(()=>[o("span",kl,c(l(R).patient_name),1)]),_:1}),s(I,{label:"身份证号",prop:"id_card"},{default:n(()=>[s(r,{modelValue:l(R).id_card,"onUpdate:modelValue":e[16]||(e[16]=a=>l(R).id_card=a),placeholder:"请输入15或18位身份证号",maxlength:"18","show-word-limit":"",clearable:""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),s(qt,{modelValue:l(ue),"onUpdate:modelValue":e[21]||(e[21]=a=>T(ue)?ue.value=a:null),title:`企业微信记录 - ${((Pe=l(V))==null?void 0:Pe.patient_name)||""}`,size:"600px","destroy-on-close":!0},{default:n(()=>{var a,k;return[l(x)?(i(),p("div",Cl,[s(St,{column:2,border:"",size:"small"},{default:n(()=>[s(ce,{label:"患者姓名"},{default:n(()=>{var f;return[m(c((f=l(V))==null?void 0:f.patient_name),1)]}),_:1}),s(ce,{label:"手机号"},{default:n(()=>[m(c(l(x).phone||"-"),1)]),_:1}),s(ce,{label:"企微联系人ID"},{default:n(()=>[l(x).external_userid?(i(),p("span",Vl,c(l(x).external_userid),1)):(i(),g(O,{key:1,type:"info",size:"small"},{default:n(()=>[...e[50]||(e[50]=[m("未关联",-1)])]),_:1}))]),_:1}),s(ce,{label:"会话存档"},{default:n(()=>[l(x).msgaudit_enabled?(i(),g(O,{key:0,type:"success",size:"small"},{default:n(()=>[...e[51]||(e[51]=[m("已开通",-1)])]),_:1})):(i(),g(O,{key:1,type:"info",size:"small"},{default:n(()=>[...e[52]||(e[52]=[m("未配置",-1)])]),_:1}))]),_:1})]),_:1}),(a=l(x).permit_users)!=null&&a.length?(i(),p("div",xl,[e[53]||(e[53]=o("span",{class:"text-sm text-gray-500 mr-2"},"存档成员:",-1)),(i(!0),p(D,null,$(l(x).permit_users,f=>(i(),g(O,{key:f,size:"small",class:"mr-1"},{default:n(()=>[m(c(f),1)]),_:2},1024))),128))])):h("",!0),(k=l(x).msgaudit_agree)!=null&&k.length?(i(),p("div",wl,[e[54]||(e[54]=o("span",{class:"text-sm text-gray-500 mr-2"},"存档同意:",-1)),(i(!0),p(D,null,$(l(x).msgaudit_agree,(f,_e)=>(i(),g(O,{key:_e,type:f.agree_status==="Agree"?"success":"warning",size:"small",class:"mr-1"},{default:n(()=>[m(c(f.userid)+": "+c(f.agree_status==="Agree"?"已同意":f.agree_status),1)]),_:2},1032,["type"]))),128))])):h("",!0)])):h("",!0),s(Ut),o("div",Dl,[o("div",El,[s(r,{modelValue:l(M),"onUpdate:modelValue":e[20]||(e[20]=f=>T(M)?M.value=f:null),type:"textarea",rows:2,placeholder:"添加沟通记录...",class:"flex-1"},null,8,["modelValue"]),s(d,{type:"primary",onClick:Dt,loading:l(Ee),class:"self-end"},{default:n(()=>[...e[55]||(e[55]=[m(" 添加 ",-1)])]),_:1},8,["loading"])])]),P((i(),p("div",null,[l(N).length===0?(i(),p("div",Rl," 暂无聊天记录 ")):(i(),p("div",$l,[(i(!0),p(D,null,$(l(N),f=>{var _e;return i(),p("div",{key:f.id,class:"record-item"},[o("div",zl,[o("div",Il,[s(O,{type:f.direction===0?"primary":"success",size:"small"},{default:n(()=>[m(c(f.direction===0?"员工":"客户"),1)]),_:2},1032,["type"]),o("span",Al,c(f.direction===0?f.staff_name:f.external_name||((_e=l(V))==null?void 0:_e.patient_name)),1),f.msg_type==="note"?(i(),g(O,{key:0,type:"warning",size:"small"},{default:n(()=>[...e[56]||(e[56]=[m("备注",-1)])]),_:1})):h("",!0)]),o("div",Fl,[o("span",Sl,c(Vt(f.chat_time)),1),s(d,{type:"danger",link:"",size:"small",onClick:Ml=>Et(f.id)},{default:n(()=>[...e[57]||(e[57]=[m(" 删除 ",-1)])]),_:1},8,["onClick"])])]),o("div",Ul,c(f.content),1),f.media_url?(i(),p("div",Nl,[s(Nt,{src:f.media_url,style:{"max-width":"200px"},fit:"contain","preview-src-list":[f.media_url]},null,8,["src","preview-src-list"])])):h("",!0)])}),128))])),l(me)>l(N).length?(i(),p("div",ql,[s(d,{link:"",type:"primary",onClick:wt},{default:n(()=>[...e[58]||(e[58]=[m("加载更多",-1)])]),_:1})])):h("",!0)])),[[qe,l(De)]])]}),_:1},8,["modelValue","title"])])}}}),Ks=ba(Wl,[["__scopeId","data-v-6469a282"]]);export{Ks as default};
|