Blame view

美国版/Food Labeling Management Platform/src/lib/productCodeValueTemplate.ts 3.27 KB
923d50c0   杨鑫   更新bug
1
  import type { LabelElement } from "../types/labelTemplate";
91821909   杨鑫   最新
2
3
4
5
6
  import {
    canonicalElementType,
    isTemplateSectionPersistedType,
    resolvedTypeAddForPersist,
  } from "../types/labelTemplate";
923d50c0   杨鑫   更新bug
7
  
4cb354d4   杨鑫   提交
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  function normalizeLabelPanelTypeAdd(el: LabelElement): string {
    return resolvedTypeAddForPersist(el).trim().toLowerCase().replace(/\s+/g, " ");
  }
  
  /** Label 面板 **Label Name**(typeAdd 如 label_Label Name) */
  export function isTemplateLabelNameElement(el: LabelElement): boolean {
    if (isTemplateSectionPersistedType(el)) return false;
    return normalizeLabelPanelTypeAdd(el) === "label_label name";
  }
  
  /** Label 面板 **Label Type**(typeAdd 如 label_Label Type) */
  export function isTemplateLabelTypeElement(el: LabelElement): boolean {
    if (isTemplateSectionPersistedType(el)) return false;
    return normalizeLabelPanelTypeAdd(el) === "label_label type";
  }
  
91821909   杨鑫   最新
24
  /** Template 面板中的条形码 / 二维码(typeAdd 如 template_Barcode、template_QR Code) */
923d50c0   杨鑫   更新bug
25
26
27
28
29
30
  export function isTemplateSectionBarcodeOrQrElement(el: LabelElement): boolean {
    if (!isTemplateSectionPersistedType(el)) return false;
    const t = canonicalElementType(el.type);
    return t === "BARCODE" || t === "QRCODE";
  }
  
91821909   杨鑫   最新
31
32
33
34
35
36
37
38
39
  /** Label 面板中的条形码 / 二维码(typeAdd 如 label_Barcode、label_QR Code),允许手填 */
  export function isLabelSectionBarcodeOrQrElement(el: LabelElement): boolean {
    if (isTemplateSectionPersistedType(el)) return false;
    const t = canonicalElementType(el.type);
    if (t !== "BARCODE" && t !== "QRCODE") return false;
    const typeAdd = resolvedTypeAddForPersist(el).trim().toLowerCase();
    return typeAdd.startsWith("label_");
  }
  
923d50c0   杨鑫   更新bug
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  /** 将产品 codeValue 写入 elementId → 字符串,供 templateProductDefaults / 预览合并 */
  export function buildTemplateBarcodeQrDefaultsFromCodeValue(
    elements: LabelElement[],
    codeValue: string | null | undefined,
  ): Record<string, string> {
    const cv = String(codeValue ?? "").trim();
    if (!cv) return {};
    const out: Record<string, string> = {};
    for (const el of elements) {
      if (!isTemplateSectionBarcodeOrQrElement(el)) continue;
      out[el.id] = cv;
    }
    return out;
  }
  
4cb354d4   杨鑫   提交
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  /** 将 Label Name 输入 / 标签类型名写入 elementId → 字符串,供 templateProductDefaults / 预览合并 */
  export function buildTemplateLabelBindingDefaults(
    elements: LabelElement[],
    bindings: { labelName?: string | null; labelTypeName?: string | null },
  ): Record<string, string> {
    const labelName = String(bindings.labelName ?? "").trim();
    const labelTypeName = String(bindings.labelTypeName ?? "").trim();
    const out: Record<string, string> = {};
    for (const el of elements) {
      if (labelName && isTemplateLabelNameElement(el)) out[el.id] = labelName;
      if (labelTypeName && isTemplateLabelTypeElement(el)) out[el.id] = labelTypeName;
    }
    return out;
  }
  
923d50c0   杨鑫   更新bug
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  /** 合并 codeValue 到元素 config.data(用于画布预览) */
  export function applyProductCodeValueToLabelElements(
    elements: LabelElement[],
    codeValue: string | null | undefined,
  ): LabelElement[] {
    const cv = String(codeValue ?? "").trim();
    if (!cv) return elements;
    return elements.map((el) => {
      if (!isTemplateSectionBarcodeOrQrElement(el)) return el;
      const cfg = { ...(el.config as Record<string, unknown>) };
      cfg.data = cv;
      return { ...el, config: cfg };
    });
  }