Files
zyt/server/public/admin/assets/index-L5G9dnad.js
T
2026-05-12 18:14:20 +08:00

7 lines
47 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{e as Wt,i as Ht,D as Mt,a3 as jt,a4 as Bt,B as Ft,C as Gt,h as qt,P as Jt,Q as Kt,G as Xt,I as Qt,g as Yt,T as Zt,d as es,r as ts,V as ss,L as os,N as as,M as ls,X as ns}from"./element-plus-BhlMEThZ.js";import{s as X,w as is}from"./@vue/runtime-dom-DDAG46FW.js";import{M as rs}from"./index-Dkyp7qdR.js";import{u as ds,e as us,i as V,m as S,_ as cs}from"./index-WGeajlD5.js";import{f as ps}from"./diabetes-discovery-display-B_wmGXQJ.js";import{V as _s,a as ne,W as Ze,e as ms,f as gs,ae as fs}from"./tcm-DNvmHkGt.js";import{m as vs}from"./medicine-RuhQbUko.js";import et from"./html2canvas-QH1iLAAe.js";import{E as bs}from"./jspdf-BsthCvR5.js";import{aa as ys,a1 as ws,U as hs,M as Vs,G as ks,N as Ss}from"./@element-plus/icons-vue-ouZ25BHH.js";import{f as xs,w as tt,ak as b,I as k,F as Q,a as l,M as Cs,aN as d,J as a,O as u,ap as we,H as x,G as P,aP as Ps,A as ie}from"./@vue/runtime-core-C6bnekPw.js";import{y as s,a as I,n as f,r as st}from"./@vue/reactivity-DiY1c2vO.js";import{Q as c,o as Us}from"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.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"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";const Ds={key:0,class:"prescription-edit"},Ns={class:"info-section"},Rs={class:"info-section"},$s={class:"info-section info-section--rp"},Es={class:"rp-toolbar",role:"region","aria-label":"中药处方"},Is={class:"rp-toolbar__lead"},Os={class:"rp-toolbar__text"},Ts={class:"rp-toolbar__meta"},Ls={class:"rp-toolbar__actions",role:"toolbar","aria-label":"处方药材快捷操作"},zs={class:"mb-3"},As={class:"herbs-editor-grid"},Ws={class:"herb-editor-card__title"},Hs={key:0,class:"herb-editor-card__dup-hint text-amber-600 text-xs mb-1"},Ms={class:"herb-editor-card__row"},js={class:"info-section"},Bs={key:3,class:"ml-2"},Fs={class:"signature-pad-wrap"},Gs={class:"signature-actions"},qs={key:1,class:"prescription-preview"},Js={class:"prescription-preview-content"},Ks={class:"prescription-header"},Xs={class:"prescription-title"},Qs={class:"prescription-type"},Ys={key:0,class:"prescription-void-info"},Zs={class:"prescription-info"},eo={class:"info-row"},to={class:"info-item"},so={class:"info-item"},oo={class:"info-item"},ao={class:"info-row"},lo={class:"info-item"},no={class:"info-item"},io={class:"info-item"},ro={class:"info-row"},uo={key:0,class:"info-item"},co={key:1,class:"info-item"},po={class:"info-row info-row-full"},_o={class:"info-item"},mo={class:"prescription-rp"},go={class:"herbs-grid"},fo={key:1,class:"prescription-disclaimer"},vo={class:"prescription-footer"},bo={class:"footer-left"},yo={class:"footer-dosage"},wo={class:"footer-dosage"},ho={key:0,class:"footer-dietary"},Vo={key:1,class:"footer-notes"},ko={class:"footer-right footer-sign"},So={class:"signature-cell"},xo=["src"],Co={key:1},Po={class:"case-record-a3-inner"},Uo={class:"case-record-a3-title"},Do={class:"case-record-a3-body"},No={class:"cr-section"},Ro={class:"cr-grid"},$o={class:"cr-item"},Eo={class:"cr-item"},Io={class:"cr-item"},Oo={class:"cr-item"},To={class:"cr-item"},Lo={class:"cr-item"},zo={class:"cr-item"},Ao={class:"cr-item"},Wo={class:"cr-item"},Ho={class:"cr-item"},Mo={class:"cr-section"},jo={class:"cr-grid"},Bo={class:"cr-item"},Fo={class:"cr-item"},Go={class:"cr-section"},qo={class:"cr-grid"},Jo={class:"cr-item"},Ko={class:"cr-item"},Xo={class:"cr-item"},Qo={class:"cr-item"},Yo={class:"cr-item"},Zo={class:"cr-item cr-full"},ea={class:"cr-item cr-full"},ta={class:"cr-section"},sa={class:"cr-grid"},oa={class:"cr-item cr-full"},aa={class:"cr-item cr-full"},la={class:"cr-item cr-full"},na={class:"cr-item cr-full"},ia={class:"cr-item cr-full"},ra={class:"cr-item cr-full"},da={class:"cr-item cr-full"},ua={class:"cr-item cr-full"},ca={class:"cr-item cr-full"},pa={class:"cr-item cr-full"},_a={class:"cr-item cr-full"},ma={class:"cr-item cr-full"},ga={class:"cr-item cr-full"},fa={class:"cr-item cr-full"},va={class:"cr-item cr-full"},ba={class:"cr-section"},ya={class:"cr-item cr-full"},wa={class:"cr-section"},ha={class:"cr-grid"},Va={class:"cr-item"},ka={class:"cr-item"},Sa={class:"cr-item"},xa={class:"cr-item"},Ca={class:"cr-item"},Pa={class:"cr-section"},Ua={key:0,class:"cr-grid"},Da={class:"cr-item cr-full"},Na={class:"cr-images"},Ra=["src"],$a={class:"cr-grid"},Ea={class:"cr-item cr-full"},Ia={class:"flex justify-end gap-2 mt-4"},Oa={class:"inline-block"},Ta={class:"flex justify-end gap-2"},La={class:"mb-4"},za={key:0},Aa={key:1,class:"text-gray-400"},Wa={class:"flex justify-end mt-4"},Ha={class:"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2"},Y=560,Z=168,Ma=xs({__name:"index",emits:["success"],setup(ja,{expose:ot,emit:at}){const he=at,O=f(!1),lt=f(),re=f(!1),de=f(!1),Ve=f(),ke=f(),T=f(),ee=f(null),n=f(null),te=ie(()=>{const o=n.value;return o?Number(o.audit_status)===1&&Number(o.void_status)!==1:!1}),Se=ie(()=>{const o=n.value;return o?Number(o.has_prescription_order)===1:!1}),nt=ie(()=>te.value?"查看处方":"中医处方单"),xe=ie(()=>{const o=n.value;if(!o||o.dosage_amount==null||o.dosage_amount==="")return"";const e=Number(o.dosage_amount),i=o.dosage_unit||"g";return(o.prescription_type||"浓缩水丸")==="浓缩水丸"?`一次${Number(o.dosage_bag_count)>0?Number(o.dosage_bag_count):1}袋(每袋${e}${i}`:`一次${e}${i}`}),A=f(!1),ue=f(!1),Ce=f([]),F=f(""),W=f(!1),H=f(1),se=f(15),Pe=f(0),M=f(!1),j=f(""),oe=f("replace"),ce=f(!1),it=/^(用法|用量|医嘱|忌口|水煎服|空腹|饭后|温水|内服|外用|备注|顿服|分服|ml|毫升|[×xX]\s*\d)/;function rt(o){let e=o.replace(/\r\n/g,`
`).replace(/\r/g,`
`);return e=e.replace(/[-]/g,i=>String.fromCharCode(i.charCodeAt(0)-65296+48)),e.trim()}function dt(o){return o.replace(/^\s*Rp[::**\s]*/i,"").replace(/^\s*处方[:\s]*/,"").replace(/^\s*中药处方[:\s]*/,"").trimStart()}function pe(o){return o.replace(/[^]*$/u,"").replace(/\([^)]*\)$/u,"").trim()}function Ue(o){const e=o.trim();if(!e||it.test(e)||/^\d/.test(e)||/^\d+\s*剂$/.test(e))return null;const i=e.match(/^(.+)\s*各\s*(\d+(?:\.\d+)?)\s*(?:克|g|G)?$/i);if(i){const v=parseFloat(i[2]);if(!Number.isFinite(v)||v<=0)return null;const m=i[1].split(/[、,,\s]+/).map(y=>y.trim()).filter(Boolean);return m.length?m.map(y=>({name:pe(y),dosage:v})):null}const r=e.match(/^(.+?)\s*(\d+(?:\.\d+)?)\s*(?:克|g|G|钱)?$/i);if(r){const v=pe(r[1].trim()),m=parseFloat(r[2]);return!v||!Number.isFinite(m)||m<=0?null:[{name:v,dosage:m}]}const _=pe(e);return _.length>=2&&_.length<=16?[{name:_,dosage:6}]:null}function ut(o){const e=dt(rt(o)),i=[];for(const r of e.split(/\n+/)){const _=r.trim();if(_)for(const v of _.split(/[、,,;]/)){const m=v.trim();if(m)if(/\s/.test(m)&&!Ue(m)){const y=m.split(/\s+(?=[\u4e00-\u9fff]{2,})/);for(const p of y){const h=p.trim();h&&i.push(h)}}else i.push(m)}}return i}function ct(o){const e=[];for(const i of ut(o)){const r=Ue(i);r&&e.push(...r)}return e}async function pt(o){const e=o.trim();if(!e)return null;try{const _=((await vs({name:e,page_no:1,page_size:200,status:1})).lists||[]).find(v=>(v.name??"").trim()===e);return _?_.name.trim():null}catch{return null}}function _t(){M.value=!0}async function mt(){const o=ct(j.value);if(!o.length){V.msgWarning("未能从文本中解析出药材,请检查格式(药名 + 剂量,或用顿号/换行分隔)");return}ce.value=!0;try{const e=[],i=[];for(const m of o){const y=await pt(m.name);if(!y){i.push(m.name.trim());continue}e.push({name:y,dosage:m.dosage})}const r=[...new Set(i.filter(Boolean))];if(e.length===0){V.msgWarning(r.length?`药品库中无以下完全同名药材,未录入:${r.join("、")}`:"未能匹配到药品库中的药材");return}oe.value==="replace"?t.herbs=e:t.herbs.push(...e);const _=be(),v=r.length>0?`;药品库未收录已跳过:${r.join("、")}`:"";_.length?V.msgWarning(`已导入 ${e.length} 味药材${v}。存在重复药名:${_.join("、")},请合并剂量或删除多余行`):r.length?V.msgSuccess(`已导入 ${e.length} 味药材${v},请核对剂量`):V.msgSuccess(`已导入 ${e.length} 味药材,请核对药名与剂量`),M.value=!1,j.value=""}finally{ce.value=!1}}const G=st({stationName:"成都双流甄养堂互联网医院",showDisclaimer:!0,disclaimer:""}),t=st({diagnosis_id:0,appointment_id:0,prescription_name:"",prescription_type:"浓缩水丸",dosage_amount:10,dosage_unit:"g",dosage_bag_count:1,need_decoction:!1,bags_per_dose:1,patient_name:"",gender:0,gender_desc:"女",age:0,phone:"",visit_no:"",prescription_date:"",pulse:"",tongue:"",tongue_image:"",pulse_condition:"",clinical_diagnosis:"",case_record:null,herbs:[],dose_count:1,dose_unit:"剂",usage_days:7,times_per_day:2,usage_instruction:"",usage_time:"饭后",usage_way:"温水送服",dietary_taboo:[],usage_notes:"",amount:0,doctor_name:"",doctor_signature:"",is_shared:0}),De=ds(),gt=us(),ft=o=>{const e=typeof o=="string"?o:(o==null?void 0:o.url)??(o==null?void 0:o.uri)??(o==null?void 0:o.path)??"";return e?String(e).startsWith("http")?e:gt.getImageUrl(e):""},_e=f([]),me=f([]),Ne=f([]),Re=f([]),$e=f([]),Ee=f([]),Ie=f([]),Oe=f([]),Te=f([]),Le=f([]),ze=f([]),Ae=f([]),We=f([]),He=f([]),Me=f([]),je=f([]),Be=f([]),Fe=f([]),$=(o,e)=>{if(!e)return"";const i=o.find(r=>r.value===e);return i?i.name:e},Ge=async()=>{try{const[o,e,i,r,_,v,m,y,p,h,U,L,E,z,D,B,q,J]=await Promise.all([S({type:"diagnosis_type"}),S({type:"syndrome_type"}),S({type:"diabetes_type"}),S({type:"past_history"}),S({type:"appetite"}),S({type:"water_intake"}),S({type:"diet_condition"}),S({type:"weight_change"}),S({type:"body_feeling"}),S({type:"sleep_condition"}),S({type:"eye_condition"}),S({type:"head_feeling"}),S({type:"sweat_condition"}),S({type:"skin_condition"}),S({type:"urine_condition"}),S({type:"stool_condition"}),S({type:"kidney_condition"}),S({type:"fatty_liver_degree"})]);_e.value=(o==null?void 0:o.diagnosis_type)||[],me.value=(e==null?void 0:e.syndrome_type)||[],Ne.value=(i==null?void 0:i.diabetes_type)||[],Re.value=(r==null?void 0:r.past_history)||[],$e.value=(_==null?void 0:_.appetite)||[],Ee.value=(v==null?void 0:v.water_intake)||[],Ie.value=(m==null?void 0:m.diet_condition)||[],Oe.value=(y==null?void 0:y.weight_change)||[],Te.value=(p==null?void 0:p.body_feeling)||[],Le.value=(h==null?void 0:h.sleep_condition)||[],ze.value=(U==null?void 0:U.eye_condition)||[],Ae.value=(L==null?void 0:L.head_feeling)||[],We.value=(E==null?void 0:E.sweat_condition)||[],He.value=(z==null?void 0:z.skin_condition)||[],Me.value=(D==null?void 0:D.urine_condition)||[],je.value=(B==null?void 0:B.stool_condition)||[],Be.value=(q==null?void 0:q.kidney_condition)||[],Fe.value=(J==null?void 0:J.fatty_liver_degree)||[]}catch{}},C=(o,e)=>{if(!e||Array.isArray(e)&&e.length===0)return"—";const r=(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(_=>{const v=o.find(m=>m.value===_);return v?v.name:_}).filter(Boolean);return r.length?r.join("、"):"—"},vt=o=>!o||Array.isArray(o)&&o.length===0?"—":(Array.isArray(o)?o:typeof o=="string"?o.split(","):[]).filter(Boolean).join("、")||"—",bt=o=>{var _;if((_=o==null?void 0:o.symptoms)!=null&&_.trim())return o.symptoms.trim();const e=$(_e.value,o==null?void 0:o.diagnosis_type),i=$(me.value,o==null?void 0:o.syndrome_type),r=[e,i].filter(Boolean);return r.length?r.join(" "):""},yt=async(o,e)=>{var i;if(W.value){console.warn("处方正在打开中,请勿重复点击");return}W.value=!0;try{e!=null&&e.stationName&&(G.stationName=e.stationName);const r=o.diagnosis||o,_=o.diagnosis_id??(r==null?void 0:r.id)??o.id;if(!_){V.msgWarning("缺少诊单信息");return}await Ge();const v=Number(o.id??o.appointment_id??0);if(v)try{const y=await _s({appointment_id:v});if(console.log("-----------",y),y!=null&&y.id){const p=await ne({id:y.id});n.value=p,O.value=!0;return}}catch{}let m=o.case_record&&Object.keys(o.case_record).length>0?o.case_record:null;if(!m&&_)try{const y=await Ze({id:Number(_)});m=y&&typeof y=="object"?y:null}catch(y){console.warn("获取诊单详情失败:",y)}t.diagnosis_id=Number(_),t.appointment_id=v,t.prescription_name="",t.prescription_type="浓缩水丸",t.dosage_unit="g",t.dosage_amount=10,t.dosage_bag_count=1,t.patient_name=o.patient_name||r.patient_name||"",t.gender=o.patient_gender??r.gender??0,t.gender_desc=t.gender===1?"男":"女",t.age=o.patient_age??r.age??0,t.phone=o.patient_phone||r.phone||"",t.visit_no=o.id?`1K${String(o.id).padStart(8,"0")}`:"",t.prescription_date=new Date().toISOString().slice(0,10),t.pulse=r.pulse||"",t.tongue=r.tongue_coating||r.tongue||"",t.tongue_image="",t.pulse_condition="",t.clinical_diagnosis=bt(r),t.case_record=m,t.herbs=[],t.dose_count=1,t.dose_unit="剂",t.usage_days=7,t.usage_instruction="",t.usage_time="饭后",t.usage_way="温水送服",t.dietary_taboo=[],t.usage_notes="",t.amount=0,t.doctor_name=((i=De.userInfo)==null?void 0:i.name)||"",t.doctor_signature="",t.is_shared=0,t.need_decoction=!1,t.bags_per_dose=1,n.value=null,O.value=!0,setTimeout(()=>fe(),100)}finally{setTimeout(()=>{W.value=!1},500)}},wt=async o=>{if(W.value){console.warn("处方正在打开中,请勿重复点击");return}W.value=!0;try{const e=await ne({id:o});n.value=e,e!=null&&e.case_record&&Object.keys(e.case_record).length>0&&await Ge(),O.value=!0}catch{V.msgError("加载处方失败")}finally{setTimeout(()=>{W.value=!1},500)}},ge=()=>{O.value=!1,n.value=null},qe=o=>{const e=T.value;if(!e)return{x:0,y:0};const i=e.getBoundingClientRect();if(i.width<=0||i.height<=0)return{x:0,y:0};const r=(o.clientX-i.left)/i.width*Y,_=(o.clientY-i.top)/i.height*Z;return{x:Math.max(0,Math.min(Y,r)),y:Math.max(0,Math.min(Z,_))}},ht=()=>{const o=T.value;o&&(t.doctor_signature=o.toDataURL("image/png"))},Vt=o=>{if(o.pointerType==="mouse"&&o.button!==0)return;const e=T.value,i=e==null?void 0:e.getContext("2d");if(!e||!i)return;e.setPointerCapture(o.pointerId),ee.value=o.pointerId;const{x:r,y:_}=qe(o);i.beginPath(),i.moveTo(r,_)},kt=o=>{var _;if(ee.value!==o.pointerId)return;const e=(_=T.value)==null?void 0:_.getContext("2d");if(!e)return;const{x:i,y:r}=qe(o);e.lineTo(i,r),e.stroke(),e.beginPath(),e.moveTo(i,r)},Je=o=>{if(ee.value!==o.pointerId)return;ee.value=null;const e=T.value;if(e)try{e.releasePointerCapture(o.pointerId)}catch{}ht()},St=()=>{fe(),t.doctor_signature=""},fe=()=>{const o=T.value;if(!o)return;const e=Math.min(typeof window<"u"&&window.devicePixelRatio||1,2.5);o.style.width=`${Y}px`,o.style.height=`${Z}px`,o.width=Math.round(Y*e),o.height=Math.round(Z*e);const i=o.getContext("2d");i&&(i.setTransform(1,0,0,1,0,0),i.scale(e,e),i.fillStyle="#fff",i.fillRect(0,0,Y,Z),i.strokeStyle="#333",i.lineWidth=2.5,i.lineCap="round",i.lineJoin="round")};function ve(o){return(o??"").trim()}function Ke(o){var _,v;const e=t.herbs,i=ve((_=e[o])==null?void 0:_.name);if(!i)return!1;let r=0;for(let m=0;m<e.length;m++)ve((v=e[m])==null?void 0:v.name)===i&&r++;return r>1}function be(){const o=new Map;for(const e of t.herbs){const i=ve(e==null?void 0:e.name);i&&o.set(i,(o.get(i)??0)+1)}return[...o.entries()].filter(([,e])=>e>1).map(([e])=>e)}const xt=()=>{t.herbs.push({name:"",dosage:6})},Ct=o=>{t.herbs.splice(o,1)},ae=async()=>{ue.value=!0;try{const o=await ms({page_no:H.value,page_size:se.value,prescription_name:F.value,is_public:""});Ce.value=o.lists||[],Pe.value=o.count||0}catch(o){console.error("加载处方库失败:",o),V.msgError("加载处方库失败")}finally{ue.value=!1}},ye=()=>{H.value=1,ae()},Pt=o=>{Xe(o)},Xe=o=>{if(!o.herbs||o.herbs.length===0){V.msgWarning("该处方没有药材信息");return}const e=JSON.parse(JSON.stringify(o.herbs));t.herbs=e,be().length&&V.msgWarning("导入的处方中存在重复药名,请合并剂量或删除多余行"),V.msgSuccess(`已导入处方「${o.prescription_name}」,共${e.length}味药材`),A.value=!1};tt(A,o=>{o&&(F.value="",H.value=1,ae())}),tt(()=>t.prescription_type,o=>{o==="浓缩水丸"?(t.dosage_unit="g",t.dosage_amount=10,t.dosage_bag_count=1,t.need_decoction=!1,t.bags_per_dose=1):o==="饮片"?(t.dosage_unit="ml",t.dosage_amount=50,t.dosage_bag_count=1,t.bags_per_dose=1):(t.dosage_unit="g",t.dosage_amount=void 0,t.dosage_bag_count=1,t.need_decoction=!1,t.bags_per_dose=1)});const Ut=async()=>{var e,i,r;if(!((e=t.clinical_diagnosis)!=null&&e.trim())){V.msgWarning("请输入临床诊断");return}if(t.herbs.length===0){V.msgWarning("请至少添加一味中药");return}const o=be();if(o.length){V.msgWarning(`存在重复药名:${o.join("、")},请合并剂量或删除多余行后再保存`);return}for(const _ of t.herbs){if(!((i=_.name)!=null&&i.trim())){V.msgWarning("请填写中药名称");return}if(!_.dosage||_.dosage<=0){V.msgWarning(`请填写「${_.name}」的剂量`);return}}if(!((r=t.doctor_signature)!=null&&r.trim())){V.msgWarning("请使用电子签名板手写医师签名");return}re.value=!0;try{const _=await gs({diagnosis_id:t.diagnosis_id,appointment_id:t.appointment_id,prescription_name:t.prescription_name,prescription_type:t.prescription_type,patient_name:t.patient_name,gender:t.gender,age:t.age,phone:t.phone,visit_no:t.visit_no,prescription_date:t.prescription_date,pulse:t.pulse,tongue:t.tongue,tongue_image:t.tongue_image,pulse_condition:t.pulse_condition,clinical_diagnosis:t.clinical_diagnosis,case_record:t.case_record,herbs:t.herbs,dose_count:t.dose_count,dose_unit:t.dose_unit,dosage_amount:t.dosage_amount,dosage_unit:t.dosage_unit,dosage_bag_count:t.dosage_bag_count,need_decoction:t.need_decoction,bags_per_dose:t.bags_per_dose,usage_days:t.usage_days,times_per_day:t.times_per_day,usage_instruction:t.usage_instruction,usage_time:t.usage_time,usage_way:t.usage_way,dietary_taboo:t.dietary_taboo,usage_notes:t.usage_notes,amount:t.amount,doctor_name:t.doctor_name,doctor_signature:t.doctor_signature,is_shared:t.is_shared}),v=_==null?void 0:_.id;if(v){const m=await ne({id:v});n.value=m,he("success")}else V.msgError("保存失败")}catch(_){V.msgError((_==null?void 0:_.msg)||"保存失败")}finally{re.value=!1}},Dt=o=>{if(!o)return"—";const e=new Date(o*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")}:${String(e.getSeconds()).padStart(2,"0")}`},Nt=async()=>{var e,i;const o=(e=n.value)==null?void 0:e.id;if(o){if(Number((i=n.value)==null?void 0:i.has_prescription_order)===1){V.msgWarning("该处方已存在业务订单,无法作废");return}try{await V.confirm("确定要作废该处方吗?作废后不可恢复。"),de.value=!0,await fs({id:o}),V.msgSuccess("作废成功");const r=await ne({id:o});n.value=r,he("success")}catch(r){r!=="cancel"&&(r==null?void 0:r.message)!=="cancel"&&V.msgError((r==null?void 0:r.msg)||"作废失败")}finally{de.value=!1}}},Rt=async o=>{if(!o)return null;try{const e=await Ze({id:o});return e&&typeof e=="object"?e:null}catch(e){return console.warn("获取诊单详情失败:",e),null}},$t=async()=>{var e;const o=n.value;o&&(t.diagnosis_id=o.diagnosis_id??t.diagnosis_id,t.appointment_id=o.appointment_id??t.appointment_id,t.prescription_name="",t.prescription_type=o.prescription_type||"浓缩水丸",t.prescription_type==="浓缩水丸"?(t.dosage_unit="g",t.dosage_amount=10,t.dosage_bag_count=1):t.prescription_type==="饮片"?(t.dosage_unit="ml",t.dosage_amount=50,t.dosage_bag_count=1):(t.dosage_unit="g",t.dosage_amount=void 0,t.dosage_bag_count=1),t.patient_name=o.patient_name||"",t.gender=o.gender??0,t.gender_desc=o.gender===1?"男":"女",t.age=o.age??0,t.phone=o.phone||"",t.visit_no=o.visit_no||"",t.prescription_date=new Date().toISOString().slice(0,10),t.pulse=o.pulse||"",t.tongue=o.tongue||"",t.tongue_image="",t.pulse_condition="",t.clinical_diagnosis=o.clinical_diagnosis||"",t.dose_count=1,t.dose_unit=o.dose_unit||"剂",t.usage_days=7,t.usage_instruction="",t.usage_time="饭后",t.usage_way="温水送服",t.dietary_taboo=[],t.usage_notes="",t.amount=0,t.doctor_name=((e=De.userInfo)==null?void 0:e.name)||o.doctor_name||"",t.doctor_signature="",t.is_shared=0,t.herbs=[],t.case_record=o.case_record&&Object.keys(o.case_record).length>0?o.case_record:await Rt(Number(t.diagnosis_id)),setTimeout(()=>fe(),100)),n.value=null},Qe=async()=>{const o=Ve.value;if(!o)throw new Error("未找到处方内容");return et(o,{scale:2,useCORS:!0,logging:!1,backgroundColor:"#ffffff"})},Et=async o=>{const e=o.querySelectorAll('img[src^="http"]'),i=Array.from(e).map(async r=>{try{const _=await fetch(r.src,{mode:"cors"});if(!_.ok)return;const v=await _.blob(),m=await new Promise((y,p)=>{const h=new FileReader;h.onload=()=>y(h.result),h.onerror=p,h.readAsDataURL(v)});r.src=m}catch{}});await Promise.allSettled(i)},It=async()=>{const o=ke.value;return o?(o.scrollIntoView({behavior:"instant",block:"nearest"}),await Et(o),await new Promise(e=>setTimeout(e,200)),et(o,{scale:2,useCORS:!0,logging:!1,backgroundColor:"#ffffff"})):null},Ot=async()=>{var o;try{const e=await Qe(),i=document.createElement("a");i.download=`处方_${((o=n.value)==null?void 0:o.patient_name)||"未命名"}_${Date.now()}.png`,i.href=e.toDataURL("image/png"),i.click(),V.msgSuccess("图片已下载")}catch{V.msgError("下载图片失败")}},Tt=async()=>{var o;try{const e=await Qe(),i=e.toDataURL("image/png"),r=new bs({orientation:"portrait",unit:"mm",format:"a5"}),_=r.internal.pageSize.getWidth(),v=r.internal.pageSize.getHeight(),m=Math.min(_/e.width,v/e.height),y=e.width*m,p=e.height*m;r.addImage(i,"PNG",0,0,y,p);const h=await It();if(h){r.addPage("a3","p");const E=Math.min(297/h.width,420/h.height),z=h.width*E,D=h.height*E;r.addImage(h.toDataURL("image/png"),"PNG",0,0,z,D)}r.save(`处方_${((o=n.value)==null?void 0:o.patient_name)||"未命名"}_${Date.now()}.pdf`),V.msgSuccess("PDF已下载")}catch{V.msgError("下载PDF失败")}};return ot({open:yt,openById:wt}),(o,e)=>{const i=Ft,r=Bt,_=Gt,v=jt,m=Ht,y=qt,p=Kt,h=Jt,U=Qt,L=Xt,E=Yt,z=Mt,D=Zt,B=es,q=ts,J=Wt,K=as,Lt=ls,zt=ns,Ye=ss,At=os;return b(),k(Q,null,[l(J,{modelValue:s(O),"onUpdate:modelValue":e[22]||(e[22]=w=>I(O)?O.value=w:null),title:s(nt),size:"1200px","close-on-click-modal":!1,onClose:ge},Cs({default:d(()=>{var w,N;return[s(n)?(b(),k("div",qs,[a("div",Js,[a("div",{ref_key:"prescriptionPrintRef",ref:Ve,class:"prescription-print"},[a("div",Ks,[a("h2",Xs,c(s(G).stationName)+"处方笺",1),a("div",Qs,[s(n).void_status===1?(b(),P(D,{key:0,type:"danger",size:"small"},{default:d(()=>[...e[48]||(e[48]=[u("已作废",-1)])]),_:1})):s(te)?(b(),P(D,{key:1,type:"success",size:"small",class:"mr-1"},{default:d(()=>[...e[49]||(e[49]=[u("已通过",-1)])]),_:1})):Number(s(n).audit_status)===0?(b(),P(D,{key:2,type:"warning",size:"small",class:"mr-1"},{default:d(()=>[...e[50]||(e[50]=[u("待审核",-1)])]),_:1})):x("",!0),s(n).void_status!==1?(b(),k(Q,{key:3},[e[51]||(e[51]=a("div",null,"普通处方",-1)),e[52]||(e[52]=a("div",{class:"text-sm"},"当日有效",-1))],64)):x("",!0)])]),s(n).void_status===1?(b(),k("div",Ys," 作废人:"+c(s(n).void_by_name||"—")+",作废时间:"+c(Dt(s(n).void_time)),1)):x("",!0),a("div",Zs,[a("div",eo,[a("span",to,[e[53]||(e[53]=a("em",null,"日期",-1)),u(c(s(n).prescription_date),1)]),a("span",so,[e[54]||(e[54]=a("em",null,"电话",-1)),u(c(s(n).phone),1)]),a("span",oo,[e[55]||(e[55]=a("em",null,"门诊号",-1)),u(c(s(n).visit_no),1)])]),a("div",ao,[a("span",lo,[e[56]||(e[56]=a("em",null,"姓名",-1)),u(c(s(n).patient_name),1)]),a("span",no,[e[57]||(e[57]=a("em",null,"性别",-1)),u(c(s(n).gender_desc),1)]),a("span",io,[e[58]||(e[58]=a("em",null,"年龄",-1)),u(c(s(n).age!=null?s(n).age+"岁":"—"),1)])]),a("div",ro,[s(n).pulse?(b(),k("span",uo,[e[59]||(e[59]=a("em",null,"面象",-1)),u(c(s(n).pulse||"—"),1)])):x("",!0),s(n).tongue?(b(),k("span",co,[e[60]||(e[60]=a("em",null,"舌象",-1)),u(c(s(n).tongue||"—"),1)])):x("",!0)]),a("div",po,[a("span",_o,[e[61]||(e[61]=a("em",null,"临床诊断",-1)),u(c(s(n).clinical_diagnosis),1)])])]),a("div",mo,[e[62]||(e[62]=a("div",{class:"rp-label"},"RP",-1)),a("div",go,[(b(!0),k(Q,null,we(s(n).herbs,(g,R)=>(b(),k("div",{key:R,class:"herb-cell"},c(g.name)+" "+c(g.dosage)+"克 ",1))),128))])]),s(G).showDisclaimer?(b(),k("div",fo,c(s(G).disclaimer),1)):x("",!0),a("div",vo,[a("div",bo,[a("div",yo," 服用"+c(s(n).usage_days||s(n).dose_count)+"天"+c(s(n).times_per_day?",每天"+s(n).times_per_day+"次":"")+c(s(xe)?""+s(xe):"")+", "+c(s(n).prescription_type)+" "+c(s(n).usage_instruction),1),a("div",wo,[u(" 服用时间: "+c(s(n).usage_time?" "+s(n).usage_time:"")+" ",1),e[63]||(e[63]=a("text",{style:{"margin-left":"20px"}},null,-1)),u("服用方式: "+c(s(n).usage_way?" "+s(n).usage_way:""),1)]),s(n).dietary_taboo&&s(n).dietary_taboo.length?(b(),k("div",ho," 忌口:"+c(Array.isArray(s(n).dietary_taboo)?s(n).dietary_taboo.join("、"):s(n).dietary_taboo),1)):x("",!0),s(n).usage_notes?(b(),k("div",Vo,c(s(n).usage_notes),1)):x("",!0)]),a("div",ko,[a("span",So,[e[64]||(e[64]=u(" 医师 ",-1)),s(n).doctor_signature?(b(),k("img",{key:0,src:s(n).doctor_signature,alt:"医师签名",class:"doctor-signature-img"},null,8,xo)):(b(),k("span",Co,c(s(n).doctor_name||"医师"),1))])])]),e[65]||(e[65]=a("div",{class:"prescription-area"},[a("div",null,"成都双流甄养堂互联网医院有限公司 联系方式:4001667339"),a("div",null,"地址 :四川省成都市双流区黄甲街道黄龙大道二段280号")],-1))],512),s(n).case_record?(b(),k("div",{key:0,ref_key:"caseRecordPrintRef",ref:ke,class:"case-record-a3"},[a("div",Po,[a("h2",Uo,c(s(G).stationName)+" 详细病历",1),a("div",Do,[a("div",No,[e[76]||(e[76]=a("div",{class:"cr-section-title"},"基本信息",-1)),a("div",Ro,[a("div",$o,[e[66]||(e[66]=a("span",{class:"cr-label"},"诊单ID",-1)),u(c(s(n).case_record.patient_id||"—"),1)]),a("div",Eo,[e[67]||(e[67]=a("span",{class:"cr-label"},"姓名",-1)),u(c(s(n).case_record.patient_name||"—"),1)]),a("div",Io,[e[68]||(e[68]=a("span",{class:"cr-label"},"身份证号",-1)),u(c(s(n).case_record.id_card||"—"),1)]),a("div",Oo,[e[69]||(e[69]=a("span",{class:"cr-label"},"手机号",-1)),u(c(s(n).case_record.phone||"—"),1)]),a("div",To,[e[70]||(e[70]=a("span",{class:"cr-label"},"性别",-1)),u(c(s(n).gender_desc),1)]),a("div",Lo,[e[71]||(e[71]=a("span",{class:"cr-label"},"年龄",-1)),u(c(s(n).case_record.age??"—")+"岁",1)]),a("div",zo,[e[72]||(e[72]=a("span",{class:"cr-label"},"婚姻状态",-1)),u(c(["未婚","已婚","离异"][s(n).case_record.marital_status]??"—"),1)]),a("div",Ao,[e[73]||(e[73]=a("span",{class:"cr-label"},"身高",-1)),u(c(s(n).case_record.height??"—")+"cm",1)]),a("div",Wo,[e[74]||(e[74]=a("span",{class:"cr-label"},"体重",-1)),u(c(s(n).case_record.weight??"—")+"kg",1)]),a("div",Ho,[e[75]||(e[75]=a("span",{class:"cr-label"},"地区",-1)),u(c(s(n).case_record.region||"—"),1)])])]),a("div",Mo,[e[79]||(e[79]=a("div",{class:"cr-section-title"},"生命体征",-1)),a("div",jo,[a("div",Bo,[e[77]||(e[77]=a("span",{class:"cr-label"},"血压",-1)),u(c(s(n).case_record.systolic_pressure!=null&&s(n).case_record.diastolic_pressure!=null?s(n).case_record.systolic_pressure+"/"+s(n).case_record.diastolic_pressure+" mmHg":"—"),1)]),a("div",Fo,[e[78]||(e[78]=a("span",{class:"cr-label"},"空腹血糖",-1)),u(c(s(n).case_record.fasting_blood_sugar!=null?s(n).case_record.fasting_blood_sugar+" mmol/L":"—"),1)])])]),a("div",Go,[e[87]||(e[87]=a("div",{class:"cr-section-title"},"主诉",-1)),a("div",qo,[a("div",Jo,[e[80]||(e[80]=a("span",{class:"cr-label"},"诊断日期",-1)),u(c(s(n).case_record.diagnosis_date||"—"),1)]),a("div",Ko,[e[81]||(e[81]=a("span",{class:"cr-label"},"诊断类型",-1)),u(c($(s(_e),s(n).case_record.diagnosis_type)||"—"),1)]),a("div",Xo,[e[82]||(e[82]=a("span",{class:"cr-label"},"证型",-1)),u(c($(s(me),s(n).case_record.syndrome_type)||"—"),1)]),a("div",Qo,[e[83]||(e[83]=a("span",{class:"cr-label"},"糖尿病期数",-1)),u(c($(s(Ne),s(n).case_record.diabetes_type)||"—"),1)]),a("div",Yo,[e[84]||(e[84]=a("span",{class:"cr-label"},"发现糖尿病患病史",-1)),u(c(s(ps)((w=s(n).case_record)==null?void 0:w.diabetes_discovery_year)),1)]),a("div",Zo,[e[85]||(e[85]=a("span",{class:"cr-label"},"当地医院诊断",-1)),u(c(vt(s(n).case_record.local_hospital_diagnosis)),1)]),a("div",ea,[e[86]||(e[86]=a("span",{class:"cr-label"},"当地就诊医院",-1)),u(c(s(n).case_record.local_hospital_name||"—"),1)])])]),a("div",ta,[e[103]||(e[103]=a("div",{class:"cr-section-title"},"现病史",-1)),a("div",sa,[a("div",oa,[e[88]||(e[88]=a("span",{class:"cr-label"},"口腔感觉",-1)),u(c(C(s($e),s(n).case_record.appetite)),1)]),a("div",aa,[e[89]||(e[89]=a("span",{class:"cr-label"},"每日饮水量",-1)),u(c($(s(Ee),s(n).case_record.water_intake)||"—"),1)]),a("div",la,[e[90]||(e[90]=a("span",{class:"cr-label"},"体重变化",-1)),u(c($(s(Oe),s(n).case_record.weight_change)||"—"),1)]),a("div",na,[e[91]||(e[91]=a("span",{class:"cr-label"},"脂肪肝程度",-1)),u(c($(s(Fe),s(n).case_record.fatty_liver_degree)||"—"),1)]),a("div",ia,[e[92]||(e[92]=a("span",{class:"cr-label"},"饮食情况",-1)),u(c(C(s(Ie),s(n).case_record.diet_condition)),1)]),a("div",ra,[e[93]||(e[93]=a("span",{class:"cr-label"},"肢体感觉",-1)),u(c(C(s(Te),s(n).case_record.body_feeling)),1)]),a("div",da,[e[94]||(e[94]=a("span",{class:"cr-label"},"睡眠情况",-1)),u(c(C(s(Le),s(n).case_record.sleep_condition)),1)]),a("div",ua,[e[95]||(e[95]=a("span",{class:"cr-label"},"眼睛情况",-1)),u(c(C(s(ze),s(n).case_record.eye_condition)),1)]),a("div",ca,[e[96]||(e[96]=a("span",{class:"cr-label"},"头部感觉",-1)),u(c(C(s(Ae),s(n).case_record.head_feeling)),1)]),a("div",pa,[e[97]||(e[97]=a("span",{class:"cr-label"},"出汗情况",-1)),u(c(C(s(We),s(n).case_record.sweat_condition)),1)]),a("div",_a,[e[98]||(e[98]=a("span",{class:"cr-label"},"皮肤情况",-1)),u(c(C(s(He),s(n).case_record.skin_condition)),1)]),a("div",ma,[e[99]||(e[99]=a("span",{class:"cr-label"},"小便情况",-1)),u(c(C(s(Me),s(n).case_record.urine_condition)),1)]),a("div",ga,[e[100]||(e[100]=a("span",{class:"cr-label"},"大便情况",-1)),u(c(C(s(je),s(n).case_record.stool_condition)),1)]),a("div",fa,[e[101]||(e[101]=a("span",{class:"cr-label"},"腰肾情况",-1)),u(c(C(s(Be),s(n).case_record.kidney_condition)),1)]),a("div",va,[e[102]||(e[102]=a("span",{class:"cr-label"},"其他补充",-1)),u(c(s(n).case_record.symptoms||"—"),1)])])]),a("div",ba,[e[105]||(e[105]=a("div",{class:"cr-section-title"},"既往史",-1)),a("div",ya,[e[104]||(e[104]=a("span",{class:"cr-label"},null,-1)),u(c(C(s(Re),s(n).case_record.past_history)),1)])]),a("div",wa,[e[111]||(e[111]=a("div",{class:"cr-section-title"},"其他病史",-1)),a("div",ha,[a("div",Va,[e[106]||(e[106]=a("span",{class:"cr-label"},"外伤史",-1)),u(c(s(n).case_record.trauma_history===1?"有":"无"),1)]),a("div",ka,[e[107]||(e[107]=a("span",{class:"cr-label"},"手术史",-1)),u(c(s(n).case_record.surgery_history===1?"有":"无"),1)]),a("div",Sa,[e[108]||(e[108]=a("span",{class:"cr-label"},"过敏史",-1)),u(c(s(n).case_record.allergy_history===1?"有":"无"),1)]),a("div",xa,[e[109]||(e[109]=a("span",{class:"cr-label"},"家族病史",-1)),u(c(s(n).case_record.family_history===1?"有":"无"),1)]),a("div",Ca,[e[110]||(e[110]=a("span",{class:"cr-label"},"妊娠哺乳史",-1)),u(c(s(n).case_record.pregnancy_history===1?"有":"无"),1)])])]),a("div",Pa,[e[114]||(e[114]=a("div",{class:"cr-section-title"},"诊断信息",-1)),(N=s(n).case_record.tongue_images)!=null&&N.length?(b(),k("div",Ua,[a("div",Da,[e[112]||(e[112]=a("span",{class:"cr-label"},"舌苔照片",-1)),a("div",Na,[(b(!0),k(Q,null,we(s(n).case_record.tongue_images,(g,R)=>(b(),k("img",{key:R,src:ft(g),class:"cr-img",crossorigin:"anonymous"},null,8,Ra))),128))])])])):x("",!0),a("div",$a,[a("div",Ea,[e[113]||(e[113]=a("span",{class:"cr-label"},"舌象",-1)),u(c(s(n).case_record.tongue_coating||"—"),1)])])])])])],512)):x("",!0)]),a("div",Ia,[l(m,{onClick:Ot},{default:d(()=>[l(B,null,{default:d(()=>[l(s(Vs))]),_:1}),e[115]||(e[115]=u(" 下载图片 ",-1))]),_:1}),l(m,{type:"primary",onClick:Tt},{default:d(()=>[l(B,null,{default:d(()=>[l(s(ks))]),_:1}),e[116]||(e[116]=u(" 下载PDF ",-1))]),_:1}),s(n).void_status!==1&&!s(te)?(b(),P(q,{key:0,disabled:!s(Se),content:"该处方已存在业务订单,无法作废,请前往已开处方里修改",placement:"top"},{default:d(()=>[a("span",Oa,[l(m,{type:"danger",plain:"",disabled:s(Se),loading:s(de),onClick:Nt},{default:d(()=>[...e[117]||(e[117]=[u(" 作废处方 ",-1)])]),_:1},8,["disabled","loading"])])]),_:1},8,["disabled"])):x("",!0),s(te)?x("",!0):(b(),P(m,{key:1,onClick:$t},{default:d(()=>[...e[118]||(e[118]=[u("新建处方",-1)])]),_:1})),l(m,{onClick:ge},{default:d(()=>[...e[119]||(e[119]=[u("关闭",-1)])]),_:1})])])):(b(),k("div",Ds,[l(z,{ref_key:"formRef",ref:lt,model:s(t),"label-width":"100px",class:"prescription-form"},{default:d(()=>[a("div",Ns,[e[32]||(e[32]=a("div",{class:"section-title"},"患者信息",-1)),l(v,{gutter:16},{default:d(()=>[l(r,{span:8},{default:d(()=>[l(i,{label:"姓名"},{default:d(()=>[a("span",null,c(s(t).patient_name),1)]),_:1})]),_:1}),l(r,{span:8},{default:d(()=>[l(i,{label:"性别"},{default:d(()=>[a("span",null,c(s(t).gender_desc),1)]),_:1})]),_:1}),l(r,{span:8},{default:d(()=>[l(i,{label:"年龄"},{default:d(()=>[a("span",null,c(s(t).age),1)]),_:1})]),_:1}),l(r,{span:12},{default:d(()=>[l(i,{label:"电话"},{default:d(()=>[a("span",null,c(s(t).phone),1)]),_:1})]),_:1}),l(r,{span:12},{default:d(()=>[l(i,{label:"门诊号"},{default:d(()=>[l(_,{modelValue:s(t).visit_no,"onUpdate:modelValue":e[0]||(e[0]=g=>s(t).visit_no=g),placeholder:"门诊号"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),a("div",Rs,[e[33]||(e[33]=a("div",{class:"section-title"},"诊断信息",-1)),l(v,{gutter:16},{default:d(()=>[l(r,{span:12},{default:d(()=>[l(i,{label:"面象",prop:"pulse"},{default:d(()=>[l(_,{modelValue:s(t).pulse,"onUpdate:modelValue":e[1]||(e[1]=g=>s(t).pulse=g),placeholder:"面象"},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:12},{default:d(()=>[l(i,{label:"舌象",prop:"tongue"},{default:d(()=>[l(_,{modelValue:s(t).tongue,"onUpdate:modelValue":e[2]||(e[2]=g=>s(t).tongue=g),placeholder:"舌象"},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:24},{default:d(()=>[l(i,{label:"临床诊断",prop:"clinical_diagnosis"},{default:d(()=>[l(_,{modelValue:s(t).clinical_diagnosis,"onUpdate:modelValue":e[3]||(e[3]=g=>s(t).clinical_diagnosis=g),type:"textarea",rows:2,placeholder:"请输入临床诊断"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),a("div",$s,[a("div",Es,[a("div",Is,[e[37]||(e[37]=a("span",{class:"rp-toolbar__marker","aria-hidden":"true"},null,-1)),a("div",Os,[e[36]||(e[36]=a("h3",{class:"rp-toolbar__heading"},[u(" 中药处方 "),a("span",{class:"rp-toolbar__abbr"},"(RP)")],-1)),a("p",Ts,[e[34]||(e[34]=u(" 共 ",-1)),a("strong",null,c(s(t).herbs.length),1),e[35]||(e[35]=u(" 味药材 · 可手动添加、从处方库或粘贴药方批量录入(药品库同名匹配) ",-1))])])]),a("div",Ls,[l(m,{type:"primary",size:"small",icon:s(ys),onClick:xt},{default:d(()=>[...e[38]||(e[38]=[u(" 添加中药 ",-1)])]),_:1},8,["icon"]),l(m,{type:"primary",plain:"",size:"small",icon:s(ws),onClick:e[4]||(e[4]=g=>A.value=!0)},{default:d(()=>[...e[39]||(e[39]=[u(" 从处方库导入 ",-1)])]),_:1},8,["icon"]),l(m,{type:"primary",plain:"",size:"small",icon:s(hs),onClick:_t},{default:d(()=>[...e[40]||(e[40]=[u(" 导入药方 ",-1)])]),_:1},8,["icon"])])]),a("div",zs,[l(i,{label:"处方价格",prop:"amount",class:"!mb-0"},{default:d(()=>[l(y,{modelValue:s(t).amount,"onUpdate:modelValue":e[5]||(e[5]=g=>s(t).amount=g),min:0,precision:2,placeholder:"请输入处方总价(元)",class:"!w-40"},null,8,["modelValue"]),e[41]||(e[41]=a("span",{class:"ml-2 text-gray-500"},"元",-1))]),_:1})]),a("div",As,[(b(!0),k(Q,null,we(s(t).herbs,(g,R)=>(b(),k("div",{key:"herb-"+R,class:Us(["herb-editor-card",{"herb-editor-card--dup":Ke(R)}])},[a("div",Ws,"中药 "+c(R+1),1),l(rs,{modelValue:g.name,"onUpdate:modelValue":le=>g.name=le,class:"herb-editor-card__select"},null,8,["modelValue","onUpdate:modelValue"]),Ke(R)?(b(),k("div",Hs," 该药名与其他行重复,请合并剂量或删除多余行 ")):x("",!0),a("div",Ms,[l(y,{modelValue:g.dosage,"onUpdate:modelValue":le=>g.dosage=le,min:.1,step:1,precision:1,placeholder:"剂量(克)",class:"herb-editor-card__dose"},null,8,["modelValue","onUpdate:modelValue"]),e[43]||(e[43]=a("span",{class:"text-gray-500 shrink-0"},"克",-1)),l(m,{type:"danger",size:"small",link:"",onClick:le=>Ct(R)},{default:d(()=>[...e[42]||(e[42]=[u(" 删除 ",-1)])]),_:1},8,["onClick"])])],2))),128))])]),a("div",js,[l(v,{gutter:16},{default:d(()=>[l(r,{span:8},{default:d(()=>[l(i,{label:"处方类型",prop:"prescription_type"},{default:d(()=>[l(h,{modelValue:s(t).prescription_type,"onUpdate:modelValue":e[6]||(e[6]=g=>s(t).prescription_type=g),placeholder:"请选择处方类型",class:"!w-full"},{default:d(()=>[l(p,{label:"浓缩水丸",value:"浓缩水丸"}),l(p,{label:"饮片",value:"饮片"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(r,{span:8},{default:d(()=>[l(i,{label:"用量",prop:"dosage_amount"},{default:d(()=>[s(t).prescription_type==="浓缩水丸"?(b(),P(h,{key:0,modelValue:s(t).dosage_amount,"onUpdate:modelValue":e[7]||(e[7]=g=>s(t).dosage_amount=g),placeholder:"请选择用量",class:"!w-full"},{default:d(()=>[l(p,{label:"1g",value:1}),l(p,{label:"2g",value:2}),l(p,{label:"3g",value:3}),l(p,{label:"4g",value:4}),l(p,{label:"5g",value:5}),l(p,{label:"6g",value:6}),l(p,{label:"7g",value:7}),l(p,{label:"8g",value:8}),l(p,{label:"9g",value:9}),l(p,{label:"10g",value:10})]),_:1},8,["modelValue"])):s(t).prescription_type==="饮片"?(b(),P(h,{key:1,modelValue:s(t).dosage_amount,"onUpdate:modelValue":e[8]||(e[8]=g=>s(t).dosage_amount=g),placeholder:"请选择用量",class:"!w-full"},{default:d(()=>[l(p,{label:"50ml",value:50}),l(p,{label:"100ml",value:100}),l(p,{label:"120ml",value:120}),l(p,{label:"150ml",value:150}),l(p,{label:"180ml",value:180}),l(p,{label:"200ml",value:200}),l(p,{label:"250ml",value:250})]),_:1},8,["modelValue"])):(b(),P(y,{key:2,modelValue:s(t).dosage_amount,"onUpdate:modelValue":e[9]||(e[9]=g=>s(t).dosage_amount=g),min:0,precision:2,class:"!w-full"},null,8,["modelValue"])),s(t).prescription_type!=="浓缩水丸"&&s(t).prescription_type!=="饮片"?(b(),k("span",Bs,c(s(t).dosage_unit),1)):x("",!0)]),_:1})]),_:1}),s(t).prescription_type==="浓缩水丸"?(b(),P(r,{key:0,span:8},{default:d(()=>[l(i,{label:" ",prop:"dosage_bag_count","label-width":"12px"},{default:d(()=>[l(h,{modelValue:s(t).dosage_bag_count,"onUpdate:modelValue":e[10]||(e[10]=g=>s(t).dosage_bag_count=g),placeholder:"请选择袋数",class:"!w-[120px]"},{default:d(()=>[l(p,{label:"1袋",value:1}),l(p,{label:"2袋",value:2}),l(p,{label:"3袋",value:3}),l(p,{label:"4袋",value:4}),l(p,{label:"5袋",value:5})]),_:1},8,["modelValue"])]),_:1})]),_:1})):x("",!0),s(t).prescription_type==="饮片"?(b(),P(r,{key:1,span:8},{default:d(()=>[l(i,{label:"每贴出包数",prop:"bags_per_dose"},{default:d(()=>[l(h,{modelValue:s(t).bags_per_dose,"onUpdate:modelValue":e[11]||(e[11]=g=>s(t).bags_per_dose=g),placeholder:"请选择",class:"!w-full"},{default:d(()=>[l(p,{label:"1包",value:1}),l(p,{label:"2包",value:2}),l(p,{label:"3包",value:3}),l(p,{label:"4包",value:4}),l(p,{label:"5包",value:5}),l(p,{label:"6包",value:6}),l(p,{label:"7包",value:7}),l(p,{label:"8包",value:8}),l(p,{label:"9包",value:9})]),_:1},8,["modelValue"])]),_:1})]),_:1})):x("",!0),s(t).prescription_type==="饮片"?(b(),P(r,{key:2,span:8},{default:d(()=>[l(i,{label:"是否代煎",prop:"need_decoction"},{default:d(()=>[l(L,{modelValue:s(t).need_decoction,"onUpdate:modelValue":e[12]||(e[12]=g=>s(t).need_decoction=g)},{default:d(()=>[l(U,{label:!0},{default:d(()=>[...e[44]||(e[44]=[u("代煎",-1)])]),_:1}),l(U,{label:!1},{default:d(()=>[...e[45]||(e[45]=[u("不代煎",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})):x("",!0),l(r,{span:8},{default:d(()=>[l(i,{label:"服用天数",prop:"usage_days"},{default:d(()=>[l(y,{modelValue:s(t).usage_days,"onUpdate:modelValue":e[13]||(e[13]=g=>s(t).usage_days=g),min:1,max:365,class:"!w-full"},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:8},{default:d(()=>[l(i,{label:"每天几次",prop:"times_per_day"},{default:d(()=>[l(y,{modelValue:s(t).times_per_day,"onUpdate:modelValue":e[14]||(e[14]=g=>s(t).times_per_day=g),min:1,max:6,class:"!w-full",placeholder:"每天服用次数"},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:24},{default:d(()=>[l(i,{label:"用法",prop:"usage_instruction"},{default:d(()=>[l(_,{modelValue:s(t).usage_instruction,"onUpdate:modelValue":e[15]||(e[15]=g=>s(t).usage_instruction=g),placeholder:"",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:12},{default:d(()=>[l(i,{label:"服用时间",prop:"usage_time"},{default:d(()=>[l(h,{modelValue:s(t).usage_time,"onUpdate:modelValue":e[16]||(e[16]=g=>s(t).usage_time=g),placeholder:"请选择服用时间",class:"!w-full"},{default:d(()=>[l(p,{label:"饭前",value:"饭前"}),l(p,{label:"饭后",value:"饭后"}),l(p,{label:"饭中",value:"饭中"}),l(p,{label:"空腹",value:"空腹"}),l(p,{label:"睡前",value:"睡前"}),l(p,{label:"晨起",value:"晨起"}),l(p,{label:"随时",value:"随时"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(r,{span:12},{default:d(()=>[l(i,{label:"服用方式",prop:"usage_way"},{default:d(()=>[l(h,{modelValue:s(t).usage_way,"onUpdate:modelValue":e[17]||(e[17]=g=>s(t).usage_way=g),placeholder:"请选择服用方式",class:"!w-full"},{default:d(()=>[l(p,{label:"温水送服",value:"温水送服"}),l(p,{label:"开水冲服",value:"开水冲服"}),l(p,{label:"黄酒送服",value:"黄酒送服"}),l(p,{label:"淡盐水送服",value:"淡盐水送服"}),l(p,{label:"米汤送服",value:"米汤送服"}),l(p,{label:"嚼服",value:"嚼服"}),l(p,{label:"含化",value:"含化"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(r,{span:24},{default:d(()=>[l(i,{label:"忌口",prop:"dietary_taboo"},{default:d(()=>[l(h,{modelValue:s(t).dietary_taboo,"onUpdate:modelValue":e[18]||(e[18]=g=>s(t).dietary_taboo=g),multiple:"",placeholder:"请选择忌口内容(可多选)",class:"!w-full"},{default:d(()=>[l(p,{label:"辛辣食物",value:"辛辣食物"}),l(p,{label:"生冷食物",value:"生冷食物"}),l(p,{label:"油腻食物",value:"油腻食物"}),l(p,{label:"海鲜",value:"海鲜"}),l(p,{label:"牛羊肉",value:"牛羊肉"}),l(p,{label:"鸡蛋",value:"鸡蛋"}),l(p,{label:"豆制品",value:"豆制品"}),l(p,{label:"酒类",value:"酒类"}),l(p,{label:"浓茶",value:"浓茶"}),l(p,{label:"咖啡",value:"咖啡"}),l(p,{label:"烟草",value:"烟草"}),l(p,{label:"萝卜",value:"萝卜"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(r,{span:24},{default:d(()=>[l(i,{label:"其他说明",prop:"usage_notes"},{default:d(()=>[l(_,{modelValue:s(t).usage_notes,"onUpdate:modelValue":e[19]||(e[19]=g=>s(t).usage_notes=g),type:"textarea",rows:2,placeholder:"其他服用注意事项",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:12},{default:d(()=>[l(i,{label:"医师",prop:"doctor_name"},{default:d(()=>[l(_,{modelValue:s(t).doctor_name,"onUpdate:modelValue":e[20]||(e[20]=g=>s(t).doctor_name=g),placeholder:"医师姓名"},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:12},{default:d(()=>[l(i,{label:"是否共享",prop:"is_shared"},{default:d(()=>[l(E,{modelValue:s(t).is_shared,"onUpdate:modelValue":e[21]||(e[21]=g=>s(t).is_shared=g),"active-value":1,"inactive-value":0,"active-text":"所有人可见","inactive-text":"仅自己可见"},null,8,["modelValue"])]),_:1})]),_:1}),l(r,{span:24},{default:d(()=>[l(i,{label:"医师签名",prop:"doctor_signature",required:""},{default:d(()=>[a("div",Fs,[a("canvas",{ref_key:"signatureCanvasRef",ref:T,class:"signature-canvas",onPointerdown:X(Vt,["prevent"]),onPointermove:X(kt,["prevent"]),onPointerup:X(Je,["prevent"]),onPointercancel:X(Je,["prevent"])},null,544),a("div",Gs,[l(m,{size:"small",onClick:St},{default:d(()=>[...e[46]||(e[46]=[u("清空签名",-1)])]),_:1})])]),e[47]||(e[47]=a("div",{class:"text-xs text-amber-600 mt-1"},"* 必填,请在框内手写医师签名",-1))]),_:1})]),_:1})]),_:1})])]),_:1},8,["model"])]))]}),_:2},[s(n)?void 0:{name:"footer",fn:d(()=>[a("div",Ta,[l(m,{onClick:ge},{default:d(()=>[...e[120]||(e[120]=[u("取消",-1)])]),_:1}),l(m,{type:"primary",onClick:Ut,loading:s(re)},{default:d(()=>[...e[121]||(e[121]=[u("保存处方",-1)])]),_:1},8,["loading"])])]),key:"0"}]),1032,["modelValue","title"]),l(Ye,{modelValue:s(A),"onUpdate:modelValue":e[26]||(e[26]=w=>I(A)?A.value=w:null),title:"从处方库导入",width:"800px","close-on-click-modal":!1},{default:d(()=>[a("div",La,[l(_,{modelValue:s(F),"onUpdate:modelValue":e[23]||(e[23]=w=>I(F)?F.value=w:null),placeholder:"请输入处方名称搜索",clearable:"",onKeyup:is(ye,["enter"]),onClear:ye},{append:d(()=>[l(m,{icon:s(Ss),onClick:ye},null,8,["icon"])]),_:1},8,["modelValue"])]),Ps((b(),P(Lt,{data:s(Ce),height:"400",onRowClick:Pt,style:{cursor:"pointer"}},{default:d(()=>[l(K,{label:"处方名称",prop:"prescription_name","min-width":"150","show-overflow-tooltip":""}),l(K,{label:"药材数量",width:"100"},{default:d(({row:w})=>{var N;return[u(c(((N=w.herbs)==null?void 0:N.length)||0)+"味 ",1)]}),_:1}),l(K,{label:"药材明细","min-width":"300","show-overflow-tooltip":""},{default:d(({row:w})=>[w.herbs&&w.herbs.length>0?(b(),k("span",za,c(w.herbs.map(N=>`${N.name} ${N.dosage}g`).join("、")),1)):(b(),k("span",Aa,"暂无药材"))]),_:1}),l(K,{label:"创建人",prop:"creator_name",width:"100"}),l(K,{label:"操作",width:"100",fixed:"right"},{default:d(({row:w})=>[l(m,{type:"primary",link:"",onClick:X(N=>Xe(w),["stop"])},{default:d(()=>[...e[122]||(e[122]=[u(" 导入 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[At,s(ue)]]),a("div",Wa,[l(zt,{"current-page":s(H),"onUpdate:currentPage":e[24]||(e[24]=w=>I(H)?H.value=w:null),"page-size":s(se),"onUpdate:pageSize":e[25]||(e[25]=w=>I(se)?se.value=w:null),total:s(Pe),"page-sizes":[10,15,20,50],layout:"total, sizes, prev, pager, next",onCurrentChange:ae,onSizeChange:ae},null,8,["current-page","page-size","total"])])]),_:1},8,["modelValue"]),l(Ye,{modelValue:s(M),"onUpdate:modelValue":e[30]||(e[30]=w=>I(M)?M.value=w:null),title:"导入药方(识别药材)",width:"560px","close-on-click-modal":!1,"destroy-on-close":"",onClosed:e[31]||(e[31]=w=>j.value="")},{footer:d(()=>[l(m,{onClick:e[29]||(e[29]=w=>M.value=!1)},{default:d(()=>[...e[126]||(e[126]=[u("取消",-1)])]),_:1}),l(m,{type:"primary",loading:s(ce),onClick:mt},{default:d(()=>[...e[127]||(e[127]=[u(" 识别并导入 ",-1)])]),_:1},8,["loading"])]),default:d(()=>[e[128]||(e[128]=a("p",{class:"text-gray-500 text-sm mb-2 leading-relaxed"}," 粘贴整张药方文本,系统按「药名 + 剂量」解析;药名须与药品库中名称完全一致才会录入,否则跳过。支持顿号/逗号/换行分隔;单行可用空格分味(如「黄芪15g 白术10g」);「黄芪、党参各10克」等同剂量写法亦可识别。 ",-1)),l(_,{modelValue:s(j),"onUpdate:modelValue":e[27]||(e[27]=w=>I(j)?j.value=w:null),type:"textarea",rows:10,placeholder:`示例:
黄芪15 党参12 茯苓10
柴胡10g、黄芩10、半夏12克
黄芪、白术、茯苓各15克`},null,8,["modelValue"]),a("div",Ha,[e[125]||(e[125]=a("span",{class:"text-sm text-gray-600 shrink-0"},"导入方式",-1)),l(L,{modelValue:s(oe),"onUpdate:modelValue":e[28]||(e[28]=w=>I(oe)?oe.value=w:null)},{default:d(()=>[l(U,{label:"replace"},{default:d(()=>[...e[123]||(e[123]=[u("覆盖现有药材",-1)])]),_:1}),l(U,{label:"append"},{default:d(()=>[...e[124]||(e[124]=[u("追加到末尾",-1)])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue"])],64)}}}),$l=cs(Ma,[["__scopeId","data-v-fb1133ec"]]);export{$l as default};