修复ts警告,增加供应商评价模板管理一级指标二级指标的禁用逻辑

This commit is contained in:
linxd
2025-07-02 15:33:36 +08:00
parent aa7f985a74
commit 1dc59c9587
14 changed files with 247 additions and 144 deletions

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
import { Card, Table, Button, Input, Row, Col, message, Space, Form, DatePicker, Select, Tag } from 'antd';
import { Table, Button, Input, message, Space, Form, DatePicker, Select } from 'antd';
import { history } from 'umi';
import { SearchOutlined, DeleteOutlined } from '@ant-design/icons';
import { getAnnualResultTaskList } from '@/servers/api/supplierAnnual';

View File

@ -15,10 +15,6 @@ import {
import { ArrowLeftOutlined } from '@ant-design/icons';
import { getAnnualResultReviewDetail } from '@/servers/api/supplierAnnual';
import {
AnnualReviewStatus,
AnnualReviewStatusText,
AnnualReviewStatusColor,
ExamineResult,
ExamineResultText,
ExamineResultColor,
} from '@/dicts/supplierAnnualReviewDict';
@ -32,11 +28,9 @@ const SupplierAnnualResultDetail: React.FC = () => {
const [scoreResults, setScoreResults] = useState<supplierAnnualResult.TaskIndicatorVo[]>([]);
// 从路由获取ID和其他参数
const { id, supplierId, supplierName, taskId, annualTheme } = history.location.state as {
const { id, supplierName, annualTheme } = history.location.state as {
id: string;
supplierId: string;
supplierName: string;
taskId: string;
annualTheme: string;
};

View File

@ -5,14 +5,11 @@ import {
Card,
Table,
Input,
Row,
Col,
message,
Space,
Form,
Select,
Typography,
Tag,
DatePicker
} from 'antd';
import { ArrowLeftOutlined, SearchOutlined, DeleteOutlined } from '@ant-design/icons';

View File

@ -5,8 +5,6 @@ import {
Card,
Table,
Input,
Row,
Col,
message,
Space,
Form,
@ -19,7 +17,6 @@ import { ArrowLeftOutlined, SearchOutlined, DeleteOutlined } from '@ant-design/i
import { getAnnualResultReviewList } from '@/servers/api/supplierAnnual';
import styles from './supplierAnnualResult.less';
import {
AnnualReviewStatus,
AnnualReviewStatusText,
AnnualReviewStatusColor
} from '@/dicts/supplierAnnualReviewDict';

View File

@ -57,11 +57,6 @@ const BasicInfoStepComponent = (props: BasicInfoStepProps) => {
// 获取评价模板和初始化表单数据
useEffect(() => {
fetchTemplates();
// 初始化表单数据
if (taskFormData) {
form.setFieldsValue(taskFormData);
}
}, []);
// 当taskFormData变化时更新表单值

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect, forwardRef, useImperativeHandle, useRef } from 'react';
import { Card, Button, Space, Form } from 'antd';
import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';
import { Card, Button, Space } from 'antd';
import styles from '../supplierAnnualTaskManageAdd.less';
import {
SupplierTable,
@ -60,8 +60,6 @@ const EvaluatorSelectStepComponent = (props: EvaluatorSelectStepProps) => {
// 模态框模式SELECT(选择模式) 或 VIEW(查看模式)
const [modalMode, setModalMode] = useState<ModalMode>(ModalMode.SELECT);
// 表单实例,用于权重设置
const [form] = Form.useForm();
const [filterUserIds, setFilterUserIds] = useState<string[]>([]);
useEffect(() => {
if (mode === 'division' && taskFormData.userList && taskFormData.userList.length > 0) {

View File

@ -1,11 +1,8 @@
import React, { useState, useEffect } from 'react';
import {
Card,
Table,
Button,
Input,
Row,
Col,
message,
Space,
Form,
@ -13,15 +10,12 @@ import {
Select,
Tag,
Tooltip,
Modal,
} from 'antd';
import { history } from 'umi';
import {
SearchOutlined,
DeleteOutlined,
PlusOutlined,
EditOutlined,
EyeOutlined,
} from '@ant-design/icons';
import { getAnnualTaskList } from '@/servers/api/supplierAnnual';
import {
@ -30,8 +24,6 @@ import {
AnnualTaskStatusColor,
AnnualTaskStatusOptions,
} from '@/dicts/supplierAnnualTaskManageDict';
import moment from 'moment';
import styles from './supplierAnnualTaskManage.less';
const { RangePicker } = DatePicker;
const { Option } = Select;
@ -86,6 +78,7 @@ const SupplierAnnualTaskManage: React.FC = () => {
// 首次加载获取数据
useEffect(() => {
fetchList({ current: 1, pageSize: 10 });
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
// 表格变化处理

View File

@ -25,7 +25,6 @@ import {
CategoryLimitationTypeText,
TemplateStatus,
TemplateStatusText,
StarLevel,
IndicatorAddOption
} from '@/dicts/supplierTemplateDict';
import {
@ -71,6 +70,7 @@ const SupplierTemplateManageAdd: React.FC = () => {
const [indicatorStMore, setIndicatorStMore] = useState<string>(IndicatorAddOption.CAN_ADD);
const [indicatorNdMore, setIndicatorNdMore] = useState<string>(IndicatorAddOption.CAN_ADD);
// 获取路由传递的数据
const location = useLocation<LocationState>();
@ -122,12 +122,10 @@ const SupplierTemplateManageAdd: React.FC = () => {
setLoading(false);
}
};
// 初始化编辑数据
useEffect(() => {
// 获取所有模板列表
fetchTemplateList();
// 如果是编辑模式,加载编辑数据
if (location.state?.isEdit && location.state?.editData) {
setIsEdit(true);
@ -242,19 +240,30 @@ const SupplierTemplateManageAdd: React.FC = () => {
// 处理模板选择
const handleTemplateSelect = async (templateId: string) => {
// 如果是新建模式,并且选择了模板,获取模板详情作为基础数据
// 要求,如果选择模板时,需读取模板中的 indicatorStMore(一级指标是否可编辑) 和 indicatorNdMore(二级指标是否可编辑) 的值
// 来动态设置 EvaluateTemplateTable 组件的value(templateData) 中的disable属性
// 注意 当一级指标禁用时,需要判断指标类型是通用类型的才禁用,其他类型的指标不进行禁用
if (!isEdit && templateId) {
try {
setLoading(true);
const res = await getTemplateDetail(templateId);
if (res.success && res.data) {
// 一级指标是否可编辑
const indicatorStMoreStatus = res.data.indicatorStMore === IndicatorAddOption.CANNOT_ADD;
// 二级指标是否可编辑
const indicatorNdMoreStatus = res.data.indicatorNdMore === IndicatorAddOption.CANNOT_ADD;
// 只复制指标数据,不复制基础信息
if (res.data.indicatorStList && res.data.indicatorStList.length > 0) {
// 复制模板数据但清除ID以创建新记录
const copiedIndicatorStList = JSON.parse(JSON.stringify(res.data.indicatorStList)).map((stItem: SupplierTemplateManage.IndicatorSt) => {
// 通用类型指标禁用,其他类型指标不禁用 (如果当前是true 表示已禁用, 需要同时满足当前指标类型是通用类型)
stItem.disabled = indicatorStMoreStatus && stItem.indicatorType === "generalType";
// 删除ID而不是设为undefined
delete stItem.id;
// delete stItem.id;
stItem.indicatorNdList = stItem.indicatorNdList.map((ndItem: SupplierTemplateManage.IndicatorNd) => {
delete ndItem.id;
ndItem.disabled = indicatorNdMoreStatus
// delete ndItem.id;
return ndItem;
});
return stItem;
@ -372,7 +381,7 @@ const SupplierTemplateManageAdd: React.FC = () => {
<Form.Item
label={intl.formatMessage({ id: 'supplierTemplateManage.form.status' })}
name="status"
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.status' }, { defaultMessage: '请选择是否启用' }) }]}
rules={[{ required: true }]}
>
<Radio.Group>
<Radio value={TemplateStatus.DRAFT}>{TemplateStatusText[TemplateStatus.DRAFT]}</Radio>