路由多语言维护, 优化layoutHeader组件样式,供应商评价-打分详情更改bug
This commit is contained in:
@ -24,6 +24,8 @@ import {
|
||||
AnnualTaskStatusColor,
|
||||
AnnualTaskStatusOptions,
|
||||
} from '@/dicts/supplierAnnualTaskManageDict';
|
||||
import type { DictItem } from '@/servers/api/dicts';
|
||||
import { getDictList } from '@/servers/api/dicts';
|
||||
|
||||
const { RangePicker } = DatePicker;
|
||||
const { Option } = Select;
|
||||
@ -41,7 +43,7 @@ const SupplierAnnualTaskManage: React.FC = () => {
|
||||
showQuickJumper: true,
|
||||
});
|
||||
const [searchParams, setSearchParams] = useState<any>({});
|
||||
|
||||
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
|
||||
// 获取年度任务列表
|
||||
const fetchList = async (params: any = {}) => {
|
||||
try {
|
||||
@ -78,6 +80,11 @@ const SupplierAnnualTaskManage: React.FC = () => {
|
||||
// 首次加载获取数据
|
||||
useEffect(() => {
|
||||
fetchList({ current: 1, pageSize: 10 });
|
||||
getDictList('project_status').then((res) => {
|
||||
if (res.success) {
|
||||
setEvaluateStatus(res.data);
|
||||
}
|
||||
});
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
@ -183,11 +190,9 @@ const SupplierAnnualTaskManage: React.FC = () => {
|
||||
},
|
||||
{
|
||||
title: '评价状态',
|
||||
dataIndex: 'status',
|
||||
key: 'status',
|
||||
width: 100,
|
||||
render: (status: string, record: supplierAnnualTaskManage.TaskRecord) =>
|
||||
getStatusTag(status, record.statusName),
|
||||
dataIndex: 'statusName',
|
||||
key: 'statusName',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
@ -232,9 +237,9 @@ const SupplierAnnualTaskManage: React.FC = () => {
|
||||
</Form.Item>
|
||||
<Form.Item name="status" label="评价状态">
|
||||
<Select placeholder="请选择状态" allowClear style={{ width: 150 }}>
|
||||
{AnnualTaskStatusOptions.map((item) => (
|
||||
<Option key={item.value} value={item.value}>
|
||||
{item.label}
|
||||
{evaluateStatus.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
|
@ -1,6 +1,5 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import {
|
||||
Card,
|
||||
Form,
|
||||
Input,
|
||||
Select,
|
||||
@ -18,9 +17,11 @@ import {
|
||||
SearchOutlined,
|
||||
DeleteOutlined,
|
||||
} from '@ant-design/icons';
|
||||
import { TaskStatus, TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict';
|
||||
import { TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict';
|
||||
import { history } from 'umi';
|
||||
import { getEvaluateResultList, submitTaskForApproval } from '@/servers/api/supplierEvaluate';
|
||||
import { getDictList } from '@/servers/api/dicts';
|
||||
import type { DictItem } from '@/servers/api/dicts';
|
||||
|
||||
|
||||
|
||||
@ -49,24 +50,7 @@ const SupplierEvaluateResult: React.FC = () => {
|
||||
showTotal: (total) => `共 ${total} 条记录`,
|
||||
});
|
||||
const [searchParams, setSearchParams] = useState<EvaluateTaskSearchParams>({});
|
||||
|
||||
// 品类数据
|
||||
const categoryOptions = [
|
||||
{ label: '食品', value: '食品' },
|
||||
{ label: '电子', value: '电子' },
|
||||
{ label: '机械', value: '机械' },
|
||||
{ label: '化工', value: '化工' },
|
||||
{ label: '医药', value: '医药' },
|
||||
];
|
||||
|
||||
// 创建单位数据
|
||||
const unitOptions = [
|
||||
{ label: '中山市合创展包装材料有限公司', value: '中山市合创展包装材料有限公司' },
|
||||
{ label: '广州市科技发展有限公司', value: '广州市科技发展有限公司' },
|
||||
{ label: '深圳市创新科技有限公司', value: '深圳市创新科技有限公司' },
|
||||
{ label: '东莞市制造业有限公司', value: '东莞市制造业有限公司' },
|
||||
];
|
||||
|
||||
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
|
||||
// 获取评价结果列表
|
||||
const fetchResultList = async (
|
||||
current = 1,
|
||||
@ -132,6 +116,11 @@ const SupplierEvaluateResult: React.FC = () => {
|
||||
// 首次加载获取数据
|
||||
useEffect(() => {
|
||||
fetchResultList(pagination.current, pagination.pageSize, {});
|
||||
getDictList('project_status').then((res) => {
|
||||
if (res.success) {
|
||||
setEvaluateStatus(res.data);
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
// 处理表格分页变化
|
||||
@ -260,10 +249,9 @@ const SupplierEvaluateResult: React.FC = () => {
|
||||
},
|
||||
{
|
||||
title: '评价状态',
|
||||
dataIndex: 'status',
|
||||
key: 'status',
|
||||
dataIndex: 'statusName',
|
||||
key: 'statusName',
|
||||
width: 100,
|
||||
render: (status: string) => getStatusTag(status),
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
@ -305,9 +293,11 @@ const SupplierEvaluateResult: React.FC = () => {
|
||||
</Form.Item>
|
||||
<Form.Item name="status" label="评价状态">
|
||||
<Select placeholder="请选择状态" allowClear style={{ width: 150 }}>
|
||||
<Option value={TaskStatus.DRAFT}>{TaskStatusText[TaskStatus.DRAFT]}</Option>
|
||||
<Option value={TaskStatus.PROCESSING}>{TaskStatusText[TaskStatus.PROCESSING]}</Option>
|
||||
<Option value={TaskStatus.COMPLETED}>{TaskStatusText[TaskStatus.COMPLETED]}</Option>
|
||||
{evaluateStatus.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
<Form.Item className="filter-btns">
|
||||
|
@ -63,7 +63,6 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
|
||||
|
||||
// 获取上级页面传递的数据
|
||||
useEffect(() => {
|
||||
console.log(location.state);
|
||||
if (location.state?.record) {
|
||||
setRecord(location.state.record);
|
||||
}
|
||||
|
@ -19,6 +19,8 @@ import {
|
||||
getSupplierDimension,
|
||||
getTaskPage,
|
||||
} from '@/servers/api/supplierEvaluate';
|
||||
import { getDictList } from '@/servers/api/dicts';
|
||||
import type { DictItem } from '@/servers/api/dicts';
|
||||
|
||||
const { Title } = Typography;
|
||||
const { TabPane } = Tabs;
|
||||
@ -30,9 +32,9 @@ const SupplierEvaluateScore: React.FC = () => {
|
||||
// 新增状态
|
||||
const [activeTab, setActiveTab] = useState<string>('supplier');
|
||||
const [supplierTableData, setSupplierTableData] = useState<
|
||||
supplierEvaluateScore.SupplierDimensionRecord[]
|
||||
SupplierEvaluateScore.SupplierDimensionResponse[]
|
||||
>([]);
|
||||
const [taskTableData, setTaskTableData] = useState<supplierEvaluateScore.TaskPageRecord[]>([]);
|
||||
const [taskTableData, setTaskTableData] = useState<SupplierEvaluateScore.TaskPageResponse[]>([]);
|
||||
const [supplierTableLoading, setSupplierTableLoading] = useState<boolean>(false);
|
||||
const [taskTableLoading, setTaskTableLoading] = useState<boolean>(false);
|
||||
const [pagination, setPagination] = useState({
|
||||
@ -40,6 +42,7 @@ const SupplierEvaluateScore: React.FC = () => {
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
});
|
||||
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
|
||||
/*
|
||||
name :关键字
|
||||
startTime:开始时间
|
||||
@ -51,7 +54,7 @@ status:状态
|
||||
const values = filterForm.getFieldsValue();
|
||||
|
||||
if (activeTab === 'supplier') {
|
||||
const params: supplierEvaluateScore.SupplierDimensionRequest = {
|
||||
const params: SupplierEvaluateScore.SupplierDimensionRequest = {
|
||||
basePageRequest: {
|
||||
pageNo: pagination.current,
|
||||
pageSize: pagination.pageSize,
|
||||
@ -68,7 +71,7 @@ status:状态
|
||||
|
||||
return params;
|
||||
} else {
|
||||
const params: supplierEvaluateScore.TaskPageRequest = {
|
||||
const params: SupplierEvaluateScore.TaskPageRequest = {
|
||||
basePageRequest: {
|
||||
pageNo: pagination.current,
|
||||
pageSize: pagination.pageSize,
|
||||
@ -153,6 +156,11 @@ status:状态
|
||||
// 初始化加载数据
|
||||
useEffect(() => {
|
||||
handleSearch();
|
||||
getDictList('project_status').then((res) => {
|
||||
if (res.success) {
|
||||
setEvaluateStatus(res.data);
|
||||
}
|
||||
});
|
||||
}, [activeTab]);
|
||||
|
||||
// 处理标签页切换
|
||||
@ -381,10 +389,11 @@ status:状态
|
||||
|
||||
<Form.Item name="status" label="评价状态">
|
||||
<Select placeholder="请选择" style={{ width: 150 }} allowClear>
|
||||
<Option value="1">待评分</Option>
|
||||
<Option value="2">已评分</Option>
|
||||
<Option value="3">进行中</Option>
|
||||
<Option value="4">已完成</Option>
|
||||
{evaluateStatus.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
|
@ -9,12 +9,11 @@ import {
|
||||
message,
|
||||
Typography,
|
||||
Empty,
|
||||
Space,
|
||||
Form,
|
||||
Modal,
|
||||
} from 'antd';
|
||||
import { ArrowLeftOutlined, SaveOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
|
||||
import { getSupplierScoreDetail, saveEvaluateScore } from '@/servers/api/supplierEvaluate';
|
||||
import { getIndicator, saveEvaluateScore } from '@/servers/api/supplierEvaluate';
|
||||
import ScoreEvaluationTable from '@/components/ScoreEvaluationTable';
|
||||
import styles from './supplierEvaluateScore.less';
|
||||
|
||||
@ -22,18 +21,14 @@ const { Title } = Typography;
|
||||
const { confirm } = Modal;
|
||||
|
||||
const SupplierEvaluateScoreDetail: React.FC = () => {
|
||||
const [form] = Form.useForm();
|
||||
const location = useLocation<{
|
||||
record: supplierEvaluateScore.SupplierDimensionRecord | supplierEvaluateScore.TaskPageRecord;
|
||||
record: SupplierEvaluateScore.SupplierDimensionData;
|
||||
mode?: 'view' | 'score'; // 查看模式或打分模式
|
||||
recordType: 'supplier' | 'task'; // 记录类型:供应商或任务
|
||||
}>();
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
const [submitting, setSubmitting] = useState<boolean>(false);
|
||||
const [saving, setSaving] = useState<boolean>(false);
|
||||
const [scoreDetail, setScoreDetail] = useState<supplierEvaluateScore.ScoreDetailData | null>(
|
||||
null,
|
||||
);
|
||||
const [scoreDetail, setScoreDetail] = useState<SupplierEvaluateResult.EvaluateScoreDetailData>();
|
||||
const [scoreData, setScoreData] = useState<any[]>([]);
|
||||
const [record, setRecord] = useState<any>(null);
|
||||
const [mode, setMode] = useState<'view' | 'score'>('view'); // 默认为查看模式
|
||||
@ -63,7 +58,7 @@ const SupplierEvaluateScoreDetail: React.FC = () => {
|
||||
}, [location]);
|
||||
|
||||
// 将API数据转换为ScoreEvaluationTable组件所需的格式
|
||||
const formatDataForScoreTable = (data: supplierEvaluateScore.ScoreDetailData) => {
|
||||
const formatDataForScoreTable = (data: SupplierEvaluateResult.EvaluateScoreDetailData) => {
|
||||
if (!data?.taskIndicatorVo) return [];
|
||||
|
||||
return data.taskIndicatorVo.map((indicator) => {
|
||||
@ -103,7 +98,7 @@ const SupplierEvaluateScoreDetail: React.FC = () => {
|
||||
|
||||
setLoading(true);
|
||||
try {
|
||||
const response = await getSupplierScoreDetail(record.id);
|
||||
const response = await getIndicator(record.id);
|
||||
|
||||
if (response.success && response.data) {
|
||||
setScoreDetail(response.data);
|
||||
@ -167,7 +162,7 @@ const SupplierEvaluateScoreDetail: React.FC = () => {
|
||||
setSubmitting(true);
|
||||
try {
|
||||
// 构建提交数据
|
||||
const submitData: supplierEvaluateScore.ScoreSaveRequest = {
|
||||
const submitData: SupplierEvaluateScore.ScoreSaveRequest = {
|
||||
id: record.id,
|
||||
scoreVoList: scoreData.flatMap((item) => {
|
||||
return item.indicatorNdList.map((subItem: any) => ({
|
||||
|
@ -6,6 +6,8 @@ import { history, useIntl } from 'umi';
|
||||
import { TaskStatus, TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict';
|
||||
import { getTaskList } from '@/servers/api/supplierEvaluate';
|
||||
import styles from './supplierTaskManage.less';
|
||||
import { getDictList } from '@/servers/api/dicts';
|
||||
import type { DictItem } from '@/servers/api/dicts';
|
||||
|
||||
const { Option } = Select;
|
||||
const { RangePicker } = DatePicker;
|
||||
@ -30,7 +32,7 @@ const SupplierTaskManage: React.FC = () => {
|
||||
pageSize: 10,
|
||||
},
|
||||
});
|
||||
|
||||
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
|
||||
const fetchTaskList = async (
|
||||
current: number = 1,
|
||||
pageSize: number = 10,
|
||||
@ -72,6 +74,12 @@ const SupplierTaskManage: React.FC = () => {
|
||||
|
||||
useEffect(() => {
|
||||
fetchTaskList(pagination.current!, pagination.pageSize!, searchParams);
|
||||
// 从字典接口中获取评价状态
|
||||
getDictList('project_status').then((res) => {
|
||||
if (res.success) {
|
||||
setEvaluateStatus(res.data);
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
const handleView = (record: SupplierTaskManage.TaskItem) => {
|
||||
@ -85,15 +93,6 @@ const SupplierTaskManage: React.FC = () => {
|
||||
const handleDivision = (record: SupplierTaskManage.TaskItem) => {
|
||||
history.push(`supplierTaskManageAdd?id=${record.id}&mode=division`);
|
||||
};
|
||||
|
||||
const getStatusTag = (status: string) => {
|
||||
const color = TaskStatusColor[status as keyof typeof TaskStatusColor] || 'default';
|
||||
const text =
|
||||
TaskStatusText[status as keyof typeof TaskStatusText] ||
|
||||
intl.formatMessage({ id: 'supplierTaskManage.status.unknown' });
|
||||
return <Tag color={color}>{text}</Tag>;
|
||||
};
|
||||
|
||||
const handleTableChange = (newPagination: TablePaginationConfig) => {
|
||||
fetchTaskList(newPagination.current!, newPagination.pageSize!, searchParams);
|
||||
};
|
||||
@ -179,7 +178,6 @@ const SupplierTaskManage: React.FC = () => {
|
||||
dataIndex: 'statusName',
|
||||
key: 'statusName',
|
||||
width: 100,
|
||||
// render: (status: string) => getStatusTag(status),
|
||||
},
|
||||
{
|
||||
title: intl.formatMessage({ id: 'supplierTaskManage.column.action' }),
|
||||
@ -240,15 +238,11 @@ const SupplierTaskManage: React.FC = () => {
|
||||
placeholder={intl.formatMessage({ id: 'supplierTaskManage.placeholder.status' })}
|
||||
allowClear
|
||||
>
|
||||
<Option value={TaskStatus.DRAFT}>
|
||||
{intl.formatMessage({ id: 'supplierTaskManage.status.draft' })}
|
||||
</Option>
|
||||
<Option value={TaskStatus.PROCESSING}>
|
||||
{intl.formatMessage({ id: 'supplierTaskManage.status.processing' })}
|
||||
</Option>
|
||||
<Option value={TaskStatus.COMPLETED}>
|
||||
{intl.formatMessage({ id: 'supplierTaskManage.status.completed' })}
|
||||
</Option>
|
||||
{evaluateStatus.map((item) => (
|
||||
<Option key={item.code} value={item.code}>
|
||||
{item.dicName}
|
||||
</Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
|
Reference in New Issue
Block a user