83 lines
35 KiB
Java
83 lines
35 KiB
Java
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/vue-plugin-hiprint-CTOhhtqP.js","js/antd-vue-vendor-BPnV8VqP.js","js/vue-vendor-C7Zq48Yl.js","js/JsBarcode-Cs4ZrpMU.js","js/index-BI6CMai0.js","js/vxe-table-vendor-B88kchpX.js","assets/index-CaK6YpON.css","js/browser-B0xVgIeL.js","js/stackblur-es-AyqGX0Lm.js"])))=>i.map(i=>d[i]);
|
||
var ye=Object.defineProperty,we=Object.defineProperties;var be=Object.getOwnPropertyDescriptors;var xt=Object.getOwnPropertySymbols;var Se=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable;var Ct=(O,P,A)=>P in O?ye(O,P,{enumerable:!0,configurable:!0,writable:!0,value:A}):O[P]=A,ct=(O,P)=>{for(var A in P||(P={}))Se.call(P,A)&&Ct(O,A,P[A]);if(xt)for(var A of xt(P))ke.call(P,A)&&Ct(O,A,P[A]);return O},ht=(O,P)=>we(O,be(P));var $=(O,P,A)=>new Promise((q,b)=>{var nt=T=>{try{_(A.next(T))}catch(B){b(B)}},U=T=>{try{_(A.throw(T))}catch(B){b(B)}},_=T=>T.done?q(T.value):Promise.resolve(T.value).then(nt,U);_((A=A.apply(O,P)).next())});import{M as Lt,al as _e,_ as Ne,u as Pe,d as Ae}from"./index-BI6CMai0.js";import{d as Jt,aq as Te,f as N,w as xe,o as Ce,ah as x,v as Le,ar as gt,as as W,k as g,aF as S,u as D,q as vt,aC as j,ag as $t,e as I,G as E,au as M,av as $e}from"./vue-vendor-C7Zq48Yl.js";import{r as Ee}from"./qhmesProvider-QOWpSLmN.js";import"./index-BgJbdjPf.js";import"./index-Du0A3ksf.js";import{useListPage as Je}from"./useListPage-BWia52we.js";import{_ as Oe,s as He,c as Me}from"./PrintTemplateModal-Cq9ZPa_M.js";import{b as Be,c as et,d as We,l as Et,f as De,g as Fe,q as qe,a as Re}from"./printTemplate.api-CHChWHTu.js";import ze from"./NativeTemplateListPreviewModal-BNRs16cy.js";import{b as je,P as yt,c as Ie,f as Ue,d as Ve}from"./printNativeViaPrintDot-CW0hqAEQ.js";import{J as Ke}from"./componentMap-BBZeqR-K.js";import Qe from"./BasicTable-DfLkrEeh.js";import"./antd-vue-vendor-BPnV8VqP.js";import"./vxe-table-vendor-B88kchpX.js";import"./BasicModal-0sAdFEk_.js";import"./ModalHeader-keHdAHWH.js";import"./useTimeout-DDl4l82I.js";import"./index-DeEq83Ov.js";import"./useWindowSizeFn-PRZSD86C.js";import"./index-pxs5MULf.js";import"./index-BgYCgfME.js";import"./index-f8O7TghW.js";import"./useIntersectionObserver-BMxdTqP3.js";import"./useMethods-DVip17X8.js";import"./index-Di-j2gt4.js";import"./BasicForm-BJnSRkIE.js";import"./useForm-BZtHZyx2.js";import"./JAreaLinkage-BeRUFHSB.js";import"./areaDataUtil-CbYCy3Ig.js";import"./JSelectUser-B71zikzw.js";import"./props-DAezUTeZ.js";import"./JSelectBiz-CnEaVMUF.js";import"./JSelectDept-DRDVeruW.js";import"./index-CUdllngZ.js";import"./bem-EhXRi4nW.js";import"./props-D4vdsy3J.js";import"./useContextMenu-Cwx1lIOK.js";import"./TreeIcon-DE4jdeZV.js";import"./JCodeEditor-CLVZA7Uj.js";import"./useFormItem-BdW6EoZe.js";import"./htmlmixed-NhwyF9-q.js";import"./vue-CgbRSACy.js";/* empty css */import"./JAddInput-D6qcyZjQ.js";import"./index-CNkz_PUv.js";import"./depart.api-DeMNV8zW.js";import"./JPopup-Bva6u6tk.js";import"./usePopBiz-CG0vVpgI.js";import"./index-Dg4HCEvo.js";import"./EasyCronInput-7xfJ3nBh.js";import"./JEllipsis-DqRFTSm0.js";import"./download-UE0L9Rfp.js";import"./base64Conver-24EVOS6V.js";import"./index-CIBZG4nR.js";import"./index-BhQEwnQQ.js";import"./useCountdown-DqnNWBp6.js";import"./useFormItemSingle-BbRhswfn.js";import"./JUpload-Cz9HN61B.js";import"./index-MGIrEF-A.js";import"./index-MREkPhsT.js";import"./injectionKey-DPVn4AgL.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 Xe={key:0,class:"skill-json-error"},Ge={class:"skill-preview-wrap"},Ye=["title","srcdoc"],Ze=Jt({name:"PrintTemplateList"}),tn=Jt(ht(ct({},Ze),{name:"PrintTemplateList",setup(O){const P=N(!1),A=N(null),q=Te(),{createMessage:b}=Pe(),[nt,{openModal:U}]=_e(),_=N(),T=N([]),B=N(""),R=N(!1),V=N(""),rt=N(!1),K=N([]),wt="qhmes_print_dot_enabled",F=N(localStorage.getItem(wt)==="1"),bt=je(),at=N(bt.wsUrl),it=N(bt.key);function St(){Ie(at.value,it.value),F.value&&tt(!1)}const Ot=I(()=>F.value?"选择打印机(PrintDot 桥接)":"选择打印机(本地/网络)");function Ht(){localStorage.setItem(wt,F.value?"1":"0"),tt(!1)}function Mt(){const n=`${"/".endsWith("/")?"/":"//"}print-plugin/XSL-PrintDot.exe`,i=document.createElement("a");i.href=n,i.setAttribute("download","XSL-PrintDot.exe"),i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}const ot=`{
|
||
"docNo": "MO-001",
|
||
"mainTable": [
|
||
{ "materialCode": "M01", "materialName": "示例物料", "qty": 10 }
|
||
]
|
||
}`,Bt=`请填写对象或数组形式的打印数据,例如:
|
||
${ot}`,st=N(!1),C=N({templateCode:"",printerName:"__system_default__",dataJson:ot}),Q=N(""),X=N(""),G=N(!1),lt=N(!1),H=N(""),Y=N("convert"),Wt=I(()=>Y.value==="guide"?"技能指南打印(hiprint-export-print)":"技能转换打印(hiprint → PDF → 后端队列)"),Dt=I(()=>Y.value==="guide"?"与项目 Cursor 技能「hiprint-export-print」约定一致:hiprint 模板 JSON + 打印数据 JSON → 校验 → 生成预览(Lodop 同源 HTML 包装)→ html2canvas + jsPDF 生成 PDF → 调用后端 directPrintPdf。开发人员可查阅仓库 .cursor/skills/hiprint-export-print/SKILL.md 中的文件路径、自检项与常见问题。":"选择模板并填写打印数据 JSON → 校验 → 生成预览确认版式 → 提交为 PDF 由后端发送到所选打印机。"),Ft=I(()=>Y.value==="guide"?"技能指南打印预览":"技能转换预览"),qt=I(()=>{const t=Q.value.trim().toLowerCase(),e=K.value;return t?e.filter(n=>String(n.value||"").toLowerCase().includes(t)||String(n.label||"").toLowerCase().includes(t)):e});let z=null;function Rt(t){const e=(t==null?void 0:t.default)||{};return z=(t==null?void 0:t.hiprint)||(e==null?void 0:e.hiprint)||(window==null?void 0:window.hiprint),z}function ut(){return $(this,null,function*(){if(z)return;const t=yield Ne(()=>import("./vue-plugin-hiprint-CTOhhtqP.js").then(n=>n.v),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),e=Rt(t);if(!e)throw new Error("未获取到 hiprint 实例");e.init({providers:Ee(t)})})}const{tableContext:zt}=Je({tableProps:{title:"打印模板",api:Et,columns:Me,rowKey:"id",formConfig:{schemas:He},actionColumn:{width:300}}}),[jt,{reload:Z},{rowSelection:It,selectedRowKeys:kt}]=zt;function tt(t=!0){return $(this,null,function*(){var l;const e=new Map;if(e.set("__system_default__",{label:"系统默认打印机",value:"__system_default__"}),F.value){try{const p=yield Ue();p.forEach(y=>{const r=String(y.name||"").trim();if(!r)return;const d=y.isDefault?"(默认)":"";e.set(r,{label:`${r}${d}`,value:r})}),_.value&&!e.has(_.value)&&e.set(_.value,{label:`${_.value}(手动)`,value:_.value}),T.value=Array.from(e.values()),t&&(p.length?b.success(`已从 PrintDot 桥接识别 ${p.length} 台打印机`):b.warning("PrintDot 已连接但未返回打印机列表"))}catch(p){_.value&&!e.has(_.value)&&e.set(_.value,{label:`${_.value}(手动)`,value:_.value}),T.value=Array.from(e.values()),t&&b.warning(`PrintDot:${(p==null?void 0:p.message)||"无法连接本地桥接器"}`)}return}const n=yield Be(),i=[...Array.isArray(n==null?void 0:n.serverPrinters)?n.serverPrinters:[],...Array.isArray(n==null?void 0:n.networkPrinters)?n.networkPrinters:[]].map(p=>String(p||"").trim()).filter(Boolean).filter((p,y,r)=>r.indexOf(p)===y);if(i.forEach(p=>{e.set(p,{label:p,value:p})}),_.value&&!e.has(_.value)&&e.set(_.value,{label:`${_.value}(手动)`,value:_.value}),T.value=Array.from(e.values()),t)if(i.length)b.success(`已从服务端识别到 ${i.length} 台打印机`);else{const p=String(((l=n==null?void 0:n.capability)==null?void 0:l.localReason)||"").trim();b.warning(`服务端未返回可用打印机。${p||"请在后端配置网络打印机后重试。"}`)}})}function _t(){const t=String(B.value||"").trim();if(!t)return;T.value.some(n=>n.value===t)||(T.value=[...T.value,{label:`${t}(手动)`,value:t}]),_.value=t,B.value="",b.success("已添加手动打印机名称")}function Ut(){return $(this,null,function*(){var n;const t=yield Et({pageNo:1,pageSize:500}),e=(t==null?void 0:t.records)||((n=t==null?void 0:t.result)==null?void 0:n.records)||[];K.value=e.map(i=>({value:String((i==null?void 0:i.templateCode)||"").trim(),label:`${String((i==null?void 0:i.templateCode)||"").trim()} ${i!=null&&i.templateName?`- ${i.templateName}`:""}`.trim()})).filter(i=>!!i.value)})}function Vt(){return $(this,null,function*(){V.value="",K.value.length||(yield Ut()),R.value=!0})}function Kt(){return $(this,null,function*(){var e,n,i,l,p,y;const t=String(V.value||"").trim();if(!t){b.warning("请先选择模板编号");return}rt.value=!0;try{const r=yield et(t),d=(e=r==null?void 0:r.result)!=null?e:r,f=String((i=(n=d==null?void 0:d.id)!=null?n:r==null?void 0:r.id)!=null?i:"").trim();if(!f){b.error("未找到该模板记录,请确认编号是否正确");return}const o=String((p=(l=d==null?void 0:d.templateJson)!=null?l:r==null?void 0:r.templateJson)!=null?p:"").trim();let m;if(o)try{m=(y=JSON.parse(o))==null?void 0:y.engine}catch(u){b.error("模板 JSON 无法解析,无法判断是否为原生模板");return}if(m!=="native"){b.warning("快速打印仅支持「原生模板」(engine 为 native),请从列表预览 hiprint 模板或使用设计器");return}A.value=f,P.value=!0,R.value=!1}catch(r){b.error(`加载模板失败:${(r==null?void 0:r.message)||"未知错误"}`)}finally{rt.value=!1}})}function Qt(){X.value="",H.value="",Q.value=""}function Xt(){C.value.dataJson=ot,H.value="",b.success("已填入示例 JSON")}function Gt(){const t=String(C.value.dataJson||"").trim();if(!t){b.warning("请先输入 JSON");return}try{C.value.dataJson=JSON.stringify(JSON.parse(t),null,2),H.value="",b.success("已格式化")}catch(e){H.value=(e==null?void 0:e.message)||"JSON 格式错误",b.error(`无法格式化:${H.value}`)}}function pt(t){const e=String(C.value.dataJson||"").trim();if(!e)return H.value="内容为空",b.warning("请先输入打印数据 JSON"),!1;try{return JSON.parse(e),H.value="",t||b.success("JSON 格式正确"),!0}catch(n){return H.value=(n==null?void 0:n.message)||"JSON 解析失败",b.error(`校验失败:${H.value}`),!1}}function Yt(){pt(!1)}function Zt(t){return $(this,null,function*(){const e=String(t.templateCode||"").trim();yield ut();const n=yield et(e),i=String((n==null?void 0:n.templateJson)||"").trim();if(!i)throw new Error("模板JSON为空,无法生成 PDF");let l;try{l=JSON.parse(i)}catch(u){throw new Error(`模板JSON格式错误:${(u==null?void 0:u.message)||"未知错误"}`)}const p=new z.PrintTemplate({template:l}),y=At(yield Nt(p,t.dataJson),l);if(!y)throw new Error("当前模板未生成可用预览内容,无法转 PDF");const r=Array.isArray(l==null?void 0:l.panels)&&l.panels.length?l.panels[0]:{},d=Number((r==null?void 0:r.width)||210),f=Number((r==null?void 0:r.height)||297),o=yield Ve(y,d,f),m=String(t.printerName||"").trim();yield De({templateCode:e,printerName:m,dataJson:t.dataJson,pdfBase64:o,fileName:t.fileName||`${e}.pdf`})})}function te(){return $(this,null,function*(){const t=String(C.value.templateCode||"").trim();if(!t){b.warning("请先选择模板");return}if(!pt(!0))return;let e;try{e=JSON.parse(String(C.value.dataJson||"").trim())}catch(n){return}G.value=!0;try{yield ut();const n=yield et(t),i=String((n==null?void 0:n.templateJson)||"").trim();if(!i){b.error("模板JSON为空");return}let l;try{l=JSON.parse(i)}catch(o){b.error(`模板JSON格式错误:${(o==null?void 0:o.message)||""}`);return}const p=new z.PrintTemplate({template:l}),y=At(yield Nt(p,e),l);if(!y){b.error("未能从 hiprint 生成预览 HTML,请检查模板与数据字段是否匹配");return}const r=Array.isArray(l==null?void 0:l.panels)&&l.panels.length?l.panels[0]:{},d=Number((r==null?void 0:r.width)||0),f=Number((r==null?void 0:r.height)||0);X.value=le(y,d>0?d:void 0,f>0?f:void 0),b.success("预览已生成")}catch(n){b.error(`预览失败:${(n==null?void 0:n.message)||"未知错误"}`)}finally{G.value=!1}})}function ee(){return $(this,null,function*(){const t=String(C.value.templateCode||"").trim();if(!t){b.warning("请先选择模板");return}if(!pt(!0))return;let e;try{e=JSON.parse(String(C.value.dataJson||"").trim())}catch(n){return}lt.value=!0;try{yield Zt({templateCode:t,printerName:C.value.printerName,dataJson:e,fileName:Y.value==="guide"?`${t}-hiprint-export-print.pdf`:`${t}-skill.pdf`}),b.success("已提交 PDF 到后端打印队列"),st.value=!1}catch(n){b.error(`提交失败:${(n==null?void 0:n.message)||"未知错误"}`)}finally{lt.value=!1}})}function dt(t){if(!t)return"";if(typeof t=="string")return t.trim();if(Array.isArray(t))return t.map(e=>dt(e)).filter(Boolean).join("");if(t instanceof HTMLElement)return t.outerHTML||t.innerHTML||"";if(t&&typeof t=="object"){const e=t[0];if(e instanceof HTMLElement)return e.outerHTML||e.innerHTML||"";if(typeof t.html=="function")try{const n=t.html();return typeof n=="string"?n.trim():""}catch(n){}if(typeof t.outerHTML=="string")return String(t.outerHTML).trim();if(typeof t.innerHTML=="string")return String(t.innerHTML).trim()}return""}function Nt(t,e){return $(this,null,function*(){const n=r=>{var f,o,m,u,w;const d=[r];if(Array.isArray(r))return d.push({detailList:r,mainTable:r,list:r,items:r,dataList:r}),d;if(r&&typeof r=="object"){const a=r,c=Object.keys(a).find(s=>Array.isArray(a[s]));if(c){const s=a[c];d.push(ht(ct({},a),{detailList:(f=a.detailList)!=null?f:s,mainTable:(o=a.mainTable)!=null?o:s,list:(m=a.list)!=null?m:s,items:(u=a.items)!=null?u:s,dataList:(w=a.dataList)!=null?w:s}))}}return d},i=["getHtml","toHtml","getHtmlByData"],l=n(e);for(const r of i){const d=t==null?void 0:t[r];if(typeof d=="function")for(const f of l)try{const o=yield Promise.resolve(d.call(t,f)),m=dt(o);if(m)return m}catch(o){}}const p=Object.getPrototypeOf(t),y=Object.getOwnPropertyNames(p||{}).filter(r=>r!=="constructor").filter(r=>/html|preview|content/i.test(r)).filter(r=>!/^print$/i.test(r));for(const r of y){const d=t==null?void 0:t[r];if(typeof d=="function")for(const f of l){const o=[[f],[f,{}],[]];for(const m of o)try{const u=yield Promise.resolve(d.apply(t,m)),w=dt(u);if(w)return w}catch(u){}}}return""})}function Pt(t){const e=[t==null?void 0:t.headerColumns,t==null?void 0:t.columns,t==null?void 0:t.tableColumns];for(const n of e)if(!(!Array.isArray(n)||!n.length))return Array.isArray(n[0])?n.map(i=>Array.isArray(i)?i:[]):[n];return[]}function ne(t){const e=Array.isArray(t==null?void 0:t.panels)?t.panels:[];for(const n of e){const i=Array.isArray(n==null?void 0:n.printElements)?n.printElements:[];for(const l of i){const p=(l==null?void 0:l.options)||{},y=Pt(p);if(y.length)return{rows:y,options:p}}}return{rows:[],options:null}}function ft(t){let e=String(t!=null?t:"").trim();if(!e)return"";const n=e.match(/^\{\{\s*([^}]+)\s*\}\}$/);return n!=null&&n[1]&&(e=n[1].trim()),e=e.replace(/^item\./i,"").trim(),e}function re(t){var p,y,r,d;if(!Array.isArray(t)||!t.length)return[];const e=t.length;let n=0;if(t.forEach(f=>{const o=(Array.isArray(f)?f:[]).reduce((m,u)=>m+(Number((u==null?void 0:u.colspan)||(u==null?void 0:u.colSpan)||1)||1),0);n=Math.max(n,o)}),!n)return[];const i=Array.from({length:e},()=>Array.from({length:n},()=>null));for(let f=0;f<e;f+=1){const o=Array.isArray(t[f])?t[f]:[];let m=0;o.forEach(u=>{for(;m<n&&i[f][m];)m+=1;const w=Number((u==null?void 0:u.rowspan)||(u==null?void 0:u.rowSpan)||1)||1,a=Number((u==null?void 0:u.colspan)||(u==null?void 0:u.colSpan)||1)||1;for(let c=f;c<Math.min(e,f+w);c+=1)for(let s=m;s<Math.min(n,m+a);s+=1)i[c][s]=u;m+=a})}const l=[];for(let f=0;f<n;f+=1){let o=null;for(let s=e-1;s>=0;s-=1){const v=i[s][f];if((v==null?void 0:v.field)||(v==null?void 0:v.dataIndex)||(v==null?void 0:v.key)||(v==null?void 0:v.name)||""){o=v;break}}if(!o){l.push({field:"",title:"",align:"",halign:"",width:"",autoWrap:!1});continue}const m=ft((o==null?void 0:o.field)||(o==null?void 0:o.dataIndex)||(o==null?void 0:o.key)||(o==null?void 0:o.name)||""),u=String((o==null?void 0:o.align)||""),w=String((o==null?void 0:o.halign)||(o==null?void 0:o.align)||""),a=(o==null?void 0:o.width)||(o==null?void 0:o.minWidth)||"",c=!!((d=(r=(y=(p=o==null?void 0:o.autoWrap)!=null?p:o==null?void 0:o.tableAutoWrap)!=null?y:o==null?void 0:o.wrap)!=null?r:o==null?void 0:o.wordWrap)!=null&&d);l.push({field:m,title:(o==null?void 0:o.title)||"",align:u,halign:w,width:a,autoWrap:c})}return l}function ae(t){const e=Pt(t);return e.length?re(e):Array.isArray(t==null?void 0:t.fields)&&t.fields.length?t.fields.map(n=>{var i,l,p;return typeof n=="string"?{field:ft(n),title:n,align:"",halign:"",width:"",autoWrap:!1}:{field:ft((n==null?void 0:n.field)||(n==null?void 0:n.dataIndex)||(n==null?void 0:n.key)||""),title:(n==null?void 0:n.title)||(n==null?void 0:n.text)||(n==null?void 0:n.label)||"",width:(n==null?void 0:n.width)||(n==null?void 0:n.columnWidth)||(n==null?void 0:n.w)||"",align:(n==null?void 0:n.align)||(n==null?void 0:n.halign)||"",halign:(n==null?void 0:n.halign)||(n==null?void 0:n.align)||"",autoWrap:(p=(l=(i=n==null?void 0:n.autoWrap)!=null?i:n==null?void 0:n.tableAutoWrap)!=null?l:n==null?void 0:n.wrap)!=null?p:n==null?void 0:n.wordWrap}}):[]}function ie(t,e){const n=t.querySelector("tbody tr");if(!n)return;const i=n.querySelectorAll("td").length;if(!i)return;let l=ae(e);if(!l.length)return;if(l.length>i)l=l.slice(0,i);else if(l.length<i){const a=i-l.length;for(let c=0;c<a;c+=1)l.push({field:"",title:"",align:"",halign:"",width:"",autoWrap:!1})}const p=Number((e==null?void 0:e.width)||0),y=l.map(a=>{const c=Number((a==null?void 0:a.width)||0);return Number.isFinite(c)&&c>0?c:0}),r=y.filter(a=>a>0),d=r.length?r.reduce((a,c)=>a+c,0)/r.length:p>0?p/Math.max(1,l.length):100,f=y.map(a=>a>0?a:d),o=f.reduce((a,c)=>a+c,0);t.style.tableLayout="fixed",t.style.width="100%";const m=document.createElement("colgroup");f.forEach(a=>{const c=document.createElement("col"),s=o>0?(a/o*100).toFixed(6):"";c.setAttribute("style",s?`width:${s}%;`:""),m.appendChild(c)});const u=t.querySelector("colgroup");u?u.replaceWith(m):t.firstChild?t.insertBefore(m,t.firstChild):t.appendChild(m),Array.from(t.querySelectorAll("tbody tr")).forEach(a=>{Array.from(a.querySelectorAll("td")).forEach((s,v)=>{const k=l[v];if(!k)return;const h=!!(k!=null&&k.autoWrap),L=String((k==null?void 0:k.align)||(k==null?void 0:k.halign)||"").trim();h?(s.style.whiteSpace="normal",s.style.wordBreak="break-word",s.style.overflowWrap="break-word",s.style.lineHeight=s.style.lineHeight||"1.2"):(s.style.whiteSpace="nowrap",s.style.wordBreak="normal",s.style.overflowWrap="normal"),L&&(s.style.textAlign=L)})})}function oe(t){const e=[t==null?void 0:t.headerRowHeight,t==null?void 0:t.tableHeaderRowHeight,t==null?void 0:t.thRowHeight,t==null?void 0:t.rowHeight];for(const n of e){if(n==null||n==="")continue;const i=String(n).trim();if(i)return/\d$/.test(i)?`${i}px`:i}return""}function se(t,e,n){var o,m,u,w;const i=(e==null?void 0:e.headerBackground)||(e==null?void 0:e.tableHeaderBackground)||(e==null?void 0:e.headerBg)||(e==null?void 0:e.thBackground)||"",l=(e==null?void 0:e.headerFontSize)||(e==null?void 0:e.thFontSize)||"",p=(e==null?void 0:e.headerLineHeight)||(e==null?void 0:e.thLineHeight)||"",y=(e==null?void 0:e.headerFontWeight)||(e==null?void 0:e.thFontWeight)||"600",r=(e==null?void 0:e.headerFontFamily)||(e==null?void 0:e.thFontFamily)||"",d=String((t==null?void 0:t.halign)||(t==null?void 0:t.align)||(e==null?void 0:e.headerAlign)||"center"),f=!!((w=(u=(m=(o=t==null?void 0:t.autoWrap)!=null?o:t==null?void 0:t.tableAutoWrap)!=null?m:t==null?void 0:t.wrap)!=null?u:t==null?void 0:t.wordWrap)!=null&&w);return["border:1px solid #333","padding:2px 4px",`text-align:${d}`,"vertical-align:middle",f?"white-space:normal":"white-space:nowrap",f?"word-break:break-all":"",f?"overflow-wrap:anywhere":"",`font-weight:${y}`,r?`font-family:${r}`:"",i?`background:${i}`:"",l?`font-size:${l}`:"",p?`line-height:${p}`:"",n?`height:${n}`:"",n?`min-height:${n}`:"",!p&&n?`line-height:${n}`:"","print-color-adjust:exact","-webkit-print-color-adjust:exact"].filter(Boolean).join(";")}function At(t,e){if(!t||!t.includes("<table"))return t;const n=document.createElement("div");n.innerHTML=t;const i=ne(e);return Array.from(n.querySelectorAll("table")).forEach(p=>{const r=(()=>{if(!i.rows.length||!i.options)return null;const u=oe(i.options),w=document.createElement("thead");return i.rows.forEach(a=>{const c=document.createElement("tr");u&&c.setAttribute("style",`height:${u};min-height:${u};`),a.forEach(s=>{const v=document.createElement("th"),k=Math.max(1,Number((s==null?void 0:s.rowspan)||(s==null?void 0:s.rowSpan)||1)),h=Math.max(1,Number((s==null?void 0:s.colspan)||(s==null?void 0:s.colSpan)||1));k>1&&(v.rowSpan=k),h>1&&(v.colSpan=h),v.innerHTML=String((s==null?void 0:s.title)||(s==null?void 0:s.text)||(s==null?void 0:s.label)||"").trim(),v.setAttribute("style",se(s,i.options,u)),c.appendChild(v)}),w.appendChild(c)}),w})();if(r){const u=p.querySelector("thead");u?u.replaceWith(r):(Array.from(p.querySelectorAll("tr")).slice(0,i.rows.length).forEach(c=>c.remove()),p.firstChild?p.insertBefore(r,p.firstChild):p.appendChild(r))}i.options&&ie(p,i.options);const f=(()=>{var c;const u=p.querySelector("thead");if(u){const s=Array.from(u.querySelectorAll("tr"));if(s.length)return s}const w=Array.from(p.querySelectorAll("tr")),a=[];for(const s of w){const v=Array.from(s.querySelectorAll("th,td"));if(!v.length)continue;const k=String(((c=v[0])==null?void 0:c.textContent)||"").replace(/\u00a0/g,"").replace(/\s+/g,"").trim();if(/^\d+$/.test(k)||(a.push(s),a.length>=6))break}return a})();if(f.length<2)return;const o=u=>String((u==null?void 0:u.textContent)||"").replace(/\u00a0/g,"").replace(/\s+/g,"").trim(),m=[];f.forEach((u,w)=>{m[w]=m[w]||[];let a=0;Array.from(u.querySelectorAll("th,td")).forEach(s=>{for(;m[w][a];)a+=1;const v=Math.max(1,Number(s.getAttribute("rowspan")||1)),k=Math.max(1,Number(s.getAttribute("colspan")||1)),h={el:s,row:w,col:a,rowSpan:v,colSpan:k};for(let L=w;L<w+v;L+=1){m[L]=m[L]||[];for(let J=a;J<a+k;J+=1)m[L][J]=h}a+=k})});for(let u=0;u<f.length-1;u+=1){const w=m[u]||[],a=m[u+1]||[];for(let c=0;c<w.length;c+=1){const s=w[c];if(!s||s.row!==u||s.col!==c||s.rowSpan>1)continue;const v=o(s.el);if(!v)continue;const k=[];let h=!0;for(let L=0;L<s.colSpan;L+=1){const J=a[c+L];if(!J||J.row!==u+1||J.col!==c+L||J.colSpan>1||J.rowSpan>1){h=!1;break}const mt=o(J.el);if(!(!mt||mt==="-")&&!(!!v&&mt===v)){h=!1;break}k.push(J.el)}if(h&&k.length){const L=Math.max(1,Number(s.el.getAttribute("rowspan")||1));s.el.setAttribute("rowspan",String(L+1)),s.el.classList.add("qh-merged-header-cell"),s.el.style.borderBottom="none",k.forEach(J=>{J.style.borderTop="none",J.remove()})}}}}),n.innerHTML}function le(t,e,n){const l=Array.from(document.querySelectorAll('link[rel="stylesheet"]')).map(d=>d.href).filter(Boolean).filter(d=>/print-lock|hiprint/i.test(d)).map(d=>`<link rel="stylesheet" href="${d}" />`).join(`
|
||
`),p=e&&n?`@page { size: ${e}mm ${n}mm; margin: 0; }`:"@page { margin: 0; }",r=`
|
||
html, body { margin: 0; padding: 0; background: #fff; }
|
||
${e&&n?`.lodop-print-root { width: ${e}mm; margin: 0; padding: 0; overflow: visible; }`:".lodop-print-root { margin: 0; padding: 0; overflow: visible; }"}
|
||
.hiprint-printTemplate {
|
||
transform: none !important;
|
||
transform-origin: top left !important;
|
||
zoom: 1 !important;
|
||
-webkit-print-color-adjust: exact !important;
|
||
print-color-adjust: exact !important;
|
||
}
|
||
/* 打印态去掉设计器预览缩放,避免整体变小与合并表头被裁切 */
|
||
.hiprint-printTemplate [style*="transform: scale"] {
|
||
transform: none !important;
|
||
}
|
||
.hiprint-printTemplate table {
|
||
border-collapse: collapse !important;
|
||
border-spacing: 0 !important;
|
||
}
|
||
.hiprint-printTemplate th,
|
||
.hiprint-printTemplate td {
|
||
border-color: #333 !important;
|
||
border-style: solid !important;
|
||
border-width: 1px !important;
|
||
overflow: visible !important;
|
||
text-overflow: clip !important;
|
||
white-space: normal !important;
|
||
vertical-align: middle !important;
|
||
word-break: normal !important;
|
||
line-height: 1.35 !important;
|
||
}
|
||
.hiprint-printTemplate thead th {
|
||
line-height: 1.45 !important;
|
||
padding-top: 2px !important;
|
||
padding-bottom: 2px !important;
|
||
}
|
||
.hiprint-printTemplate .qh-merged-header-cell {
|
||
border-bottom: none !important;
|
||
}
|
||
.hiprint-printTemplate .hiprint-printElement,
|
||
.hiprint-printTemplate .hiprint-printElement > div,
|
||
.hiprint-printTemplate .hiprint-printElement span,
|
||
.hiprint-printTemplate .hiprint-printElement p {
|
||
overflow: visible !important;
|
||
text-overflow: clip !important;
|
||
}
|
||
/* 合并单元格专门处理:避免跨列跨行时边框与文字被裁切 */
|
||
.hiprint-printTemplate th[colspan], .hiprint-printTemplate td[colspan],
|
||
.hiprint-printTemplate th[rowspan], .hiprint-printTemplate td[rowspan] {
|
||
overflow: visible !important;
|
||
white-space: normal !important;
|
||
text-align: center !important;
|
||
vertical-align: middle !important;
|
||
position: relative;
|
||
z-index: 1;
|
||
background-clip: padding-box !important;
|
||
}
|
||
.hiprint-printTemplate tr {
|
||
page-break-inside: avoid !important;
|
||
}
|
||
.hiprint-printTemplate img, .hiprint-printTemplate canvas {
|
||
max-width: none !important;
|
||
max-height: none !important;
|
||
}
|
||
`;return`<!doctype html>
|
||
<html>
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
${l}
|
||
<style></style>
|
||
<style>${p}
|
||
${r}</style>
|
||
</head>
|
||
<body><div class="lodop-print-root">${t}</div></body>
|
||
</html>`}function ue(){U(!0,{isUpdate:!1,isNative:!0})}function pe(t){U(!0,{isUpdate:!0,record:t})}function Tt(t){const e=t==null?void 0:t.templateJson;if(!e)return!1;if(typeof e=="object")return(e==null?void 0:e.engine)==="native";if(typeof e!="string")return!1;try{const n=JSON.parse(e);return(n==null?void 0:n.engine)==="native"}catch(n){return!1}}function de(t){const e=Tt(t)?"/print/native-designer":"/print/designer";q.push({path:e,query:{id:t.id}})}function fe(t){A.value=String(t.id||""),P.value=!0}function me(t){return $(this,null,function*(){yield Fe({id:t.id},Z)})}function ce(t){return $(this,null,function*(){var n,i,l,p,y,r,d,f,o,m,u,w;const e=String((t==null?void 0:t.id)||"").trim();if(!e){b.warning("无法复制:缺少模板主键");return}try{const a=yield qe(e),c=String((i=(n=a==null?void 0:a.templateCode)!=null?n:t==null?void 0:t.templateCode)!=null?i:"TPL").trim()||"TPL",s=Date.now();let v=`${c}_CP_${s}`;v.length>64&&(v=`CP_${s}`);const h=`${String((p=(l=a==null?void 0:a.templateName)!=null?l:t==null?void 0:t.templateName)!=null?p:c).trim()||"模板"}_副本`;yield Re({templateCode:v,templateName:h,category:String((r=(y=a==null?void 0:a.category)!=null?y:t==null?void 0:t.category)!=null?r:"form"),paperWidthMm:(d=a==null?void 0:a.paperWidthMm)!=null?d:t==null?void 0:t.paperWidthMm,paperHeightMm:(f=a==null?void 0:a.paperHeightMm)!=null?f:t==null?void 0:t.paperHeightMm,paperOrientation:String((m=(o=a==null?void 0:a.paperOrientation)!=null?o:t==null?void 0:t.paperOrientation)!=null?m:"portrait"),templateJson:String((w=(u=a==null?void 0:a.templateJson)!=null?u:t==null?void 0:t.templateJson)!=null?w:"{}"),remark:(a==null?void 0:a.remark)!=null?String(a.remark):(t==null?void 0:t.remark)!=null?String(t.remark):""}),b.success("已复制为新模板"),yield Z()}catch(a){b.error((a==null?void 0:a.message)||"复制失败")}})}function he(){return $(this,null,function*(){yield We({ids:kt.value.join(",")},Z)})}function ge(t){return $(this,null,function*(){var i,l,p,y,r;if(Z(),(t==null?void 0:t.isNative)!==!0||(t==null?void 0:t.isUpdate)===!0)return;const e=((i=t==null?void 0:t.savedResult)==null?void 0:i.id)||((p=(l=t==null?void 0:t.savedResult)==null?void 0:l.result)==null?void 0:p.id)||((y=t==null?void 0:t.values)==null?void 0:y.id);if(e){q.push({path:"/print/native-designer",query:{id:String(e)}});return}const n=String(((r=t==null?void 0:t.values)==null?void 0:r.templateCode)||"").trim();if(n)try{const d=yield et(n);d!=null&&d.id&&q.push({path:"/print/native-designer",query:{id:String(d.id)}})}catch(d){}})}function ve(t){const e=Tt(t),n=[{label:e?"原生设计":"Hiprint设计",onClick:de.bind(null,t),auth:"print:template:edit"}];return e&&n.push({label:"预览",onClick:fe.bind(null,t),auth:"print:template:list"}),n.push({label:"编辑",onClick:pe.bind(null,t),auth:"print:template:edit"},{label:"复制",onClick:ce.bind(null,t),auth:"print:template:add"},{label:"删除",color:"error",popConfirm:{title:"确认删除?",confirm:me.bind(null,t)},auth:"print:template:delete"}),n}return xe(_,t=>{if(!t){localStorage.removeItem(yt);return}localStorage.setItem(yt,t)},{immediate:!1}),Ce(()=>$(null,null,function*(){try{yield ut()}catch(t){}_.value=localStorage.getItem(yt)||"__system_default__",yield tt(!1),_.value||(_.value="__system_default__")})),(t,e)=>{const n=x("a-select"),i=x("a-input"),l=x("a-button"),p=x("a-checkbox"),y=x("a-input-password"),r=x("a-space"),d=x("a-menu-item"),f=x("a-menu"),o=x("a-dropdown"),m=x("a-alert"),u=x("a-modal"),w=x("a-col"),a=x("a-row"),c=x("a-textarea"),s=x("a-empty"),v=x("a-spin"),k=Le("auth");return W(),gt("div",null,[g(D(Qe),{onRegister:D(jt),rowSelection:D(It)},{tableTitle:S(()=>[g(r,null,{default:S(()=>[g(n,{value:_.value,"onUpdate:value":e[0]||(e[0]=h=>_.value=h),options:T.value,style:{width:"260px"},"allow-clear":"","show-search":"","option-filter-prop":"label",placeholder:Ot.value},null,8,["value","options","placeholder"]),g(i,{value:B.value,"onUpdate:value":e[1]||(e[1]=h=>B.value=h),style:{width:"180px"},placeholder:"手动输入打印机名称",onPressEnter:_t},null,8,["value"]),g(l,{onClick:_t},{default:S(()=>[...e[14]||(e[14]=[E("添加打印机",-1)])]),_:1}),g(l,{onClick:tt},{default:S(()=>[...e[15]||(e[15]=[E("刷新打印机",-1)])]),_:1}),g(p,{checked:F.value,"onUpdate:checked":e[2]||(e[2]=h=>F.value=h),onChange:Ht},{default:S(()=>[...e[16]||(e[16]=[E("PrintDot 桥接",-1)])]),_:1},8,["checked"]),g(i,{value:at.value,"onUpdate:value":e[3]||(e[3]=h=>at.value=h),style:{width:"200px"},placeholder:"WS 地址",onBlur:St},null,8,["value"]),g(y,{value:it.value,"onUpdate:value":e[4]||(e[4]=h=>it.value=h),style:{width:"120px"},placeholder:"密钥(可选)",autocomplete:"new-password",onBlur:St},null,8,["value"]),g(l,{onClick:Mt},{default:S(()=>[...e[17]||(e[17]=[E("下载打印插件",-1)])]),_:1})]),_:1}),vt((W(),j(l,{type:"primary",ghost:"",onClick:ue},{default:S(()=>[...e[18]||(e[18]=[E("新增原生模板",-1)])]),_:1})),[[k,"print:template:add"]]),vt((W(),j(l,{type:"primary",onClick:Vt},{default:S(()=>[...e[19]||(e[19]=[E("快速打印",-1)])]),_:1})),[[k,"print:template:list"]]),D(kt).length>0?(W(),j(o,{key:0},{overlay:S(()=>[g(f,null,{default:S(()=>[vt((W(),j(d,{key:"1",onClick:he},{default:S(()=>[g(D(Lt),{icon:"ant-design:delete-outlined"}),e[20]||(e[20]=E(" 删除 ",-1))]),_:1})),[[k,"print:template:delete"]])]),_:1})]),default:S(()=>[g(l,null,{default:S(()=>[e[21]||(e[21]=E(" 批量操作 ",-1)),g(D(Lt),{icon:"mdi:chevron-down"})]),_:1})]),_:1})):$t("",!0)]),action:S(({record:h})=>[g(D(Ke),{actions:ve(h)},null,8,["actions"])]),_:1},8,["onRegister","rowSelection"]),g(Oe,{onRegister:D(nt),onSuccess:ge},null,8,["onRegister"]),g(ze,{open:P.value,"onUpdate:open":e[5]||(e[5]=h=>P.value=h),"template-id":A.value},null,8,["open","template-id"]),g(u,{open:R.value,"onUpdate:open":e[8]||(e[8]=h=>R.value=h),title:"快速打印",width:"480px",footer:null,"destroy-on-close":""},{default:S(()=>[g(r,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:S(()=>[g(m,{type:"info","show-icon":"",message:"请选择原生模板",description:"将打开与列表「预览」相同的弹窗,在其中编辑模板 JSON、参数 JSON,并使用「浏览器打印」或 PrintDot「桥接器打印」。"}),M("div",null,[e[22]||(e[22]=M("div",{class:"skill-field-label"},"模板编号",-1)),g(n,{value:V.value,"onUpdate:value":e[6]||(e[6]=h=>V.value=h),options:K.value,style:{width:"100%"},"show-search":"","option-filter-prop":"label",placeholder:"选择模板编号"},null,8,["value","options"])]),g(r,{style:{width:"100%","justify-content":"flex-end"}},{default:S(()=>[g(l,{onClick:e[7]||(e[7]=h=>R.value=!1)},{default:S(()=>[...e[23]||(e[23]=[E("取消",-1)])]),_:1}),g(l,{type:"primary",loading:rt.value,onClick:Kt},{default:S(()=>[...e[24]||(e[24]=[E("打开预览",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["open"]),g(u,{open:st.value,"onUpdate:open":e[13]||(e[13]=h=>st.value=h),title:Wt.value,width:"960px",footer:null,"destroy-on-close":"",onCancel:Qt},{default:S(()=>[g(r,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:S(()=>[g(m,{type:"info","show-icon":"",message:"流程说明",description:Dt.value},null,8,["description"]),g(a,{gutter:12},{default:S(()=>[g(w,{span:10},{default:S(()=>[e[25]||(e[25]=M("div",{class:"skill-field-label"},"模板(支持编号/名称搜索)",-1)),g(i,{value:Q.value,"onUpdate:value":e[9]||(e[9]=h=>Q.value=h),"allow-clear":"",placeholder:"输入关键字过滤模板列表",style:{"margin-bottom":"8px"}},null,8,["value"]),g(n,{value:C.value.templateCode,"onUpdate:value":e[10]||(e[10]=h=>C.value.templateCode=h),options:qt.value,style:{width:"100%"},"show-search":"","filter-option":!1,"option-filter-prop":"label",placeholder:"请选择模板编号"},null,8,["value","options"])]),_:1}),g(w,{span:14},{default:S(()=>[e[26]||(e[26]=M("div",{class:"skill-field-label"},"打印机",-1)),g(n,{value:C.value.printerName,"onUpdate:value":e[11]||(e[11]=h=>C.value.printerName=h),options:T.value,style:{width:"100%"},"show-search":"","allow-clear":"","option-filter-prop":"label",placeholder:"可为空使用系统默认打印机"},null,8,["value","options"])]),_:1})]),_:1}),M("div",null,[e[32]||(e[32]=M("div",{class:"skill-field-label"},"打印数据 JSON",-1)),g(c,{value:C.value.dataJson,"onUpdate:value":e[12]||(e[12]=h=>C.value.dataJson=h),rows:10,placeholder:Bt},null,8,["value"]),H.value?(W(),gt("div",Xe,$e(H.value),1)):$t("",!0),g(r,{style:{"margin-top":"8px"},wrap:""},{default:S(()=>[g(l,{size:"small",onClick:Xt},{default:S(()=>[...e[27]||(e[27]=[E("填入示例",-1)])]),_:1}),g(l,{size:"small",onClick:Gt},{default:S(()=>[...e[28]||(e[28]=[E("格式化 JSON",-1)])]),_:1}),g(l,{size:"small",type:"primary",ghost:"",onClick:Yt},{default:S(()=>[...e[29]||(e[29]=[E("校验 JSON",-1)])]),_:1}),g(l,{size:"small",loading:G.value,onClick:te},{default:S(()=>[...e[30]||(e[30]=[E("生成预览",-1)])]),_:1},8,["loading"]),g(l,{size:"small",type:"primary",loading:lt.value,onClick:ee},{default:S(()=>[...e[31]||(e[31]=[E("提交后端 PDF 打印",-1)])]),_:1},8,["loading"])]),_:1})]),M("div",null,[e[33]||(e[33]=M("div",{class:"skill-field-label"},"预览(与 Lodop 包装一致的 HTML,供确认表头合并与纸张)",-1)),g(v,{spinning:G.value},{default:S(()=>[M("div",Ge,[X.value?(W(),gt("iframe",{key:0,class:"skill-preview-iframe",title:Ft.value,srcdoc:X.value},null,8,Ye)):(W(),j(s,{key:1,description:"请先选择模板并点击「生成预览」"}))])]),_:1},8,["spinning"])])]),_:1})]),_:1},8,["open","title"])])}}})),yr=Ae(tn,[["__scopeId","data-v-8ccad2ce"]]);export{yr as default};
|