{"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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"}