2 lines
31 KiB
JavaScript
2 lines
31 KiB
JavaScript
import{G as et,F as tt,D as lt,B as at,C as st,P as it,Q as ot,i as nt,J as rt,L as ut,M as dt,N as pt,U as mt,K as _t,V as ft,W as gt,I as bt,h as ct,X as vt,g as yt,Y as Vt}from"./element-plus-D_tJqBgC.js";import{_ as kt}from"./index.vue_vue_type_script_setup_true_lang-B2L9Hbb9.js";import{u as wt,c as Dt,i as U,_ as Ct}from"./index-CLJhkNLF.js";import{w as St}from"./@vue/runtime-dom-iFk_KP8y.js";import{g as Ut,p as At,a as Et,b as xt,c as Nt,d as $t,e as Tt}from"./tcm-CgwtzlaG.js";import{r as It}from"./role-CxO4EoT5.js";import{u as Lt}from"./usePaging-B_C_SZ2Z.js";import{_ as Rt}from"./index.vue_vue_type_script_setup_true_lang-Bn4hGFEd.js";import{f as Ve,w as Pt,b as Mt,as as Yt,ak as p,I as c,a as t,aN as i,J as n,O as u,F as O,ap as ae,G as y,aP as T,H as V,A as se}from"./@vue/runtime-core-C0pg79pw.js";import{a as z,y as a,r as ye,o as C}from"./@vue/reactivity-BIbyPIZJ.js";import{Q as f}from"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-CmwKjXis.js";import"./lodash-es-BADexyn7.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-CYz6RFzi.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 Ft={class:"prescription-list"},Ot={class:"pl-toolbar"},zt={class:"pl-toolbar__line"},jt={class:"pl-toolbar__line pl-toolbar__line--second"},Bt={class:"pl-toolbar__actions"},Ht={class:"pl-table-head"},qt={class:"mt-3"},Gt={key:1,class:"text-gray-400"},Jt={class:"flex mt-2 justify-end"},Kt={key:0,class:"cf-slip-wrap"},Qt={key:0,class:"cf-slip-print"},Wt={class:"cf-slip-header"},Xt={class:"cf-slip-type"},ht={key:0,class:"cf-slip-void"},Zt={class:"cf-slip-info"},el={class:"cf-slip-row"},tl={class:"cf-slip-item"},ll={class:"cf-slip-item"},al={class:"cf-slip-item"},sl={class:"cf-slip-row"},il={class:"cf-slip-item"},ol={class:"cf-slip-item"},nl={class:"cf-slip-item"},rl={key:0,class:"cf-slip-row"},ul={key:0,class:"cf-slip-item"},dl={key:1,class:"cf-slip-item"},pl={class:"cf-slip-row cf-slip-row-full"},ml={class:"cf-slip-item"},_l={class:"cf-slip-rp"},fl={class:"cf-slip-herbs"},gl={class:"cf-slip-footer"},bl={class:"cf-slip-footer-left"},cl={key:0,class:"cf-slip-dietary"},vl={key:1,class:"cf-slip-notes"},yl={class:"cf-slip-footer-right"},Vl={class:"cf-slip-sign"},kl=["src"],wl={key:1},Dl={key:1,class:"cf-slip-audit text-sm text-gray-600 mt-4 pt-3 border-t border-dashed border-gray-200"},Cl={key:0},Sl={key:0,class:"ml-2 text-gray-400"},Ul={key:1,class:"mt-1"},Al={class:"w-full"},El=Ve({name:"prescriptionList"}),xl=Ve({...El,setup(Nl){const ke=[0,3],we="成都双流甄养堂互联网医院",De="成都双流甄养堂互联网医院有限公司 联系方式:4001667339",Ce="地址:四川省成都市双流区黄甲街道黄龙大道二段280号",J=wt(),g=ye({patient_name:"",creator_ids:[],audit_filter:"all",start_time:"",end_time:""}),K=C([]),A=C("all"),E=C(!1),S=C("add"),Q=C(!1),W=C(),r=C(null),X=C(!1),h=C([]),I=C(!1),ie=C(0),$=C(""),j=C(!1),B=C(!1),H=C(!1),oe=se(()=>{const l=B.value,e=H.value;return!l&&!e?"":l&&e?"当前处方已作废且已驳回。保存后将取消作废、清除驳回,并重新进入待审核。":l?"当前为已作废处方。保存后将取消作废,并重新进入待审核。":"当前为已驳回处方。保存后将清除驳回,并重新进入待审核。"}),Se=se(()=>{var e;const l=(e=r.value)==null?void 0:e.herbs;return Array.isArray(l)?l:[]}),ne=se(()=>{var e;const l=(e=r.value)==null?void 0:e.dietary_taboo;return Array.isArray(l)?l.filter(Boolean).join("、"):typeof l=="string"&&l.trim()?l.trim():""}),s=ye({id:0,prescription_type:"浓缩水丸",patient_name:"",gender:1,age:0,visit_no:"",prescription_date:"",tongue:"",tongue_image:"",pulse:"",pulse_condition:"",clinical_diagnosis:"",herbs:[],dose_count:7,dose_unit:"剂",usage_days:7,usage_instruction:"水煎服,一日二次",usage_time:"饭前",usage_way:"温水送服",dietary_taboo:[],usage_notes:"",doctor_name:"",is_shared:0,visible_role_ids:[],audit_status:1,audit_time:null,audit_by_name:"",audit_remark:"",diagnosis_id:0}),Ue={patient_name:[{required:!0,message:"请输入患者姓名",trigger:"blur"}],gender:[{required:!0,message:"请选择性别",trigger:"change"}],prescription_date:[{required:!0,message:"请选择处方日期",trigger:"change"}],clinical_diagnosis:[{required:!0,message:"请输入临床诊断",trigger:"blur"}],dose_count:[{required:!0,message:"请输入剂数",trigger:"blur"}],doctor_name:[{required:!0,message:"请输入医师姓名",trigger:"blur"}]};async function Ae(l){const{audit_filter:e,creator_ids:m,...v}=l,b={...v,audit_filter:e==="all"||e===""?"":e};return Array.isArray(m)&&m.length>0&&(b.creator_ids=m),At(b)}const{pager:P,getLists:M,resetPage:Y}=Lt({fetchFun:Ae,params:g});function re(l){return String(l).padStart(2,"0")}function ue(l){const e=l.getFullYear(),m=re(l.getMonth()+1),v=re(l.getDate()),b=`${e}-${m}-${v}`;return{start:`${b} 00:00:00`,end:`${b} 23:59:59`}}function Ee(l){const e=String(l??"all");if(e==="all")g.start_time="",g.end_time="";else{const m=new Date,v=new Date(m.getFullYear(),m.getMonth(),m.getDate());e==="yesterday"?v.setDate(v.getDate()-1):e==="before_yesterday"&&v.setDate(v.getDate()-2);const{start:b,end:_}=ue(v);g.start_time=b,g.end_time=_}Y()}function xe(){Y()}let Z=!1;Pt(()=>[g.start_time,g.end_time],()=>{if(Z)return;const l=g.start_time,e=g.end_time;if(!l&&!e){A.value="all";return}if(!l||!e){A.value="";return}const m=new Date,v=b=>{const _=new Date(m.getFullYear(),m.getMonth(),m.getDate()-b),{start:d,end:x}=ue(_);return l===d&&e===x};v(0)?A.value="today":v(1)?A.value="yesterday":v(2)?A.value="before_yesterday":A.value=""});function Ne(l){if(l==null||l==="")return"—";if(typeof l=="number"&&l>=1e9&&l<1e11)return q(l);const e=String(l).trim();return/^\d{10}$/.test(e)?q(parseInt(e,10)):e}function $e(){Z=!0,A.value="all",g.patient_name="",g.creator_ids=[],g.audit_filter=ee()?"pending":"all",g.start_time="",g.end_time="",Z=!1,Y()}function ee(){const l=J.userInfo;if(!l)return!1;if(Number(l.root)===1)return!0;const e=l.role_ids??l.role_id,m=Array.isArray(e)?e.map(v=>Number(v)):[];return ke.some(v=>m.includes(v))}function Te(l){return l===0?"待审核":l===2?"已驳回":"已通过"}function Ie(l){return l===0?"warning":l===2?"danger":"success"}function de(l){return Number(l.audit_status)===1&&Number(l.void_status)!==1}function q(l){if(!l)return"";const e=new Date(l*1e3);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}function Le(l){return l?q(l):"—"}function Re(l){return l===1||l==="1"?"男":l===0||l==="0"?"女":"—"}function Pe(l){return l==null||l===""?"—":`${l}岁`}function pe(l){return l?Array.isArray(l)?l.map(e=>({name:String((e==null?void 0:e.name)??"").trim(),dosage:Number(e==null?void 0:e.dosage)||0})):[]:[]}function Me(l){return{...l,herbs:pe(l==null?void 0:l.herbs)}}function Ye(){r.value=null}function Fe(l){const e=l==null?void 0:l.visible_role_ids;return Array.isArray(e)?e.map(m=>Number(m)).filter(m=>!Number.isNaN(m)):typeof e=="string"&&e?e.split(",").map(m=>parseInt(m.trim(),10)).filter(m=>!Number.isNaN(m)):[]}function Oe(l){ie.value=l.id,$.value="",I.value=!0}async function me(l){if(l==="reject"&&!$.value.trim()){U.msgError("驳回时请填写审核意见");return}j.value=!0;try{const e=await Et({id:ie.value,action:l,remark:$.value.trim()});U.msgSuccess(l==="reject"?"已驳回并作废处方":"审核通过"),e&&e.wecom_notify_ok===!1&&e.wecom_notify_hint&&U.msgWarning(e.wecom_notify_hint),I.value=!1,M()}catch{}finally{j.value=!1}}async function ze(){try{const l=await It({});h.value=Array.isArray(l)?l:[]}catch{h.value=[]}}const je=()=>{s.herbs.push({name:"",dosage:0})},Be=l=>{s.herbs.splice(l,1)},He=()=>{s.id=0,s.prescription_type="浓缩水丸",s.patient_name="",s.gender=1,s.age=0,s.visit_no="",s.prescription_date=new Date().toISOString().split("T")[0],s.tongue="",s.tongue_image="",s.pulse="",s.pulse_condition="",s.clinical_diagnosis="",s.herbs=[],s.dose_count=7,s.dose_unit="剂",s.usage_days=7,s.usage_instruction="水煎服,一日二次",s.usage_time="饭前",s.usage_way="温水送服",s.dietary_taboo=[],s.usage_notes="",s.doctor_name="",s.is_shared=0,s.visible_role_ids=[],s.audit_status=1,s.audit_time=null,s.audit_by_name="",s.audit_remark="",s.diagnosis_id=0},qe=()=>{He(),B.value=!1,H.value=!1,S.value="add",E.value=!0},Ge=async l=>{B.value=!1,H.value=!1,S.value="view",r.value=Me(l),E.value=!0,X.value=!0;try{const e=await xt({id:l.id});e&&typeof e=="object"&&(r.value={...e,herbs:pe(e.herbs)})}catch(e){U.msgError((e==null?void 0:e.msg)||"加载处方详情失败")}finally{X.value=!1}},Je=l=>{B.value=Number(l.void_status)===1,H.value=Number(l.audit_status)===2,S.value="edit",s.id=l.id,s.prescription_type=l.prescription_type||"浓缩水丸",s.patient_name=l.patient_name||"",s.gender=l.gender??1,s.age=l.age??0,s.visit_no=l.visit_no||"",s.prescription_date=l.prescription_date||"",s.tongue=l.tongue||"",s.tongue_image=l.tongue_image||"",s.pulse=l.pulse||"",s.pulse_condition=l.pulse_condition||"",s.clinical_diagnosis=l.clinical_diagnosis||"",s.herbs=l.herbs?JSON.parse(JSON.stringify(l.herbs)):[],s.dose_count=l.dose_count??7,s.dose_unit=l.dose_unit||"剂",s.usage_days=l.usage_days??7,s.usage_instruction=l.usage_instruction||"水煎服,一日二次",s.usage_time=l.usage_time||"饭前",s.usage_way=l.usage_way||"温水送服",s.dietary_taboo=l.dietary_taboo?Array.isArray(l.dietary_taboo)?l.dietary_taboo:l.dietary_taboo.split(",").filter(e=>e):[],s.usage_notes=l.usage_notes||"",s.doctor_name=l.doctor_name||"",s.is_shared=l.is_shared??0,s.visible_role_ids=Fe(l),s.audit_status=l.audit_status??1,s.audit_time=l.audit_time??null,s.audit_by_name=l.audit_by_name||"",s.audit_remark=l.audit_remark||"",s.diagnosis_id=l.diagnosis_id??0,E.value=!0},Ke=async()=>{if(W.value){if(await W.value.validate(),!s.herbs||s.herbs.length===0){U.msgError("请至少添加一味药材");return}for(let l=0;l<s.herbs.length;l++){const e=s.herbs[l];if(!e.name||!e.name.trim()){U.msgError(`第${l+1}味药材名称不能为空`);return}if(!e.dosage||e.dosage<=0){U.msgError(`第${l+1}味药材剂量必须大于0`);return}}Q.value=!0;try{const l={...s};S.value==="add"?(l.audit_status=0,await Nt(l),U.msgSuccess("添加成功,已提交审核")):(await $t(l),U.msgSuccess("保存成功,处方已重新进入待审核")),E.value=!1,M()}catch(l){console.error(l)}finally{Q.value=!1}}},Qe=async l=>{await U.confirm("确定要删除该处方吗?"),await Tt({id:l}),U.msgSuccess("删除成功"),M()};return Mt(async()=>{var l;await ze();try{const e=await Ut();K.value=Array.isArray(e)?e:[]}catch{K.value=[]}try{(l=J.userInfo)!=null&&l.id||await J.getUserInfo()}catch{}ee()&&(g.audit_filter="pending"),M()}),(l,e)=>{const m=tt,v=et,b=st,_=at,d=ot,x=it,te=lt,w=nt,_e=rt,We=Dt,k=pt,L=mt,fe=dt,Xe=kt,ge=_t,D=gt,R=ft,be=bt,G=ct,he=vt,Ze=yt,ce=Vt,F=Yt("perms"),ve=ut;return p(),c("div",Ft,[t(_e,{class:"filter-toolbar",shadow:"never","body-style":{padding:"10px 14px"}},{default:i(()=>[n("div",Ot,[n("div",zt,[e[47]||(e[47]=n("span",{class:"pl-toolbar__k",title:"按处方创建时间"},"创建时间",-1)),t(v,{modelValue:a(A),"onUpdate:modelValue":e[0]||(e[0]=o=>z(A)?A.value=o:null),size:"small",class:"pl-toolbar__rg",onChange:Ee},{default:i(()=>[t(m,{label:"all"},{default:i(()=>[...e[38]||(e[38]=[u("全部",-1)])]),_:1}),t(m,{label:"today"},{default:i(()=>[...e[39]||(e[39]=[u("今日",-1)])]),_:1}),t(m,{label:"yesterday"},{default:i(()=>[...e[40]||(e[40]=[u("昨日",-1)])]),_:1}),t(m,{label:"before_yesterday"},{default:i(()=>[...e[41]||(e[41]=[u("前天",-1)])]),_:1})]),_:1},8,["modelValue"]),t(Rt,{class:"pl-toolbar__range",startTime:a(g).start_time,"onUpdate:startTime":e[1]||(e[1]=o=>a(g).start_time=o),endTime:a(g).end_time,"onUpdate:endTime":e[2]||(e[2]=o=>a(g).end_time=o)},null,8,["startTime","endTime"]),e[48]||(e[48]=n("span",{class:"pl-toolbar__sep","aria-hidden":"true"},null,-1)),e[49]||(e[49]=n("span",{class:"pl-toolbar__k",title:"「未通过」含待审核与已驳回"},"审核",-1)),t(v,{modelValue:a(g).audit_filter,"onUpdate:modelValue":e[3]||(e[3]=o=>a(g).audit_filter=o),size:"small",class:"pl-toolbar__rg pl-toolbar__rg--audit",onChange:xe},{default:i(()=>[t(m,{label:"pending",class:"pl-audit-pending-btn"},{default:i(()=>[...e[42]||(e[42]=[u("待审核",-1)])]),_:1}),t(m,{label:"all"},{default:i(()=>[...e[43]||(e[43]=[u("全部",-1)])]),_:1}),t(m,{label:"passed"},{default:i(()=>[...e[44]||(e[44]=[u("已通过",-1)])]),_:1}),t(m,{label:"not_passed"},{default:i(()=>[...e[45]||(e[45]=[u("未通过",-1)])]),_:1}),t(m,{label:"rejected"},{default:i(()=>[...e[46]||(e[46]=[u("驳回",-1)])]),_:1})]),_:1},8,["modelValue"])]),n("div",jt,[t(te,{model:a(g),inline:"",class:"pl-toolbar__form"},{default:i(()=>[t(_,{label:"患者",class:"!mb-0"},{default:i(()=>[t(b,{modelValue:a(g).patient_name,"onUpdate:modelValue":e[4]||(e[4]=o=>a(g).patient_name=o),placeholder:"姓名",clearable:"",class:"pl-toolbar__input",onKeyup:St(a(Y),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),t(_,{label:"医师",class:"!mb-0"},{default:i(()=>[t(x,{modelValue:a(g).creator_ids,"onUpdate:modelValue":e[5]||(e[5]=o=>a(g).creator_ids=o),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",filterable:"",clearable:"",placeholder:"全部医师",class:"pl-toolbar__select pl-toolbar__select--doctors"},{default:i(()=>[(p(!0),c(O,null,ae(a(K),o=>(p(),y(d,{key:o.id,label:o.name,value:Number(o.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"]),n("div",Bt,[t(w,{type:"primary",onClick:a(Y)},{default:i(()=>[...e[50]||(e[50]=[u("查询",-1)])]),_:1},8,["onClick"]),t(w,{onClick:$e},{default:i(()=>[...e[51]||(e[51]=[u("重置",-1)])]),_:1})])])])]),_:1}),T((p(),y(_e,{class:"mt-3 table-card",shadow:"never"},{default:i(()=>[n("div",Ht,[e[53]||(e[53]=n("span",{class:"pl-table-head__title"},"处方列表",-1)),T((p(),y(w,{type:"primary",onClick:qe},{icon:i(()=>[t(We,{name:"el-icon-Plus"})]),default:i(()=>[e[52]||(e[52]=u(" 新增处方 ",-1))]),_:1})),[[F,["cf.prescription/add"]]])]),n("div",qt,[t(fe,{data:a(P).lists,size:"default",stripe:""},{default:i(()=>[t(k,{label:"ID",prop:"id","min-width":"60"}),t(k,{label:"处方编号",prop:"sn","min-width":"140"}),t(k,{label:"类型",prop:"prescription_type","min-width":"100"}),t(k,{label:"患者姓名",prop:"patient_name","min-width":"100"}),t(k,{label:"性别","min-width":"60"},{default:i(({row:o})=>[u(f(o.gender===1?"男":"女"),1)]),_:1}),t(k,{label:"年龄",prop:"age","min-width":"60"}),t(k,{label:"审核状态","min-width":"100"},{default:i(({row:o})=>[t(L,{type:Ie(o.audit_status)},{default:i(()=>[u(f(Te(o.audit_status)),1)]),_:2},1032,["type"])]),_:1}),t(k,{label:"作废","min-width":"80"},{default:i(({row:o})=>[o.void_status===1?(p(),y(L,{key:0,type:"danger",size:"small"},{default:i(()=>[...e[54]||(e[54]=[u("已作废",-1)])]),_:1})):(p(),c("span",Gt,"—"))]),_:1}),t(k,{label:"医师",prop:"doctor_name","min-width":"100"}),t(k,{label:"处方日期",prop:"prescription_date","min-width":"120"}),t(k,{label:"创建时间","min-width":"170"},{default:i(({row:o})=>[u(f(Ne(o.create_time)),1)]),_:1}),t(k,{label:"操作",width:"260",fixed:"right"},{default:i(({row:o})=>[T((p(),y(w,{type:"primary",link:"",onClick:N=>Ge(o)},{default:i(()=>[...e[55]||(e[55]=[u(" 查看 ",-1)])]),_:1},8,["onClick"])),[[F,["cf.prescription/read"]]]),de(o)?V("",!0):T((p(),y(w,{key:0,type:"primary",link:"",onClick:N=>Je(o)},{default:i(()=>[...e[56]||(e[56]=[u(" 编辑 ",-1)])]),_:1},8,["onClick"])),[[F,["cf.prescription/edit"]]]),ee()&&o.audit_status===0&&o.void_status!==1?T((p(),y(w,{key:1,type:"warning",link:"",onClick:N=>Oe(o)},{default:i(()=>[...e[57]||(e[57]=[u(" 审核 ",-1)])]),_:1},8,["onClick"])),[[F,["cf.prescription/audit"]]]):V("",!0),de(o)?V("",!0):T((p(),y(w,{key:2,type:"danger",link:"",onClick:N=>Qe(o.id)},{default:i(()=>[...e[58]||(e[58]=[u(" 删除 ",-1)])]),_:1},8,["onClick"])),[[F,["cf.prescription/del"]]])]),_:1})]),_:1},8,["data"])]),n("div",Jt,[t(Xe,{modelValue:a(P),"onUpdate:modelValue":e[6]||(e[6]=o=>z(P)?P.value=o:null),onChange:a(M)},null,8,["modelValue","onChange"])])]),_:1})),[[ve,a(P).loading]]),t(ce,{modelValue:a(E),"onUpdate:modelValue":e[31]||(e[31]=o=>z(E)?E.value=o:null),title:a(S)==="add"?"新增处方":a(S)==="edit"?"编辑处方":"查看处方",width:a(S)==="view"?"920px":"900px",class:"cf-prescription-dialog","close-on-click-modal":!1,"destroy-on-close":"",onClosed:Ye},{footer:i(()=>[a(S)==="view"?(p(),y(w,{key:0,onClick:e[29]||(e[29]=o=>E.value=!1)},{default:i(()=>[...e[83]||(e[83]=[u("关闭",-1)])]),_:1})):(p(),c(O,{key:1},[t(w,{onClick:e[30]||(e[30]=o=>E.value=!1)},{default:i(()=>[...e[84]||(e[84]=[u("取消",-1)])]),_:1}),t(w,{type:"primary",onClick:Ke,loading:a(Q)},{default:i(()=>[...e[85]||(e[85]=[u(" 确定 ",-1)])]),_:1},8,["loading"])],64))]),default:i(()=>[a(S)==="view"?T((p(),c("div",Kt,[a(r)?(p(),c("div",Qt,[n("div",Wt,[n("h2",{class:"cf-slip-title"},f(we)+"处方笺"),n("div",Xt,[Number(a(r).void_status)===1?(p(),y(L,{key:0,type:"danger",size:"small"},{default:i(()=>[...e[59]||(e[59]=[u("已作废",-1)])]),_:1})):Number(a(r).audit_status)===1?(p(),y(L,{key:1,type:"success",size:"small",class:"mr-1"},{default:i(()=>[...e[60]||(e[60]=[u("已通过",-1)])]),_:1})):Number(a(r).audit_status)===0?(p(),y(L,{key:2,type:"warning",size:"small",class:"mr-1"},{default:i(()=>[...e[61]||(e[61]=[u("待审核",-1)])]),_:1})):(p(),y(L,{key:3,type:"danger",size:"small",class:"mr-1"},{default:i(()=>[...e[62]||(e[62]=[u("已驳回",-1)])]),_:1})),Number(a(r).void_status)!==1?(p(),c(O,{key:4},[e[63]||(e[63]=n("div",null,"普通处方",-1)),e[64]||(e[64]=n("div",{class:"text-sm"},"当日有效",-1))],64)):V("",!0)])]),Number(a(r).void_status)===1?(p(),c("div",ht," 作废人:"+f(a(r).void_by_name||"—")+",作废时间:"+f(Le(a(r).void_time)),1)):V("",!0),n("div",Zt,[n("div",el,[n("span",tl,[e[65]||(e[65]=n("em",null,"日期",-1)),u(f(a(r).prescription_date||"—"),1)]),n("span",ll,[e[66]||(e[66]=n("em",null,"电话",-1)),u(f(a(r).phone||"—"),1)]),n("span",al,[e[67]||(e[67]=n("em",null,"门诊号",-1)),u(f(a(r).visit_no||"—"),1)])]),n("div",sl,[n("span",il,[e[68]||(e[68]=n("em",null,"姓名",-1)),u(f(a(r).patient_name||"—"),1)]),n("span",ol,[e[69]||(e[69]=n("em",null,"性别",-1)),u(f(Re(a(r).gender)),1)]),n("span",nl,[e[70]||(e[70]=n("em",null,"年龄",-1)),u(f(Pe(a(r).age)),1)])]),a(r).pulse||a(r).tongue?(p(),c("div",rl,[a(r).pulse?(p(),c("span",ul,[e[71]||(e[71]=n("em",null,"面象",-1)),u(f(a(r).pulse),1)])):V("",!0),a(r).tongue?(p(),c("span",dl,[e[72]||(e[72]=n("em",null,"舌象",-1)),u(f(a(r).tongue),1)])):V("",!0)])):V("",!0),n("div",pl,[n("span",ml,[e[73]||(e[73]=n("em",null,"临床诊断",-1)),u(f(a(r).clinical_diagnosis||"—"),1)])])]),n("div",_l,[e[74]||(e[74]=n("div",{class:"cf-slip-rp-label"},"RP",-1)),n("div",fl,[(p(!0),c(O,null,ae(Se.value,(o,N)=>(p(),c("div",{key:N,class:"cf-slip-herb"},f(o.name)+" "+f(o.dosage)+"克 ",1))),128))])]),n("div",gl,[n("div",bl,[n("div",null," 服用"+f(a(r).usage_days??a(r).dose_count)+"天, "+f(a(r).prescription_type||"浓缩水丸")+" "+f(a(r).usage_instruction||""),1),n("div",null,[u(" 服用时间: "+f(a(r).usage_time?" "+a(r).usage_time:"")+" ",1),e[75]||(e[75]=n("span",{class:"cf-slip-inline-gap"},null,-1)),u(" 服用方式: "+f(a(r).usage_way?" "+a(r).usage_way:""),1)]),ne.value?(p(),c("div",cl,"忌口:"+f(ne.value),1)):V("",!0),a(r).usage_notes?(p(),c("div",vl,f(a(r).usage_notes),1)):V("",!0)]),n("div",yl,[n("span",Vl,[e[76]||(e[76]=u(" 医师 ",-1)),a(r).doctor_signature?(p(),c("img",{key:0,src:a(r).doctor_signature,alt:"医师签名",class:"cf-slip-sign-img"},null,8,kl)):(p(),c("span",wl,f(a(r).doctor_name||"—"),1))])])]),n("div",{class:"cf-slip-hospital"},[n("div",null,f(De)),n("div",null,f(Ce))]),a(r).audit_by_name||a(r).audit_remark?(p(),c("div",Dl,[a(r).audit_by_name?(p(),c("div",Cl,[u(" 审核人:"+f(a(r).audit_by_name)+" ",1),a(r).audit_time?(p(),c("span",Sl,f(q(a(r).audit_time)),1)):V("",!0)])):V("",!0),a(r).audit_remark?(p(),c("div",Ul,"审核意见:"+f(a(r).audit_remark),1)):V("",!0)])):V("",!0)])):V("",!0)])),[[ve,a(X)]]):(p(),y(te,{key:1,ref_key:"formRef",ref:W,model:a(s),rules:Ue,"label-width":"120px"},{default:i(()=>[a(S)==="edit"?(p(),y(ge,{key:0,type:"info",closable:!1,"show-icon":"",class:"mb-4",title:"保存修改后,该处方将重新进入「待审核」,需审核人员再次通过后方可生效。"})):V("",!0),a(S)==="edit"&&oe.value?(p(),y(ge,{key:1,type:"warning",closable:!1,"show-icon":"",class:"mb-4",title:oe.value},null,8,["title"])):V("",!0),t(R,{gutter:20},{default:i(()=>[t(D,{span:12},{default:i(()=>[t(_,{label:"患者姓名",prop:"patient_name"},{default:i(()=>[t(b,{modelValue:a(s).patient_name,"onUpdate:modelValue":e[7]||(e[7]=o=>a(s).patient_name=o),placeholder:"请输入患者姓名"},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{span:12},{default:i(()=>[t(_,{label:"门诊号",prop:"visit_no"},{default:i(()=>[t(b,{modelValue:a(s).visit_no,"onUpdate:modelValue":e[8]||(e[8]=o=>a(s).visit_no=o),placeholder:"自动生成或手动输入"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(R,{gutter:20},{default:i(()=>[t(D,{span:8},{default:i(()=>[t(_,{label:"性别",prop:"gender"},{default:i(()=>[t(v,{modelValue:a(s).gender,"onUpdate:modelValue":e[9]||(e[9]=o=>a(s).gender=o)},{default:i(()=>[t(be,{label:1},{default:i(()=>[...e[77]||(e[77]=[u("男",-1)])]),_:1}),t(be,{label:0},{default:i(()=>[...e[78]||(e[78]=[u("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(D,{span:8},{default:i(()=>[t(_,{label:"年龄",prop:"age"},{default:i(()=>[t(G,{modelValue:a(s).age,"onUpdate:modelValue":e[10]||(e[10]=o=>a(s).age=o),min:0,max:150,placeholder:"请输入年龄",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{span:8},{default:i(()=>[t(_,{label:"处方日期",prop:"prescription_date"},{default:i(()=>[t(he,{modelValue:a(s).prescription_date,"onUpdate:modelValue":e[11]||(e[11]=o=>a(s).prescription_date=o),type:"date",placeholder:"选择日期",format:"YYYY-MM-DD","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(R,{gutter:20},{default:i(()=>[t(D,{span:12},{default:i(()=>[t(_,{label:"面象",prop:"tongue"},{default:i(()=>[t(b,{modelValue:a(s).tongue,"onUpdate:modelValue":e[12]||(e[12]=o=>a(s).tongue=o),placeholder:"请输入面象"},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{span:12},{default:i(()=>[t(_,{label:"舌象",prop:"tongue_image"},{default:i(()=>[t(b,{modelValue:a(s).tongue_image,"onUpdate:modelValue":e[13]||(e[13]=o=>a(s).tongue_image=o),placeholder:"请输入舌象"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(R,{gutter:20},{default:i(()=>[t(D,{span:12},{default:i(()=>[t(_,{label:"脉象",prop:"pulse"},{default:i(()=>[t(b,{modelValue:a(s).pulse,"onUpdate:modelValue":e[14]||(e[14]=o=>a(s).pulse=o),placeholder:"请输入脉象"},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{span:12},{default:i(()=>[t(_,{label:"脉象详情",prop:"pulse_condition"},{default:i(()=>[t(b,{modelValue:a(s).pulse_condition,"onUpdate:modelValue":e[15]||(e[15]=o=>a(s).pulse_condition=o),placeholder:"请输入脉象详情"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(_,{label:"临床诊断",prop:"clinical_diagnosis"},{default:i(()=>[t(b,{modelValue:a(s).clinical_diagnosis,"onUpdate:modelValue":e[16]||(e[16]=o=>a(s).clinical_diagnosis=o),type:"textarea",rows:3,placeholder:"请输入临床诊断",maxlength:"500","show-word-limit":""},null,8,["modelValue"])]),_:1}),t(_,{label:"药材配方",prop:"herbs",required:""},{default:i(()=>[n("div",Al,[t(w,{type:"primary",size:"small",onClick:je},{default:i(()=>[...e[79]||(e[79]=[u(" 添加药材 ",-1)])]),_:1}),t(fe,{data:a(s).herbs,class:"mt-2",border:""},{default:i(()=>[t(k,{label:"序号",type:"index",width:"60"}),t(k,{label:"药材名称","min-width":"150"},{default:i(({row:o,$index:N})=>[t(b,{modelValue:o.name,"onUpdate:modelValue":le=>o.name=le,placeholder:"请输入药材名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),t(k,{label:"剂量(克)","min-width":"120"},{default:i(({row:o,$index:N})=>[t(G,{modelValue:o.dosage,"onUpdate:modelValue":le=>o.dosage=le,min:0,precision:1,step:.5,placeholder:"剂量",class:"w-full"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),t(k,{label:"操作",width:"80"},{default:i(({$index:o})=>[t(w,{type:"danger",link:"",onClick:N=>Be(o)},{default:i(()=>[...e[80]||(e[80]=[u(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])])]),_:1}),t(R,{gutter:20},{default:i(()=>[t(D,{span:8},{default:i(()=>[t(_,{label:"剂数",prop:"dose_count"},{default:i(()=>[t(G,{modelValue:a(s).dose_count,"onUpdate:modelValue":e[17]||(e[17]=o=>a(s).dose_count=o),min:1,placeholder:"剂数",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{span:8},{default:i(()=>[t(_,{label:"剂量单位",prop:"dose_unit"},{default:i(()=>[t(x,{modelValue:a(s).dose_unit,"onUpdate:modelValue":e[18]||(e[18]=o=>a(s).dose_unit=o),placeholder:"请选择",class:"w-full"},{default:i(()=>[t(d,{label:"剂",value:"剂"}),t(d,{label:"丸",value:"丸"}),t(d,{label:"袋",value:"袋"}),t(d,{label:"盒",value:"盒"}),t(d,{label:"瓶",value:"瓶"}),t(d,{label:"膏",value:"膏"}),t(d,{label:"贴",value:"贴"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(D,{span:8},{default:i(()=>[t(_,{label:"处方类型",prop:"prescription_type"},{default:i(()=>[t(x,{modelValue:a(s).prescription_type,"onUpdate:modelValue":e[19]||(e[19]=o=>a(s).prescription_type=o),placeholder:"请选择处方类型",class:"w-full"},{default:i(()=>[t(d,{label:"浓缩水丸",value:"浓缩水丸"}),t(d,{label:"饮片",value:"饮片"}),t(d,{label:"颗粒",value:"颗粒"}),t(d,{label:"丸剂",value:"丸剂"}),t(d,{label:"散剂",value:"散剂"}),t(d,{label:"膏方",value:"膏方"}),t(d,{label:"汤剂",value:"汤剂"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(D,{span:8},{default:i(()=>[t(_,{label:"服用天数",prop:"usage_days"},{default:i(()=>[t(G,{modelValue:a(s).usage_days,"onUpdate:modelValue":e[20]||(e[20]=o=>a(s).usage_days=o),min:1,max:365,placeholder:"服用天数",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(_,{label:"用法",prop:"usage_instruction"},{default:i(()=>[t(b,{modelValue:a(s).usage_instruction,"onUpdate:modelValue":e[21]||(e[21]=o=>a(s).usage_instruction=o),placeholder:"例如:水煎服,一日二次",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1}),t(R,{gutter:20},{default:i(()=>[t(D,{span:12},{default:i(()=>[t(_,{label:"服用时间",prop:"usage_time"},{default:i(()=>[t(x,{modelValue:a(s).usage_time,"onUpdate:modelValue":e[22]||(e[22]=o=>a(s).usage_time=o),placeholder:"请选择服用时间",class:"w-full"},{default:i(()=>[t(d,{label:"饭前",value:"饭前"}),t(d,{label:"饭后",value:"饭后"}),t(d,{label:"饭中",value:"饭中"}),t(d,{label:"空腹",value:"空腹"}),t(d,{label:"睡前",value:"睡前"}),t(d,{label:"晨起",value:"晨起"}),t(d,{label:"随时",value:"随时"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(D,{span:12},{default:i(()=>[t(_,{label:"服用方式",prop:"usage_way"},{default:i(()=>[t(x,{modelValue:a(s).usage_way,"onUpdate:modelValue":e[23]||(e[23]=o=>a(s).usage_way=o),placeholder:"请选择服用方式",class:"w-full"},{default:i(()=>[t(d,{label:"温水送服",value:"温水送服"}),t(d,{label:"开水冲服",value:"开水冲服"}),t(d,{label:"黄酒送服",value:"黄酒送服"}),t(d,{label:"淡盐水送服",value:"淡盐水送服"}),t(d,{label:"米汤送服",value:"米汤送服"}),t(d,{label:"嚼服",value:"嚼服"}),t(d,{label:"含化",value:"含化"})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(_,{label:"忌口",prop:"dietary_taboo"},{default:i(()=>[t(x,{modelValue:a(s).dietary_taboo,"onUpdate:modelValue":e[24]||(e[24]=o=>a(s).dietary_taboo=o),multiple:"",placeholder:"请选择忌口内容(可多选)",class:"w-full"},{default:i(()=>[t(d,{label:"辛辣食物",value:"辛辣食物"}),t(d,{label:"生冷食物",value:"生冷食物"}),t(d,{label:"油腻食物",value:"油腻食物"}),t(d,{label:"海鲜",value:"海鲜"}),t(d,{label:"牛羊肉",value:"牛羊肉"}),t(d,{label:"鸡蛋",value:"鸡蛋"}),t(d,{label:"豆制品",value:"豆制品"}),t(d,{label:"酒类",value:"酒类"}),t(d,{label:"浓茶",value:"浓茶"}),t(d,{label:"咖啡",value:"咖啡"}),t(d,{label:"烟草",value:"烟草"}),t(d,{label:"萝卜",value:"萝卜"})]),_:1},8,["modelValue"])]),_:1}),t(_,{label:"其他说明",prop:"usage_notes"},{default:i(()=>[t(b,{modelValue:a(s).usage_notes,"onUpdate:modelValue":e[25]||(e[25]=o=>a(s).usage_notes=o),type:"textarea",rows:2,placeholder:"其他服用注意事项",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1}),t(_,{label:"医师姓名",prop:"doctor_name"},{default:i(()=>[t(b,{modelValue:a(s).doctor_name,"onUpdate:modelValue":e[26]||(e[26]=o=>a(s).doctor_name=o),placeholder:"请输入医师姓名"},null,8,["modelValue"])]),_:1}),t(_,{label:"是否共享",prop:"is_shared"},{default:i(()=>[t(Ze,{modelValue:a(s).is_shared,"onUpdate:modelValue":e[27]||(e[27]=o=>a(s).is_shared=o),"active-value":1,"inactive-value":0,"active-text":"所有人可见","inactive-text":"仅自己可见"},null,8,["modelValue"]),e[81]||(e[81]=n("div",{class:"text-xs text-gray-400 mt-1"}," 勾选后,所有医生都可以查看和使用此处方模板 ",-1))]),_:1}),t(_,{label:"指定可见角色",prop:"visible_role_ids"},{default:i(()=>[t(x,{modelValue:a(s).visible_role_ids,"onUpdate:modelValue":e[28]||(e[28]=o=>a(s).visible_role_ids=o),multiple:"",filterable:"",clearable:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"不选则除创建者外仅按「是否共享」规则;可多选角色",class:"w-full"},{default:i(()=>[(p(!0),c(O,null,ae(a(h),o=>(p(),y(d,{key:o.id,label:o.name,value:o.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e[82]||(e[82]=n("div",{class:"text-xs text-gray-400 mt-1"}," 未共享时:所选角色下的账号也可在列表中查看此处方(与创建者并列) ",-1))]),_:1})]),_:1},8,["model"]))]),_:1},8,["modelValue","title","width"]),t(ce,{modelValue:a(I),"onUpdate:modelValue":e[36]||(e[36]=o=>z(I)?I.value=o:null),title:"处方审核",width:"480px","destroy-on-close":"",onClosed:e[37]||(e[37]=o=>$.value="")},{footer:i(()=>[t(w,{onClick:e[33]||(e[33]=o=>I.value=!1)},{default:i(()=>[...e[86]||(e[86]=[u("取消",-1)])]),_:1}),t(w,{type:"primary",loading:a(j),onClick:e[34]||(e[34]=o=>me("approve"))},{default:i(()=>[...e[87]||(e[87]=[u("审核通过",-1)])]),_:1},8,["loading"]),t(w,{type:"danger",loading:a(j),onClick:e[35]||(e[35]=o=>me("reject"))},{default:i(()=>[...e[88]||(e[88]=[u("驳回处方",-1)])]),_:1},8,["loading"])]),default:i(()=>[e[89]||(e[89]=n("p",{class:"text-sm text-gray-600 mb-3"}," 通过:处方保持有效。驳回:将同时作废此处方(与诊间「驳回/作废处方」一致)。 ",-1)),t(te,{"label-width":"80px"},{default:i(()=>[t(_,{label:"审核意见"},{default:i(()=>[t(b,{modelValue:a($),"onUpdate:modelValue":e[32]||(e[32]=o=>z($)?$.value=o:null),type:"textarea",rows:3,maxlength:"500","show-word-limit":"",placeholder:"通过可简要说明;驳回必填"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}}),ya=Ct(xl,[["__scopeId","data-v-6ede1d25"]]);export{ya as default};
|