refactor file tree

This commit is contained in:
Timi
2026-08-11 15:24:36 +08:00
parent 575d41b2e2
commit 819c1623eb
42 changed files with 86 additions and 86 deletions
@@ -1,23 +1,23 @@
import { BarcodeFormat, EncodeHintType, QRCodeWriter } from "@zxing/library";
export interface ManagementQrCodePage {
export interface QrCodePage {
pageIndex: number;
codes: string[];
}
export interface DownloadManagementQrCodeOptions {
export interface DownloadQrCodeOptions {
codes: string[];
filePrefix: string;
maxCodeLength?: number;
}
export interface PrintManagementQrCodeOptions {
export interface PrintQrCodeOptions {
codes: string[];
maxCodeLength?: number;
title?: string;
}
export interface ManagementQrCodeGrid {
export interface QrCodeGrid {
rows: number;
columns: number;
pageSize: number;
@@ -40,7 +40,7 @@ const qrEncodeHints = new Map<EncodeHintType, string | number>([
[EncodeHintType.MARGIN, 4]
]);
export function calculateManagementQrCodeGrid(maxCodeLength = 0): ManagementQrCodeGrid {
export function calculateQrCodeGrid(maxCodeLength = 0): QrCodeGrid {
const codeTextMinWidth = Math.ceil(maxCodeLength * codeFontSize * codeTextWidthRatio + codeTextHorizontalPadding);
const cellMinWidth = Math.max(qrSize + minCellGap, codeTextMinWidth + minCellGap);
const cellMinHeight = qrSize + codeTopGap + codeFontSize + minCellGap;
@@ -54,9 +54,9 @@ export function calculateManagementQrCodeGrid(maxCodeLength = 0): ManagementQrCo
};
}
export function splitManagementQrCodePages(codes: string[], maxCodeLength = 0): ManagementQrCodePage[] {
const pages: ManagementQrCodePage[] = [];
const pageSize = calculateManagementQrCodeGrid(maxCodeLength).pageSize;
export function splitQrCodePages(codes: string[], maxCodeLength = 0): QrCodePage[] {
const pages: QrCodePage[] = [];
const pageSize = calculateQrCodeGrid(maxCodeLength).pageSize;
for (let index = 0; index < codes.length; index += pageSize) {
pages.push({
@@ -68,23 +68,23 @@ export function splitManagementQrCodePages(codes: string[], maxCodeLength = 0):
return pages;
}
export async function downloadManagementQrCodeImages(options: DownloadManagementQrCodeOptions): Promise<void> {
const pages = splitManagementQrCodePages(options.codes, options.maxCodeLength);
export async function downloadQrCodeImages(options: DownloadQrCodeOptions): Promise<void> {
const pages = splitQrCodePages(options.codes, options.maxCodeLength);
for (const page of pages) {
const canvas = renderManagementQrCodePage(page.codes, options.maxCodeLength);
const canvas = renderQrCodePage(page.codes, options.maxCodeLength);
await downloadCanvas(canvas, `${options.filePrefix}-${String(page.pageIndex + 1).padStart(2, "0")}.png`);
}
}
export async function printManagementQrCodeImages(options: PrintManagementQrCodeOptions): Promise<void> {
export async function printQrCodeImages(options: PrintQrCodeOptions): Promise<void> {
const printWindow = window.open("", "_blank");
if (!printWindow) {
throw new Error("浏览器阻止了打印窗口,请允许弹出窗口后重试");
}
const pages = splitManagementQrCodePages(options.codes, options.maxCodeLength);
const imageList = pages.map(page => renderManagementQrCodePage(page.codes, options.maxCodeLength).toDataURL("image/png"));
const pages = splitQrCodePages(options.codes, options.maxCodeLength);
const imageList = pages.map(page => renderQrCodePage(page.codes, options.maxCodeLength).toDataURL("image/png"));
const title = options.title || "客户二维码打印";
const imageHTML = imageList.map(src => `<section class="page"><img src="${src}" alt="客户二维码" /></section>`).join("");
@@ -138,11 +138,11 @@ export async function printManagementQrCodeImages(options: PrintManagementQrCode
printWindow.print();
}
function renderManagementQrCodePage(codes: string[], maxCodeLength = 0): HTMLCanvasElement {
function renderQrCodePage(codes: string[], maxCodeLength = 0): HTMLCanvasElement {
const canvas = document.createElement("canvas");
canvas.width = pageWidth;
canvas.height = pageHeight;
const grid = calculateManagementQrCodeGrid(maxCodeLength);
const grid = calculateQrCodeGrid(maxCodeLength);
const context = canvas.getContext("2d");
if (!context) {
@@ -199,7 +199,7 @@ function escapeHTML(value: string): string {
.replaceAll("\"", "&quot;");
}
function drawGridLines(context: CanvasRenderingContext2D, grid: ManagementQrCodeGrid, cellWidth: number, cellHeight: number): void {
function drawGridLines(context: CanvasRenderingContext2D, grid: QrCodeGrid, cellWidth: number, cellHeight: number): void {
context.strokeStyle = "#d1d5db";
context.lineWidth = gridLineWidth;