2 lines
3.7 KiB
Java
2 lines
3.7 KiB
Java
var k=(w,y,i)=>new Promise((_,s)=>{var d=o=>{try{c(i.next(o))}catch(n){s(n)}},h=o=>{try{c(i.throw(o))}catch(n){s(n)}},c=o=>o.done?_(o.value):Promise.resolve(o.value).then(d,h);c((i=i.apply(w,y)).next())});import{M as B,s as J,aH as R,bL as T,aE as D,x as H,au as V}from"./index-X7Y8jykP.js";import{p as O}from"./MesXslRawMaterialEntry.api-B6SjsYRW.js";import{n as z,r as A}from"./nativeSchemaNormalize-WzV7gGZh.js";import{e as L,h as $,y as E,A as m,c as S,K as G,z as u,f,Q as K,r as v,C as b,G as Q,H as U,E as x,u as W}from"./vue-vendor-DNhG1Cve.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./browser-D2DxMZOB.js";import"./tableMerge-CpKVscEF.js";import"./tableBuilder-lOY0L2dW.js";import"./freeTableGrid-BXWKfNhh.js";import"./freeTableBorders-i5ck0FPH.js";import"./freeTableTracks--U1Y5u-V.js";import"./barcodeRenderer-cjxjmb-t.js";const j={key:0,class:"preview-error"},q={key:1,class:"preview-body"},F=["srcdoc"],X={class:"preview-footer"},Y=L({__name:"RawMaterialEntryPrintPreviewModal",props:{open:{type:Boolean},entryId:{},barcode:{}},emits:["update:open"],setup(w,{emit:y}){const i=w,_=y,{createMessage:s}=J(),d=S({get:()=>i.open,set:t=>_("update:open",t)}),h=S(()=>{const t=String(i.barcode||"").trim();return t?`原料入场记录打印预览(条码:${t})`:"原料入场记录打印预览"}),c=v(!1),o=v(""),n=v(""),P=v(null);function M(t){return k(this,null,function*(){c.value=!0,o.value="",n.value="";try{const e=yield O(t),r=e.templateJson,l=e.printData;if(!r)throw new Error("模板 JSON 为空,请检查「业务打印绑定」是否已配置");let p;try{p=typeof r=="string"?JSON.parse(r):r}catch(C){throw new Error("模板 JSON 格式错误")}const a=z(p);n.value=yield A(a,l)}catch(e){o.value=e instanceof Error?e.message:String(e)}finally{c.value=!1}})}function I(){const t=n.value;if(!(t!=null&&t.trim())){s.warning("预览未就绪,请稍后再试");return}const e=document.createElement("iframe");e.setAttribute("style","position:fixed;left:0;top:0;width:0;height:0;border:0;opacity:0;pointer-events:none;"),document.body.appendChild(e);const r=e.contentDocument;if(!r){document.body.removeChild(e),s.error("无法创建打印文档");return}try{r.open(),r.write(t),r.close()}catch(a){document.body.removeChild(e),s.error("写入打印内容失败");return}const l=()=>{try{e.parentNode&&document.body.removeChild(e)}catch(a){}},p=()=>{try{const a=e.contentWindow;if(!a){s.error("无法唤起打印窗口"),l();return}a.focus(),a.print(),a.addEventListener("afterprint",l,{once:!0}),window.setTimeout(l,12e4)}catch(a){s.error("无法唤起打印,请检查浏览器弹窗/打印权限"),l()}};window.setTimeout(p,100)}function g(){o.value="",n.value=""}return $(()=>[i.open,i.entryId],([t,e])=>{t&&e&&M(e),t||g()}),(t,e)=>{const r=T,l=R,p=G("a-button"),a=D,C=B;return u(),E(C,{open:d.value,"onUpdate:open":e[1]||(e[1]=N=>d.value=N),title:h.value,width:"960px",footer:null,"destroy-on-close":"","wrap-class-name":"raw-material-entry-print-preview-modal",onCancel:g},{default:m(()=>[f(l,{spinning:c.value},{default:m(()=>[o.value?(u(),b("div",j,Q(o.value),1)):(u(),b("div",q,[n.value?(u(),b("iframe",{key:0,ref_key:"previewIframeRef",ref:P,class:"preview-iframe",title:"原料入场记录打印预览",srcdoc:n.value},null,8,F)):c.value?U("",!0):(u(),E(r,{key:1,description:"暂无预览内容"}))]))]),_:1},8,["spinning"]),K("div",X,[f(a,null,{default:m(()=>[f(p,{onClick:e[0]||(e[0]=N=>d.value=!1)},{default:m(()=>[...e[2]||(e[2]=[x("关闭",-1)])]),_:1}),f(p,{type:"primary",disabled:!n.value||!!o.value,onClick:I},{default:m(()=>[f(W(H),{icon:"ant-design:printer-outlined"}),e[3]||(e[3]=x(" 浏览器打印 ",-1))]),_:1},8,["disabled"])]),_:1})])]),_:1},8,["open","title"])}}}),me=V(Y,[["__scopeId","data-v-3ad6b34c"]]);export{me as default};
|