fix(client): 出入库录单 golden 随日期漂移——表单支持钉死单据日期

根因:表单 _orderDate 默认 DateTime.now(),golden 07-04 录制后每天必挂
(整屏 diff 只有日期格一个数字)。表单加 initialDate 测试注入口,
golden 测试钉死 2026-07-04,基准图零重录、永不随日期漂移。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
This commit is contained in:
wangjia
2026-07-06 08:11:26 +08:00
parent d9f1f6956e
commit 3573f015c3
4 changed files with 14 additions and 8 deletions
@@ -27,7 +27,10 @@ import '../../widgets/ds/ds_toast.dart';
/// 明细为可键盘操作的内联网格(名称/系列/规格可搜索+新增,生产日期/批次/数量/单价/售价内联编辑)。
class StockInFormScreen extends ConsumerStatefulWidget {
final int? editOrderId;
const StockInFormScreen({super.key, this.editOrderId});
/// 仅供 golden 测试钉死单据日期(默认 DateTime.now() 会让 golden 随日期漂移)。
final DateTime? initialDate;
const StockInFormScreen({super.key, this.editOrderId, this.initialDate});
@override
ConsumerState<StockInFormScreen> createState() => _StockInFormScreenState();
@@ -39,7 +42,7 @@ class _StockInFormScreenState extends ConsumerState<StockInFormScreen> {
final _warehouseFocus = FocusNode();
int? _warehouseId;
int? _partnerId;
DateTime _orderDate = DateTime.now();
late DateTime _orderDate = widget.initialDate ?? DateTime.now();
bool _submitting = false;
bool _loadingEdit = false;
StockInOrder? _loadedOrder;
@@ -142,7 +142,10 @@ class _ItemRow {
/// 明细行经「从库存批量选择」添加,商品/系列/规格/可用只读,仅数量、售价可内联编辑。
class StockOutFormScreen extends ConsumerStatefulWidget {
final int? editOrderId;
const StockOutFormScreen({super.key, this.editOrderId});
/// 仅供 golden 测试钉死单据日期(默认 DateTime.now() 会让 golden 随日期漂移)。
final DateTime? initialDate;
const StockOutFormScreen({super.key, this.editOrderId, this.initialDate});
@override
ConsumerState<StockOutFormScreen> createState() => _StockOutFormScreenState();
@@ -154,7 +157,7 @@ class _StockOutFormScreenState extends ConsumerState<StockOutFormScreen> {
final _warehouseFocus = FocusNode();
int? _warehouseId;
int? _partnerId;
DateTime _orderDate = DateTime.now();
late DateTime _orderDate = widget.initialDate ?? DateTime.now();
bool _submitting = false;
bool _loadingEdit = false;
Map<int, double> _inventoryMap = {};
@@ -73,7 +73,7 @@ void main() {
goldenAcrossThemes(
'stock-in form 录单(桌面)',
goldenPrefix: 'stock_in_form',
child: () => const Scaffold(body: StockInFormScreen()),
child: () => Scaffold(body: StockInFormScreen(initialDate: DateTime(2026, 7, 4))),
overrides: _overrides,
logical: const Size(1280, 920),
);
@@ -81,7 +81,7 @@ void main() {
goldenAcrossThemes(
'stock-in form 录单(移动)',
goldenPrefix: 'stock_in_form_mobile',
child: () => const Scaffold(body: StockInFormScreen()),
child: () => Scaffold(body: StockInFormScreen(initialDate: DateTime(2026, 7, 4))),
overrides: _overrides,
logical: const Size(390, 1400),
);
@@ -53,7 +53,7 @@ void main() {
goldenAcrossThemes(
'stock-out form 录单(桌面)',
goldenPrefix: 'stock_out_form',
child: () => const Scaffold(body: StockOutFormScreen()),
child: () => Scaffold(body: StockOutFormScreen(initialDate: DateTime(2026, 7, 4))),
overrides: _overrides,
logical: const Size(1280, 920),
);
@@ -61,7 +61,7 @@ void main() {
goldenAcrossThemes(
'stock-out form 录单(移动)',
goldenPrefix: 'stock_out_form_mobile',
child: () => const Scaffold(body: StockOutFormScreen()),
child: () => Scaffold(body: StockOutFormScreen(initialDate: DateTime(2026, 7, 4))),
overrides: _overrides,
logical: const Size(390, 1400),
);