2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
import{_ as le,V as oe,o as _,c as re,e as t,f as a,E as f,j as i,k as U,q as R,h as r,t as k,g as V,d as ne,a as E}from"./index-C1KISTGN.js";import{u as J,w as se}from"./xlsx-DrgRuPKf.js";const ue={class:"material-list"},de={class:"card-header"},ie={__name:"List",setup(me){const v=U(!1),I=U(""),T=U(!1),C=U(null),p=R({name:"",category:"",status:""}),n=R({name:"",category:"",spec:"",unit:"",brand:"",manufacturer:"",minStock:10,stock:0,remark:""}),B={name:[{required:!0,message:"请输入物料名称",trigger:"blur"}],category:[{required:!0,message:"请选择分类",trigger:"change"}],spec:[{required:!0,message:"请输入规格",trigger:"blur"}],unit:[{required:!0,message:"请输入单位",trigger:"blur"}],brand:[{required:!0,message:"请输入品牌",trigger:"blur"}],manufacturer:[{required:!0,message:"请输入生产厂家",trigger:"blur"}]},d=R({id:null,code:"",name:"",category:"",spec:"",unit:"",brand:"",manufacturer:"",minStock:0,stock:0,remark:"",status:0,approveResult:1,approveRemark:""}),S=R({page:1,size:20,total:0}),O=U([]),w=async()=>{try{const u=localStorage.getItem("materials");let e=u?JSON.parse(u):[];e.length<20&&(e=[{id:1,code:"MT0120240101",name:"阿莫西林胶囊",category:"药品",spec:"0.25g*24粒",unit:"盒",brand:"华北制药",manufacturer:"华北制药股份有限公司",stock:500,minStock:100,status:1,remark:""},{id:2,code:"MT0120240102",name:"头孢克肟分散片",category:"药品",spec:"0.1g*6片",unit:"盒",brand:"齐鲁制药",manufacturer:"齐鲁制药有限公司",stock:300,minStock:100,status:1,remark:""},{id:3,code:"MT0120240103",name:"布洛芬缓释胶囊",category:"药品",spec:"0.3g*20粒",unit:"盒",brand:"中美史克",manufacturer:"中美天津史克制药有限公司",stock:80,minStock:100,status:1,remark:"库存不足"},{id:4,code:"MT0120240104",name:"复方氨酚烷胺片",category:"药品",spec:"12片",unit:"盒",brand:"仁和",manufacturer:"江西仁和药业有限公司",stock:450,minStock:100,status:1,remark:""},{id:5,code:"MT0120240105",name:"蒙脱石散",category:"药品",spec:"3g*10袋",unit:"盒",brand:"博福-益普生",manufacturer:"博福-益普生(天津)制药有限公司",stock:200,minStock:50,status:0,remark:"待审核"},{id:6,code:"MT0220240201",name:"一次性医用口罩",category:"医疗器械",spec:"50只/盒",unit:"盒",brand:"稳健医疗",manufacturer:"稳健医疗用品股份有限公司",stock:1e3,minStock:500,status:1,remark:""},{id:7,code:"MT0220240202",name:"N95医用防护口罩",category:"医疗器械",spec:"20只/盒",unit:"盒",brand:"3M",manufacturer:"3M中国有限公司",stock:300,minStock:200,status:1,remark:""},{id:8,code:"MT0220240203",name:"一次性医用手套",category:"医疗器械",spec:"100只/盒",unit:"盒",brand:"蓝帆",manufacturer:"蓝帆医疗股份有限公司",stock:150,minStock:200,status:1,remark:"库存不足"},{id:9,code:"MT0220240204",name:"电子体温计",category:"医疗器械",spec:"MT-101",unit:"支",brand:"欧姆龙",manufacturer:"欧姆龙(大连)有限公司",stock:80,minStock:50,status:1,remark:""},{id:10,code:"MT0220240205",name:"血压计",category:"医疗器械",spec:"HEM-7136",unit:"台",brand:"欧姆龙",manufacturer:"欧姆龙(大连)有限公司",stock:60,minStock:30,status:1,remark:""},{id:11,code:"MT0320240301",name:"一次性注射器",category:"耗材",spec:"5ml",unit:"支",brand:"康德莱",manufacturer:"康德莱医疗器械股份有限公司",stock:2e3,minStock:1e3,status:1,remark:""},{id:12,code:"MT0320240302",name:"输液器",category:"耗材",spec:"精密过滤",unit:"套",brand:"威高",manufacturer:"威海威高集团医用高分子制品股份有限公司",stock:800,minStock:500,status:1,remark:""},{id:13,code:"MT0320240303",name:"医用纱布",category:"耗材",spec:"10cm*10cm",unit:"包",brand:"振德",manufacturer:"振德医疗用品股份有限公司",stock:500,minStock:300,status:1,remark:""},{id:14,code:"MT0320240304",name:"医用棉签",category:"耗材",spec:"100支/包",unit:"包",brand:"稳健",manufacturer:"稳健医疗用品股份有限公司",stock:400,minStock:200,status:0,remark:"待审核"},{id:15,code:"MT0320240305",name:"医用胶带",category:"耗材",spec:"2.5cm*5m",unit:"卷",brand:"3M",manufacturer:"3M中国有限公司",stock:300,minStock:150,status:1,remark:""},{id:16,code:"MT0420240401",name:"超声诊断仪",category:"设备",spec:"DC-8",unit:"台",brand:"迈瑞",manufacturer:"深圳迈瑞生物医疗电子股份有限公司",stock:2,minStock:1,status:1,remark:""},{id:17,code:"MT0420240402",name:"心电图机",category:"设备",spec:"ECG-1350P",unit:"台",brand:"理邦",manufacturer:"深圳市理邦精密仪器股份有限公司",stock:5,minStock:2,status:1,remark:""},{id:18,code:"MT0420240403",name:"呼吸机",category:"设备",spec:"SV300",unit:"台",brand:"迈瑞",manufacturer:"深圳迈瑞生物医疗电子股份有限公司",stock:3,minStock:2,status:1,remark:""},{id:19,code:"MT0420240404",name:"监护仪",category:"设备",spec:"BeneView T8",unit:"台",brand:"迈瑞",manufacturer:"深圳迈瑞生物医疗电子股份有限公司",stock:8,minStock:5,status:0,remark:"待审核"},{id:20,code:"MT0420240405",name:"输液泵",category:"设备",spec:"BeneFusion VP5",unit:"台",brand:"迈瑞",manufacturer:"深圳迈瑞生物医疗电子股份有限公司",stock:10,minStock:5,status:1,remark:""}],localStorage.setItem("materials",JSON.stringify(e)));let o=e;p.name&&(o=o.filter(s=>s.name.includes(p.name))),p.category&&(o=o.filter(s=>s.category===p.category)),p.status!==""&&(o=o.filter(s=>s.status===Number(p.status))),O.value=o,S.total=o.length}catch{f.error("加载数据失败")}};oe(()=>{w()});const F=async()=>{await w(),f.success("查询成功")},A=()=>{p.name="",p.category="",p.status="",w()},L=()=>{I.value="新增物料",Object.keys(n).forEach(u=>{u==="minStock"?n[u]=10:u==="stock"?n[u]=0:n[u]=""}),v.value=!0,C.value&&C.value.clearValidate()},P=u=>{f.info("查看详情")},G=u=>{I.value="编辑物料",Object.assign(n,u),v.value=!0},H=u=>{Object.assign(d,u),d.approveResult=1,d.approveRemark="",T.value=!0},K=async()=>{try{const u=localStorage.getItem("materials"),e=u?JSON.parse(u):[],o=e.findIndex(s=>s.id===d.id);o!==-1?(e[o].status=d.approveResult,localStorage.setItem("materials",JSON.stringify(e)),f.success("审核提交成功"),T.value=!1,await w()):f.error("物料不存在")}catch{f.error("审核失败")}},Q=async u=>{try{const e=localStorage.getItem("materials");let o=e?JSON.parse(e):[];o=o.filter(s=>s.id!==u.id),localStorage.setItem("materials",JSON.stringify(o)),f.success("删除成功"),await w()}catch{f.error("删除失败")}},W=()=>{if(!C.value){f.warning("表单未初始化");return}C.value.validate(async u=>{if(u)try{const e=localStorage.getItem("materials"),o=e?JSON.parse(e):[],s={药品:"01",医疗器械:"02",耗材:"03",设备:"04"},m=new Date().toISOString().slice(0,10).replace(/-/g,""),c={...n,id:n.id||Date.now(),code:n.code||`MT${s[n.category]}${m}${String(o.length+1).padStart(2,"0")}`,status:0};if(n.id){const M=o.findIndex(D=>D.id===n.id);M!==-1&&(o[M]=c)}else o.push(c);localStorage.setItem("materials",JSON.stringify(o)),f.success("物料保存成功"),v.value=!1,await w()}catch{f.error("保存失败")}else return f.error("请填写完整信息"),!1})},X=()=>{const u=O.value.map(s=>({物料编码:s.code,物料名称:s.name,分类:s.category,规格型号:s.specification,单位:s.unit,单价:s.price,库存:s.stock,状态:["待审核","已启用","已停用"][s.status]})),e=J.json_to_sheet(u),o=J.book_new();J.book_append_sheet(o,e,"物料列表"),se(o,`物料列表_${new Date().toLocaleDateString()}.xlsx`),f.success("导出成功")};return(u,e)=>{const o=i("el-button"),s=i("el-input"),m=i("el-form-item"),c=i("el-option"),M=i("el-select"),D=i("el-form"),b=i("el-table-column"),Y=i("el-text"),x=i("el-tag"),Z=i("el-table"),h=i("el-pagination"),ee=i("el-card"),y=i("el-col"),N=i("el-row"),j=i("el-input-number"),q=i("el-dialog"),g=i("el-descriptions-item"),te=i("el-descriptions"),z=i("el-radio"),ae=i("el-radio-group");return _(),re("div",ue,[t(ee,null,{header:a(()=>[E("div",de,[e[22]||(e[22]=E("span",null,"物料管理",-1)),E("div",null,[t(o,{type:"success",onClick:X},{default:a(()=>[...e[20]||(e[20]=[r("导出Excel",-1)])]),_:1}),t(o,{type:"primary",onClick:L},{default:a(()=>[...e[21]||(e[21]=[r("新增物料",-1)])]),_:1})])])]),default:a(()=>[t(D,{inline:!0,model:p,class:"search-form"},{default:a(()=>[t(m,{label:"物料名称"},{default:a(()=>[t(s,{modelValue:p.name,"onUpdate:modelValue":e[0]||(e[0]=l=>p.name=l),placeholder:"请输入",clearable:""},null,8,["modelValue"])]),_:1}),t(m,{label:"分类"},{default:a(()=>[t(M,{modelValue:p.category,"onUpdate:modelValue":e[1]||(e[1]=l=>p.category=l),placeholder:"请选择",clearable:"",style:{width:"150px"}},{default:a(()=>[t(c,{label:"药品",value:"药品"}),t(c,{label:"医疗器械",value:"医疗器械"}),t(c,{label:"耗材",value:"耗材"}),t(c,{label:"设备",value:"设备"})]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"状态"},{default:a(()=>[t(M,{modelValue:p.status,"onUpdate:modelValue":e[2]||(e[2]=l=>p.status=l),placeholder:"请选择",clearable:"",style:{width:"120px"}},{default:a(()=>[t(c,{label:"待审核",value:"0"}),t(c,{label:"已启用",value:"1"}),t(c,{label:"已停用",value:"2"})]),_:1},8,["modelValue"])]),_:1}),t(m,null,{default:a(()=>[t(o,{type:"primary",onClick:F},{default:a(()=>[...e[23]||(e[23]=[r("查询",-1)])]),_:1}),t(o,{onClick:A},{default:a(()=>[...e[24]||(e[24]=[r("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"]),t(Z,{data:O.value,border:""},{default:a(()=>[t(b,{prop:"code",label:"物料编码",width:"150"}),t(b,{prop:"name",label:"物料名称","min-width":"180"}),t(b,{prop:"category",label:"分类",width:"100"}),t(b,{prop:"spec",label:"规格",width:"120"}),t(b,{prop:"unit",label:"单位",width:"80"}),t(b,{prop:"brand",label:"品牌",width:"120"}),t(b,{prop:"stock",label:"库存",width:"100"},{default:a(({row:l})=>[t(Y,{type:l.stock<l.minStock?"danger":"success"},{default:a(()=>[r(k(l.stock),1)]),_:2},1032,["type"])]),_:1}),t(b,{prop:"status",label:"状态",width:"100"},{default:a(({row:l})=>[l.status===0?(_(),V(x,{key:0,type:"warning"},{default:a(()=>[...e[25]||(e[25]=[r("待审核",-1)])]),_:1})):l.status===1?(_(),V(x,{key:1,type:"success"},{default:a(()=>[...e[26]||(e[26]=[r("已启用",-1)])]),_:1})):(_(),V(x,{key:2,type:"info"},{default:a(()=>[...e[27]||(e[27]=[r("已停用",-1)])]),_:1}))]),_:1}),t(b,{label:"操作",width:"250",fixed:"right"},{default:a(({row:l})=>[t(o,{link:"",type:"primary",onClick:$=>P(l)},{default:a(()=>[...e[28]||(e[28]=[r("查看",-1)])]),_:1},8,["onClick"]),t(o,{link:"",type:"primary",onClick:$=>G(l)},{default:a(()=>[...e[29]||(e[29]=[r("编辑",-1)])]),_:1},8,["onClick"]),l.status===0?(_(),V(o,{key:0,link:"",type:"success",onClick:$=>H(l)},{default:a(()=>[...e[30]||(e[30]=[r("审核",-1)])]),_:1},8,["onClick"])):ne("",!0),t(o,{link:"",type:"danger",onClick:$=>Q(l)},{default:a(()=>[...e[31]||(e[31]=[r("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),t(h,{"current-page":S.page,"onUpdate:currentPage":e[3]||(e[3]=l=>S.page=l),"page-size":S.size,"onUpdate:pageSize":e[4]||(e[4]=l=>S.size=l),total:S.total,layout:"total, sizes, prev, pager, next, jumper",style:{"margin-top":"20px","justify-content":"flex-end"}},null,8,["current-page","page-size","total"])]),_:1}),t(q,{modelValue:v.value,"onUpdate:modelValue":e[15]||(e[15]=l=>v.value=l),title:I.value,width:"800px"},{footer:a(()=>[t(o,{onClick:e[14]||(e[14]=l=>v.value=!1)},{default:a(()=>[...e[32]||(e[32]=[r("取消",-1)])]),_:1}),t(o,{type:"primary",onClick:W},{default:a(()=>[...e[33]||(e[33]=[r("提交",-1)])]),_:1})]),default:a(()=>[t(D,{model:n,rules:B,ref_key:"formRef",ref:C,"label-width":"120px"},{default:a(()=>[t(N,{gutter:20},{default:a(()=>[t(y,{span:12},{default:a(()=>[t(m,{label:"物料名称",prop:"name"},{default:a(()=>[t(s,{modelValue:n.name,"onUpdate:modelValue":e[5]||(e[5]=l=>n.name=l),placeholder:"请输入物料名称"},null,8,["modelValue"])]),_:1})]),_:1}),t(y,{span:12},{default:a(()=>[t(m,{label:"分类",prop:"category"},{default:a(()=>[t(M,{modelValue:n.category,"onUpdate:modelValue":e[6]||(e[6]=l=>n.category=l),placeholder:"请选择"},{default:a(()=>[t(c,{label:"药品",value:"药品"}),t(c,{label:"医疗器械",value:"医疗器械"}),t(c,{label:"耗材",value:"耗材"}),t(c,{label:"设备",value:"设备"})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(N,{gutter:20},{default:a(()=>[t(y,{span:12},{default:a(()=>[t(m,{label:"规格",prop:"spec"},{default:a(()=>[t(s,{modelValue:n.spec,"onUpdate:modelValue":e[7]||(e[7]=l=>n.spec=l),placeholder:"请输入规格"},null,8,["modelValue"])]),_:1})]),_:1}),t(y,{span:12},{default:a(()=>[t(m,{label:"单位",prop:"unit"},{default:a(()=>[t(s,{modelValue:n.unit,"onUpdate:modelValue":e[8]||(e[8]=l=>n.unit=l),placeholder:"请输入单位"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(N,{gutter:20},{default:a(()=>[t(y,{span:12},{default:a(()=>[t(m,{label:"品牌",prop:"brand"},{default:a(()=>[t(s,{modelValue:n.brand,"onUpdate:modelValue":e[9]||(e[9]=l=>n.brand=l),placeholder:"请输入品牌"},null,8,["modelValue"])]),_:1})]),_:1}),t(y,{span:12},{default:a(()=>[t(m,{label:"生产厂家",prop:"manufacturer"},{default:a(()=>[t(s,{modelValue:n.manufacturer,"onUpdate:modelValue":e[10]||(e[10]=l=>n.manufacturer=l),placeholder:"请输入生产厂家"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(N,{gutter:20},{default:a(()=>[t(y,{span:12},{default:a(()=>[t(m,{label:"安全库存",prop:"minStock"},{default:a(()=>[t(j,{modelValue:n.minStock,"onUpdate:modelValue":e[11]||(e[11]=l=>n.minStock=l),min:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1}),t(y,{span:12},{default:a(()=>[t(m,{label:"当前库存",prop:"stock"},{default:a(()=>[t(j,{modelValue:n.stock,"onUpdate:modelValue":e[12]||(e[12]=l=>n.stock=l),min:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(m,{label:"备注"},{default:a(()=>[t(s,{modelValue:n.remark,"onUpdate:modelValue":e[13]||(e[13]=l=>n.remark=l),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(q,{modelValue:T.value,"onUpdate:modelValue":e[19]||(e[19]=l=>T.value=l),title:"物料审核",width:"700px"},{footer:a(()=>[t(o,{onClick:e[18]||(e[18]=l=>T.value=!1)},{default:a(()=>[...e[39]||(e[39]=[r("取消",-1)])]),_:1}),t(o,{type:"primary",onClick:K},{default:a(()=>[...e[40]||(e[40]=[r("提交审核",-1)])]),_:1})]),default:a(()=>[t(te,{column:2,border:""},{default:a(()=>[t(g,{label:"物料编码"},{default:a(()=>[r(k(d.code),1)]),_:1}),t(g,{label:"状态"},{default:a(()=>[d.status===0?(_(),V(x,{key:0,type:"warning"},{default:a(()=>[...e[34]||(e[34]=[r("待审核",-1)])]),_:1})):d.status===1?(_(),V(x,{key:1,type:"success"},{default:a(()=>[...e[35]||(e[35]=[r("已启用",-1)])]),_:1})):(_(),V(x,{key:2,type:"info"},{default:a(()=>[...e[36]||(e[36]=[r("已停用",-1)])]),_:1}))]),_:1}),t(g,{label:"物料名称",span:2},{default:a(()=>[r(k(d.name),1)]),_:1}),t(g,{label:"分类"},{default:a(()=>[r(k(d.category),1)]),_:1}),t(g,{label:"规格"},{default:a(()=>[r(k(d.spec),1)]),_:1}),t(g,{label:"单位"},{default:a(()=>[r(k(d.unit),1)]),_:1}),t(g,{label:"品牌"},{default:a(()=>[r(k(d.brand),1)]),_:1}),t(g,{label:"生产厂家",span:2},{default:a(()=>[r(k(d.manufacturer),1)]),_:1}),t(g,{label:"安全库存"},{default:a(()=>[r(k(d.minStock),1)]),_:1}),t(g,{label:"当前库存"},{default:a(()=>[r(k(d.stock),1)]),_:1}),t(g,{label:"备注",span:2},{default:a(()=>[r(k(d.remark||"无"),1)]),_:1})]),_:1}),t(D,{model:d,"label-width":"120px",style:{"margin-top":"20px"}},{default:a(()=>[t(m,{label:"审核结果"},{default:a(()=>[t(ae,{modelValue:d.approveResult,"onUpdate:modelValue":e[16]||(e[16]=l=>d.approveResult=l)},{default:a(()=>[t(z,{label:1},{default:a(()=>[...e[37]||(e[37]=[r("通过",-1)])]),_:1}),t(z,{label:2},{default:a(()=>[...e[38]||(e[38]=[r("驳回",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"审核意见"},{default:a(()=>[t(s,{modelValue:d.approveRemark,"onUpdate:modelValue":e[17]||(e[17]=l=>d.approveRemark=l),type:"textarea",rows:3,placeholder:"请输入审核意见"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}},fe=le(ie,[["__scopeId","data-v-d2381a87"]]);export{fe as default};
|