From 492802e4fc1b371ba21a2a490c8dcd67d7c8b29c Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 22 六月 2026 14:03:40 +0800
Subject: [PATCH] fix: 出差和请假审批新增开始与结束日期
---
src/views/salesManagement/salesLedger/components/salesLabelPrint.js | 111 +++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 79 insertions(+), 32 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/components/salesLabelPrint.js b/src/views/salesManagement/salesLedger/components/salesLabelPrint.js
index 333c298..e2578dd 100644
--- a/src/views/salesManagement/salesLedger/components/salesLabelPrint.js
+++ b/src/views/salesManagement/salesLedger/components/salesLabelPrint.js
@@ -18,15 +18,60 @@
return pages;
};
-const renderLabelCard = (item) => `
- <div class="label-card">
- <div class="line customer">${escapeHtml(item?.customerName)}</div>
- <div class="line order">${escapeHtml(item?.salesContractNo)}</div>
- <div class="line product">${escapeHtml(item?.productName)}</div>
- <div class="line spec">${escapeHtml(item?.specification)}</div>
- <div class="line address">${escapeHtml(item?.floorCode)}</div>
- </div>
-`;
+const buildMainSpec = (item) => {
+ const value =
+ item?.specificationModel ??
+ item?.productSpecModel ??
+ item?.productName ??
+ "";
+ return String(value ?? "").trim();
+};
+
+const buildDetailSpec = (item) => {
+ const value =
+ item?.specification ??
+ item?.spec ??
+ item?.sizeSpec ??
+ item?.productSpec ??
+ "";
+ return String(value ?? "").trim();
+};
+
+// 鏍规嵁鏂囨湰闀垮害鍔ㄦ�佽绠楀瓧浣撳ぇ灏�
+const getFontSize = (text, baseSize, maxWidthChars) => {
+ const len = String(text ?? "").length;
+ if (len <= maxWidthChars) return baseSize;
+ // 瓒呴暱鏂囨湰鎸夋瘮渚嬬缉灏�
+ const scale = maxWidthChars / len;
+ const minSize = baseSize * 0.7; // 鏈�灏忎笉浣庝簬鍩虹澶у皬鐨�70%
+ const calculatedSize = baseSize * scale;
+ return Math.max(calculatedSize, minSize);
+};
+
+const renderLabelCard = (item) => {
+ const customer = escapeHtml(item?.customerName);
+ const order = escapeHtml(item?.salesContractNo);
+ const model = escapeHtml(buildMainSpec(item));
+ const spec = escapeHtml(buildDetailSpec(item));
+ const address = escapeHtml(item?.floorCode);
+
+ // 鍔ㄦ�佽绠楀瓧浣撳ぇ灏忥紙鍩轰簬50mm瀹藉害锛岀害20-25涓瓧绗︿负姝e父鏄剧ず鑼冨洿锛�
+ const customerSize = getFontSize(customer, 4.2, 18);
+ const orderSize = getFontSize(order, 4.6, 16);
+ const modelSize = getFontSize(model, 4.0, 22);
+ const specSize = getFontSize(spec, 3.8, 28);
+ const addressSize = getFontSize(address, 3.5, 24);
+
+ return `
+ <div class="label-card">
+ <div class="line customer" style="font-size: ${customerSize}mm;">${customer}</div>
+ <div class="line order" style="font-size: ${orderSize}mm;">${order}</div>
+ <div class="line model" style="font-size: ${modelSize}mm;">${model}</div>
+ <div class="line spec" style="font-size: ${specSize}mm;">${spec}</div>
+ <div class="line address" style="font-size: ${addressSize}mm;">${address}</div>
+ </div>
+ `;
+};
export const printSalesLabel = (rawList = []) => {
const list = Array.isArray(rawList) ? rawList : [];
@@ -34,7 +79,7 @@
throw new Error("鏍囩鏁版嵁涓虹┖锛屾棤娉曟墦鍗�");
}
- const pageSize = 18; // 3 鍒� * 6 琛岋紙50x40mm锛�
+ const pageSize = 6; // 2 鍒� * 3 琛岋紙50x40mm锛�
const pages = splitByPage(list, pageSize);
const printWindow = window.open("", "_blank", "width=1200,height=900");
@@ -56,10 +101,10 @@
color: #222;
}
.page {
- width: 210mm;
- min-height: 297mm;
+ width: 104mm;
+ min-height: 124mm;
margin: 0 auto;
- padding: 8mm 7mm;
+ padding: 1mm;
box-sizing: border-box;
page-break-after: always;
}
@@ -68,55 +113,57 @@
}
.grid {
display: grid;
- grid-template-columns: repeat(3, 50mm);
+ grid-template-columns: repeat(2, 50mm);
grid-auto-rows: 40mm;
- gap: 2mm;
+ gap: 1mm;
justify-content: start;
}
.label-card {
- border: 1px solid #ddd;
- border-radius: 3mm;
- padding: 1.8mm 2.2mm;
+ border: 0;
+ border-radius: 0;
+ padding: 2.2mm 2.5mm;
width: 50mm;
height: 40mm;
box-sizing: border-box;
- display: grid;
- grid-template-rows: auto auto auto auto 1fr;
- row-gap: 0.9mm;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ overflow: hidden;
}
.line {
font-weight: 700;
- line-height: 1.15;
+ line-height: 1.2;
word-break: break-all;
margin: 0;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: clip;
}
.customer {
- font-size: 4.0mm;
+ /* 鍩虹 4.2mm锛屽姩鎬佽皟鏁� */
}
.order {
- font-size: 5.0mm;
- letter-spacing: 0;
+ /* 鍩虹 4.6mm锛屽姩鎬佽皟鏁� */
}
- .product {
- font-size: 4.5mm;
+ .model {
+ /* 鍩虹 4.0mm锛屽姩鎬佽皟鏁� */
}
.spec {
- font-size: 5.0mm;
- letter-spacing: 0;
+ /* 鍩虹 3.8mm锛屽姩鎬佽皟鏁� */
}
.address {
- font-size: 3.8mm;
+ /* 鍩虹 3.5mm锛屽姩鎬佽皟鏁� */
}
@media print {
@page {
- size: A4 portrait;
+ size: 104mm 124mm;
margin: 0;
}
.page {
width: 100%;
min-height: 0;
margin: 0;
- padding: 8mm 7mm;
+ padding: 1mm;
}
}
</style>
--
Gitblit v1.9.3