myprint-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 15.1 kB
Source Map (JSON)
{"version":3,"file":"entity.mjs","sources":["../../../../src/types/entity.ts"],"sourcesContent":["import { Module, SaveResult, Template } from '@myprint/design/types/R';\nimport { i18n } from '@myprint/design/locales';\n\nexport interface PrintOptions {\n taskId?: string,\n panel?: Panel | string,\n previewDataList?: any[],\n\n title?: string,\n timeout?: number,\n\n file?: Blob | ArrayBuffer | Uint8Array | string,\n html?: string,\n css?: string,\n printer?: string,\n\n // 支持MyPrint客户端、windows原生、windows直连\n orientation?: 'portrait' | 'landscape' | 'auto', // 打印方向\n // 支持MyPrint客户端、windows直连,macos直连\n swapWidthHeight?: boolean, // 是否交换宽高\n // 支持MyPrint客户端、windows直连,macos直连\n pageSize?: string, // 打印file 时使用\n // 支持MyPrint客户端\n width?: number,// 单位毫米\n // 支持MyPrint客户端\n height?: number, //高 单位毫米\n // 支持MyPrint客户端、windows直连,macos直连\n copies?: number, //打印份数\n // 打印文件时使用(例如pdf)\n scale?: 'fit',\n // 支持MyPrint客户端、windows直连,macos直连\n scaleFactor?: number,\n printBackground?: boolean, // 是否打印背景\n color?: boolean, // 是否打印颜色\n\n /**\n * 支持MyPrint客户端、windows直连,macos直连\n * 双面打印 | 单面打印\n */\n duplexMode?: 'duplex' | 'simplex',\n // 支持MyPrint客户端\n dpi?: any\n}\n\nexport interface DesignPanelProps {\n template?: Template;\n saveTemplate?: (template: Template) => Promise<SaveResult>;\n module?: Module;\n height?: string;\n generateImg?: boolean;\n showBackButton?: boolean;\n showPrintButton?: boolean;\n showDownloadPdfButton?: boolean;\n showPreviewButton?: boolean;\n showClearButton?: boolean;\n showSaveButton?: boolean;\n}\n\nexport interface MyPrintConfig {\n serverUrl?: string;\n clientUrl?: string;\n disabledClient?: boolean;\n}\n\nexport interface PrintResult {\n status: 'SUCCESS' | 'ERROR' | 'TIMEOUT' | 'CLOSE';\n msg?: string,\n blob?: Blob,\n blobList?: Blob[],\n type: 'CHROME_PRINT' | 'TIMEOUT' | 'CLIENT_PRINT' | 'CHROME_GENERATE_PDF' | 'CHROME_GENERATE_IMG' | 'SERVER_GENERATE_IMG' | 'CLIENT_GENERATE_PDF' | 'SERVER_GENERATE_PDF' | 'CLOSE';\n}\n\nexport interface ClientCmd {\n taskId: string;\n cmd: 'print' | 'printerList' | 'generatePdf' | 'generatePdfResult' | 'printResult' | 'ping' | 'text/css',\n options?: PrintOptions\n}\n\nexport interface ClientResult {\n taskId: string;\n cmd: 'print' | 'printerList' | 'generatePdf' | 'generatePdfResult' | 'printResult' | 'pong',\n data?: Buffer | any,\n status?: 'SUCCESS' | 'ERROR',\n msg?: string\n}\n\nexport interface Printer {\n\n /**\n * a longer description of the printer's type.\n */\n description: string;\n /**\n * the name of the printer as shown in Print Preview.\n */\n displayName: string;\n /**\n * whether or not a given printer is set as the default printer on the OS.\n */\n isDefault: boolean;\n /**\n * the name of the printer as understood by the OS.\n */\n name: string;\n /**\n * an object containing a variable number of platform-specific printer information.\n */\n options: any;\n /**\n * the current status of the printer.\n */\n status: number;\n}\n\nexport interface Provider {\n name: string;\n pageUnit: PageUnit;\n fontSizeUnit: FontSizeUnit;\n pageSize: string;\n width: number;\n height: number;\n watermark: boolean;\n watermarkContent: string;\n dragSnapPanelIs: number;\n dragSnapIs: number;\n elementList: MyElement[];\n}\n\nexport interface Design {\n scale: number;\n}\n\n/**\n * 节点关系\n */\nexport interface ElementRelation {\n elementList: MyElement[];\n}\n\nexport interface Id {\n id: string;\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface Rect extends Point {\n width: number;\n height: number;\n}\n\nexport interface SvgData {\n points: Point[];\n controlPoints: Point[];\n}\n\nexport interface PointLabel extends Point {\n label?: string;\n type: 'control' | 'virtual' | 'rotate';\n insertIndex: number;\n}\n\nexport interface PointClick extends Point {\n clickTimestamp: number;\n}\n\nexport interface MyAuxiliaryLine extends Point, Id {\n direction: 'vertical' | 'horizontal';\n runtimeOption: RuntimeElementOption;\n}\n\nexport interface Line {\n start: Point;\n end: Point;\n}\n\nexport interface Container extends Rect, ElementRelation, Id {\n minWidth: number;\n minHeight: number;\n type: elementType;\n visibility: 'visible' | 'hidden';\n\n /**\n * 运行时配置\n */\n runtimeOption: RuntimeElementOption;\n}\n\nexport interface Panel extends Container {\n name: string;\n width: number;\n height: number;\n pageSize: string;\n pageUnit: PageUnit;\n fontSizeUnit: FontSizeUnit;\n watermark: boolean;\n watermarkContent: string;\n dragSnapPanelIs: number;\n dragSnapIs: number;\n design: Design;\n orientation?: 'p' | 'portrait' | 'l' | 'landscape';\n pageHeader?: MyElement;\n pageFooter?: MyElement;\n groupList: string[][];\n // 辅助线列表\n auxiliaryLineList: MyAuxiliaryLine[];\n}\n\nexport interface PreviewContext {\n autoPageIs: boolean,\n currentPreview: PreviewWrapper\n previewData: any\n panel: Panel\n pageList: PreviewContainerWrapper[]\n currentPage: PreviewContainerWrapper\n top: number\n bottom: number\n pagingRepetition: boolean\n}\n\nexport interface PreviewWrapper extends MyElement, TableCellElement, PreviewContainerWrapper {\n offsetLastElementTop: number;\n heightIs: boolean;\n tableHeadHiddenIs: boolean;\n previewTableRowIndex: number;\n target: any;\n}\n\nexport interface PreviewContainerWrapper extends MyElement {\n offsetTop: number;\n previewWrapperList: PreviewWrapper[];\n}\n\nexport interface DragWrapper {\n dragIng: boolean\n type: string\n element: MyElement,\n start: Position\n end: Position\n}\n\n// 节点类型\nexport const elementTypeFormat = {\n Panel: i18n('provider.panel'),\n Text: i18n('provider.text'),\n TextTime: i18n('provider.text.time'),\n Image: i18n('provider.image'),\n DataTable: i18n('provider.data.table'),\n FreeTable: i18n('provider.free.table'),\n Rect: i18n('provider.rect'),\n HorizontalLine: i18n('provider.horizontal.line'),\n DottedHorizontalLine: i18n('provider.dotted.horizontal.line'),\n VerticalLine: i18n('provider.vertical.line'),\n DottedVerticalLine: i18n('provider.dotted.vertical.line'),\n Container: i18n('provider.container'),\n PageHeader: i18n('provider.page.header'),\n PageFooter: i18n('provider.page.footer'),\n PageNum: i18n('provider.page.num'),\n SvgPolygonLine: i18n('provider.svg.polygon line'),\n SvgLine: i18n('provider.svg.line'),\n SvgBezierCurve: i18n('provider.svg.bezier.curve'),\n SvgBezierCurveThree: i18n('provider.svg.bezier.curve.three'),\n SvgCircle: i18n('provider.svg.circle'),\n SvgEllipse: i18n('provider.svg.ellipse'),\n DrawPanel: i18n('provider.draw.panel')\n\n // 私有类型\n};\n\nexport const displayStrategyFormat = {\n 'none': '不显示',\n 'firstPage': '首页',\n 'lastPage': '尾页',\n 'oddPage': '奇数',\n 'evenPage': '偶数'\n};\n\nexport type displayStrategy = keyof typeof displayStrategyFormat\n\nexport const cellTypeFormat = {\n Head: '表头',\n Body: '表体',\n Statistics: '统计行'\n};\n//统计类型\nexport const statisticsTypeFormat = {\n Sum: '求和',\n Avg: '平均值',\n Count: '计数',\n DistinctCount: '去重计数',\n Max: '最大值',\n Min: '最小值',\n CustomFormula: '自定义公式'\n};\n\nexport type DisplayModel = 'design' | 'preview' | 'print'\nexport type PageUnit = 'px' | 'mm' | 'cm' | 'in'\nexport type FontSizeUnit = 'px' | 'pt'\n\nexport type elementType = keyof typeof elementTypeFormat\nexport type cellType = keyof typeof cellTypeFormat\nexport type statisticsType = keyof typeof statisticsTypeFormat\n\ntype textContentType =\n 'Text'\n | 'Barcode'\n | 'QrCode'\n\n// 节点状态\nexport type elementStatus = 'NONE' | 'SELECT' | 'SELECT_REMOVE' | 'HANDLE' | 'HANDLE_ED' | 'HANDLE_EDIT_ING'\nexport type auxiliaryLineStatus = 'SHOW' | 'HIDDEN'\n\ntype textAlign = 'start' | 'center' | 'end'\n\nexport interface HandlePanel {\n icon: string;\n label: string;\n visible: boolean;\n}\n\nexport interface HandlePanelPosition extends Container {\n right: number;\n}\n\n// export interface DataTableRow {\n// type: 'HEAD' | 'DATA' | 'STATS';\n// columnList: MyElement[];\n// }\n\nexport interface MyElement extends Container {\n contentType?: textContentType;\n field: string;\n enable?: number;\n label?: string;\n data?: any;\n\n option: ElementOption;\n svgOption: ElementSvgOption;\n\n /* data-table - start*/\n columnBody: TableCellElement;\n columnList: TableHeadProviderCellElement[];\n tableHeadList: TableCellElement[][];\n tableBodyList: TableCellElement[][];\n disableCellMap: Record<number, 0 | 1 | undefined>;\n // 数据行合并单元格-预留\n // 统计行\n statisticsList: TableStatisticsCellElement[][];\n /* data-table - end*/\n\n /* custom-table - start*/\n rowList: TableCellElement[][];\n /* custom-table - end*/\n\n // columnOption: ElementSvgOption;\n // bodyOption: ElementSvgOption;\n // previewRuntimeOption: {\n // heightIs: boolean\n // }\n /**\n * 是否锁定\n */\n lock?: number;\n\n /**\n * 是否组合\n */\n groupIs?: boolean;\n}\n\nexport interface TableHeadProviderCellElement extends Rect, Id {\n type: elementType;\n contentType?: textContentType;\n field?: string;\n enable?: number;\n label?: string;\n data?: any;\n\n columnBody: TableCellElement;\n\n option: ElementOption;\n\n rowspan: number;\n colspan: number;\n\n columnList: Array<TableHeadProviderCellElement>;\n}\n\nexport interface TableCellElement extends MyElement {\n rowspan: number;\n colspan: number;\n}\n\nexport interface TableStatisticsCellElement extends TableCellElement {\n statisticsType: statisticsType;\n everyPageStatisticsIs: boolean;\n tableStatisticsIs: boolean;\n\n // 预留值\n customFormula: string;\n}\n\nexport interface TextElement extends MyElement {\n labelOption?: ElementOption;\n contentType: textContentType;\n}\n\n/**\n * 运行时参数,不提交后台\n */\nexport interface RuntimeElementOption extends Position {\n centerX: number;\n centerY: number;\n width: number;\n height: number;\n translate: Point;\n bounds: Position;\n parent?: Container;\n cellParent: TableCellElement;\n target: any;\n rotate: number;\n // 组件实时位置 单位px\n init: Container;\n status: elementStatus;\n auxiliaryLineStatus: auxiliaryLineStatus;\n cutIngIs: boolean;\n\n previewIs: boolean;\n\n /**\n * 工作环境,如果是在表格中,填充满整个cell\n */\n workEnvironment: elementType;\n cellType: cellType;\n\n nestColumnList: TableCellElement[];\n\n // 是否拖拽进入\n dragInIs: boolean;\n\n // 下标\n index: number;\n printRealHeight: number;\n}\n\nexport interface ElementOption {\n barCodeType: string;\n barCodeDisplayValIs: boolean;\n qrCodeScale: number, // 二维码缩放倍数\n qrErrorCorrectionLevel: 'low' | 'medium' | 'quartile' | 'high' | 'L' | 'M' | 'Q' | 'H', // 二维码容错等级\n // aspectRatio: number;\n keepRatio: boolean;\n // 固定位置打印\n fixed: boolean;\n fontFamily: string;\n fontSize: number;\n opacity: number;\n color: string;\n background: 'none';\n bold: boolean;\n underline: boolean;\n lineThrough: boolean;\n italic: boolean;\n borderAll: boolean;\n borderWidth: number;\n borderRadius: number;\n lineWidth: number;\n rotate: number;\n // textType: string;\n textAlign: textAlign;\n verticalAlign: textAlign;\n // 换行\n lineBreak: number;\n lineHeight: number;\n dottedStyle: 'dotted' | 'dashed';\n sort: number;\n hiddenLabel: boolean;\n labelSplit: boolean;\n disableSort: number;\n disableEnable: number;\n autoTextHeight: boolean;\n enable: number;\n padding: Position;\n margin: Position;\n formatter?: string;\n\n // 显示策略\n displayStrategy?: displayStrategy;\n\n tableHeightType: 'FIXED' | 'AUTO';\n\n tableBodyBgStyleType: 'NONE' | 'COMMON' | 'CUSTOM';\n\n tablePageHeadIs: number;\n tableHiddenHeadIs: number;\n\n tableBodyHeightType: 'FIXED' | 'AUTO';\n tableBodyHeight: number;\n}\n\nexport interface ElementSvgOption {\n}\n\nexport interface Position extends Point {\n top: number;\n bottom: number;\n left: number;\n right: number;\n}\n\nexport interface ContentScaleVo {\n viewport: Container;\n miniMap: Container;\n scale: number;\n openIs: boolean;\n width: number;\n height: number;\n}\n\n\nexport interface FormatterVariable {\n pageIndex: number,\n pageSize: number,\n nowDate?: Date\n}\n\nexport type MyHtmlElement = HTMLElement & {\n element: MyElement\n}\n\nexport interface DownList {\n label: string,\n value: any,\n enable?: boolean,\n click?: () => void,\n icon?: string\n}\n"],"names":[],"mappings":";;AAoPO,MAAM,iBAAoB,GAAA;AAAA,EAC7B,KAAA,EAAO,KAAK,gBAAgB,CAAA;AAAA,EAC5B,IAAA,EAAM,KAAK,eAAe,CAAA;AAAA,EAC1B,QAAA,EAAU,KAAK,oBAAoB,CAAA;AAAA,EACnC,KAAA,EAAO,KAAK,gBAAgB,CAAA;AAAA,EAC5B,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAAA,EACrC,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAAA,EACrC,IAAA,EAAM,KAAK,eAAe,CAAA;AAAA,EAC1B,cAAA,EAAgB,KAAK,0BAA0B,CAAA;AAAA,EAC/C,oBAAA,EAAsB,KAAK,iCAAiC,CAAA;AAAA,EAC5D,YAAA,EAAc,KAAK,wBAAwB,CAAA;AAAA,EAC3C,kBAAA,EAAoB,KAAK,+BAA+B,CAAA;AAAA,EACxD,SAAA,EAAW,KAAK,oBAAoB,CAAA;AAAA,EACpC,UAAA,EAAY,KAAK,sBAAsB,CAAA;AAAA,EACvC,UAAA,EAAY,KAAK,sBAAsB,CAAA;AAAA,EACvC,OAAA,EAAS,KAAK,mBAAmB,CAAA;AAAA,EACjC,cAAA,EAAgB,KAAK,2BAA2B,CAAA;AAAA,EAChD,OAAA,EAAS,KAAK,mBAAmB,CAAA;AAAA,EACjC,cAAA,EAAgB,KAAK,2BAA2B,CAAA;AAAA,EAChD,mBAAA,EAAqB,KAAK,iCAAiC,CAAA;AAAA,EAC3D,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAAA,EACrC,UAAA,EAAY,KAAK,sBAAsB,CAAA;AAAA,EACvC,SAAA,EAAW,KAAK,qBAAqB,CAAA;AAGzC,EAAA;AAEO,MAAM,qBAAwB,GAAA;AAAA,EACjC,MAAQ,EAAA,oBAAA;AAAA,EACR,WAAa,EAAA,cAAA;AAAA,EACb,UAAY,EAAA,cAAA;AAAA,EACZ,SAAW,EAAA,cAAA;AAAA,EACX,UAAY,EAAA,cAAA;AAChB,EAAA;AAIO,MAAM,cAAiB,GAAA;AAAA,EAC1B,IAAM,EAAA,cAAA;AAAA,EACN,IAAM,EAAA,cAAA;AAAA,EACN,UAAY,EAAA,oBAAA;AAChB,EAAA;AAEO,MAAM,oBAAuB,GAAA;AAAA,EAChC,GAAK,EAAA,cAAA;AAAA,EACL,GAAK,EAAA,oBAAA;AAAA,EACL,KAAO,EAAA,cAAA;AAAA,EACP,aAAe,EAAA,0BAAA;AAAA,EACf,GAAK,EAAA,oBAAA;AAAA,EACL,GAAK,EAAA,oBAAA;AAAA,EACL,aAAe,EAAA,gCAAA;AACnB;;;;"}