# 原型 UI 规范：控件与交互（Controls）

## 按钮与动作
- Primary：每屏最多 1 个，用于核心动作（提交/确认/创建）
- Danger：仅用于不可逆动作（删除/作废/终止），并提供二次确认
- Loading：提交中必须禁用重复提交，并显示 loading

## 表单
- 承载：所有新增/编辑表单优先使用 Drawer；仅在强提示场景使用 Modal
- 必填：用校验规则 + 明确错误提示表达；禁止仅靠 placeholder
- 成组字段：任一字段有值则要求同组其他字段非空，并给出明确错误提示

## 输入控件
- 日期/时间：必须使用 DatePicker/RangePicker 等控件，禁止文本输入日期
- 金额：右对齐；千分位；两位小数；展示与输入口径一致
- 枚举：Select/Radio 使用“可读文案”，禁止直接展示英文 code

## 列表与表格
- Table：默认支持分页（占位即可）；提供空态 Empty、加载态 Skeleton/Spin（至少其一）
- 列操作：常用动作为行内按钮；危险动作放到更多菜单并二次确认
- 状态：统一用 Tag/Badge 展示，颜色映射在同一模块内必须一致

## 查询与过滤
- 原则：查询控件按“真实筛选需求”选择，不默认上复杂查询
- 快捷查询（Search Input）：
  - 用于：单号/名称/关键字等高频搜索
  - 要求：placeholder 明确搜索口径；支持回车；支持一键清空
- 快捷筛选（Segmented/Tab/Chips）：
  - 用于：状态维度/常用枚举（如类型、组织），让用户 1 次点击完成切换
  - 要求：默认值明确；切换后列表立即刷新；可见当前生效条件（高亮/Tag）
- 标准筛选表单（折叠 Form）：
  - 用于：需要精确筛选但维度不多（约 4~8 个字段）
  - 要求：默认折叠；展开后分组清晰；提供“查询/重置”
- 复杂查询（Advanced Filter）：
  - 仅用于：字段很多、组合条件频繁、需要保存视图/复用条件
  - 要求：必须展示“已选条件汇总”（Tag 列表或摘要），并可逐项删除/一键重置
  - 可选：保存为“我的查询/我的视图”，但不得强制所有列表页都实现

## 反馈与异常
- 成功：message/toast 提示
- 失败：notification/alert 给出原因与可执行兜底（重试/去配置/查看详情）
- 无权限：隐藏不可见项；不可操作项置灰并提示原因

## 敏感信息
- 默认脱敏展示（手机号/邮箱/证件/银行卡等）
- 仅在用户明确触发“查看完整信息”且权限允许时展示全量
