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",doc
|
|||
|
|
"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.resu
|
|||
|
|
`),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,
|