2 lines
10 KiB
Java
2 lines
10 KiB
Java
var ce=Object.defineProperty,ie=Object.defineProperties;var me=Object.getOwnPropertyDescriptors;var P=Object.getOwnPropertySymbols;var de=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable;var R=(n,u,o)=>u in n?ce(n,u,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[u]=o,z=(n,u)=>{for(var o in u||(u={}))de.call(u,o)&&R(n,o,u[o]);if(P)for(var o of P(u))ue.call(u,o)&&R(n,o,u[o]);return n},B=(n,u)=>ie(n,me(u));import{d as he,ar as h,as as c,au as S,F as D,aD as Y,aB as g,at as j,ag as x,av as X,e as b,r as pe,aC as H,aF as ge}from"./vue-vendor-C7Zq48Yl.js";import fe from"./ElementWrapper-BnbC7qip.js";import ve from"./TextElement-CW0S5u5i.js";import be from"./ImageElement-BzrzPgZR.js";import we from"./TableElement-2CbVDip4.js";import ye from"./FreeTableElement-CimG0tmG.js";import xe from"./QrcodeElement-DTWovd06.js";import Ce from"./BarcodeElement-CwAUBpc4.js";import{n as Me,s as Te}from"./freeTableGrid-BXWKfNhh.js";import{d as He}from"./index-BI6CMai0.js";import"./antd-vue-vendor-BPnV8VqP.js";import"./browser-INOPQ3v-.js";import"./tableMerge-CpKVscEF.js";import"./tableBuilder-lOY0L2dW.js";import"./freeTableBorders-DHo40MDb.js";import"./freeTableTracks-CfeiVurn.js";import"./vxe-table-vendor-B88kchpX.js";const ke={class:"designer-canvas-wrap"},$e={class:"ruler ruler-top"},Se={key:0,class:"tick-label"},Fe={class:"ruler ruler-left"},Ne={key:0,class:"tick-label"},U=3.7795275591,E=20,ze=he({__name:"DesignerCanvas",props:{schema:{},selectedId:{},scale:{},previewData:{},selectedTableColumn:{},selectedFreeTableCell:{},selectedFreeTableMergeCorner:{}},emits:["select","update","select-table-column","select-free-table-cell","edit-free-table-cell"],setup(n,{emit:u}){const o=n,f=u,K=b(()=>[...o.schema.elements].sort((t,a)=>t.zIndex-a.zIndex)),d=b(()=>{const t=o.schema.page.height,a=o.schema.elements.find(l=>l.type==="reportHeader"),e=o.schema.elements.find(l=>l.type==="reportFooter"),r=Number((a==null?void 0:a.h)||0),i=Number((e==null?void 0:e.h)||0),p=Math.max(r,t-i);return{headerHeight:r,footerHeight:i,bodyBottom:p}}),k=pe({showVertical:!1,showHorizontal:!1}),V=b(()=>({width:`${o.schema.page.width*U*o.scale+E}px`,height:`${o.schema.page.height*U*o.scale+E}px`})),C=b(()=>{const t=o.schema.page.margin;return!Array.isArray(t)||t.length<4?{top:0,right:0,bottom:0,left:0}:{top:Math.max(0,Number(t[0]||0)),right:Math.max(0,Number(t[1]||0)),bottom:Math.max(0,Number(t[2]||0)),left:Math.max(0,Number(t[3]||0))}}),F=b(()=>{const t=o.schema.page.width,a=o.schema.page.height,e=C.value;return{width:Math.max(10,t-e.left-e.right),height:Math.max(10,a-e.top-e.bottom)}}),N=b(()=>{const t=C.value,a=F.value;return{x:t.left+a.width/2,y:t.top+a.height/2}}),L=b(()=>({left:`${E}px`,top:`${E}px`,width:`${o.schema.page.width}mm`,height:`${o.schema.page.height}mm`,transform:`scale(${o.scale})`,transformOrigin:"top left",position:"absolute",margin:0,background:"#dadde3",boxShadow:"0 2px 12px rgba(0, 0, 0, 0.12)"})),W=b(()=>{const t=C.value,a=F.value,e=o.schema.page.gridSize;return{position:"absolute",left:`${t.left}mm`,top:`${t.top}mm`,width:`${a.width}mm`,height:`${a.height}mm`,backgroundColor:"#fff",backgroundSize:`${e}mm ${e}mm`,backgroundImage:"linear-gradient(to right, rgba(22,119,255,0.08) 1px, transparent 1px),linear-gradient(to bottom, rgba(22,119,255,0.08) 1px, transparent 1px)",pointerEvents:"none",zIndex:0,boxSizing:"border-box"}}),O=b(()=>A(o.schema.page.width)),q=b(()=>A(o.schema.page.height));function Q(t){return["title","subtitle","text","date","pageNo","reportHeader","reportFooter"].includes(t)}function I(t){return t.type==="reportHeader"||t.type==="reportFooter"}function Z(t){var a;return((a=o.selectedTableColumn)==null?void 0:a.elementId)===t?o.selectedTableColumn.columnKey:""}function G(t){var a;return((a=o.selectedFreeTableCell)==null?void 0:a.elementId)===t?{row:Number(o.selectedFreeTableCell.row||0),col:Number(o.selectedFreeTableCell.col||0)}:null}function J(t){var a;return((a=o.selectedFreeTableMergeCorner)==null?void 0:a.elementId)!==t?null:{row:Number(o.selectedFreeTableMergeCorner.row||0),col:Number(o.selectedFreeTableMergeCorner.col||0)}}function _(t,a){f("update",{id:t,patch:z({},a)})}function ee(t,a){const{fromRow:e,fromCol:r,toRow:i,toCol:p}=a;if(e===i&&r===p)return;const l=o.schema.elements.find(y=>y.id===t);if(!l||l.type!=="freeTable")return;const m=Math.max(1,Number(l.rowCount||1)),s=Math.max(1,Number(l.colCount||1)),w=Me(m,s,l.cells||[]),v=Te(w,m,s,e,r,i,p);f("update",{id:t,patch:{cells:v}})}function te(t,a){f("update",{id:t,patch:{columns:a}})}function ae(t,a){const e=o.schema.elements.find(p=>p.id===t),r=Array.isArray(e==null?void 0:e.columns)?e.columns:[],i=re(r,a);f("update",{id:t,patch:{headerConfig:a,columns:i}})}function re(t,a){const e=t.length,r=Math.max(1,Number((a==null?void 0:a.rowCount)||1)),i=Array.from({length:r},()=>Array.from({length:e},()=>null));return(Array.isArray(a==null?void 0:a.cells)?a.cells:[]).forEach(l=>{const m=Math.max(0,Number((l==null?void 0:l.row)||0)),s=Math.max(0,Number((l==null?void 0:l.col)||0)),w=Math.max(1,Number((l==null?void 0:l.rowspan)||1)),v=Math.max(1,Number((l==null?void 0:l.colspan)||1));if(m>=r||s>=e||i[m][s])return;const y=Math.min(r,m+w),$=Math.min(e,s+v);for(let M=m;M<y;M+=1)for(let T=s;T<$;T+=1)if(i[M][T])return;const se=B(z({},l),{row:m,col:s,rowspan:y-m,colspan:$-s});for(let M=m;M<y;M+=1)for(let T=s;T<$;T+=1)i[M][T]=se}),t.map((l,m)=>{var v,y;const s=(v=i[r-1])==null?void 0:v[m],w=s&&Number((y=s==null?void 0:s.row)!=null?y:r-1)<r-1?String((l==null?void 0:l.title)||`列${m+1}`):String((s==null?void 0:s.title)||(l==null?void 0:l.title)||`列${m+1}`);return B(z({},l),{title:w})})}function A(t){const a=Math.max(0,Math.floor(t)),e=[];for(let r=0;r<=a;r+=5)e.push({mm:r,major:r%10===0,posPx:r*U*o.scale});return e}function oe(t){if(!(t!=null&&t.active)){k.showVertical=!1,k.showHorizontal=!1;return}const a=t.rect.x+t.rect.w/2,e=t.rect.y+t.rect.h/2,r=N.value.x,i=N.value.y,p=Math.max(.5,1/Math.max(.2,o.scale));k.showVertical=Math.abs(a-r)<=p,k.showHorizontal=Math.abs(e-i)<=p}function le(t){const a=t.region;if(a==="header"||a==="footer"||a==="body")return a;const e=t.y+t.h/2;return e<=d.value.headerHeight?"header":e>=d.value.bodyBottom?"footer":"body"}function ne(t){const a=o.schema.page.width,e=o.schema.page.height,r=C.value,i=r.left,p=r.right,l=r.top,m=r.bottom;if(I(t)){const $=t.type==="reportHeader"?0:Math.max(0,o.schema.page.height-t.h);return{minX:0,maxX:0,minY:$,maxY:$}}const s=le(t),w=i,v=Math.max(i,a-p-t.w);return s==="header"?{minX:w,maxX:v,minY:l,maxY:Math.max(l,d.value.headerHeight-t.h)}:s==="footer"?{minX:w,maxX:v,minY:Math.max(d.value.bodyBottom,l),maxY:Math.max(l,e-m-t.h)}:{minX:w,maxX:v,minY:Math.max(d.value.headerHeight,l),maxY:Math.max(d.value.headerHeight,Math.min(d.value.bodyBottom-t.h,e-m-t.h))}}return(t,a)=>(c(),h("div",ke,[S("div",{class:"canvas-stage",style:g(V.value)},[S("div",$e,[(c(!0),h(D,null,Y(O.value,e=>(c(),h("div",{key:`top_${e.mm}`,class:j(["tick",{major:e.major}]),style:g({left:`${e.posPx}px`})},[e.major?(c(),h("span",Se,X(e.mm),1)):x("",!0)],6))),128))]),S("div",Fe,[(c(!0),h(D,null,Y(q.value,e=>(c(),h("div",{key:`left_${e.mm}`,class:j(["tick",{major:e.major}]),style:g({top:`${e.posPx}px`})},[e.major?(c(),h("span",Ne,X(e.mm),1)):x("",!0)],6))),128))]),a[3]||(a[3]=S("div",{class:"ruler-corner"},null,-1)),S("div",{class:"designer-canvas",style:g(L.value),onClick:a[2]||(a[2]=e=>f("select",""))},[S("div",{class:"canvas-print-area",style:g(W.value)},null,4),d.value.headerHeight>0?(c(),h("div",{key:0,class:"band-area band-header",style:g({height:`${d.value.headerHeight}mm`})},"报表头区域",4)):x("",!0),d.value.footerHeight>0?(c(),h("div",{key:1,class:"band-area band-footer",style:g({height:`${d.value.footerHeight}mm`,top:`${n.schema.page.height-d.value.footerHeight}mm`})}," 报表尾区域 ",4)):x("",!0),d.value.headerHeight>0?(c(),h("div",{key:2,class:"band-divider",style:g({top:`${d.value.headerHeight}mm`})},null,4)):x("",!0),d.value.footerHeight>0?(c(),h("div",{key:3,class:"band-divider",style:g({top:`${d.value.bodyBottom}mm`})},null,4)):x("",!0),k.showVertical?(c(),h("div",{key:4,class:"center-guide vertical",style:g({left:`${N.value.x}mm`,top:`${C.value.top}mm`,height:`${F.value.height}mm`})},null,4)):x("",!0),k.showHorizontal?(c(),h("div",{key:5,class:"center-guide horizontal",style:g({top:`${N.value.y}mm`,left:`${C.value.left}mm`,width:`${F.value.width}mm`})},null,4)):x("",!0),(c(!0),h(D,null,Y(K.value,e=>(c(),H(fe,{key:e.id,element:e,active:n.selectedId===e.id,scale:n.scale,"grid-size":n.schema.page.gridSize,"page-width":n.schema.page.width,"page-height":n.schema.page.height,movable:!I(e),resizable:!I(e),"drag-bounds":ne(e),"page-margins":C.value,onSelect:a[0]||(a[0]=r=>f("select",r)),onUpdate:a[1]||(a[1]=r=>f("update",r)),onDragging:oe},{default:ge(()=>[Q(e.type)?(c(),H(ve,{key:0,element:e,"preview-data":n.previewData},null,8,["element","preview-data"])):e.type==="image"?(c(),H(be,{key:1,element:e,"preview-data":n.previewData},null,8,["element","preview-data"])):e.type==="table"||e.type==="detailTable"?(c(),H(we,{key:2,element:e,"preview-data":n.previewData,"is-element-selected":n.selectedId===e.id,"selected-column-key":Z(e.id),onSelectColumn:r=>f("select-table-column",{elementId:e.id,columnKey:r.columnKey}),onUpdateColumns:r=>te(e.id,r.columns),onUpdateHeaderConfig:r=>ae(e.id,r.headerConfig)},null,8,["element","preview-data","is-element-selected","selected-column-key","onSelectColumn","onUpdateColumns","onUpdateHeaderConfig"])):e.type==="freeTable"?(c(),H(ye,{key:3,element:e,"preview-data":n.previewData,scale:n.scale,"is-element-selected":n.selectedId===e.id,"selected-cell":G(e.id),"merge-range-corner":J(e.id),onSelectCell:r=>f("select-free-table-cell",{elementId:e.id,row:r.row,col:r.col,shiftKey:r.shiftKey}),onSwapCells:r=>ee(e.id,r),onUpdateTracks:r=>_(e.id,r),onEditCell:r=>f("edit-free-table-cell",{elementId:e.id,row:r.row,col:r.col})},null,8,["element","preview-data","scale","is-element-selected","selected-cell","merge-range-corner","onSelectCell","onSwapCells","onUpdateTracks","onEditCell"])):e.type==="qrcode"?(c(),H(xe,{key:4,element:e,"preview-data":n.previewData},null,8,["element","preview-data"])):e.type==="barcode"?(c(),H(Ce,{key:5,element:e,"preview-data":n.previewData},null,8,["element","preview-data"])):x("",!0)]),_:2},1032,["element","active","scale","grid-size","page-width","page-height","movable","resizable","drag-bounds","page-margins"]))),128))],4)],4)]))}}),Ze=He(ze,[["__scopeId","data-v-58e10124"]]);export{Ze as default};
|