UX 缺陷修复: - 校验失败不再卡死弹窗按钮(Users/Roles/Bills) - 押金收取/批量收取/添加分期防重复提交;切换房型重置勾选 - AI 表单/批量确认不再出现"假成功" - Dashboard 各数据模块独立加载,单接口失败不再整页清零 - 房间可视化加载失败显示错误态而非永久转圈 - 学生编辑表单回填前重置,避免字段残留污染 - 覆盖式导入增加二次确认;恢复默认考勤时段确认并同步表单 - 金数据匹配关闭前确认,同步中禁止误关 体验提升: - 新增统一 QueryErrorState/QueryEmpty,20+ 页面加载失败显示错误态与重试 - 全局 ErrorBoundary + RouteKeeper 逐页兜底 - 新增 usePageVisible/useVisibleRefetch,保活页面切回自动刷新数据 - 新增首次登录角色引导 RoleTour 与业务闭环 NextStepHint 引导卡 - 重构 A2UI:useSubmissionState/useXCardSurface 收敛状态与命令生命周期, ArtifactErrorBoundary 渲染降级,图表空数据占位 - AI 助手欢迎语与建议话术按角色定制,会话列表空态引导 - 更新 a2ui-contract.md 契约文档说明实现现状
36 lines
978 B
TypeScript
36 lines
978 B
TypeScript
import React from 'react';
|
||
import { Button, Empty } from 'antd';
|
||
|
||
export interface QueryEmptyAction {
|
||
label: string;
|
||
onClick: () => void;
|
||
type?: 'primary' | 'default';
|
||
icon?: React.ReactNode;
|
||
}
|
||
|
||
export interface QueryEmptyProps {
|
||
/** 空状态描述,默认「暂无数据」 */
|
||
description?: string;
|
||
/** 主操作按钮(如「添加学生」「导入 Excel」) */
|
||
action?: QueryEmptyAction;
|
||
/** 自定义空态插图 */
|
||
image?: React.ReactNode;
|
||
}
|
||
|
||
/**
|
||
* 统一空状态:数据确实为空时渲染本组件,并附带主操作按钮引导用户开始。
|
||
*/
|
||
export const QueryEmpty: React.FC<QueryEmptyProps> = ({ description = '暂无数据', action, image }) => {
|
||
return (
|
||
<Empty image={image} description={description}>
|
||
{action ? (
|
||
<Button type={action.type ?? 'primary'} icon={action.icon} onClick={action.onClick}>
|
||
{action.label}
|
||
</Button>
|
||
) : null}
|
||
</Empty>
|
||
);
|
||
};
|
||
|
||
export default QueryEmpty;
|