Compare commits
2 Commits
a8a4bbdb8f
...
de06ba4e41
Author | SHA1 | Date | |
---|---|---|---|
de06ba4e41 | |||
2b1715db6f |
@ -2,7 +2,7 @@
|
||||
|
||||
// 审查状态常量
|
||||
export const AnnualReviewStatus = {
|
||||
WAITING: '0', // 待审核
|
||||
WAITING: '0', // 未开始
|
||||
ONGOING: '1', // 审核中
|
||||
COMPLETED: '2', // 已完成
|
||||
EXPIRED: '3', // 已过期
|
||||
@ -10,7 +10,7 @@ export const AnnualReviewStatus = {
|
||||
|
||||
// 审查状态文本
|
||||
export const AnnualReviewStatusText = {
|
||||
[AnnualReviewStatus.WAITING]: '待审核',
|
||||
[AnnualReviewStatus.WAITING]: '未开始',
|
||||
[AnnualReviewStatus.ONGOING]: '审核中',
|
||||
[AnnualReviewStatus.COMPLETED]: '已完成',
|
||||
[AnnualReviewStatus.EXPIRED]: '已过期',
|
||||
|
@ -217,6 +217,12 @@ const SupplierAnnualReview: React.FC = () => {
|
||||
key: 'statusName',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
title: "提交状态",
|
||||
dataIndex: 'reviewStatusName',
|
||||
key: 'reviewStatusName',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierAnnualReview.common.operation' }),
|
||||
key: 'action',
|
||||
@ -232,7 +238,7 @@ const SupplierAnnualReview: React.FC = () => {
|
||||
{intl.formatMessage({ id: 'supplierAnnualReview.common.view' })}
|
||||
</Button>
|
||||
{/* 只有待审核状态的可以打分 */}
|
||||
{record.reviewStatus === AnnualReviewStatus.WAITING && (
|
||||
{record.status !== "0" && record.reviewStatus === "0" && (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => handleScore(record)}
|
||||
|
@ -33,7 +33,7 @@ const { TextArea } = Input;
|
||||
// 评分项接口定义
|
||||
interface ScoreFormItem {
|
||||
id: string;
|
||||
name: string;
|
||||
itemName: string;
|
||||
description: string;
|
||||
examineResult: string;
|
||||
remark: string;
|
||||
@ -59,12 +59,12 @@ const SupplierAnnualReviewScore: React.FC = () => {
|
||||
setReviewDetail(res.data);
|
||||
|
||||
// 使用接口返回的评分项数据
|
||||
if (res.data.scoreItems && res.data.scoreItems.length > 0) {
|
||||
setScoreItems(res.data.scoreItems);
|
||||
if (res.data.taskIndicatorVo && res.data.taskIndicatorVo.length > 0) {
|
||||
setScoreItems(res.data.taskIndicatorVo);
|
||||
|
||||
// 初始化表单
|
||||
const initialValues: any = {};
|
||||
res.data.scoreItems.forEach((item: ScoreFormItem) => {
|
||||
res.data.taskIndicatorVo.forEach((item: ScoreFormItem) => {
|
||||
initialValues[`examineResult_${item.id}`] = item.examineResult || '';
|
||||
initialValues[`remark_${item.id}`] = item.remark || '';
|
||||
});
|
||||
@ -109,7 +109,7 @@ const SupplierAnnualReviewScore: React.FC = () => {
|
||||
const formValues = form.getFieldsValue();
|
||||
const scoreVoList = scoreItems.map((item) => ({
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
name: item.itemName,
|
||||
description: item.description,
|
||||
examineResult: formValues[`examineResult_${item.id}`],
|
||||
remark: formValues[`remark_${item.id}`] || '',
|
||||
@ -191,12 +191,12 @@ const SupplierAnnualReviewScore: React.FC = () => {
|
||||
{reviewDetail.deptName || '-'}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.reviewer' })}>
|
||||
{reviewDetail.userName || '-'}
|
||||
{reviewDetail.reviewerName || '-'}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.startTime' })}>{reviewDetail.startTime}</Descriptions.Item>
|
||||
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.endTime' })}>{reviewDetail.endTime}</Descriptions.Item>
|
||||
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.status' })}>
|
||||
{getStatusTag(reviewDetail.reviewStatus, reviewDetail.reviewStatusName)}
|
||||
{reviewDetail.reviewStatusName || '-'}
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
</Card>
|
||||
@ -215,14 +215,14 @@ const SupplierAnnualReviewScore: React.FC = () => {
|
||||
columns={[
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierAnnualReview.score.scoreItem' }),
|
||||
dataIndex: 'name',
|
||||
dataIndex: 'itemName',
|
||||
width: '15%',
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierAnnualReview.score.scoreItemDesc' }),
|
||||
dataIndex: 'description',
|
||||
width: '25%',
|
||||
},
|
||||
// {
|
||||
// title: intl.formatMessage({ id: 'supplierAnnualReview.score.scoreItemDesc' }),
|
||||
// dataIndex: 'description',
|
||||
// width: '25%',
|
||||
// },
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierAnnualReview.detail.examineResult' }),
|
||||
dataIndex: 'examineResult',
|
||||
|
@ -273,8 +273,8 @@ status:状态
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.tenantName' }),
|
||||
dataIndex: 'tenantName',
|
||||
key: 'tenantName',
|
||||
dataIndex: 'deptName',
|
||||
key: 'deptName',
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.startTime' }),
|
||||
@ -293,13 +293,13 @@ status:状态
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.submissionStatus' }),
|
||||
dataIndex: 'submissionStatus',
|
||||
key: 'submissionStatus',
|
||||
dataIndex: 'reviewStatusName',
|
||||
key: 'reviewStatusName',
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.submissionTime' }),
|
||||
dataIndex: 'submissionTime',
|
||||
key: 'submissionTime',
|
||||
dataIndex: 'reviewTime',
|
||||
key: 'reviewTime',
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.action' }),
|
||||
@ -309,7 +309,7 @@ status:状态
|
||||
<Button type="link" onClick={() => goToScoring(record, 'supplier', 'view')}>
|
||||
{intl.formatMessage({ id: 'supplierEvaluateScore.button.view' })}
|
||||
</Button>
|
||||
{record.status === '1' && ( // 只有待评分状态才显示打分按钮
|
||||
{record.status === '1' && record.reviewStatus !== '1' && ( // 只有待评分状态才显示打分按钮
|
||||
<Button type="link" onClick={() => goToScoring(record, 'supplier', 'score')}>
|
||||
{intl.formatMessage({ id: 'supplierEvaluateScore.button.score' })}
|
||||
</Button>
|
||||
|
@ -276,6 +276,19 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.addIndicator' }));
|
||||
return;
|
||||
}
|
||||
// 校验每一个一级指标所属的所有二级指标分值是否超过一级指标的分值
|
||||
const hasInvalidScore = templateData.some((stItem) => {
|
||||
const totalScore = stItem.indicatorNdList.reduce(
|
||||
(acc, ndItem) => acc + parseFloat(ndItem.score || '0'),
|
||||
0,
|
||||
);
|
||||
return totalScore > parseFloat(stItem.score || '0');
|
||||
});
|
||||
|
||||
if (hasInvalidScore) {
|
||||
message.error('一级指标分值不能小于二级指标分值之和');
|
||||
return;
|
||||
}
|
||||
|
||||
// 显示确认对话框
|
||||
confirm({
|
||||
@ -341,7 +354,7 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
form.setFieldsValue({
|
||||
indicatorStMore: res.data.indicatorStMore,
|
||||
indicatorTypeMore: res.data.indicatorTypeMore,
|
||||
})
|
||||
});
|
||||
}
|
||||
} else {
|
||||
message.error(
|
||||
@ -509,7 +522,7 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
loading={templateList.length === 0}
|
||||
showSearch={true}
|
||||
filterOption={(input, option) => {
|
||||
return (option?.children ?? '').toLowerCase().includes(input.toLowerCase())
|
||||
return (option?.children ?? '').toLowerCase().includes(input.toLowerCase());
|
||||
}}
|
||||
onSelect={handleTemplateSelect}
|
||||
>
|
||||
@ -543,44 +556,54 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item label="是否可追加一级指标" name="indicatorStMore" hidden={getUserRole() !== 'admin'}>
|
||||
<Radio.Group onChange={(e) => {
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="是否可追加一级指标"
|
||||
name="indicatorStMore"
|
||||
hidden={getUserRole() !== 'admin'}
|
||||
>
|
||||
<Radio.Group
|
||||
onChange={(e) => {
|
||||
if (e.target.value === IndicatorAddOption.CAN_ADD) {
|
||||
form.setFieldsValue({
|
||||
indicatorTypeMore: '',
|
||||
});
|
||||
}
|
||||
}}>
|
||||
<Radio value={IndicatorAddOption.CAN_ADD}>
|
||||
{IndicatorAddOptionText[IndicatorAddOption.CAN_ADD]}
|
||||
</Radio>
|
||||
<Radio value={IndicatorAddOption.CANNOT_ADD}>
|
||||
{IndicatorAddOptionText[IndicatorAddOption.CANNOT_ADD]}
|
||||
</Radio>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Form.Item // 这里必须放在Row下
|
||||
shouldUpdate={(prev, curr) => prev.indicatorStMore !== curr.indicatorStMore}
|
||||
noStyle
|
||||
>
|
||||
{({ getFieldValue }) =>
|
||||
getFieldValue('indicatorStMore') === IndicatorAddOption.CANNOT_ADD ? (
|
||||
<Col span={8}>
|
||||
<Form.Item label="禁用指标类型" name="indicatorTypeMore" hidden={getUserRole() !== 'admin'}>
|
||||
<Select
|
||||
placeholder="请选择禁用指标类型"
|
||||
options={indicatorTypes}
|
||||
allowClear
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
) : null
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Radio value={IndicatorAddOption.CAN_ADD}>
|
||||
{IndicatorAddOptionText[IndicatorAddOption.CAN_ADD]}
|
||||
</Radio>
|
||||
<Radio value={IndicatorAddOption.CANNOT_ADD}>
|
||||
{IndicatorAddOptionText[IndicatorAddOption.CANNOT_ADD]}
|
||||
</Radio>
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
{/* <Col span={8}>
|
||||
</Col>
|
||||
<Form.Item // 这里必须放在Row下
|
||||
shouldUpdate={(prev, curr) => prev.indicatorStMore !== curr.indicatorStMore}
|
||||
noStyle
|
||||
>
|
||||
{({ getFieldValue }) =>
|
||||
getFieldValue('indicatorStMore') === IndicatorAddOption.CANNOT_ADD ? (
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="禁用指标类型"
|
||||
name="indicatorTypeMore"
|
||||
hidden={getUserRole() !== 'admin'}
|
||||
>
|
||||
<Select
|
||||
placeholder="请选择禁用指标类型"
|
||||
options={indicatorTypes}
|
||||
allowClear
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
) : null
|
||||
}
|
||||
</Form.Item>
|
||||
{/* <Col span={8}>
|
||||
<Form.Item
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.indicatorNdMore' })}
|
||||
name="indicatorNdMore"
|
||||
@ -593,7 +616,7 @@ const SupplierTemplateManageAdd: React.FC<PageProps> = ({ breadcrumb, dispatch }
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col> */}
|
||||
</Row>
|
||||
</Row>
|
||||
</Card>
|
||||
|
||||
<Divider />
|
||||
|
Reference in New Issue
Block a user