print-design-myprint 1.0.21 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('pinia'), require('vue-cropper/dist/index.css'), require('/Users/miro/Desktop/project/myprint/packages/design/src/components/design/image/image.vue?vue&type=style&index=0&scoped=923ed041&lang.css'), require('vue3-colorpicker/style.css')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'vue', 'pinia', 'vue-cropper/dist/index.css', '/Users/miro/Desktop/project/myprint/packages/design/src/components/design/image/image.vue?vue&type=style&index=0&scoped=923ed041&lang.css', 'vue3-colorpicker/style.css'], factory) :
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('pinia'), require('vue-cropper/dist/index.css'), require('/Users/miro/Desktop/project/myprint/packages/design/src/components/design/image/image.vue?vue&type=style&index=0&scoped=923ed041&lang.css'), require('/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=0&scoped=db6b136a&lang.css'), require('/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=1&lang.css'), require('vue3-colorpicker/style.css')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'vue', 'pinia', 'vue-cropper/dist/index.css', '/Users/miro/Desktop/project/myprint/packages/design/src/components/design/image/image.vue?vue&type=style&index=0&scoped=923ed041&lang.css', '/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=0&scoped=db6b136a&lang.css', '/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=1&lang.css', 'vue3-colorpicker/style.css'], factory) :
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.MyPrinterDesign = {}, global.Vue, global.pinia));
5
5
  })(this, (function (exports, vue, pinia) { 'use strict';
6
6
 
@@ -34716,10 +34716,13 @@
34716
34716
  mitt.emit("changeElement");
34717
34717
  }
34718
34718
  function valueUnit(value, panel) {
34719
+ var _a;
34719
34720
  if (value == null || Number.isNaN(value)) {
34720
34721
  return void 0;
34721
34722
  }
34722
- return value + getCurrentPanel(panel).pageUnit;
34723
+ const p = getCurrentPanel(panel);
34724
+ const unit = (_a = p == null ? void 0 : p.pageUnit) != null ? _a : "mm";
34725
+ return `${value}${unit}`;
34723
34726
  }
34724
34727
  const BORDER_RECT_LIKE_TYPES = /* @__PURE__ */ new Set(["Rect", "Container", "PageHeader", "PageFooter"]);
34725
34728
  function ensureElementBorderDefaults(element) {
@@ -84421,9 +84424,16 @@
84421
84424
  let designPanelSnapshot = null;
84422
84425
  let itemRefs = {};
84423
84426
  function pageStyle(page) {
84427
+ var _a, _b, _c, _d, _e, _f, _g;
84428
+ const p = panel.value;
84429
+ const wNum = (_b = (_a = page.width) != null ? _a : p == null ? void 0 : p.width) != null ? _b : 210;
84430
+ const hNum = (_d = (_c = page.height) != null ? _c : p == null ? void 0 : p.height) != null ? _d : 297;
84431
+ const unit = (_e = p == null ? void 0 : p.pageUnit) != null ? _e : "mm";
84432
+ const w = (_f = valueUnit(wNum, p)) != null ? _f : `${wNum}${unit}`;
84433
+ const h = (_g = valueUnit(hNum, p)) != null ? _g : `${hNum}${unit}`;
84424
84434
  return {
84425
- width: valueUnit(page.width, panel.value),
84426
- minHeight: valueUnit(page.height, panel.value)
84435
+ width: w,
84436
+ minHeight: h
84427
84437
  };
84428
84438
  }
84429
84439
  function syncDesignTextDataFromDom(source) {
@@ -84813,7 +84823,7 @@
84813
84823
  }
84814
84824
  });
84815
84825
 
84816
- var previewPanelView = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__file", "preview-panel.vue"]]);
84826
+ var previewPanelView = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-db6b136a"], ["__file", "preview-panel.vue"]]);
84817
84827
 
84818
84828
  let previewNode = null;
84819
84829
  let handleChromePreview = null;
@@ -94925,7 +94935,7 @@ ${$$g(r2)}`), n2;
94925
94935
  }
94926
94936
  }
94927
94937
 
94928
- const version$1 = "1.0.21";
94938
+ const version$1 = "1.0.23";
94929
94939
 
94930
94940
  function isDataTableWidget(d) {
94931
94941
  return d.type === "DataTable";
@@ -2,6 +2,8 @@ import { defineComponent, h as h$5, getCurrentInstance as getCurrentInstance$1,
2
2
  import { defineStore, createPinia } from 'pinia';
3
3
  import 'vue-cropper/dist/index.css';
4
4
  import '/Users/miro/Desktop/project/myprint/packages/design/src/components/design/image/image.vue?vue&type=style&index=0&scoped=923ed041&lang.css';
5
+ import '/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=0&scoped=db6b136a&lang.css';
6
+ import '/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=1&lang.css';
5
7
  import 'vue3-colorpicker/style.css';
6
8
 
7
9
  const MathCalc = {
@@ -34716,10 +34718,13 @@ function setCurrentElement(element) {
34716
34718
  mitt.emit("changeElement");
34717
34719
  }
34718
34720
  function valueUnit(value, panel) {
34721
+ var _a;
34719
34722
  if (value == null || Number.isNaN(value)) {
34720
34723
  return void 0;
34721
34724
  }
34722
- return value + getCurrentPanel(panel).pageUnit;
34725
+ const p = getCurrentPanel(panel);
34726
+ const unit = (_a = p == null ? void 0 : p.pageUnit) != null ? _a : "mm";
34727
+ return `${value}${unit}`;
34723
34728
  }
34724
34729
  const BORDER_RECT_LIKE_TYPES = /* @__PURE__ */ new Set(["Rect", "Container", "PageHeader", "PageFooter"]);
34725
34730
  function ensureElementBorderDefaults(element) {
@@ -84421,9 +84426,16 @@ var _sfc_main$a = /* @__PURE__ */ defineComponent({
84421
84426
  let designPanelSnapshot = null;
84422
84427
  let itemRefs = {};
84423
84428
  function pageStyle(page) {
84429
+ var _a, _b, _c, _d, _e, _f, _g;
84430
+ const p = panel.value;
84431
+ const wNum = (_b = (_a = page.width) != null ? _a : p == null ? void 0 : p.width) != null ? _b : 210;
84432
+ const hNum = (_d = (_c = page.height) != null ? _c : p == null ? void 0 : p.height) != null ? _d : 297;
84433
+ const unit = (_e = p == null ? void 0 : p.pageUnit) != null ? _e : "mm";
84434
+ const w = (_f = valueUnit(wNum, p)) != null ? _f : `${wNum}${unit}`;
84435
+ const h = (_g = valueUnit(hNum, p)) != null ? _g : `${hNum}${unit}`;
84424
84436
  return {
84425
- width: valueUnit(page.width, panel.value),
84426
- minHeight: valueUnit(page.height, panel.value)
84437
+ width: w,
84438
+ minHeight: h
84427
84439
  };
84428
84440
  }
84429
84441
  function syncDesignTextDataFromDom(source) {
@@ -84813,7 +84825,7 @@ var _sfc_main$a = /* @__PURE__ */ defineComponent({
84813
84825
  }
84814
84826
  });
84815
84827
 
84816
- var previewPanelView = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__file", "preview-panel.vue"]]);
84828
+ var previewPanelView = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-db6b136a"], ["__file", "preview-panel.vue"]]);
84817
84829
 
84818
84830
  let previewNode = null;
84819
84831
  let handleChromePreview = null;
@@ -94925,7 +94937,7 @@ function mountDesign(app, props, element) {
94925
94937
  }
94926
94938
  }
94927
94939
 
94928
- const version$1 = "1.0.21";
94940
+ const version$1 = "1.0.23";
94929
94941
 
94930
94942
  function isDataTableWidget(d) {
94931
94943
  return d.type === "DataTable";
@@ -1,7 +1,9 @@
1
1
  import _sfc_main from './preview-panel.vue2.mjs';
2
+ import '/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=0&scoped=d2112c84&lang.css';
3
+ import '/Users/miro/Desktop/project/myprint/packages/design/src/components/preview/preview-panel.vue?vue&type=style&index=1&lang.css';
2
4
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.mjs';
3
5
 
4
- var previewPanelView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "preview-panel.vue"]]);
6
+ var previewPanelView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d2112c84"], ["__file", "preview-panel.vue"]]);
5
7
 
6
8
  export { previewPanelView as default };
7
9
  //# sourceMappingURL=preview-panel.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview-panel.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"preview-panel.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -66,9 +66,15 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
66
66
  let designPanelSnapshot = null;
67
67
  let itemRefs = {};
68
68
  function pageStyle(page) {
69
+ const p = panel.value;
70
+ const wNum = page.width ?? p?.width ?? 210;
71
+ const hNum = page.height ?? p?.height ?? 297;
72
+ const unit = p?.pageUnit ?? "mm";
73
+ const w = valueUnit(wNum, p) ?? `${wNum}${unit}`;
74
+ const h = valueUnit(hNum, p) ?? `${hNum}${unit}`;
69
75
  return {
70
- width: valueUnit(page.width, panel.value),
71
- minHeight: valueUnit(page.height, panel.value)
76
+ width: w,
77
+ minHeight: h
72
78
  };
73
79
  }
74
80
  function syncDesignTextDataFromDom(source) {
@@ -1 +1 @@
1
- {"version":3,"file":"preview-panel.vue2.mjs","sources":["../../../../../src/components/preview/preview-panel.vue"],"sourcesContent":["<template>\n <div\n v-if=\"data.measuring\"\n class=\"my-print-print_hidden\"\n aria-hidden=\"true\">\n <div class=\"my-print-preview-panel__wrap\">\n <div class=\"my-print-preview-panel__content\">\n <div\n v-for=\"(page, index) in data.pageList\"\n :key=\"'measure-' + (page.id ?? index)\"\n ref=\"previewContentRef\"\n class=\"my-print-preview-panel__content_page preview-page-top\"\n :style=\"pageStyle(page)\">\n <preview\n v-for=\"(element, elIndex) in (page.previewWrapperList ?? [])\"\n :key=\"element.id ?? elIndex\"\n :preview=\"element\"\n :page-panel=\"resolvedPagePanel\" />\n </div>\n </div>\n </div>\n </div>\n\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\n v-if=\"!data.measuring\"\n ref=\"scrollbarRef\"\n height=\"100%\"\n 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\n v-for=\"(page, index) in data.pageList\"\n :key=\"page.id ?? index\"\n ref=\"previewContentRef\"\n class=\"my-print-preview-panel__content_page preview-page-top\"\n :style=\"pageStyle(page)\">\n <preview\n v-for=\"(element, elIndex) in (page.previewWrapperList ?? [])\"\n :ref=\"(el) => setItemRef(el, element)\"\n :key=\"element.id ?? elIndex\"\n :preview=\"element\"\n :page-panel=\"resolvedPagePanel\" />\n </div>\n </div>\n </div>\n </div>\n </my-scrollbar>\n <div v-else class=\"preview-panel__scrollbar preview-panel__measuring\">\n 正在生成预览…\n </div>\n <div class=\"preview-panel__tool display-flex-column display-flex-wrap\">\n <div>名称:{{ panel.name }}</div>\n <template v-if=\"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 </my-button>\n </template>\n <div v-else>客户端未连接,无法使用直接打印功能,去下载</div>\n\n <my-button class=\"preview-panel__tool_button\" @click=\"printChromePdf\">\n {{ i18n('toolbar.chrome.print') }}\n </my-button>\n <my-button class=\"preview-panel__tool_button\" @click=\"downloadPdf\">\n {{ 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 </my-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, provide, reactive, ref } from 'vue-demi';\nimport { resetMoveableSelection, syncPiniaSelectionFromMoveable, updateMoveableRect } from '@myprint/design/plugins/moveable/moveable';\nimport { registerPreviewPanel } from '@myprint/design/preview';\nimport { toPdf } from '@myprint/design/utils/pdfUtil';\nimport { br2n, download } from '@myprint/design/utils/utils';\nimport { unit2px } from '@myprint/design/utils/devicePixelRatio';\nimport Preview from './preview.vue';\nimport { MyElement, Panel, PreviewContainerWrapper, PrintOptions, PrintResult } from '@myprint/design/types/entity';\nimport { i18n } from '@myprint/design/locales';\nimport {\n clearPanelPreviewRuntimeFlags,\n clonePanelForPreview,\n getCurrentPanel,\n normalizePanelElementsInitRotate,\n PREVIEW_PANEL_KEY,\n rebindPanelElementDomTargets,\n syncPanelLayoutForPrint,\n valueUnit\n} from '@myprint/design/utils/elementUtil';\nimport { mitt } from '@myprint/design/utils/utils';\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';\n\ndefineExpose({ handleChromePreview });\n\nonMounted(() => {\n registerPreviewPanel(handleChromePreview);\n});\n\nonUnmounted(() => {\n registerPreviewPanel(null);\n});\n\nconst clientConnectIs = computed(() => myPrintClientService.connectIs());\n\nconst configStore = useConfigStore();\nconst data = reactive({\n dialogVisible: false,\n measuring: false,\n printer: configStore.defaultPrinter,\n pageList: [] as PreviewContainerWrapper[],\n resolveMap: {} as Record<string, (r: PrintResult) => void>,\n previewTimeOutMap: {} as Record<string, ReturnType<typeof setTimeout>>,\n taskId: null as string | null\n});\n\nconst previewContentRef = ref<HTMLDivElement[]>();\nconst scrollbarRef = ref<{ ps?: { update?: () => void } }>();\nconst panel = ref({} as Panel);\nconst resolvedPagePanel = computed(() => {\n const v = panel.value;\n return v?.pageUnit != null ? v : undefined;\n});\nprovide(PREVIEW_PANEL_KEY, panel);\n/** 打开预览时的设计器画布 panel,仅用于结束后恢复状态 */\nlet designPanelSnapshot: Panel | null = null;\nlet itemRefs = {} as Record<string, unknown>;\n\nfunction pageStyle(page: PreviewContainerWrapper) {\n return {\n width: valueUnit(page.width, panel.value),\n minHeight: valueUnit(page.height, panel.value)\n };\n}\n\n/** 打开预览前把画布上未写入 data 的文本同步到元素(避免仅 DOM 有字、预览 data 为空) */\nfunction syncDesignTextDataFromDom(source: Panel) {\n const walk = (el?: MyElement) => {\n if (el == null) {\n return;\n }\n if (\n (el.type === 'Text' || el.type === 'TextTime' || el.type === 'PageNum')\n && el.contentType !== 'QrCode'\n && el.contentType !== 'Barcode'\n && (el.data == null || el.data === '')\n ) {\n const root = el.runtimeOption?.target as HTMLElement | undefined;\n const inner = root?.querySelector?.('.my-print-text_container') as HTMLElement | null;\n const html = inner?.innerHTML;\n if (html) {\n el.data = br2n(html);\n }\n }\n el.elementList?.forEach(walk);\n };\n source.elementList?.forEach(walk);\n walk(source.pageHeader);\n walk(source.pageFooter);\n}\n\nconst printList = computed(() => {\n const list = myPrintClientService.getPrinterList() ?? [];\n return list.map(res => ({\n label: res.name,\n value: res.name\n }));\n});\n\nfunction print() {\n myPrintClientService.print({\n options: {\n title: panel.value?.name,\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 (myPrintClientService.connectIs()) {\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),\n 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: unknown, item: MyElement) {\n if (el) {\n itemRefs[item.id] = el;\n }\n}\n\nfunction handleChromePreview(printProps: PrintOptions) {\n data.pageList = [];\n data.measuring = true;\n data.dialogVisible = true;\n designPanelSnapshot = (printProps.panel ?? getCurrentPanel()) as Panel;\n syncDesignTextDataFromDom(designPanelSnapshot);\n syncPanelLayoutForPrint(designPanelSnapshot);\n panel.value = clonePanelForPreview(designPanelSnapshot);\n if (panel.value.pageUnit == null) {\n panel.value.pageUnit = designPanelSnapshot.pageUnit ?? 'mm';\n }\n data.taskId = printProps.taskId ?? null;\n\n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n\n return new Promise<PrintResult>((resolve, reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n (async () => {\n await nextTick();\n await autoPage(\n previewContentRef,\n data.pageList,\n panel.value,\n printProps.previewDataList\n );\n data.measuring = false;\n await nextTick();\n scrollbarRef.value?.ps?.update?.();\n })().catch((e) => {\n data.measuring = false;\n console.error('[MyPrint] 预览失败', e);\n printResult(printProps.taskId!, {\n status: 'ERROR',\n msg: e?.message ?? String(e),\n type: 'TIMEOUT'\n }, data.previewTimeOutMap, data.resolveMap);\n reject(e);\n });\n });\n}\n\nfunction closePreviewPanel() {\n data.pageList = [];\n data.measuring = false;\n const canvasPanel = designPanelSnapshot;\n if (canvasPanel) {\n clearPanelPreviewRuntimeFlags(canvasPanel);\n designPanelSnapshot = null;\n }\n panel.value = {} as Panel;\n itemRefs = {};\n\n resetMoveableSelection();\n\n nextTick(() => {\n nextTick(() => {\n if (canvasPanel) {\n normalizePanelElementsInitRotate(canvasPanel);\n rebindPanelElementDomTargets(canvasPanel);\n }\n mitt.emit('updatePanel');\n mitt.emit('changePageSize');\n updateMoveableRect();\n syncPiniaSelectionFromMoveable();\n });\n });\n\n printResult(data.taskId!, {\n status: 'CLOSE',\n type: 'CLOSE'\n }, data.previewTimeOutMap, data.resolveMap);\n}\n</script>\n"],"names":["_unref","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_normalizeStyle","_createBlock","_createVNode","_toDisplayString","_createTextVNode"],"mappings":"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"}
1
+ {"version":3,"file":"preview-panel.vue2.mjs","sources":["../../../../../src/components/preview/preview-panel.vue"],"sourcesContent":["<template>\n <div\n v-if=\"data.measuring\"\n class=\"my-print-print_hidden\"\n aria-hidden=\"true\">\n <div class=\"my-print-preview-panel__wrap\">\n <div class=\"my-print-preview-panel__content\">\n <div\n v-for=\"(page, index) in data.pageList\"\n :key=\"'measure-' + (page.id ?? index)\"\n ref=\"previewContentRef\"\n class=\"my-print-preview-panel__content_page preview-page-top\"\n :style=\"pageStyle(page)\">\n <preview\n v-for=\"(element, elIndex) in (page.previewWrapperList ?? [])\"\n :key=\"element.id ?? elIndex\"\n :preview=\"element\"\n :page-panel=\"resolvedPagePanel\" />\n </div>\n </div>\n </div>\n </div>\n\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\n v-if=\"!data.measuring\"\n ref=\"scrollbarRef\"\n height=\"100%\"\n 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\n v-for=\"(page, index) in data.pageList\"\n :key=\"page.id ?? index\"\n ref=\"previewContentRef\"\n class=\"my-print-preview-panel__content_page preview-page-top\"\n :style=\"pageStyle(page)\">\n <preview\n v-for=\"(element, elIndex) in (page.previewWrapperList ?? [])\"\n :ref=\"(el) => setItemRef(el, element)\"\n :key=\"element.id ?? elIndex\"\n :preview=\"element\"\n :page-panel=\"resolvedPagePanel\" />\n </div>\n </div>\n </div>\n </div>\n </my-scrollbar>\n <div v-else class=\"preview-panel__scrollbar preview-panel__measuring\">\n 正在生成预览…\n </div>\n <div class=\"preview-panel__tool display-flex-column display-flex-wrap\">\n <div>名称:{{ panel.name }}</div>\n <template v-if=\"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 </my-button>\n </template>\n <div v-else>客户端未连接,无法使用直接打印功能,去下载</div>\n\n <my-button class=\"preview-panel__tool_button\" @click=\"printChromePdf\">\n {{ i18n('toolbar.chrome.print') }}\n </my-button>\n <my-button class=\"preview-panel__tool_button\" @click=\"downloadPdf\">\n {{ 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 </my-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, provide, reactive, ref } from 'vue-demi';\nimport { resetMoveableSelection, syncPiniaSelectionFromMoveable, updateMoveableRect } from '@myprint/design/plugins/moveable/moveable';\nimport { registerPreviewPanel } from '@myprint/design/preview';\nimport { toPdf } from '@myprint/design/utils/pdfUtil';\nimport { br2n, download } from '@myprint/design/utils/utils';\nimport { unit2px } from '@myprint/design/utils/devicePixelRatio';\nimport Preview from './preview.vue';\nimport { MyElement, Panel, PreviewContainerWrapper, PrintOptions, PrintResult } from '@myprint/design/types/entity';\nimport { i18n } from '@myprint/design/locales';\nimport {\n clearPanelPreviewRuntimeFlags,\n clonePanelForPreview,\n getCurrentPanel,\n normalizePanelElementsInitRotate,\n PREVIEW_PANEL_KEY,\n rebindPanelElementDomTargets,\n syncPanelLayoutForPrint,\n valueUnit\n} from '@myprint/design/utils/elementUtil';\nimport { mitt } from '@myprint/design/utils/utils';\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';\n\ndefineExpose({ handleChromePreview });\n\nonMounted(() => {\n registerPreviewPanel(handleChromePreview);\n});\n\nonUnmounted(() => {\n registerPreviewPanel(null);\n});\n\nconst clientConnectIs = computed(() => myPrintClientService.connectIs());\n\nconst configStore = useConfigStore();\nconst data = reactive({\n dialogVisible: false,\n measuring: false,\n printer: configStore.defaultPrinter,\n pageList: [] as PreviewContainerWrapper[],\n resolveMap: {} as Record<string, (r: PrintResult) => void>,\n previewTimeOutMap: {} as Record<string, ReturnType<typeof setTimeout>>,\n taskId: null as string | null\n});\n\nconst previewContentRef = ref<HTMLDivElement[]>();\nconst scrollbarRef = ref<{ ps?: { update?: () => void } }>();\nconst panel = ref({} as Panel);\nconst resolvedPagePanel = computed(() => {\n const v = panel.value;\n return v?.pageUnit != null ? v : undefined;\n});\nprovide(PREVIEW_PANEL_KEY, panel);\n/** 打开预览时的设计器画布 panel,仅用于结束后恢复状态 */\nlet designPanelSnapshot: Panel | null = null;\nlet itemRefs = {} as Record<string, unknown>;\n\nfunction pageStyle(page: PreviewContainerWrapper) {\n const p = panel.value;\n const wNum = page.width ?? p?.width ?? 210;\n const hNum = page.height ?? p?.height ?? 297;\n const unit = (p?.pageUnit as string | undefined) ?? 'mm';\n const w = valueUnit(wNum, p) ?? `${wNum}${unit}`;\n const h = valueUnit(hNum, p) ?? `${hNum}${unit}`;\n return {\n width: w,\n minHeight: h\n };\n}\n\n/** 打开预览前把画布上未写入 data 的文本同步到元素(避免仅 DOM 有字、预览 data 为空) */\nfunction syncDesignTextDataFromDom(source: Panel) {\n const walk = (el?: MyElement) => {\n if (el == null) {\n return;\n }\n if (\n (el.type === 'Text' || el.type === 'TextTime' || el.type === 'PageNum')\n && el.contentType !== 'QrCode'\n && el.contentType !== 'Barcode'\n && (el.data == null || el.data === '')\n ) {\n const root = el.runtimeOption?.target as HTMLElement | undefined;\n const inner = root?.querySelector?.('.my-print-text_container') as HTMLElement | null;\n const html = inner?.innerHTML;\n if (html) {\n el.data = br2n(html);\n }\n }\n el.elementList?.forEach(walk);\n };\n source.elementList?.forEach(walk);\n walk(source.pageHeader);\n walk(source.pageFooter);\n}\n\nconst printList = computed(() => {\n const list = myPrintClientService.getPrinterList() ?? [];\n return list.map(res => ({\n label: res.name,\n value: res.name\n }));\n});\n\nfunction print() {\n myPrintClientService.print({\n options: {\n title: panel.value?.name,\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 (myPrintClientService.connectIs()) {\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),\n 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: unknown, item: MyElement) {\n if (el) {\n itemRefs[item.id] = el;\n }\n}\n\nfunction handleChromePreview(printProps: PrintOptions) {\n data.pageList = [];\n data.measuring = true;\n data.dialogVisible = true;\n designPanelSnapshot = (printProps.panel ?? getCurrentPanel()) as Panel;\n syncDesignTextDataFromDom(designPanelSnapshot);\n syncPanelLayoutForPrint(designPanelSnapshot);\n panel.value = clonePanelForPreview(designPanelSnapshot);\n if (panel.value.pageUnit == null) {\n panel.value.pageUnit = designPanelSnapshot.pageUnit ?? 'mm';\n }\n data.taskId = printProps.taskId ?? null;\n\n handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);\n\n return new Promise<PrintResult>((resolve, reject) => {\n data.resolveMap[printProps.taskId!] = resolve;\n (async () => {\n await nextTick();\n await autoPage(\n previewContentRef,\n data.pageList,\n panel.value,\n printProps.previewDataList\n );\n data.measuring = false;\n await nextTick();\n scrollbarRef.value?.ps?.update?.();\n })().catch((e) => {\n data.measuring = false;\n console.error('[MyPrint] 预览失败', e);\n printResult(printProps.taskId!, {\n status: 'ERROR',\n msg: e?.message ?? String(e),\n type: 'TIMEOUT'\n }, data.previewTimeOutMap, data.resolveMap);\n reject(e);\n });\n });\n}\n\nfunction closePreviewPanel() {\n data.pageList = [];\n data.measuring = false;\n const canvasPanel = designPanelSnapshot;\n if (canvasPanel) {\n clearPanelPreviewRuntimeFlags(canvasPanel);\n designPanelSnapshot = null;\n }\n panel.value = {} as Panel;\n itemRefs = {};\n\n resetMoveableSelection();\n\n nextTick(() => {\n nextTick(() => {\n if (canvasPanel) {\n normalizePanelElementsInitRotate(canvasPanel);\n rebindPanelElementDomTargets(canvasPanel);\n }\n mitt.emit('updatePanel');\n mitt.emit('changePageSize');\n updateMoveableRect();\n syncPiniaSelectionFromMoveable();\n });\n });\n\n printResult(data.taskId!, {\n status: 'CLOSE',\n type: 'CLOSE'\n }, data.previewTimeOutMap, data.resolveMap);\n}\n</script>\n\n<!-- 布局兜底:Teleport 全屏弹层依赖 my-dialog / preview 的 SCSS;npm 集成常未引入 design 样式表,导致 flex 居中 + 无尺寸子项塌成 0×0 -->\n<style scoped>\n.preview-panel {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: row;\n position: relative;\n}\n</style>\n<style>\n.preview-dialog.my-dialog .my-dialog_wrapper {\n align-items: stretch;\n justify-content: stretch;\n}\n.preview-dialog.my-dialog .my-dialog_wrapper .my-dialog_content.is-fullscreen {\n width: 100% !important;\n height: 100% !important;\n min-height: 100vh !important;\n max-height: 100vh !important;\n padding: 0 !important;\n box-sizing: border-box !important;\n display: flex !important;\n flex-direction: column !important;\n flex: 1;\n min-height: 0;\n}\n.preview-dialog.my-dialog .my-dialog_content.is-fullscreen > .preview-panel {\n flex: 1 1 auto;\n min-height: 0;\n width: 100%;\n height: 100%;\n}\n.preview-dialog.my-dialog .preview-panel__scrollbar {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n height: 100% !important;\n}\n.preview-dialog.my-dialog .my-print-preview-panel__wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n min-height: 0;\n}\n.preview-dialog.my-dialog .my-print-preview-panel__content {\n position: relative;\n display: block;\n width: max-content;\n max-width: 100%;\n box-sizing: border-box;\n min-width: 1px;\n min-height: 1px;\n}\n</style>\n"],"names":["_unref","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_normalizeStyle","_createBlock","_createVNode","_toDisplayString","_createTextVNode"],"mappings":"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"}
@@ -503,7 +503,9 @@ function valueUnit(value, panel) {
503
503
  if (value == null || Number.isNaN(value)) {
504
504
  return void 0;
505
505
  }
506
- return value + getCurrentPanel(panel).pageUnit;
506
+ const p = getCurrentPanel(panel);
507
+ const unit = p?.pageUnit ?? "mm";
508
+ return `${value}${unit}`;
507
509
  }
508
510
  const BORDER_RECT_LIKE_TYPES = /* @__PURE__ */ new Set(["Rect", "Container", "PageHeader", "PageFooter"]);
509
511
  function ensureElementBorderDefaults(element) {