年审模块

This commit is contained in:
linxd
2025-06-30 09:43:28 +08:00
parent bf19b53402
commit d775dce037
18 changed files with 118 additions and 1175 deletions

View File

@ -30,8 +30,8 @@ const getUrlParams = () => {
* 继承了ConnectProps添加了supplierTaskManage和dispatch
*/
interface PageProps extends ConnectProps {
supplierAnnualTaskManage: SupplierTaskModelState; // dva model状态
dispatch: Dispatch; // dva dispatch方法
supplierAnnualTaskManage: SupplierTaskModelState; // dva model状态
dispatch: Dispatch; // dva dispatch方法
}
/**
@ -45,24 +45,20 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
// 判断是否为编辑模式
const urlParams = getUrlParams();
const isEditMode = urlParams.mode === 'edit' && urlParams.id;
const isDivisionMode = urlParams.mode === 'division' && urlParams.id;
const taskId = urlParams.id || '';
// 创建表单引用,用于访问子组件的表单方法(主要用于验证)
const basicFormRef = useRef<any>(null); // 基本信息表单引用
const basicFormRef = useRef<any>(null); // 基本信息表单引用
const supplierFormRef = useRef<any>(null); // 供应商选择表单引用
const evaluatorFormRef = useRef<any>(null); // 评价人员表单引用
const divisionFormRef = useRef<any>(null); // 评价分工表单引用
// 确认对话框可见性状态
const [confirmModalVisible, setConfirmModalVisible] = React.useState(false);
const divisionFormRef = useRef<any>(null); // 评价分工表单引用
/**
* 编辑模式下获取任务详情,或新建模式下重置状态
* 利用useEffect在组件挂载或依赖项变化时触发
*/
useEffect(() => {
if ((isEditMode || isDivisionMode) && taskId && dispatch) {
if (isEditMode && taskId && dispatch) {
dispatch({
type: 'supplierAnnualTaskManage/saveMode',
payload: 'edit',
@ -72,16 +68,6 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
type: 'supplierAnnualTaskManage/fetchTaskDetail',
payload: { taskId },
});
if (isDivisionMode) {
dispatch({
type: 'supplierAnnualTaskManage/saveMode',
payload: 'division',
});
dispatch({
type: 'supplierAnnualTaskManage/setCurrentStep',
payload: 2,
});
}
} else if (dispatch) {
dispatch({
type: 'supplierAnnualTaskManage/setMode',
@ -92,7 +78,7 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
type: 'supplierAnnualTaskManage/resetState',
});
}
}, [isEditMode, isDivisionMode, taskId, dispatch]);
}, [isEditMode, taskId, dispatch]);
/**
* 组件卸载时重置状态
@ -112,29 +98,17 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
{
title: '基本信息', // 步骤标题
description: '请填写基本信息', // 步骤描述
content: (
<BasicInfoStep
ref={basicFormRef}
/>
), // 步骤内容组件
content: <BasicInfoStep ref={basicFormRef} />, // 步骤内容组件
},
{
title: '选择供应商',
description: '请选择参加评价的供应商',
content: (
<SupplierSelectStep
ref={supplierFormRef}
/>
),
content: <SupplierSelectStep ref={supplierFormRef} />,
},
{
title: '选择评价人员',
description: '请选择供应商评价人员',
content: (
<EvaluatorSelectStep
ref={evaluatorFormRef}
/>
),
title: '选择年审人员',
description: '请选择供应商年审人员',
content: <EvaluatorSelectStep ref={evaluatorFormRef} />,
},
];
@ -203,7 +177,7 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
taskId,
onSuccess: () => {
history.goBack();
}
},
},
});
}
@ -223,44 +197,13 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
}
}
// 如果是编辑模式,则直接提交 提示是否确认后直接提交
if (isEditMode) {
Modal.confirm({
title: '提示',
content: '是否确认提交',
onOk: () => {
submitTaskData(null);
},
});
return;
}
// 新增模式下,显示确认对话框询问是否需要下级单位完善
setConfirmModalVisible(true);
};
/**
* 处理确认对话框的取消按钮点击事件
*/
const handleConfirmCancel = () => {
setConfirmModalVisible(false);
};
/**
* 处理确认对话框的"是"选项点击事件
* 提交任务,并设置状态为需要下级单位完善
*/
const handleConfirmYes = () => {
submitTaskData(TaskNotifyLowerUnits.YES); // 未开始状态,需要下级单位完善
setConfirmModalVisible(false);
};
/**
* 处理确认对话框的"否"选项点击事件
* 提交任务,并设置状态为不需要下级单位完善
*/
const handleConfirmNo = () => {
submitTaskData(TaskNotifyLowerUnits.NO); // 进行中状态,不需要下级单位完善
setConfirmModalVisible(false);
Modal.confirm({
title: '提示',
content: '是否确认提交',
onOk: () => {
submitTaskData(null);
},
});
};
return (
@ -269,7 +212,7 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
<Card bordered={false} loading={detailLoading}>
{/* 页面头部,包含标题和返回按钮 */}
<div className="page-header">
<h2>{isEditMode ? '修改评价任务' : '新增评价任务'}</h2>
<h2>{isEditMode ? '修改年审任务' : '新增年审任务'}</h2>
<Button type="link" icon={<ArrowLeftOutlined />} onClick={handleBack}>
</Button>
@ -293,7 +236,9 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
<div className={styles.stepsAction}>
<Space>
{/* 如果当前是评价分工步骤,则不显示上一步按钮 */}
{currentStep > (isDivisionMode ? 2 : 0) && <Button onClick={handlePrev}></Button>}
{currentStep > 0 && (
<Button onClick={handlePrev}></Button>
)}
{currentStep < steps.length - 1 && (
<Button type="primary" onClick={handleNext}>
@ -314,30 +259,13 @@ const SupplierTaskManageAdd: React.FC<PageProps> = ({ supplierAnnualTaskManage,
</Col>
</Row>
</Card>
{/* 确认对话框 - 询问是否需要下级单位完善 */}
<Modal
title="提交确认"
visible={confirmModalVisible}
onCancel={handleConfirmCancel}
footer={null}
>
<p></p>
<div style={{ textAlign: 'right', marginTop: 24 }}>
<Space>
<Button type="primary" onClick={handleConfirmYes}>
</Button>
<Button onClick={handleConfirmNo}></Button>
<Button onClick={handleConfirmCancel}></Button>
</Space>
</div>
</Modal>
</div>
);
};
// 将dva model中的状态映射到组件props
export default connect(({ supplierAnnualTaskManage }: { supplierAnnualTaskManage: SupplierTaskModelState }) => ({
supplierAnnualTaskManage,
}))(SupplierTaskManageAdd);
export default connect(
({ supplierAnnualTaskManage }: { supplierAnnualTaskManage: SupplierTaskModelState }) => ({
supplierAnnualTaskManage,
}),
)(SupplierTaskManageAdd);