fix: 1.将主页和法务助手对话设置成手机也能够正确加载的响应式布局。
2. 修改合同重新上传模板的可接受文件类型,修改对接的上传模板对应的接口。 3. 交叉评查任务列表去除任务名称的点击效果。 4. 交叉评查文件预览在点击完成评查的按钮后会返回任务列表并打开任务的文档列表。 5.修复点击完成评查按钮造成页面刷新。 6. 修复创建任务的第3步无法返回列表。
This commit is contained in:
@@ -218,9 +218,10 @@ export default function CrossCheckingIndex() {
|
||||
const dateTo = searchParams.get('dateTo') || '';
|
||||
const navigate = useNavigate();
|
||||
const fetcher = useFetcher();
|
||||
|
||||
|
||||
// 状态管理
|
||||
const [isDeleting, setIsDeleting] = useState(false);
|
||||
const [hasAutoOpened, setHasAutoOpened] = useState(false); // 标记是否已自动打开模态框
|
||||
const [modalState, setModalState] = useState<{
|
||||
isOpen: boolean;
|
||||
title: string;
|
||||
@@ -280,7 +281,13 @@ export default function CrossCheckingIndex() {
|
||||
|
||||
// 处理文档查看 - 导航到评查详情页
|
||||
const handleViewFile = (fileId: string) => {
|
||||
navigate(`/cross-checking/result?id=${fileId}&tId=${currentTaskInfo?.taskId}&previousRoute=crossChecking`);
|
||||
const params = new URLSearchParams({
|
||||
id: fileId,
|
||||
tId: currentTaskInfo?.taskId?.toString() || '',
|
||||
tName: currentTaskInfo?.taskName || '',
|
||||
previousRoute: 'crossChecking'
|
||||
});
|
||||
navigate(`/cross-checking/result?${params.toString()}`);
|
||||
};
|
||||
|
||||
// 存储当前任务信息用于分页
|
||||
@@ -465,11 +472,38 @@ export default function CrossCheckingIndex() {
|
||||
|
||||
|
||||
|
||||
// 检测URL参数,自动打开模态框
|
||||
useEffect(() => {
|
||||
const openModal = searchParams.get('openModal');
|
||||
const taskId = searchParams.get('taskId');
|
||||
const taskName = searchParams.get('taskName');
|
||||
|
||||
if (openModal === 'true' && taskId && !hasAutoOpened) {
|
||||
console.log('[自动打开模态框] taskId:', taskId, 'taskName:', taskName);
|
||||
|
||||
// 标记已自动打开,防止重复触发
|
||||
setHasAutoOpened(true);
|
||||
|
||||
// 清除URL参数,避免刷新页面时再次打开
|
||||
const newParams = new URLSearchParams(searchParams);
|
||||
newParams.delete('openModal');
|
||||
newParams.delete('taskId');
|
||||
newParams.delete('taskName');
|
||||
setSearchParams(newParams, { replace: true });
|
||||
|
||||
// 延迟自动打开模态框,确保状态已更新
|
||||
setTimeout(() => {
|
||||
handleViewResult(Number(taskId), taskName || '任务详情');
|
||||
}, 100);
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [searchParams, hasAutoOpened]);
|
||||
|
||||
// 监听fetcher状态变化 - 删除操作
|
||||
useEffect(() => {
|
||||
if (fetcher.data && fetcher.state === 'idle' && isDeleting) {
|
||||
setIsDeleting(false);
|
||||
|
||||
|
||||
const data = fetcher.data as { result?: boolean; message?: string };
|
||||
if (data.result) {
|
||||
toastService.success(data.message || '操作成功');
|
||||
@@ -533,16 +567,7 @@ export default function CrossCheckingIndex() {
|
||||
dataIndex: "taskName" as keyof CrossCheckingTask,
|
||||
key: "taskName",
|
||||
align: "left" as const,
|
||||
width: "16%",
|
||||
render: (value: string, record: CrossCheckingTask) => (
|
||||
<button
|
||||
className="task-name text-left w-full"
|
||||
onClick={() => navigate(`/cross-checking/${record.id}`)}
|
||||
type="button"
|
||||
>
|
||||
{value}
|
||||
</button>
|
||||
)
|
||||
width: "16%"
|
||||
},
|
||||
{
|
||||
title: "评查开始时间",
|
||||
|
||||
Reference in New Issue
Block a user