Blame view

泰额版/Food Labeling Management App UniApp/src/utils/reprintFromMergedTemplate.ts 1.24 KB
59e51671   “wangming”   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  import {
    normalizeLabelTemplateFromPreviewApi,
    sortElementsForPreview,
  } from './labelPreview/normalizePreviewTemplate'
  import {
    printSystemTemplateForCurrentPrinter,
    type SystemTemplatePrintCanvasRasterOptions,
  } from './print/manager/printerManager'
  import type { SystemLabelTemplate } from './print/types/printer'
  
  /**
   * 将接口 11 返回的 `mergedTemplateJson`(或历史落库的合并模板 JSON 字符串)交给当前打印机打印。
   */
  export async function printMergedTemplateJsonString (
    mergedJson: string,
    options: {
      printQty?: number
      onProgress?: (percent: number) => void
      canvasRaster?: SystemTemplatePrintCanvasRasterOptions
    } = {}
  ): Promise<void> {
    let raw: unknown
    try {
      raw = JSON.parse(mergedJson) as unknown
    } catch {
      throw new Error('Invalid print snapshot JSON')
    }
    let tmpl = normalizeLabelTemplateFromPreviewApi(raw)
    if (!tmpl) {
      throw new Error('Cannot parse label template from snapshot')
    }
    const sorted: SystemLabelTemplate = {
      ...tmpl,
      elements: sortElementsForPreview(tmpl.elements || []),
    }
    await printSystemTemplateForCurrentPrinter(
      sorted,
      {},
      { printQty: options.printQty ?? 1, canvasRaster: options.canvasRaster },
      options.onProgress
    )
  }