2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
import{D as pe,B as me,C as ue,P as _e,Q as ce,i as fe,J as be,L as ve,M as ye,N as ge,T as Ve,G as ke,I as we,h as he,g as xe,V as Ce}from"./element-plus-Bolc0EfP.js";import{_ as Ee}from"./index.vue_vue_type_script_setup_true_lang-EJPdzUeK.js";import{u as Ne,c as Se,i as b,_ as Ue}from"./index-CzSP4TPL.js";import{w as Le}from"./@vue/runtime-dom-DDAG46FW.js";import{n as Ie,t as Pe,u as De,v as $e}from"./tcm-B2eDN42y.js";import{u as Oe}from"./usePaging-VsbTxSU0.js";import{M as Ae}from"./index-Pb72-1vG.js";import{f as G,b as Me,as as Re,ak as _,I as L,a as l,aN as a,O as r,aP as w,G as g,J as V,H as I,M as Be}from"./@vue/runtime-core-C6bnekPw.js";import{y as s,a as T,r as F,n as E}from"./@vue/reactivity-DiY1c2vO.js";import{Q as h}from"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-B0jSCQ-G.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"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.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"./medicine-Cpa7L0_Z.js";const Je={class:"prescription-library"},Te={class:"mt-4"},Fe={key:0},Ge={key:1,class:"text-gray-400"},ze={class:"flex mt-4 justify-end"},He={class:"w-full"},Ke={class:"flex flex-col gap-1 leading-none"},je=G({name:"prescriptionLibrary"}),qe=G({...je,setup(Qe){const c=F({prescription_name:"",formula_type:"",is_public:""}),f=E(!1),p=E("add"),N=E(!1),S=E(),o=F({id:0,prescription_name:"",formula_type:"主方",herbs:[],is_public:0,disable_edit:0}),z={prescription_name:[{required:!0,message:"请输入处方名称",trigger:"blur"}]},P=Ne(),H=[0,3],{pager:k,getLists:x,resetParams:K,resetPage:D}=Oe({fetchFun:Ie,params:c}),j=i=>{var e;return Number(i.creator_id)===Number((e=P.userInfo)==null?void 0:e.id)},q=()=>{const i=P.userInfo;if(!i)return!1;if(Number(i.root)===1)return!0;const e=Array.isArray(i.role_ids)?i.role_ids.map(v=>Number(v)):[];return H.some(v=>e.includes(v))},$=i=>q()||j(i),Q=$,W=()=>{o.herbs.push({name:"",dosage:0})},X=i=>{o.herbs.splice(i,1)},Y=()=>{o.id=0,o.prescription_name="",o.formula_type="主方",o.herbs=[],o.is_public=0,o.disable_edit=0},Z=()=>{Y(),p.value="add",f.value=!0},ee=i=>{p.value="view",o.id=i.id,o.prescription_name=i.prescription_name||"",o.formula_type=i.formula_type||"主方",o.herbs=i.herbs?JSON.parse(JSON.stringify(i.herbs)):[],o.is_public=i.is_public??0,o.disable_edit=i.disable_edit??0,f.value=!0},le=i=>{p.value="edit",o.id=i.id,o.prescription_name=i.prescription_name||"",o.formula_type=i.formula_type||"主方",o.herbs=i.herbs?JSON.parse(JSON.stringify(i.herbs)):[],o.is_public=i.is_public??0,o.disable_edit=i.disable_edit??0,f.value=!0},te=async()=>{if(S.value){if(await S.value.validate(),!o.herbs||o.herbs.length===0){b.msgError("请至少添加一味药材");return}for(let i=0;i<o.herbs.length;i++){const e=o.herbs[i];if(!e.name||!e.name.trim()){b.msgError(`第${i+1}味药材名称不能为空`);return}if(!e.dosage||e.dosage<=0){b.msgError(`第${i+1}味药材剂量必须大于0`);return}}N.value=!0;try{const i={...o};p.value==="add"?(await Pe(i),b.msgSuccess("添加成功")):(await De(i),b.msgSuccess("编辑成功")),f.value=!1,x()}catch(i){console.error(i)}finally{N.value=!1}}},ae=async i=>{await b.confirm("确定要删除该处方吗?"),await $e({id:i}),b.msgSuccess("删除成功"),x()};return Me(()=>{x()}),(i,e)=>{const v=ue,u=me,y=ce,O=_e,m=fe,A=pe,M=be,ie=Se,n=ge,U=Ve,R=ye,oe=Ee,B=we,se=ke,re=he,J=xe,ne=Ce,C=Re("perms"),de=ve;return _(),L("div",Je,[l(M,{class:"!border-none",shadow:"never"},{default:a(()=>[l(A,{class:"mb-[-16px]",model:s(c),inline:""},{default:a(()=>[l(u,{class:"w-[280px]",label:"处方名称"},{default:a(()=>[l(v,{modelValue:s(c).prescription_name,"onUpdate:modelValue":e[0]||(e[0]=t=>s(c).prescription_name=t),placeholder:"请输入处方名称",clearable:"",onKeyup:Le(s(D),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),l(u,{class:"w-[200px]",label:"处方类型"},{default:a(()=>[l(O,{modelValue:s(c).formula_type,"onUpdate:modelValue":e[1]||(e[1]=t=>s(c).formula_type=t),placeholder:"全部",clearable:""},{default:a(()=>[l(y,{label:"全部",value:""}),l(y,{label:"主方",value:"主方"}),l(y,{label:"辅方",value:"辅方"})]),_:1},8,["modelValue"])]),_:1}),l(u,{class:"w-[200px]",label:"是否公开"},{default:a(()=>[l(O,{modelValue:s(c).is_public,"onUpdate:modelValue":e[2]||(e[2]=t=>s(c).is_public=t),placeholder:"全部",clearable:""},{default:a(()=>[l(y,{label:"全部",value:""}),l(y,{label:"仅自己可见",value:0}),l(y,{label:"所有人可见",value:1})]),_:1},8,["modelValue"])]),_:1}),l(u,null,{default:a(()=>[l(m,{type:"primary",onClick:s(D)},{default:a(()=>[...e[10]||(e[10]=[r("查询",-1)])]),_:1},8,["onClick"]),l(m,{onClick:s(K)},{default:a(()=>[...e[11]||(e[11]=[r("重置",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"])]),_:1}),w((_(),g(M,{class:"mt-4 !border-none",shadow:"never"},{default:a(()=>[w((_(),g(m,{type:"primary",onClick:Z},{icon:a(()=>[l(ie,{name:"el-icon-Plus"})]),default:a(()=>[e[12]||(e[12]=r(" 新增处方 ",-1))]),_:1})),[[C,["wcf.prescription/add"]]]),V("div",Te,[l(R,{data:s(k).lists,size:"large"},{default:a(()=>[l(n,{label:"ID",prop:"id","min-width":"60"}),l(n,{label:"处方名称",prop:"prescription_name","min-width":"200","show-overflow-tooltip":""}),l(n,{label:"处方类型","min-width":"100"},{default:a(({row:t})=>[l(U,{type:t.formula_type==="辅方"?"warning":"primary",size:"small"},{default:a(()=>[r(h(t.formula_type||"主方"),1)]),_:2},1032,["type"])]),_:1}),l(n,{label:"药材数量","min-width":"100"},{default:a(({row:t})=>{var d;return[r(h(((d=t.herbs)==null?void 0:d.length)||0)+"味 ",1)]}),_:1}),l(n,{label:"药材明细","min-width":"300","show-overflow-tooltip":""},{default:a(({row:t})=>[t.herbs&&t.herbs.length>0?(_(),L("span",Fe,h(t.herbs.map(d=>`${d.name} ${d.dosage}g`).join("、")),1)):(_(),L("span",Ge,"暂无药材"))]),_:1}),l(n,{label:"是否公开","min-width":"120"},{default:a(({row:t})=>[l(U,{type:t.is_public?"success":"info"},{default:a(()=>[r(h(t.is_public?"所有人可见":"仅自己可见"),1)]),_:2},1032,["type"])]),_:1}),l(n,{label:"禁用修改","min-width":"100"},{default:a(({row:t})=>[l(U,{type:t.disable_edit?"danger":"info"},{default:a(()=>[r(h(t.disable_edit?"已禁用":"可修改"),1)]),_:2},1032,["type"])]),_:1}),l(n,{label:"创建人",prop:"creator_name","min-width":"100"}),l(n,{label:"创建时间",prop:"create_time","min-width":"160"}),l(n,{label:"操作",width:"180",fixed:"right"},{default:a(({row:t})=>[w((_(),g(m,{type:"primary",link:"",onClick:d=>ee(t)},{default:a(()=>[...e[13]||(e[13]=[r(" 查看 ",-1)])]),_:1},8,["onClick"])),[[C,["wcf.prescription/read"]]]),$(t)?w((_(),g(m,{key:0,type:"primary",link:"",onClick:d=>le(t)},{default:a(()=>[...e[14]||(e[14]=[r(" 编辑 ",-1)])]),_:1},8,["onClick"])),[[C,["wcf.prescription/edit"]]]):I("",!0),s(Q)(t)?w((_(),g(m,{key:1,type:"danger",link:"",onClick:d=>ae(t.id)},{default:a(()=>[...e[15]||(e[15]=[r(" 删除 ",-1)])]),_:1},8,["onClick"])),[[C,["wcf.prescription/delete"]]]):I("",!0)]),_:1})]),_:1},8,["data"])]),V("div",ze,[l(oe,{modelValue:s(k),"onUpdate:modelValue":e[3]||(e[3]=t=>T(k)?k.value=t:null),onChange:s(x)},null,8,["modelValue","onChange"])])]),_:1})),[[de,s(k).loading]]),l(ne,{modelValue:s(f),"onUpdate:modelValue":e[9]||(e[9]=t=>T(f)?f.value=t:null),title:s(p)==="add"?"新增处方":s(p)==="edit"?"编辑处方":"查看处方",width:"800px","close-on-click-modal":!1},Be({default:a(()=>[l(A,{ref_key:"formRef",ref:S,model:s(o),rules:z,"label-width":"120px",disabled:s(p)==="view"},{default:a(()=>[l(u,{label:"处方名称",prop:"prescription_name"},{default:a(()=>[l(v,{modelValue:s(o).prescription_name,"onUpdate:modelValue":e[4]||(e[4]=t=>s(o).prescription_name=t),placeholder:"请输入处方名称,例如:六味地黄丸、补中益气汤",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),l(u,{label:"处方类型",prop:"formula_type"},{default:a(()=>[l(se,{modelValue:s(o).formula_type,"onUpdate:modelValue":e[5]||(e[5]=t=>s(o).formula_type=t)},{default:a(()=>[l(B,{value:"主方"},{default:a(()=>[...e[16]||(e[16]=[r("主方",-1)])]),_:1}),l(B,{value:"辅方"},{default:a(()=>[...e[17]||(e[17]=[r("辅方",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(u,{label:"药材配方",prop:"herbs",required:""},{default:a(()=>[V("div",He,[l(m,{type:"primary",size:"small",onClick:W,disabled:s(p)==="view"},{default:a(()=>[...e[18]||(e[18]=[r(" 添加药材 ",-1)])]),_:1},8,["disabled"]),l(R,{data:s(o).herbs,class:"mt-2",border:""},{default:a(()=>[l(n,{label:"序号",type:"index",width:"60"}),l(n,{label:"药材名称","min-width":"220"},{default:a(({row:t})=>[l(Ae,{modelValue:t.name,"onUpdate:modelValue":d=>t.name=d,disabled:s(p)==="view"},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:1}),l(n,{label:"剂量(克)","min-width":"150"},{default:a(({row:t})=>[l(re,{modelValue:t.dosage,"onUpdate:modelValue":d=>t.dosage=d,min:0,precision:1,step:.5,placeholder:"剂量",class:"w-full",disabled:s(p)==="view"},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:1}),s(p)!=="view"?(_(),g(n,{key:0,label:"操作",width:"80"},{default:a(({$index:t})=>[l(m,{type:"danger",link:"",onClick:d=>X(t)},{default:a(()=>[...e[19]||(e[19]=[r(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})):I("",!0)]),_:1},8,["data"])])]),_:1}),l(u,{label:"是否公开",prop:"is_public"},{default:a(()=>[l(J,{modelValue:s(o).is_public,"onUpdate:modelValue":e[6]||(e[6]=t=>s(o).is_public=t),"active-value":1,"inactive-value":0,"active-text":"所有人可见","inactive-text":"仅自己可见"},null,8,["modelValue"]),e[20]||(e[20]=V("div",{class:"text-xs text-gray-400 mt-1"}," 勾选后,所有医生都可以查看和使用此处方模板 ",-1))]),_:1}),l(u,{label:"禁用修改",prop:"disable_edit"},{default:a(()=>[V("div",Ke,[l(J,{modelValue:s(o).disable_edit,"onUpdate:modelValue":e[7]||(e[7]=t=>s(o).disable_edit=t),"active-value":1,"inactive-value":0,"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"]),e[21]||(e[21]=V("div",{class:"text-xs text-gray-400 leading-relaxed"}," 开启后,导入此模板到处方时将锁定整张处方的药材,不可增删改,只能再次导入覆盖 ",-1))])]),_:1})]),_:1},8,["model","disabled"])]),_:2},[s(p)!=="view"?{name:"footer",fn:a(()=>[l(m,{onClick:e[8]||(e[8]=t=>f.value=!1)},{default:a(()=>[...e[22]||(e[22]=[r("取消",-1)])]),_:1}),l(m,{type:"primary",onClick:te,loading:s(N)},{default:a(()=>[...e[23]||(e[23]=[r(" 确定 ",-1)])]),_:1},8,["loading"])]),key:"0"}:void 0]),1032,["modelValue","title"])])}}}),Rl=Ue(qe,[["__scopeId","data-v-2b53c4ed"]]);export{Rl as default};
|