Replace the locked/unlocked terminology with RegistrationMode enum (singleCode/multiCode) to align with boxing module's naming convention. Multi-code mode now allows switching shelf locations with a confirmation dialog when pending data exists. Use shared BoxingModePill widget for consistent UI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
40 lines
1.2 KiB
Dart
40 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:pad_scanner/services/code_parser.dart';
|
|
|
|
const batchPaichaMismatchMessage = '批量凑箱仅支持同排产号产品,请移除不属于同一批次的总排号';
|
|
|
|
bool isTransitTarget(CodeType? locationType, String? locationCode) {
|
|
return locationType == CodeType.locationTransit ||
|
|
(locationCode?.startsWith('TRANS-') ?? false);
|
|
}
|
|
|
|
String registrationSubmitLabel({
|
|
required bool isTransitTarget,
|
|
required bool isMultiCode,
|
|
required int zongpaiCount,
|
|
}) {
|
|
if (!isTransitTarget) {
|
|
return isMultiCode && zongpaiCount > 1 ? '批量上架($zongpaiCount 条)' : '确 认 上 架';
|
|
}
|
|
return isMultiCode && zongpaiCount > 1 ? '批量转运并凑箱($zongpaiCount 条)' : '转运并装箱';
|
|
}
|
|
|
|
Color registrationSubmitColor({
|
|
required bool canSubmit,
|
|
required bool isTransitTarget,
|
|
required Color primaryColor,
|
|
}) {
|
|
if (!canSubmit) return Colors.grey.shade300;
|
|
return isTransitTarget ? Colors.orange : primaryColor;
|
|
}
|
|
|
|
bool allSamePaicha(Iterable<String?> paichaNos) {
|
|
String? first;
|
|
for (final paichaNo in paichaNos) {
|
|
if (paichaNo == null || paichaNo.isEmpty) return false;
|
|
first ??= paichaNo;
|
|
if (paichaNo != first) return false;
|
|
}
|
|
return first != null;
|
|
}
|