2 lines
3.7 KiB
Java
2 lines
3.7 KiB
Java
var k=(w,_,i)=>new Promise((y,s)=>{var d=o=>{try{c(i.next(o))}catch(r){s(r)}},h=o=>{try{c(i.throw(o))}catch(r){s(r)}},c=o=>o.done?y(o.value):Promise.resolve(o.value).then(d,h);c((i=i.apply(w,_)).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"./MesXslRawMaterialCard.api-vGuaxFmq.js";import{n as z,r as A}from"./nativeSchemaNormalize-WzV7gGZh.js";import{e as L,h as $,y as S,A as m,c as x,K as G,z as u,f,Q as K,r as v,C as b,G as Q,H as U,E as P,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:"RawMaterialCardPrintPreviewModal",props:{open:{type:Boolean},cardId:{},barcode:{}},emits:["update:open"],setup(w,{emit:_}){const i=w,y=_,{createMessage:s}=J(),d=x({get:()=>i.open,set:t=>y("update:open",t)}),h=x(()=>{const t=String(i.barcode||"").trim();return t?`原材料卡片打印预览(条码:${t})`:"原材料卡片打印预览"}),c=v(!1),o=v(""),r=v(""),E=v(null);function M(t){return k(this,null,function*(){c.value=!0,o.value="",r.value="";try{const e=yield O(t),n=e.templateJson,l=e.printData;if(!n)throw new Error("模板 JSON 为空,请检查「业务打印绑定」是否已配置");let p;try{p=typeof n=="string"?JSON.parse(n):n}catch(g){throw new Error("模板 JSON 格式错误")}const a=z(p);r.value=yield A(a,l)}catch(e){o.value=e instanceof Error?e.message:String(e)}finally{c.value=!1}})}function I(){const t=r.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 n=e.contentDocument;if(!n){document.body.removeChild(e),s.error("无法创建打印文档");return}try{n.open(),n.write(t),n.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 C(){o.value="",r.value=""}return $(()=>[i.open,i.cardId],([t,e])=>{t&&e&&M(e),t||C()}),(t,e)=>{const n=T,l=R,p=G("a-button"),a=D,g=B;return u(),S(g,{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-card-print-preview-modal",onCancel:C},{default:m(()=>[f(l,{spinning:c.value},{default:m(()=>[o.value?(u(),b("div",j,Q(o.value),1)):(u(),b("div",q,[r.value?(u(),b("iframe",{key:0,ref_key:"previewIframeRef",ref:E,class:"preview-iframe",title:"原材料卡片打印预览",srcdoc:r.value},null,8,F)):c.value?U("",!0):(u(),S(n,{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]=[P("关闭",-1)])]),_:1}),f(p,{type:"primary",disabled:!r.value||!!o.value,onClick:I},{default:m(()=>[f(W(H),{icon:"ant-design:printer-outlined"}),e[3]||(e[3]=P(" 浏览器打印 ",-1))]),_:1},8,["disabled"])]),_:1})])]),_:1},8,["open","title"])}}}),me=V(Y,[["__scopeId","data-v-f32864c4"]]);export{me as default};
|