Files
qhmes/web-dist/js/index-DbyQaB2C.js
2026-06-16 18:19:57 +08:00

83 lines
36 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/vue-plugin-hiprint-f7b0vEHA.js","js/emoji-mart-vue-fast-R0uJEDq-.js","js/JsBarcode-9Xoda2fA.js","js/index-X7Y8jykP.js","js/vue-vendor-DNhG1Cve.js","assets/index-GuhSw_Yp.css","js/browser-CC9DCAWJ.js","js/stackblur-es-DK4L4ctA.js"])))=>i.map(i=>d[i]);
var ve=Object.defineProperty,ye=Object.defineProperties;var we=Object.getOwnPropertyDescriptors;var Tt=Object.getOwnPropertySymbols;var be=Object.prototype.hasOwnProperty,Se=Object.prototype.propertyIsEnumerable;var xt=(O,P,A)=>P in O?ve(O,P,{enumerable:!0,configurable:!0,writable:!0,value:A}):O[P]=A,ft=(O,P)=>{for(var A in P||(P={}))be.call(P,A)&&xt(O,A,P[A]);if(Tt)for(var A of Tt(P))Se.call(P,A)&&xt(O,A,P[A]);return O},ct=(O,P)=>ye(O,we(P));var L=(O,P,A)=>new Promise((F,b)=>{var et=T=>{try{_(A.next(T))}catch(M){b(M)}},j=T=>{try{_(A.throw(T))}catch(M){b(M)}},_=T=>T.done?F(T.value):Promise.resolve(T.value).then(et,j);_((A=A.apply(O,P)).next())});import{M as ke,_ as _e,s as Ne,aE as Pe,av as Ae,aG as Te,cx as xe,x as Ct,aR as Ce,aS as Le,bR as $e,aH as Ee,bL as Oe,au as He}from"./index-X7Y8jykP.js";import{r as Je}from"./qhmesProvider-MWkGjy8y.js";import Me from"./BasicTable-C6eG0bgK.js";import Be from"./TableAction-BiXnWkvt.js";import"./TableImg.vue_vue_type_style_index_0_lang-65ZOQtFn.js";import"./index-BDvqZ5j4.js";import{u as We}from"./useListPage-CK9oQ-1O.js";import{e as Et,r as N,h as De,o as Fe,C as ht,z as B,f as g,A as S,u as W,c as z,p as Re,K as qe,X as ze,O as gt,y as I,H as Lt,E as $,Q as J,G as Ie}from"./vue-vendor-DNhG1Cve.js";import{_ as je,s as Ue,c as Ve}from"./PrintTemplateModal.vue_vue_type_script_setup_true_lang-Bg6SMY-d.js";import{q as Ke,l as $t,b as tt,c as Qe,d as Xe,f as Ge,a as Ye,g as Ze}from"./printTemplate.api-Dfuyi-ab.js";import tn from"./NativeTemplateListPreviewModal-CsdnFNwg.js";import{g as en,P as vt,f as nn,s as rn,b as an}from"./printNativeViaPrintDot-hFBchMti.js";import{u as on}from"./useModal-DaJ3Bflg.js";import"./index-DSsDi_fL.js";import{C as sn}from"./Group-UHkub2tu.js";import"./index-CfNJyBRj.js";import{D as ln}from"./dropdown-jkliuVyN.js";import{b as un}from"./index-CeNCCWzL.js";import{O as pn}from"./index-CuWaQdlK.js";import{A as dn}from"./index-DO7ZhK45.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./BasicTable.vue_vue_type_style_index_0_lang-B9DxrWas.js";import"./BasicForm-ClUSoD_-.js";import"./helper-DcLcf4v6.js";import"./index-BzChaRPg.js";import"./useAppInject-DPZGPcR3.js";import"./BasicForm.vue_vue_type_style_index_0_lang-B29PWQy0.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./useTimeout-D5AmIBZw.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./index-saD4h7VJ.js";import"./useBreakpoint-DXhPW7nV.js";import"./useEventListener-BRXjwk7A.js";import"./breakpointEnum-BhAg6bcX.js";import"./uniqBy--vsL0WVB.js";import"./BasicModal-xH56XuRZ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./useForm-D61zovon.js";import"./injectionKey-DPVn4AgL.js";import"./FormOutlined-Y84itqS0.js";import"./useTableContext-CncNVXgp.js";import"./index-DTjkSGYl.js";import"./eagerComputed-BTlOruLW.js";import"./fromPairs-Dx9PT-t0.js";import"./useMaxLevel-DE205ncc.js";import"./index-DfHu-LAS.js";import"./Group-DBzJABA_.js";import"./Checkbox-Dbxs4we4.js";import"./RadioButton-DRBix2Fq.js";import"./index-C7ckZv9Z.js";import"./DirectoryTree-nk_YTTIy.js";import"./FolderOpenOutlined-SzIPA7z0.js";import"./index-Cl-8Hzo4.js";import"./index-BuONesFs.js";import"./scrollTo-D49dA-9c.js";import"./operationUnit-vCu2co3e.js";import"./index-C69VKHba.js";import"./index-DklMb9Qc.js";import"./UpOutlined-B1UMbtrP.js";import"./index-DsixALRt.js";import"./dayjs-jnKD3YGS.js";import"./index-aCD42OrZ.js";import"./quarterOfYear-BU2sPnff.js";import"./index-J2mOtM3w.js";import"./dayjs-ALi1pEeb.js";import"./clickOutside-DHfwTU6R.js";import"./onMountedOrActivated-DhSdLlqP.js";import"./throttle-De_jAmBh.js";import"./uuid-CODpppBC.js";import"./sortable.esm-DJNoJSdJ.js";import"./RedoOutlined-Cq2g4Slp.js";import"./TableAction.vue_vue_type_style_index_0_lang-BIWZ0bGo.js";import"./index-fAAIzD3j.js";import"./index-DfX9t4DO.js";import"./isNumeric-DjvBa-1E.js";import"./useTable-DbHE4FHE.js";import"./useMethods-D3efiSSd.js";import"./useApprovalSelection-D4wlWO_T.js";import"./nativeSchemaNormalize-WzV7gGZh.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";import"./nativeMockData-D5nIVXYv.js";const mn={key:0,class:"skill-json-error"},fn={class:"skill-preview-wrap"},cn=["title","srcdoc"],hn=Et({name:"PrintTemplateList"}),gn=Et(ct(ft({},hn),{name:"PrintTemplateList",setup(O){const P=N(!1),A=N(null),F=Re(),{createMessage:b}=Ne(),[et,{openModal:j}]=on(),_=N(),T=N([]),M=N(""),R=N(!1),U=N(""),nt=N(!1),V=N([]),yt="qhmes_print_dot_enabled",D=N(localStorage.getItem(yt)==="1"),wt=en(),rt=N(wt.wsUrl),at=N(wt.key);function bt(){rn(rt.value,at.value),D.value&&Z(!1)}const Ot=z(()=>D.value?"选择打印机PrintDot 桥接":"选择打印机本地/网络");function Ht(){localStorage.setItem(yt,D.value?"1":"0"),Z(!1)}function Jt(){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 it=`{
"docNo": "MO-001",
"mainTable": [
{ "materialCode": "M01", "materialName": "示例物料", "qty": 10 }
]
}`,Mt=`请填写对象或数组形式的打印数据例如
${it}`,ot=N(!1),x=N({templateCode:"",printerName:"__system_default__",dataJson:it}),K=N(""),Q=N(""),X=N(!1),st=N(!1),H=N(""),G=N("convert"),Bt=z(()=>G.value==="guide"?"技能指南打印hiprint-export-print":"技能转换打印hiprint → PDF → 后端队列)"),Wt=z(()=>G.value==="guide"?"与项目 Cursor 技能「hiprint-export-print」约定一致hiprint 模板 JSON + 打印数据 JSON → 校验 → 生成预览Lodop 同源 HTML 包装)→ html2canvas + jsPDF 生成 PDF → 调用后端 directPrintPdf。开发人员可查阅仓库 .cursor/skills/hiprint-export-print/SKILL.md 中的文件路径、自检项与常见问题。":"选择模板并填写打印数据 JSON → 校验 → 生成预览确认版式 → 提交为 PDF 由后端发送到所选打印机。"),Dt=z(()=>G.value==="guide"?"技能指南打印预览":"技能转换预览"),Ft=z(()=>{const t=K.value.trim().toLowerCase(),e=V.value;return t?e.filter(n=>String(n.value||"").toLowerCase().includes(t)||String(n.label||"").toLowerCase().includes(t)):e});let q=null;function Rt(t){const e=(t==null?void 0:t.default)||{};return q=(t==null?void 0:t.hiprint)||(e==null?void 0:e.hiprint)||(window==null?void 0:window.hiprint),q}function lt(){return L(this,null,function*(){if(q)return;const t=yield _e(()=>import("./vue-plugin-hiprint-f7b0vEHA.js").then(n=>n.v),__vite__mapDeps([0,1,2,3,4,5,6,7])),e=Rt(t);if(!e)throw new Error("未获取到 hiprint 实例");e.init({providers:Je(t)})})}const{tableContext:qt}=We({tableProps:{title:"打印模板",api:$t,columns:Ve,rowKey:"id",formConfig:{schemas:Ue},actionColumn:{width:300}}}),[zt,{reload:Y},{rowSelection:It,selectedRowKeys:St}]=qt;function Z(t=!0){return L(this,null,function*(){var l;const e=new Map;if(e.set("__system_default__",{label:"系统默认打印机",value:"__system_default__"}),D.value){try{const p=yield nn();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 Ke(),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 kt(){const t=String(M.value||"").trim();if(!t)return;T.value.some(n=>n.value===t)||(T.value=[...T.value,{label:`${t}手动`,value:t}]),_.value=t,M.value="",b.success("已添加手动打印机名称")}function jt(){return L(this,null,function*(){var n;const t=yield $t({pageNo:1,pageSize:500}),e=(t==null?void 0:t.records)||((n=t==null?void 0:t.result)==null?void 0:n.records)||[];V.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 Ut(){return L(this,null,function*(){U.value="",V.value.length||(yield jt()),R.value=!0})}function Vt(){return L(this,null,function*(){var e,n,i,l,p,y;const t=String(U.value||"").trim();if(!t){b.warning("请先选择模板编号");return}nt.value=!0;try{const r=yield tt(t),d=(e=r==null?void 0:r.result)!=null?e:r,m=String((i=(n=d==null?void 0:d.id)!=null?n:r==null?void 0:r.id)!=null?i:"").trim();if(!m){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 f;if(o)try{f=(y=JSON.parse(o))==null?void 0:y.engine}catch(u){b.error("模板 JSON 无法解析,无法判断是否为原生模板");return}if(f!=="native"){b.warning("快速打印仅支持「原生模板」engine 为 native请从列表预览 hiprint 模板或使用设计器");return}A.value=m,P.value=!0,R.value=!1}catch(r){b.error(`加载模板失败${(r==null?void 0:r.message)||"未知错误"}`)}finally{nt.value=!1}})}function Kt(){Q.value="",H.value="",K.value=""}function Qt(){x.value.dataJson=it,H.value="",b.success("已填入示例 JSON")}function Xt(){const t=String(x.value.dataJson||"").trim();if(!t){b.warning("请先输入 JSON");return}try{x.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 ut(t){const e=String(x.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 Gt(){ut(!1)}function Yt(t){return L(this,null,function*(){const e=String(t.templateCode||"").trim();yield lt();const n=yield tt(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 q.PrintTemplate({template:l}),y=Pt(yield _t(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),m=Number((r==null?void 0:r.height)||297),o=yield an(y,d,m),f=String(t.printerName||"").trim();yield Xe({templateCode:e,printerName:f,dataJson:t.dataJson,pdfBase64:o,fileName:t.fileName||`${e}.pdf`})})}function Zt(){return L(this,null,function*(){const t=String(x.value.templateCode||"").trim();if(!t){b.warning("请先选择模板");return}if(!ut(!0))return;let e;try{e=JSON.parse(String(x.value.dataJson||"").trim())}catch(n){return}X.value=!0;try{yield lt();const n=yield tt(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 q.PrintTemplate({template:l}),y=Pt(yield _t(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),m=Number((r==null?void 0:r.height)||0);Q.value=se(y,d>0?d:void 0,m>0?m:void 0),b.success("预览已生成")}catch(n){b.error(`预览失败${(n==null?void 0:n.message)||"未知错误"}`)}finally{X.value=!1}})}function te(){return L(this,null,function*(){const t=String(x.value.templateCode||"").trim();if(!t){b.warning("请先选择模板");return}if(!ut(!0))return;let e;try{e=JSON.parse(String(x.value.dataJson||"").trim())}catch(n){return}st.value=!0;try{yield Yt({templateCode:t,printerName:x.value.printerName,dataJson:e,fileName:G.value==="guide"?`${t}-hiprint-export-print.pdf`:`${t}-skill.pdf`}),b.success("已提交 PDF 到后端打印队列"),ot.value=!1}catch(n){b.error(`提交失败${(n==null?void 0:n.message)||"未知错误"}`)}finally{st.value=!1}})}function pt(t){if(!t)return"";if(typeof t=="string")return t.trim();if(Array.isArray(t))return t.map(e=>pt(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 _t(t,e){return L(this,null,function*(){const n=r=>{var m,o,f,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(ct(ft({},a),{detailList:(m=a.detailList)!=null?m:s,mainTable:(o=a.mainTable)!=null?o:s,list:(f=a.list)!=null?f: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 m of l)try{const o=yield Promise.resolve(d.call(t,m)),f=pt(o);if(f)return f}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 m of l){const o=[[m],[m,{}],[]];for(const f of o)try{const u=yield Promise.resolve(d.apply(t,f)),w=pt(u);if(w)return w}catch(u){}}}return""})}function Nt(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 ee(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=Nt(p);if(y.length)return{rows:y,options:p}}}return{rows:[],options:null}}function dt(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 ne(t){var p,y,r,d;if(!Array.isArray(t)||!t.length)return[];const e=t.length;let n=0;if(t.forEach(m=>{const o=(Array.isArray(m)?m:[]).reduce((f,u)=>f+(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 m=0;m<e;m+=1){const o=Array.isArray(t[m])?t[m]:[];let f=0;o.forEach(u=>{for(;f<n&&i[m][f];)f+=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=m;c<Math.min(e,m+w);c+=1)for(let s=f;s<Math.min(n,f+a);s+=1)i[c][s]=u;f+=a})}const l=[];for(let m=0;m<n;m+=1){let o=null;for(let s=e-1;s>=0;s-=1){const v=i[s][m];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 f=dt((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:f,title:(o==null?void 0:o.title)||"",align:u,halign:w,width:a,autoWrap:c})}return l}function re(t){const e=Nt(t);return e.length?ne(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:dt(n),title:n,align:"",halign:"",width:"",autoWrap:!1}:{field:dt((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 ae(t,e){const n=t.querySelector("tbody tr");if(!n)return;const i=n.querySelectorAll("td").length;if(!i)return;let l=re(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,m=y.map(a=>a>0?a:d),o=m.reduce((a,c)=>a+c,0);t.style.tableLayout="fixed",t.style.width="100%";const f=document.createElement("colgroup");m.forEach(a=>{const c=document.createElement("col"),s=o>0?(a/o*100).toFixed(6):"";c.setAttribute("style",s?`width:${s}%;`:""),f.appendChild(c)});const u=t.querySelector("colgroup");u?u.replaceWith(f):t.firstChild?t.insertBefore(f,t.firstChild):t.appendChild(f),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),C=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"),C&&(s.style.textAlign=C)})})}function ie(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 oe(t,e,n){var o,f,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"),m=!!((w=(u=(f=(o=t==null?void 0:t.autoWrap)!=null?o:t==null?void 0:t.tableAutoWrap)!=null?f: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",m?"white-space:normal":"white-space:nowrap",m?"word-break:break-all":"",m?"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 Pt(t,e){if(!t||!t.includes("<table"))return t;const n=document.createElement("div");n.innerHTML=t;const i=ee(e);return Array.from(n.querySelectorAll("table")).forEach(p=>{const r=(()=>{if(!i.rows.length||!i.options)return null;const u=ie(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",oe(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&&ae(p,i.options);const m=(()=>{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(m.length<2)return;const o=u=>String((u==null?void 0:u.textContent)||"").replace(/\u00a0/g,"").replace(/\s+/g,"").trim(),f=[];m.forEach((u,w)=>{f[w]=f[w]||[];let a=0;Array.from(u.querySelectorAll("th,td")).forEach(s=>{for(;f[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 C=w;C<w+v;C+=1){f[C]=f[C]||[];for(let E=a;E<a+k;E+=1)f[C][E]=h}a+=k})});for(let u=0;u<m.length-1;u+=1){const w=f[u]||[],a=f[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 C=0;C<s.colSpan;C+=1){const E=a[c+C];if(!E||E.row!==u+1||E.col!==c+C||E.colSpan>1||E.rowSpan>1){h=!1;break}const mt=o(E.el);if(!(!mt||mt==="-")&&!(!!v&&mt===v)){h=!1;break}k.push(E.el)}if(h&&k.length){const C=Math.max(1,Number(s.el.getAttribute("rowspan")||1));s.el.setAttribute("rowspan",String(C+1)),s.el.classList.add("qh-merged-header-cell"),s.el.style.borderBottom="none",k.forEach(E=>{E.style.borderTop="none",E.remove()})}}}}),n.innerHTML}function se(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 le(){j(!0,{isUpdate:!1,isNative:!0})}function ue(t){j(!0,{isUpdate:!0,record:t})}function At(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 pe(t){const e=At(t)?"/print/native-designer":"/print/designer";F.push({path:e,query:{id:t.id}})}function de(t){A.value=String(t.id||""),P.value=!0}function me(t){return L(this,null,function*(){yield Ze({id:t.id},Y)})}function fe(t){return L(this,null,function*(){var n,i,l,p,y,r,d,m,o,f,u,w;const e=String((t==null?void 0:t.id)||"").trim();if(!e){b.warning("无法复制缺少模板主键");return}try{const a=yield Ge(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 Ye({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:(m=a==null?void 0:a.paperHeightMm)!=null?m:t==null?void 0:t.paperHeightMm,paperOrientation:String((f=(o=a==null?void 0:a.paperOrientation)!=null?o:t==null?void 0:t.paperOrientation)!=null?f:"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 Y()}catch(a){b.error((a==null?void 0:a.message)||"复制失败")}})}function ce(){return L(this,null,function*(){yield Qe({ids:St.value.join(",")},Y)})}function he(t){return L(this,null,function*(){var i,l,p,y,r;if(Y(),(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){F.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 tt(n);d!=null&&d.id&&F.push({path:"/print/native-designer",query:{id:String(d.id)}})}catch(d){}})}function ge(t){const e=At(t),n=[{label:e?"原生设计":"Hiprint设计",onClick:pe.bind(null,t),auth:"print:template:edit"}];return e&&n.push({label:"预览",onClick:de.bind(null,t),auth:"print:template:list"}),n.push({label:"编辑",onClick:ue.bind(null,t),auth:"print:template:edit"},{label:"复制",onClick:fe.bind(null,t),auth:"print:template:add"},{label:"删除",color:"error",popConfirm:{title:"确认删除",confirm:me.bind(null,t)},auth:"print:template:delete"}),n}return De(_,t=>{if(!t){localStorage.removeItem(vt);return}localStorage.setItem(vt,t)},{immediate:!1}),Fe(()=>L(null,null,function*(){try{yield lt()}catch(t){}_.value=localStorage.getItem(vt)||"__system_default__",yield Z(!1),_.value||(_.value="__system_default__")})),(t,e)=>{const n=Ae,i=Te,l=qe("a-button"),p=sn,y=xe,r=Pe,d=Le,m=Ce,o=ln,f=un,u=ke,w=dn,a=pn,c=$e,s=Oe,v=Ee,k=ze("auth");return B(),ht("div",null,[g(W(Me),{onRegister:W(zt),rowSelection:W(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:M.value,"onUpdate:value":e[1]||(e[1]=h=>M.value=h),style:{width:"180px"},placeholder:"手动输入打印机名称",onPressEnter:kt},null,8,["value"]),g(l,{onClick:kt},{default:S(()=>[...e[14]||(e[14]=[$("添加打印机",-1)])]),_:1}),g(l,{onClick:Z},{default:S(()=>[...e[15]||(e[15]=[$("刷新打印机",-1)])]),_:1}),g(p,{checked:D.value,"onUpdate:checked":e[2]||(e[2]=h=>D.value=h),onChange:Ht},{default:S(()=>[...e[16]||(e[16]=[$("PrintDot 桥接",-1)])]),_:1},8,["checked"]),g(i,{value:rt.value,"onUpdate:value":e[3]||(e[3]=h=>rt.value=h),style:{width:"200px"},placeholder:"WS 地址",onBlur:bt},null,8,["value"]),g(y,{value:at.value,"onUpdate:value":e[4]||(e[4]=h=>at.value=h),style:{width:"120px"},placeholder:"密钥(可选)",autocomplete:"new-password",onBlur:bt},null,8,["value"]),g(l,{onClick:Jt},{default:S(()=>[...e[17]||(e[17]=[$("下载打印插件",-1)])]),_:1})]),_:1}),gt((B(),I(l,{type:"primary",ghost:"",onClick:le},{default:S(()=>[...e[18]||(e[18]=[$("新增原生模板",-1)])]),_:1})),[[k,"print:template:add"]]),gt((B(),I(l,{type:"primary",onClick:Ut},{default:S(()=>[...e[19]||(e[19]=[$("快速打印",-1)])]),_:1})),[[k,"print:template:list"]]),W(St).length>0?(B(),I(o,{key:0},{overlay:S(()=>[g(m,null,{default:S(()=>[gt((B(),I(d,{key:"1",onClick:ce},{default:S(()=>[g(W(Ct),{icon:"ant-design:delete-outlined"}),e[20]||(e[20]=$(" 删除 ",-1))]),_:1})),[[k,"print:template:delete"]])]),_:1})]),default:S(()=>[g(l,null,{default:S(()=>[e[21]||(e[21]=$(" 批量操作 ",-1)),g(W(Ct),{icon:"mdi:chevron-down"})]),_:1})]),_:1})):Lt("",!0)]),action:S(({record:h})=>[g(W(Be),{actions:ge(h)},null,8,["actions"])]),_:1},8,["onRegister","rowSelection"]),g(je,{onRegister:W(et),onSuccess:he},null,8,["onRegister"]),g(tn,{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(f,{type:"info","show-icon":"",message:"请选择原生模板",description:"将打开与列表预览相同的弹窗在其中编辑模板 JSON参数 JSON并使用浏览器打印 PrintDot桥接器打印"}),J("div",null,[e[22]||(e[22]=J("div",{class:"skill-field-label"},"模板编号",-1)),g(n,{value:U.value,"onUpdate:value":e[6]||(e[6]=h=>U.value=h),options:V.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]=[$("取消",-1)])]),_:1}),g(l,{type:"primary",loading:nt.value,onClick:Vt},{default:S(()=>[...e[24]||(e[24]=[$("打开预览",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["open"]),g(u,{open:ot.value,"onUpdate:open":e[13]||(e[13]=h=>ot.value=h),title:Bt.value,width:"960px",footer:null,"destroy-on-close":"",onCancel:Kt},{default:S(()=>[g(r,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:S(()=>[g(f,{type:"info","show-icon":"",message:"流程说明",description:Wt.value},null,8,["description"]),g(a,{gutter:12},{default:S(()=>[g(w,{span:10},{default:S(()=>[e[25]||(e[25]=J("div",{class:"skill-field-label"},"模板支持编号/名称搜索",-1)),g(i,{value:K.value,"onUpdate:value":e[9]||(e[9]=h=>K.value=h),"allow-clear":"",placeholder:"输入关键字过滤模板列表",style:{"margin-bottom":"8px"}},null,8,["value"]),g(n,{value:x.value.templateCode,"onUpdate:value":e[10]||(e[10]=h=>x.value.templateCode=h),options:Ft.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]=J("div",{class:"skill-field-label"},"打印机",-1)),g(n,{value:x.value.printerName,"onUpdate:value":e[11]||(e[11]=h=>x.value.printerName=h),options:T.value,style:{width:"100%"},"show-search":"","allow-clear":"","option-filter-prop":"label",placeholder:"可为空使用系统默认打印机"},null,8,["value","options"])]),_:1})]),_:1}),J("div",null,[e[32]||(e[32]=J("div",{class:"skill-field-label"},"打印数据 JSON",-1)),g(c,{value:x.value.dataJson,"onUpdate:value":e[12]||(e[12]=h=>x.value.dataJson=h),rows:10,placeholder:Mt},null,8,["value"]),H.value?(B(),ht("div",mn,Ie(H.value),1)):Lt("",!0),g(r,{style:{"margin-top":"8px"},wrap:""},{default:S(()=>[g(l,{size:"small",onClick:Qt},{default:S(()=>[...e[27]||(e[27]=[$("填入示例",-1)])]),_:1}),g(l,{size:"small",onClick:Xt},{default:S(()=>[...e[28]||(e[28]=[$("格式化 JSON",-1)])]),_:1}),g(l,{size:"small",type:"primary",ghost:"",onClick:Gt},{default:S(()=>[...e[29]||(e[29]=[$("校验 JSON",-1)])]),_:1}),g(l,{size:"small",loading:X.value,onClick:Zt},{default:S(()=>[...e[30]||(e[30]=[$("生成预览",-1)])]),_:1},8,["loading"]),g(l,{size:"small",type:"primary",loading:st.value,onClick:te},{default:S(()=>[...e[31]||(e[31]=[$("提交后端 PDF 打印",-1)])]),_:1},8,["loading"])]),_:1})]),J("div",null,[e[33]||(e[33]=J("div",{class:"skill-field-label"},"预览 Lodop 包装一致的 HTML供确认表头合并与纸张",-1)),g(v,{spinning:X.value},{default:S(()=>[J("div",fn,[Q.value?(B(),ht("iframe",{key:0,class:"skill-preview-iframe",title:Dt.value,srcdoc:Q.value},null,8,cn)):(B(),I(s,{key:1,description:"请先选择模板并点击生成预览"}))])]),_:1},8,["spinning"])])]),_:1})]),_:1},8,["open","title"])])}}})),ia=He(gn,[["__scopeId","data-v-8ccad2ce"]]);export{ia as default};