UNPKG

myprint-design

Version:

操作简单,组件丰富的一站式打印解决方案打印设计器

1 lines 18.8 kB
{"version":3,"file":"print.vue2.mjs","sources":["../../../../../src/components/print/print.vue"],"sourcesContent":["<template>\n <div class=\"my-print-preview-panel__wrap my-print-print_hidden\">\n <div class=\"preview-panel__model\">\n <div class=\"my-print-preview-panel__content\">\n <div v-for=\"(page, index) in data.pageList\"\n ref=\"previewContentRef\"\n :key=\"index\"\n class=\"my-print-preview-panel__content_page preview-page-top\"\n :style=\"{\n width: valueUnit(page.width, data.panel),\n minHeight: valueUnit(page.height, data.panel),\n }\">\n <preview\n v-for=\"(element, index) in page.previewWrapperList\"\n :ref=\"(el) => setItemRef(el, element)\"\n :key=\"index\"\n :preview=\"element\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, reactive, ref } from 'vue-demi';\nimport { MyElement, Panel, PrintOptions, PrintResult } from '@myprint/design/types/entity';\nimport { getCurrentPanelUnit, valueUnit } from '@myprint/design/utils/elementUtil';\nimport Preview from '@myprint/design/components/preview/preview.vue';\nimport { autoPage } from '@myprint/design/components/preview/autoPage';\nimport { chrome2Img, toPdf } from '@myprint/design/utils/pdfUtil';\nimport { unit2px, unit2unit } from '@myprint/design/utils/devicePixelRatio';\nimport { downloadImg, downloadPdf } from '@myprint/design/api/pdfServer';\nimport { getPrintElementHtml, iFramePrint } from '@myprint/design/utils/myprint';\nimport {\n handleClientResult,\n handleTimeOut,\n myPrintClientService,\n printResult\n} from '@myprint/design/plugins/myprintClientService';\n\ndefineExpose({\n handleChromePrint,\n handleClientPrint,\n handleChromeDownloadImg,\n handleServerDownloadImg,\n handleChromeDownloadPdf,\n handleClientDownloadPdf,\n handleServerDownloadPdf\n});\nconst data = reactive({\n dialogVisible: false,\n pageList: [] as any[],\n resolveMap: {},\n previewTimeOutMap: {},\n panel: null! as Panel\n});\nconst previewContentRef = ref<HTMLDivElement[]>()!;\nlet itemRefs = {} as any;\n\nfunction setItemRef(el: any, item: MyElement) {\n itemRefs[item.id] = el;\n}\n\nfunction handleChromePrint(printProps: PrintOptions) {\n return new Promise<PrintResult>(async (resolve, _reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n \n data.panel = printProps.panel as Panel;\n await nextTick();\n await autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList);\n await nextTick();\n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n printArea();\n data.pageList.length = 0;\n printResult(printProps.taskId!, {\n status: 'SUCCESS',\n type: 'CHROME_PRINT'\n }, data.previewTimeOutMap, data.resolveMap);\n });\n}\n\nfunction handleClientPrint(printProps: PrintOptions) {\n return new Promise<PrintResult>(async (resolve, _reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n if (printProps.panel) {\n data.panel = printProps.panel as Panel;\n await nextTick();\n await autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList);\n await nextTick();\n }\n \n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n // let printer = printProps.printer;\n \n if (!myPrintClientService.connectIs()) {\n printResult(printProps.taskId!, {\n status: 'ERROR',\n msg: '客户端未连接',\n type: 'CLIENT_PRINT'\n }, data.previewTimeOutMap, data.resolveMap);\n return;\n }\n \n // if (isEmpty(printer)) {\n // printResult(printProps.taskId!, {\n // status: 'ERROR',\n // msg: '未指定打印机',\n // type: 'CLIENT_PRINT'\n // }, data.previewTimeOutMap, data.resolveMap);\n // return;\n // }\n \n myPrintClientService.print({\n cmd: 'print',\n taskId: printProps.taskId!,\n options: {\n ...printProps,\n title: printProps.title ? printProps.title : (printProps.panel ? (printProps.panel as Panel).name : undefined),\n html: printProps.panel ? getPrintElementHtml(previewContentRef.value!, data.pageList) : undefined,\n file: printProps.file ? printProps.file as string : undefined,\n panel: undefined!,\n previewDataList: undefined!\n }\n }, data.panel).then(clientCmd => {\n handleClientResult(clientCmd, printResult, data.previewTimeOutMap, data.resolveMap);\n });\n });\n}\n\nfunction handleChromeDownloadImg(printProps: PrintOptions) {\n return new Promise<PrintResult>(async (resolve, _reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n \n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n data.panel = printProps.panel as Panel;\n await nextTick();\n await autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList);\n chrome2Img(previewContentRef.value, {\n width: unit2px(data.panel.width, data.panel), height: unit2px(data.panel.height, data.panel)\n }).then(blobList => {\n // 清空内容\n data.pageList = [];\n printResult(printProps.taskId!, {\n status: 'SUCCESS',\n blobList,\n type: 'CHROME_GENERATE_IMG'\n }, data.previewTimeOutMap, data.resolveMap);\n });\n });\n}\n\nfunction handleServerDownloadImg(printProps: PrintOptions) {\n return new Promise<Blob>(async (resolve, reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n \n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n data.panel = printProps.panel as Panel;\n \n await nextTick();\n await autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList);\n const html = getPrintElementHtml(previewContentRef.value!, data.pageList);\n downloadImg({\n content: html,\n height: unit2unit(getCurrentPanelUnit(data.panel), 'mm', data.panel.height),\n width: unit2unit(getCurrentPanelUnit(data.panel), 'mm', data.panel.width)\n }).then(blob => {\n printResult(printProps.taskId!, {\n status: 'SUCCESS',\n blob,\n type: 'SERVER_GENERATE_IMG'\n }, data.previewTimeOutMap, data.resolveMap);\n }).catch(e => {\n reject({\n status: 'SUCCESS',\n msg: e.msg,\n type: 'SERVER_GENERATE_IMG'\n });\n });\n });\n}\n\nfunction handleChromeDownloadPdf(printProps: PrintOptions) {\n return new Promise<PrintResult>(async (resolve, reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n \n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n data.panel = printProps.panel as Panel;\n \n await nextTick();\n await autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList);\n toPdf(previewContentRef.value, {\n width: unit2px(data.panel.width, data.panel), height: unit2px(data.panel.height, data.panel)\n }).then(blob => {\n data.pageList.length = 0;\n printResult(printProps.taskId!, {\n status: 'SUCCESS',\n blob,\n type: 'CHROME_GENERATE_PDF'\n }, data.previewTimeOutMap, data.resolveMap);\n }).catch(e => {\n data.pageList.length = 0;\n reject({\n status: 'ERROR',\n msg: e.msg,\n type: 'CHROME_GENERATE_PDF'\n });\n });\n });\n}\n\nfunction handleClientDownloadPdf(printProps: PrintOptions) {\n return new Promise<PrintResult>(async (resolve, reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n \n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n data.panel = printProps.panel as Panel;\n \n await nextTick();\n await autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList);\n \n myPrintClientService.print({\n options: { html: getPrintElementHtml(previewContentRef.value!, data.pageList) },\n cmd: 'generatePdf',\n taskId: printProps.taskId!\n }, data.panel).then(res => {\n handleClientResult(res, printResult, data.previewTimeOutMap, data.resolveMap);\n }).catch(e => {\n reject({\n status: 'ERROR',\n msg: e.msg,\n type: 'CLIENT_GENERATE_PDF'\n });\n });\n });\n}\n\nfunction handleServerDownloadPdf(printProps: PrintOptions) {\n return new Promise<PrintResult>(async (resolve, reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n \n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n data.panel = printProps.panel as Panel;\n \n await nextTick();\n await autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList);\n const html = getPrintElementHtml(previewContentRef.value!, data.pageList);\n downloadPdf({\n content: html,\n height: unit2unit(getCurrentPanelUnit(data.panel), 'mm', data.panel.height),\n width: unit2unit(getCurrentPanelUnit(data.panel), 'mm', data.panel.width)\n }).then(blob => {\n printResult(printProps.taskId!, {\n status: 'SUCCESS',\n blob: blob,\n type: 'SERVER_GENERATE_PDF'\n }, data.previewTimeOutMap, data.resolveMap);\n }).catch(e => {\n reject({\n status: 'ERROR',\n msg: e.msg,\n type: 'SERVER_GENERATE_PDF'\n });\n });\n });\n}\n\nfunction printArea() {\n const html = getPrintElementHtml(previewContentRef.value!, data.pageList);\n iFramePrint(data.panel, html);\n}\n\n</script>\n"],"names":[],"mappings":"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"}