chore: release client-v1.0.82
Deploy Client / build-client-web (push) Successful in 47s
Deploy Client / build-windows (push) Successful in 1m56s
Deploy Client / build-macos (push) Successful in 2m15s
Deploy Client / build-android (push) Successful in 1m20s
Deploy Client / build-ios (push) Successful in 2m47s
Deploy Client / release-deploy-client (push) Successful in 1m51s

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-26 01:52:04 +08:00
parent 3d83f94f24
commit 5187702fc5
9 changed files with 305 additions and 16 deletions
+8
View File
@@ -53,6 +53,14 @@ Future<void> printStockInOrder(StockInOrder order) =>
Future<void> printStockOutOrder(StockOutOrder order) =>
printStockOutOrderImpl(order);
/// 生成入库单 PDF 字节(桌面端真实排版,供打印预览光栅化用);Web 端不支持。
Future<Uint8List> buildStockInOrderPdf(StockInOrder order) =>
buildStockInOrderPdfImpl(order);
/// 生成出库单 PDF 字节(桌面端真实排版,供打印预览光栅化用);Web 端不支持。
Future<Uint8List> buildStockOutOrderPdf(StockOutOrder order) =>
buildStockOutOrderPdfImpl(order);
/// 统一打印入口:catch 任意异常,上报并弹 SnackBar 给用户。
/// 用法:await safePrint(context, () => printStockInOrder(order));
Future<void> safePrint(BuildContext context, Future<void> Function() fn) async {
+15 -5
View File
@@ -799,8 +799,8 @@ pw.Widget _sig(pw.Font font, pw.Font bold, String label) {
);
}
Future<void> printStockInOrderImpl(StockInOrder order) async {
try {
/// 生成入库单 A4 PDF 字节(与实际打印同一套排版,供预览光栅化 + 打印共用)。
Future<Uint8List> buildStockInOrderPdfImpl(StockInOrder order) async {
final font = await _loadFont();
final bold = await _loadBoldFont();
@@ -848,7 +848,12 @@ Future<void> printStockInOrderImpl(StockInOrder order) async {
),
],
));
final bytes = await doc.save();
return doc.save();
}
Future<void> printStockInOrderImpl(StockInOrder order) async {
try {
final bytes = await buildStockInOrderPdfImpl(order);
if (!kIsWeb && Platform.isMacOS) {
await Future<void>.delayed(Duration.zero);
}
@@ -862,7 +867,8 @@ Future<void> printStockInOrderImpl(StockInOrder order) async {
}
}
Future<void> printStockOutOrderImpl(StockOutOrder order) async {
/// 生成出库单 A4 PDF 字节(与实际打印同一套排版,供预览光栅化 + 打印共用)。
Future<Uint8List> buildStockOutOrderPdfImpl(StockOutOrder order) async {
final font = await _loadFont();
final bold = await _loadBoldFont();
@@ -909,8 +915,12 @@ Future<void> printStockOutOrderImpl(StockOutOrder order) async {
),
],
));
return doc.save();
}
Future<void> printStockOutOrderImpl(StockOutOrder order) async {
try {
final bytes = await doc.save();
final bytes = await buildStockOutOrderPdfImpl(order);
if (!kIsWeb && Platform.isMacOS) {
await Future<void>.delayed(Duration.zero);
}
@@ -170,6 +170,14 @@ body { width: 38mm; height: 20mm; overflow: hidden; background: #fff; }
}
}
// ── 单据 PDF 字节(Web 走 HTML 打印路径,不生成 PDF;预览弹窗仅桌面端调用)──────
Future<Uint8List> buildStockInOrderPdfImpl(StockInOrder order) async =>
throw UnsupportedError('Web 端入库单走 HTML 打印,不生成 PDF');
Future<Uint8List> buildStockOutOrderPdfImpl(StockOutOrder order) async =>
throw UnsupportedError('Web 端出库单走 HTML 打印,不生成 PDF');
// ── 入库单 ──────────────────────────────────────────────────────────────────
Future<void> printStockInOrderImpl(StockInOrder order) async {