feat(client): 库存表格列头排序 UI——DsSortHeader 点击循环 升/降/无
- 新组件 DsSortHeader(原型 thead .sh 对照,L1 已登记):未排序淡箭头暗示 可排,激活 primary + 方向箭头(↑升/↓降) - 库存屏 5 列(库存/成本价/总价/生产日期/入库时间)接线,排序走服务端 全局生效(跨分页),点击循环 无→升→降→无 - 原型 inventory.html COLS sort:true + toggleSort 交互 + atoms .sh 样式登记 - 桌面库存 golden 重录 ×3(列头带排序箭头) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
This commit is contained in:
@@ -141,6 +141,34 @@ class _InventoryListScreenState extends ConsumerState<InventoryListScreen> {
|
||||
.setStatus(_statusParam[label] ?? '');
|
||||
}
|
||||
|
||||
// ── 列头排序(点击循环 无→升→降→无,服务端全局排序) ──
|
||||
String _sortBy = ''; // 列 key(屏内),空=未排序
|
||||
bool _sortAsc = true;
|
||||
static const _sortParam = {
|
||||
'qty': 'qty',
|
||||
'cost': 'cost',
|
||||
'price': 'price',
|
||||
'prodDate': 'prod_date',
|
||||
'inTime': 'in_time',
|
||||
};
|
||||
|
||||
void _toggleSort(String key) {
|
||||
setState(() {
|
||||
if (_sortBy != key) {
|
||||
_sortBy = key;
|
||||
_sortAsc = true;
|
||||
} else if (_sortAsc) {
|
||||
_sortAsc = false;
|
||||
} else {
|
||||
_sortBy = '';
|
||||
_sortAsc = true;
|
||||
}
|
||||
});
|
||||
ref
|
||||
.read(inventoryListProvider.notifier)
|
||||
.setSort(_sortBy.isEmpty ? '' : _sortParam[_sortBy]!, _sortAsc);
|
||||
}
|
||||
|
||||
// 成本仅管理员可见(与出库同口径):非管理员隐藏成本价/总价列、卡片单价、货值 KPI。
|
||||
bool get _isAdmin => ref.watch(isAdminProvider);
|
||||
bool _colAllowed(ColDef c) =>
|
||||
@@ -939,6 +967,17 @@ class _InventoryListScreenState extends ConsumerState<InventoryListScreen> {
|
||||
filtered: _statusFilter != '全部',
|
||||
onOpen: _openStatusMenu,
|
||||
),
|
||||
// 可排序列(原型 COLS sort:true,服务端全局排序)
|
||||
'qty' ||
|
||||
'cost' ||
|
||||
'price' ||
|
||||
'prodDate' ||
|
||||
'inTime' =>
|
||||
DsSortHeader(
|
||||
label: c.label,
|
||||
ascending: _sortBy == c.key ? _sortAsc : null,
|
||||
onTap: () => _toggleSort(c.key),
|
||||
),
|
||||
_ => null,
|
||||
};
|
||||
return DsColumn(c.key, c.label,
|
||||
|
||||
Reference in New Issue
Block a user