feat(client): 出入库列表按原型重建(KPI/详情抽屉/详细搜索/工具栏/选中复制/窗口尺寸)
- 列表重建:KPI 卡、状态+时间列、操作改眼睛开右侧详情抽屉、重置右置 - 详情抽屉(order_detail_drawer) 100% 还原原型 + SelectionArea 可选中复制 - 详细搜索弹窗:ComboSearchField/滚轮日期、字段重构、白底盒子按钮 - 工具栏:搜索框×清除+占位精简、供应商/客户下拉取全部、状态菜单收窄 - 加载不白屏(半透明遮罩)、输入框与下拉等高、windows/macOS 默认窗口尺寸调大 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,10 @@ class SearchableOptionField extends StatelessWidget {
|
||||
final bool isRequired;
|
||||
final bool isDense;
|
||||
|
||||
/// 带框样式(OutlineInputBorder);默认 false 沿用主题下划线。
|
||||
/// 详细搜索等「表单里与文本框并列」的场景传 true,视觉统一为带框。
|
||||
final bool bordered;
|
||||
|
||||
/// 可选:搜索无匹配时「新增到基础数据」。回调收到当前关键字(用户可在确认框里改),
|
||||
/// 创建成功返回新选项 id(自动选中),失败/取消返回 null。为空则不显示新增入口。
|
||||
final Future<int?> Function(String keyword)? onCreate;
|
||||
@@ -55,6 +59,7 @@ class SearchableOptionField extends StatelessWidget {
|
||||
required this.onChanged,
|
||||
this.isRequired = false,
|
||||
this.isDense = true,
|
||||
this.bordered = false,
|
||||
this.onCreate,
|
||||
this.onSearch,
|
||||
});
|
||||
@@ -96,6 +101,7 @@ class SearchableOptionField extends StatelessWidget {
|
||||
child: InputDecorator(
|
||||
decoration: InputDecoration(
|
||||
isDense: isDense,
|
||||
border: bordered ? const OutlineInputBorder() : null,
|
||||
errorText: state.errorText,
|
||||
suffixIcon: selected
|
||||
? GestureDetector(
|
||||
|
||||
Reference in New Issue
Block a user