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,F=(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},D=(n,u)=>ie(n,me(u));import he from"./ElementWrapper-CA62vlXa.js";import{_ as pe}from"./TextElement.vue_vue_type_script_setup_true_lang-Dp44opX3.js";import ge from"./ImageElement-CjUO2lPv.js";import fe from"./TableElement-kNOZl-_Z.js";import be from"./FreeTableElement-BlpUN_ga.js";import ve from"./QrcodeElement-DB89VUPw.js";import we from"./BarcodeElement-CA6dHxwg.js";import{n as ye,s as xe}from"./freeTableGrid-BXWKfNhh.js";import{e as Ce,C as h,z as c,Q as S,F as B,D as Y,c as v,T as g,H as x,b as Me,J as j,G as X,y as H,A as Te}from"./vue-vendor-DNhG1Cve.js";import{au as He}from"./index-X7Y8jykP.js";import"./browser-D2DxMZOB.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./tableMerge-CpKVscEF.js";import"./tableBuilder-lOY0L2dW.js";import"./freeTableBorders-i5ck0FPH.js";import"./freeTableTracks--U1Y5u-V.js";import"./barcodeRenderer-cjxjmb-t.js";const ke={class:"designer-canvas-wrap"},$e={class:"ruler ruler-top"},Se={key:0,class:"tick-label"},ze={class:"ruler ruler-left"},Ne={key:0,class:"tick-label"},A=3.7795275591,E=20,Fe=Ce({__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=v(()=>[...o.schema.elements].sort((t,a)=>t.zIndex-a.zIndex)),d=v(()=>{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=Me({showVertical:!1,showHorizontal:!1}),V=v(()=>({width:`${o.schema.page.width*A*o.scale+E}px`,height:`${o.schema.page.height*A*o.scale+E}px`})),C=v(()=>{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))}}),z=v(()=>{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=v(()=>{const t=C.value,a=z.value;return{x:t.left+a.width/2,y:t.top+a.height/2}}),L=v(()=>({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=v(()=>{const t=C.value,a=z.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=v(()=>U(o.schema.page.width)),Q=v(()=>U(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 G(t){var a;return((a=o.selectedTableColumn)==null?void 0:a.elementId)===t?o.selectedTableColumn.columnKey:""}function J(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 Z(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:F({},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=ye(m,s,l.cells||[]),b=xe(w,m,s,e,r,i,p);f("update",{id:t,patch:{cells:b}})}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)),b=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+b);for(let M=m;M<y;M+=1)for(let T=s;T<$;T+=1)if(i[M][T])return;const se=D(F({},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 b,y;const s=(b=i[r-1])==null?void 0:b[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 D(F({},l),{title:w})})}function U(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*A*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,b=Math.max(i,a-p-t.w);return s==="header"?{minX:w,maxX:b,minY:l,maxY:Math.max(l,d.value.headerHeight-t.h)}:s==="footer"?{minX:w,maxX:b,minY:Math.max(d.value.bodyBottom,l),maxY:Math.max(l,e-m-t.h)}:{minX:w,maxX:b,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(B,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",ze,[(c(!0),h(B,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:`${z.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:`${z.value.width}mm`})},null,4)):x("",!0),(c(!0),h(B,null,Y(K.value,e=>(c(),H(he,{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:Te(()=>[q(e.type)?(c(),H(pe,{key:0,element:e,"preview-data":n.previewData},null,8,["element","preview-data"])):e.type==="image"?(c(),H(ge,{key:1,element:e,"preview-data":n.previewData},null,8,["element","preview-data"])):e.type==="table"||e.type==="detailTable"?(c(),H(fe,{key:2,element:e,"preview-data":n.previewData,"is-element-selected":n.selectedId===e.id,"selected-column-key":G(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(be,{key:3,element:e,"preview-data":n.previewData,scale:n.scale,"is-element-selected":n.selectedId===e.id,"selected-cell":J(e.id),"merge-range-corner":Z(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(ve,{key:4,element:e,"preview-data":n.previewData},null,8,["element","preview-data"])):e.type==="barcode"?(c(),H(we,{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)]))}}),Ge=He(Fe,[["__scopeId","data-v-58e10124"]]);export{Ge as default};
|