label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 12.3 kB
Source Map (JSON)
{"version":3,"file":"preview-panel.vue2.mjs","sources":["../../../../../src/components/preview/preview-panel.vue"],"sourcesContent":["<template>\n <my-dialog\n v-model=\"data.dialogVisible\"\n class=\"preview-dialog\"\n fullscreen\n :showHeader=\"false\"\n @close=\"closePreviewPanel\">\n <div class=\"preview-panel\">\n <my-scrollbar height=\"100%\" class=\"preview-panel__scrollbar\"\n :style=\"{minWidth: valueUnit(panel.width, panel)}\">\n <div class=\"my-print-preview-panel__wrap\">\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, panel),\n minHeight: valueUnit(page.height, 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 </my-scrollbar>\n <div class=\"preview-panel__tool display-flex-column display-flex-wrap\">\n <div>名称:{{ panel.name }}</div>\n<!-- <div>打印份数:测试</div>-->\n <template v-if=\"MyPrinter.clientConnectIs()\">\n <div>{{ i18n('toolbar.printer') }}:\n <my-select v-model=\"data.printer\" placeholder=\"请选择\" size=\"middle\"\n :data-list=\"printList\" />\n </div>\n <my-button style=\"margin-top: 40px\" :disabled=\"!data.printer\" @click=\"print\">{{\n i18n('toolbar.print')\n }}\n </my-button>\n </template>\n <div v-else>客户端未连接,无法使用直接打印功能,去下载</div>\n \n <my-button class=\"preview-panel__tool_button\" @click=\"printChromePdf\">{{ i18n('toolbar.chrome.print')\n }}\n </my-button>\n <my-button class=\"preview-panel__tool_button\" @click=\"downloadPdf\">{{ i18n('preview.download.pdf') }}\n </my-button>\n <my-button class=\"preview-panel__tool_button\" @click=\"()=>data.dialogVisible = false\">\n {{ i18n('common.close') }}\n </my-button>\n </div>\n </div>\n \n </my-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, reactive, ref } from 'vue-demi';\nimport { toPdf } from '@myprint/design/utils/pdfUtil';\nimport { download } from '@myprint/design/utils/utils';\nimport { unit2px } from '@myprint/design/utils/devicePixelRatio';\nimport Preview from './preview.vue';\nimport { MyElement, Panel, PrintOptions, PrintResult } from '@myprint/design/types/entity';\nimport { i18n } from '@myprint/design/locales';\nimport { valueUnit } from '@myprint/design/utils/elementUtil';\nimport { useConfigStore } from '@myprint/design/stores/config';\nimport { autoPage } from './autoPage';\nimport MyScrollbar from '@myprint/design/components/my/scrollbar/my-scrollbar.vue';\nimport MyButton from '@myprint/design/components/my/button/my-Button.vue';\nimport MyDialog from '@myprint/design/components/my/dialog/my-dialog.vue';\nimport MySelect from '@myprint/design/components/my/select/my-select.vue';\nimport { getPrintElementHtml, iFramePrint } from '@myprint/design/utils/myprint';\nimport {\n handleClientResult,\n handleTimeOut,\n myPrintClientService,\n printResult\n} from '@myprint/design/plugins/myprintClientService';\nimport { MyPrinter } from '@myprint/design/printer';\n\ndefineExpose({ handleChromePreview });\n\nconst configStore = useConfigStore();\nconst data = reactive({\n dialogVisible: false,\n printer: configStore.defaultPrinter,\n pageList: [] as any,\n resolveMap: {},\n previewTimeOutMap: {},\n taskId: null as any\n});\nconst previewContentRef = ref<HTMLDivElement[]>()!;\nconst panel = ref({} as Panel);\nlet itemRefs = {} as any;\n\nconst printList = computed(() => {\n return MyPrinter.getPrinterList().map(res => {\n return {\n label: res.name,\n value: res.name\n };\n });\n});\n\nfunction print() {\n myPrintClientService.print({\n options: {\n title: (panel.value ? (panel.value as Panel).name : undefined),\n html: getPrintElementHtml(previewContentRef.value!, []),\n printer: data.printer\n },\n cmd: 'print',\n taskId: data.taskId\n }, panel.value)\n .then(res => {\n handleClientResult(res, printResult, data.previewTimeOutMap, data.resolveMap);\n })\n .catch(e => {\n printResult(data.taskId, {\n status: 'ERROR',\n msg: e.msg,\n type: 'CLIENT_PRINT'\n }, data.previewTimeOutMap, data.resolveMap);\n });\n}\n\nfunction downloadPdf() {\n if (MyPrinter.clientConnectIs()) {\n myPrintClientService.print({\n options: { html: getPrintElementHtml(previewContentRef.value!, []) },\n cmd: 'generatePdf',\n taskId: data.taskId\n }, panel.value).then(res => {\n const blob = handleClientResult(res, printResult, data.previewTimeOutMap, data.resolveMap);\n if (blob) {\n download(blob, panel.value.name + '.pdf');\n }\n }).catch(e => {\n printResult(data.taskId, {\n status: 'ERROR',\n msg: e.msg,\n type: 'CLIENT_GENERATE_PDF'\n }, data.previewTimeOutMap, data.resolveMap);\n });\n } else {\n toPdf(previewContentRef.value, {\n width: unit2px(panel.value.width, panel.value), height: unit2px(panel.value.height, panel.value)\n }).then(blob => {\n download(blob, panel.value.name + '.pdf');\n printResult(data.taskId, {\n status: 'SUCCESS',\n msg: '',\n type: 'CHROME_GENERATE_PDF'\n }, data.previewTimeOutMap, data.resolveMap);\n }).catch(e => {\n printResult(data.taskId, {\n status: 'ERROR',\n msg: e.msg,\n type: 'CHROME_GENERATE_PDF'\n }, data.previewTimeOutMap, data.resolveMap);\n });\n }\n}\n\nfunction printChromePdf() {\n iFramePrint(panel.value, getPrintElementHtml(previewContentRef.value!, []));\n printResult(data.taskId, {\n status: 'SUCCESS',\n type: 'CHROME_PRINT'\n }, data.previewTimeOutMap, data.resolveMap);\n}\n\nfunction setItemRef(el: any, item: MyElement) {\n itemRefs[item.id] = el;\n}\n\nfunction handleChromePreview(printProps: PrintOptions) {\n data.dialogVisible = true;\n panel.value = printProps.panel as Panel;\n data.taskId = printProps.taskId;\n \n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n \n return new Promise<PrintResult>((resolve, _reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n autoPage(previewContentRef, data.pageList, panel.value, printProps.previewDataList);\n });\n}\n\nfunction closePreviewPanel() {\n data.pageList = [];\n \n printResult(data.taskId, {\n status: 'CLOSE',\n type: 'CLOSE'\n }, data.previewTimeOutMap, data.resolveMap);\n}\n</script>\n"],"names":[],"mappings":"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"}