Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 078fab30f0 |
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.0.74] - 2026-06-22
|
||||||
|
|
||||||
|
### 改进
|
||||||
|
- 入库单 / 出库单详情页的商品明细表新增「生产日期」「批次号」两列,便于核对货品批次信息
|
||||||
|
|
||||||
## [1.0.73] - 2026-06-22
|
## [1.0.73] - 2026-06-22
|
||||||
|
|
||||||
### 改进
|
### 改进
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ class StockOutItem {
|
|||||||
final String? productSeries;
|
final String? productSeries;
|
||||||
final String? productSpec;
|
final String? productSpec;
|
||||||
final String? productUnit;
|
final String? productUnit;
|
||||||
|
final String? batchNo;
|
||||||
|
final String? productionDate;
|
||||||
|
|
||||||
bool get isReturned => returnedQuantity >= quantity && quantity > 0;
|
bool get isReturned => returnedQuantity >= quantity && quantity > 0;
|
||||||
|
|
||||||
@@ -29,6 +31,8 @@ class StockOutItem {
|
|||||||
this.productSeries,
|
this.productSeries,
|
||||||
this.productSpec,
|
this.productSpec,
|
||||||
this.productUnit,
|
this.productUnit,
|
||||||
|
this.batchNo,
|
||||||
|
this.productionDate,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory StockOutItem.fromJson(Map<String, dynamic> json) {
|
factory StockOutItem.fromJson(Map<String, dynamic> json) {
|
||||||
@@ -57,6 +61,8 @@ class StockOutItem {
|
|||||||
productSeries: lineOrProduct('series', 'series'),
|
productSeries: lineOrProduct('series', 'series'),
|
||||||
productSpec: lineOrProduct('spec', 'spec'),
|
productSpec: lineOrProduct('spec', 'spec'),
|
||||||
productUnit: (json['product'] as Map<String, dynamic>?)?['unit'] as String?,
|
productUnit: (json['product'] as Map<String, dynamic>?)?['unit'] as String?,
|
||||||
|
batchNo: json['batch_no'] as String?,
|
||||||
|
productionDate: json['production_date'] as String?,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1064,16 +1064,18 @@ class _StockInDetailDialogState extends ConsumerState<_StockInDetailDialog> {
|
|||||||
0: FixedColumnWidth(36),
|
0: FixedColumnWidth(36),
|
||||||
1: FlexColumnWidth(1.2),
|
1: FlexColumnWidth(1.2),
|
||||||
2: FlexColumnWidth(2.2),
|
2: FlexColumnWidth(2.2),
|
||||||
3: FlexColumnWidth(1.5),
|
3: FlexColumnWidth(1.3),
|
||||||
4: FlexColumnWidth(1.5),
|
4: FlexColumnWidth(1.3),
|
||||||
5: FlexColumnWidth(1.2),
|
5: FlexColumnWidth(1.3),
|
||||||
6: FlexColumnWidth(1.2),
|
6: FlexColumnWidth(1.3),
|
||||||
7: FlexColumnWidth(1.2),
|
7: FlexColumnWidth(1.0),
|
||||||
|
8: FlexColumnWidth(1.1),
|
||||||
|
9: FlexColumnWidth(1.1),
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
TableRow(
|
TableRow(
|
||||||
decoration: const BoxDecoration(color: Color(0xFFF0F4FF)),
|
decoration: const BoxDecoration(color: Color(0xFFF0F4FF)),
|
||||||
children: ['序号', '商品编码', '名称', '系列', '规格', '数量', '单价', '金额']
|
children: ['序号', '商品编码', '名称', '系列', '规格', '生产日期', '批次号', '数量', '单价', '金额']
|
||||||
.map((h) => Padding(
|
.map((h) => Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
horizontal: 8, vertical: 10),
|
horizontal: 8, vertical: 10),
|
||||||
@@ -1122,6 +1124,12 @@ class _StockInDetailDialogState extends ConsumerState<_StockInDetailDialog> {
|
|||||||
),
|
),
|
||||||
_TableCell(item.productSeries ?? '-'),
|
_TableCell(item.productSeries ?? '-'),
|
||||||
_TableCell(item.productSpec ?? '-'),
|
_TableCell(item.productSpec ?? '-'),
|
||||||
|
_TableCell((item.productionDate != null &&
|
||||||
|
item.productionDate!.length >= 10)
|
||||||
|
? item.productionDate!.substring(0, 10)
|
||||||
|
: (item.productionDate ?? '-')),
|
||||||
|
_TableCell(
|
||||||
|
(item.batchNo?.isNotEmpty ?? false) ? item.batchNo! : '-'),
|
||||||
_TableCell(item.quantity.toStringAsFixed(3)),
|
_TableCell(item.quantity.toStringAsFixed(3)),
|
||||||
_TableCell('¥${item.unitPrice.toStringAsFixed(2)}'),
|
_TableCell('¥${item.unitPrice.toStringAsFixed(2)}'),
|
||||||
_TableCell('¥${item.totalPrice.toStringAsFixed(2)}'),
|
_TableCell('¥${item.totalPrice.toStringAsFixed(2)}'),
|
||||||
|
|||||||
@@ -1003,16 +1003,18 @@ class _StockOutDetailDialogState extends ConsumerState<_StockOutDetailDialog> {
|
|||||||
0: FixedColumnWidth(36),
|
0: FixedColumnWidth(36),
|
||||||
1: FlexColumnWidth(1.2),
|
1: FlexColumnWidth(1.2),
|
||||||
2: FlexColumnWidth(2.2),
|
2: FlexColumnWidth(2.2),
|
||||||
3: FlexColumnWidth(1.5),
|
3: FlexColumnWidth(1.3),
|
||||||
4: FlexColumnWidth(1.5),
|
4: FlexColumnWidth(1.3),
|
||||||
5: FlexColumnWidth(1.2),
|
5: FlexColumnWidth(1.3),
|
||||||
6: FlexColumnWidth(1.2),
|
6: FlexColumnWidth(1.3),
|
||||||
7: FlexColumnWidth(1.2),
|
7: FlexColumnWidth(1.0),
|
||||||
|
8: FlexColumnWidth(1.1),
|
||||||
|
9: FlexColumnWidth(1.1),
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
TableRow(
|
TableRow(
|
||||||
decoration: const BoxDecoration(color: Color(0xFFF0F4FF)),
|
decoration: const BoxDecoration(color: Color(0xFFF0F4FF)),
|
||||||
children: ['序号', '商品编码', '名称', '系列', '规格', '数量', '单价', '金额']
|
children: ['序号', '商品编码', '名称', '系列', '规格', '生产日期', '批次号', '数量', '单价', '金额']
|
||||||
.map((h) => Padding(
|
.map((h) => Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 10),
|
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 10),
|
||||||
child: Text(h,
|
child: Text(h,
|
||||||
@@ -1035,6 +1037,12 @@ class _StockOutDetailDialogState extends ConsumerState<_StockOutDetailDialog> {
|
|||||||
_TableCell(item.productName ?? '-'),
|
_TableCell(item.productName ?? '-'),
|
||||||
_TableCell(item.productSeries ?? '-'),
|
_TableCell(item.productSeries ?? '-'),
|
||||||
_TableCell(item.productSpec ?? '-'),
|
_TableCell(item.productSpec ?? '-'),
|
||||||
|
_TableCell((item.productionDate != null &&
|
||||||
|
item.productionDate!.length >= 10)
|
||||||
|
? item.productionDate!.substring(0, 10)
|
||||||
|
: (item.productionDate ?? '-')),
|
||||||
|
_TableCell(
|
||||||
|
(item.batchNo?.isNotEmpty ?? false) ? item.batchNo! : '-'),
|
||||||
_TableCell(item.quantity.toStringAsFixed(3)),
|
_TableCell(item.quantity.toStringAsFixed(3)),
|
||||||
_TableCell('¥${item.unitPrice.toStringAsFixed(2)}'),
|
_TableCell('¥${item.unitPrice.toStringAsFixed(2)}'),
|
||||||
_TableCell('¥${item.totalPrice.toStringAsFixed(2)}'),
|
_TableCell('¥${item.totalPrice.toStringAsFixed(2)}'),
|
||||||
|
|||||||
Reference in New Issue
Block a user