Files
xuetang/server/public/admin/assets/list-D67bwrV2.js
T
2026-09-08 11:40:15 +08:00

2 lines
12 KiB
JavaScript

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