2 lines
11 KiB
Java
2 lines
11 KiB
Java
var Oe=Object.defineProperty,Te=Object.defineProperties;var je=Object.getOwnPropertyDescriptors;var ie=Object.getOwnPropertySymbols;var De=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable;var re=(f,c,n)=>c in f?Oe(f,c,{enumerable:!0,configurable:!0,writable:!0,value:n}):f[c]=n,ue=(f,c)=>{for(var n in c||(c={}))De.call(c,n)&&re(f,n,c[n]);if(ie)for(var n of ie(c))Je.call(c,n)&&re(f,n,c[n]);return f},ce=(f,c)=>Te(f,je(c));var U=(f,c,n)=>new Promise((E,w)=>{var H=v=>{try{N(n.next(v))}catch(l){w(l)}},J=v=>{try{N(n.throw(v))}catch(l){w(l)}},N=v=>v.done?E(v.value):Promise.resolve(v.value).then(H,J);N((n=n.apply(f,c)).next())});import{d as Ie,w as $,f as p,e as C,ah as g,aC as L,as as k,aF as i,k as o,ar as X,ag as W,av as ve,au as d,q as pe,at as me,B as de,G as q,A as Be,u as Q,aB as Y,n as ee}from"./vue-vendor-C7Zq48Yl.js";import{bM as $e,J as Le,M as te,u as He,d as Re}from"./index-BI6CMai0.js";import{q as Fe}from"./printTemplate.api-CHChWHTu.js";import{n as Ue,s as We,g as fe,r as qe,a as Ee,p as Ve}from"./printNativeViaPrintDot-CW0hqAEQ.js";import"./antd-vue-vendor-BPnV8VqP.js";import"./vxe-table-vendor-B88kchpX.js";import"./browser-INOPQ3v-.js";import"./tableMerge-CpKVscEF.js";import"./tableBuilder-lOY0L2dW.js";import"./freeTableGrid-BXWKfNhh.js";import"./freeTableBorders-DHo40MDb.js";import"./freeTableTracks-CfeiVurn.js";const Ae={key:0,class:"native-preview-error"},Ke={class:"json-template-pane"},Ze={class:"params-json-pane"},Ge={class:"params-json-head"},Xe={class:"json-sub-tabs json-sub-tabs--segmented",role:"tablist","aria-label":"参数数据来源"},Qe={class:"preview-header-row"},Ye={class:"preview-zoom-label"},et={key:0,class:"preview-scroll-flex"},tt={class:"preview-zoom-slot"},at=["srcdoc"],he=1.15,nt=.25,ot=4,we=96/25.4,lt=Ie({__name:"NativeTemplateListPreviewModal",props:{open:{type:Boolean},templateId:{}},emits:["update:open"],setup(f,{emit:c}){const n=f,E=c,{createMessage:w}=He(),H=C({get:()=>n.open,set:e=>E("update:open",e)}),J=p(!1),N=p(!1),v=p(""),l=p(null),I=p("{}"),V=p("template"),y=p("mock"),R=p("{}"),z=p("{}"),b=p(""),F=p(null),A=p(null),O=p(1),M=p(1),K=C(()=>{const e=O.value*M.value;return!Number.isFinite(e)||e<=0?1:Math.min(4,Math.max(.08,e))}),xe=C(()=>`${Math.round(M.value*100)}%`),ae=C(()=>y.value==="mock"?z.value:R.value),Z=C(()=>{try{return JSON.parse(ae.value||"{}")}catch(e){return{}}}),ne=C(()=>{var u,m;if(!l.value)return null;const e=Math.max(1,qe(l.value,Z.value)),t=Number(((u=l.value.page)==null?void 0:u.width)||210),r=Number(((m=l.value.page)==null?void 0:m.height)||297),a=t*we,s=r*e*we;return{wPx:a,hPx:s,pageCount:e}}),T=p({w:0,h:0}),P=C(()=>{const e=ne.value;if(!e)return null;const t=T.value;return ce(ue({},e),{wPx:Math.max(e.wPx,t.w||0),hPx:Math.max(e.hPx,t.h||0)})});function _e(e){const t=e.body;let r=1/0,a=0,s=1/0,u=0;const m=D=>{if(D instanceof HTMLElement){const h=D.getBoundingClientRect();h.height>.5&&h.width>.5&&(r=Math.min(r,h.top),a=Math.max(a,h.bottom),s=Math.min(s,h.left),u=Math.max(u,h.right))}for(let h=0;h<D.children.length;h++)m(D.children[h])};m(t);const x=Number.isFinite(r)&&a>0?{w:Math.ceil(u-s+6),h:Math.ceil(a-r+12)}:{w:0,h:0},j=Math.max(e.documentElement.scrollHeight,t.scrollHeight,x.h),B=Math.max(e.documentElement.scrollWidth,t.scrollWidth,x.w);return{w:Math.ceil(B),h:Math.ceil(j)}}function oe(){ee(()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{var t;const e=(t=A.value)==null?void 0:t.contentDocument;if(!(e!=null&&e.body)){T.value={w:0,h:0},S();return}T.value=_e(e),S()})})})}function le(){return U(this,null,function*(){if(!l.value){b.value="";return}try{b.value=yield Ee(l.value,Z.value)}catch(e){b.value="",w.error(`预览渲染失败:${(e==null?void 0:e.message)||"未知错误"}`)}})}const ge=Le(()=>void le(),320);function ye(){const e=F.value,t=P.value;if(!e||!t){O.value=1;return}const r=20,a=Math.max(0,e.clientWidth-r),s=Math.max(0,e.clientHeight-r);if(a<=0||s<=0||t.wPx<=0||t.hPx<=0){O.value=1;return}const u=Math.min(a/t.wPx,s/t.hPx,1)*.96;O.value=Number.isFinite(u)&&u>0?u:1}function be(){M.value=Math.min(ot,M.value*he),G()}function Me(){M.value=Math.max(nt,M.value/he),G()}function G(){ee(()=>{const e=F.value;if(!e)return;const t=e.querySelector(".preview-zoom-slot");if(!t)return;const r=t.getBoundingClientRect(),a=e.getBoundingClientRect(),s=e.scrollLeft+(r.left-a.left)+r.width/2-e.clientWidth/2,u=e.scrollTop+(r.top-a.top)+r.height/2-e.clientHeight/2;e.scrollTo({left:Math.max(0,s),top:Math.max(0,u),behavior:"smooth"})})}function Pe(){M.value=1,S(),G()}function ke(){oe(),window.setTimeout(()=>oe(),400)}function Ne(){return U(this,null,function*(){if(!l.value){w.warning("模板未加载");return}N.value=!0;try{yield Ve({schema:l.value,data:Z.value,jobName:n.templateId?`tpl-${n.templateId}`:"native-preview"}),w.success("已通过 PrintDot 提交打印")}catch(e){w.error((e==null?void 0:e.message)||"PrintDot 打印失败")}finally{N.value=!1}})}function Se(){var t;const e=(t=A.value)==null?void 0:t.contentWindow;if(!e){w.warning("预览未就绪,请稍后再试");return}try{e.focus(),e.print()}catch(r){w.error("无法唤起打印,请检查浏览器是否拦截弹窗")}}function S(){ee(()=>ye())}$e(F,()=>{S()}),$([ne,b,()=>n.open],()=>{T.value={w:0,h:0},S()}),$([P,()=>n.open],()=>{n.open&&S()});function se(){v.value="",l.value=null,b.value="",M.value=1,O.value=1,T.value={w:0,h:0}}function Ce(){if(l.value)try{const e=fe(l.value.elements,I.value);z.value=JSON.stringify(e,null,2),w.success("已根据画布组件生成模拟数据 JSON")}catch(e){w.error(`生成失败:${(e==null?void 0:e.message)||"未知错误"}`)}}return $(()=>[n.open,n.templateId],r=>U(null,[r],function*([e,t]){if(!(!e||!t)){J.value=!0,v.value="",l.value=null,b.value="",M.value=1,O.value=1,T.value={w:0,h:0};try{const a=yield Fe(t),s=String((a==null?void 0:a.templateJson)||"").trim();if(!s){v.value="该记录没有模板 JSON";return}const u=JSON.parse(s);if((u==null?void 0:u.engine)!=="native"){v.value="仅原生模板(engine=native)支持此预览";return}const m=Ue(u),x=Number(a==null?void 0:a.paperWidthMm),j=Number(a==null?void 0:a.paperHeightMm);x>0&&j>0&&(m.page.width=x,m.page.height=j),l.value=m,I.value=We(m);const B=fe(m.elements,I.value);z.value=JSON.stringify(B,null,2),R.value=z.value,y.value="mock",V.value="params",yield le(),S()}catch(a){v.value=(a==null?void 0:a.message)||"加载模板失败"}finally{J.value=!1}}}),{immediate:!1}),$([ae,l,()=>n.open],()=>{!n.open||!l.value||ge()}),$(()=>n.open,e=>{e||se()}),(e,t)=>{const r=g("a-textarea"),a=g("a-tab-pane"),s=g("a-button"),u=g("a-tabs"),m=g("a-col"),x=g("a-tooltip"),j=g("a-space"),B=g("a-empty"),D=g("a-row"),h=g("a-spin"),ze=g("a-modal");return k(),L(ze,{open:H.value,"onUpdate:open":t[7]||(t[7]=_=>H.value=_),title:"模板预览",width:"1240px",footer:null,"body-style":{padding:"16px 20px 22px"},"destroy-on-close":"","wrap-class-name":"native-template-list-preview-modal",onCancel:se},{default:i(()=>[o(h,{spinning:J.value},{default:i(()=>[v.value?(k(),X("div",Ae,ve(v.value),1)):l.value?(k(),L(D,{key:1,gutter:20,class:"native-preview-row"},{default:i(()=>[o(m,{xs:24,lg:11,class:"native-preview-left"},{default:i(()=>[o(u,{activeKey:V.value,"onUpdate:activeKey":t[5]||(t[5]=_=>V.value=_),size:"small",class:"json-tabs"},{default:i(()=>[o(a,{key:"template",tab:"模板JSON"},{default:i(()=>[d("div",Ke,[t[8]||(t[8]=d("div",{class:"json-box-title"},"画布实际 JSON(模板样式)",-1)),o(r,{value:I.value,"onUpdate:value":t[0]||(t[0]=_=>I.value=_),rows:16,class:"json-textarea",placeholder:"模板 JSON"},null,8,["value"])])]),_:1}),o(a,{key:"params",tab:"参数JSON"},{default:i(()=>[d("div",Ze,[d("div",Ge,[d("div",Xe,[d("button",{type:"button",role:"tab",class:me(["capsule-tab",{"is-active":y.value==="manual"}]),onClick:t[1]||(t[1]=_=>y.value="manual")}," 手动JSON ",2),d("button",{type:"button",role:"tab",class:me(["capsule-tab",{"is-active":y.value==="mock"}]),onClick:t[2]||(t[2]=_=>y.value="mock")}," 模拟JSON ",2)]),pe(o(s,{size:"small",type:"primary",ghost:"",class:"json-capsule-btn",onClick:Ce},{default:i(()=>[...t[9]||(t[9]=[q(" 根据画布生成 ",-1)])]),_:1},512),[[de,y.value==="mock"]])]),pe(o(r,{value:R.value,"onUpdate:value":t[3]||(t[3]=_=>R.value=_),rows:14,class:"json-textarea json-textarea--main",placeholder:"手动输入预览数据 JSON"},null,8,["value"]),[[de,y.value==="manual"]]),y.value==="mock"?(k(),L(r,{key:0,value:z.value,"onUpdate:value":t[4]||(t[4]=_=>z.value=_),rows:12,class:"json-textarea json-textarea--main",placeholder:"点击「根据画布生成」自动填充模拟数据"},null,8,["value"])):W("",!0)])]),_:1})]),_:1},8,["activeKey"])]),_:1}),o(m,{xs:24,lg:13,class:"native-preview-right"},{default:i(()=>[d("div",Qe,[t[13]||(t[13]=d("div",{class:"preview-title"},"预览样式",-1)),b.value?(k(),L(j,{key:0,size:"small",align:"center",wrap:"",class:"preview-header-actions",onClick:t[6]||(t[6]=Be(()=>{},["stop"]))},{default:i(()=>[o(x,{title:"缩小"},{default:i(()=>[o(s,{type:"default",size:"small",class:"preview-zoom-btn",onClick:Me},{default:i(()=>[o(Q(te),{icon:"ant-design:zoom-out-outlined"})]),_:1})]),_:1}),d("span",Ye,ve(xe.value),1),o(x,{title:"放大"},{default:i(()=>[o(s,{type:"default",size:"small",class:"preview-zoom-btn",onClick:be},{default:i(()=>[o(Q(te),{icon:"ant-design:zoom-in-outlined"})]),_:1})]),_:1}),o(x,{title:"恢复按窗口适应"},{default:i(()=>[o(s,{type:"default",size:"small",class:"preview-zoom-fit-btn",onClick:Pe},{default:i(()=>[...t[10]||(t[10]=[q("适应",-1)])]),_:1})]),_:1}),o(x,{title:"使用浏览器打印当前预览内容"},{default:i(()=>[o(s,{type:"primary",size:"small",class:"preview-print-btn",onClick:Se},{default:i(()=>[o(Q(te),{icon:"ant-design:printer-outlined"}),t[11]||(t[11]=q(" 打印 ",-1))]),_:1})]),_:1}),o(x,{title:"经 PrintDot 本地客户端以 PDF 静默打印(需本机桥接器运行)"},{default:i(()=>[o(s,{type:"default",size:"small",class:"preview-print-btn",loading:N.value,onClick:Ne},{default:i(()=>[...t[12]||(t[12]=[q(" PrintDot ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})):W("",!0)]),P.value?(k(),X("div",{key:0,ref_key:"previewHostRef",ref:F,class:"preview-frame-wrap"},[b.value?(k(),X("div",et,[d("div",tt,[d("div",{class:"preview-scale-shim",style:Y({width:`${P.value.wPx*K.value}px`,height:`${P.value.hPx*K.value}px`})},[d("div",{class:"preview-scale-inner",style:Y({width:`${P.value.wPx}px`,height:`${P.value.hPx}px`,transform:`scale(${K.value})`})},[d("iframe",{ref_key:"previewIframeRef",ref:A,class:"preview-iframe",title:"原生模板预览",srcdoc:b.value,style:Y({width:`${P.value.wPx}px`,height:`${P.value.hPx}px`}),onLoad:ke},null,44,at)],4)],4)])])):(k(),L(B,{key:1,description:"正在生成预览…"}))],512)):W("",!0)]),_:1})]),_:1})):W("",!0)]),_:1},8,["spinning"])]),_:1},8,["open"])}}}),_t=Re(lt,[["__scopeId","data-v-f390eb1e"]]);export{_t as default};
|