整理接口定义规范

This commit is contained in:
linxd
2025-07-02 12:02:52 +08:00
parent 500272f459
commit aa7f985a74
49 changed files with 1345 additions and 2862 deletions

View File

@ -9,32 +9,37 @@ import {
Space,
Tag,
DatePicker,
TablePaginationConfig,
Modal,
Row,
Col,
Tooltip,
message,
} from 'antd';
import type { TablePaginationConfig } from 'antd';
import {
SearchOutlined,
DeleteOutlined,
EyeOutlined,
PlusOutlined,
} from '@ant-design/icons';
import { TaskStatus, TaskStatusText, TaskStatusColor, TaskType, TaskTypeText } from '@/dicts/supplierTaskDict';
import moment from 'moment';
import styles from './supplierEvaluateResult.less';
import { TaskStatus, TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict';
import { history } from 'umi';
import { getEvaluateResultList, submitTaskForApproval } from '@/servers/api/supplierEvaluate';
// 扩展评价任务搜索参数类型
interface EvaluateTaskSearchParams {
evaluateTheme?: string;
status?: string;
timeRange?: string[];
[key: string]: any;
}
const { Option } = Select;
const { RangePicker } = DatePicker;
const SupplierEvaluateResult: React.FC = () => {
const [loading, setLoading] = useState<boolean>(false);
const [form] = Form.useForm();
const [resultData, setResultData] = useState<API.EvaluateTaskRecord[]>([]);
const [resultData, setResultData] = useState< SupplierEvaluateResult.EvaluateTaskItem []>([]);
const [pagination, setPagination] = useState<TablePaginationConfig>({
current: 1,
pageSize: 10,
@ -43,7 +48,7 @@ const SupplierEvaluateResult: React.FC = () => {
showQuickJumper: true,
showTotal: (total) => `${total} 条记录`,
});
const [searchParams, setSearchParams] = useState<API.EvaluateTaskSearchParams>({});
const [searchParams, setSearchParams] = useState<EvaluateTaskSearchParams>({});
// 品类数据
const categoryOptions = [
@ -66,7 +71,7 @@ const SupplierEvaluateResult: React.FC = () => {
const fetchResultList = async (
current = 1,
pageSize = 10,
params: API.EvaluateTaskSearchParams = searchParams,
params: EvaluateTaskSearchParams = searchParams,
) => {
// 更新搜索参数状态
if (params !== searchParams) {
@ -76,7 +81,7 @@ const SupplierEvaluateResult: React.FC = () => {
setLoading(true);
try {
// 构建请求参数
const requestParams: API.EvaluateTaskRequest = {
const requestParams: SupplierEvaluateResult.EvaluateTaskRequest = {
basePageRequest: {
pageNo: current,
pageSize: pageSize,
@ -137,7 +142,7 @@ const SupplierEvaluateResult: React.FC = () => {
// 处理搜索
const handleSearch = (values: any) => {
const { timeRange, ...rest } = values;
const params: API.EvaluateTaskSearchParams = { ...rest };
const params: EvaluateTaskSearchParams = { ...rest };
if (timeRange && timeRange.length === 2) {
params.timeRange = [timeRange[0].format('YYYY-MM-DD'), timeRange[1].format('YYYY-MM-DD')];
@ -153,7 +158,7 @@ const SupplierEvaluateResult: React.FC = () => {
};
// 处理提交审批
const handleApprove = (record: API.EvaluateTaskRecord) => {
const handleApprove = (record: SupplierEvaluateResult.EvaluateTaskItem ) => {
Modal.confirm({
title: '提交审批确认',
content: `确定要提交"${record.evaluateTheme}"的评价任务进行审批吗?`,
@ -178,7 +183,7 @@ const SupplierEvaluateResult: React.FC = () => {
};
// 查看详情 - 修改为跳转到详情页
const handleViewDetail = (record: API.EvaluateTaskRecord) => {
const handleViewDetail = (record: SupplierEvaluateResult.EvaluateTaskItem ) => {
history.push({
pathname: 'supplierEvaluateResultInfo',
state: { record }
@ -195,7 +200,7 @@ const SupplierEvaluateResult: React.FC = () => {
const columns = [
{
title: '序号',
render: (_: any, __: API.EvaluateTaskRecord, index: number) =>
render: (_: any, __: SupplierEvaluateResult.EvaluateTaskItem , index: number) =>
(pagination.current! - 1) * pagination.pageSize! + index + 1,
width: 80,
},
@ -265,7 +270,7 @@ const SupplierEvaluateResult: React.FC = () => {
key: 'action',
width: 100,
align: 'center' as const,
render: (_: unknown, record: API.EvaluateTaskRecord) => (
render: (_: unknown, record: SupplierEvaluateResult.EvaluateTaskItem ) => (
<Space>
<Button type="link" onClick={() => handleViewDetail(record)}>

View File

@ -9,38 +9,20 @@ import { getIndicator } from '@/servers/api/supplierEvaluate';
const { Title } = Typography;
// 评价打分详情数据接口
interface IndicatorDetailData {
category: string;
name: string;
taskIndicatorVo: {
baseIndicator: string;
indicatorDesc: string;
score: string;
subIndicator: {
id: string;
remark: string | null;
scoreNum: string | null;
starIndicator: string;
stId: string;
subIndicator: string;
subScore: string;
}[];
}[];
}
// 评价打分详情数据接口已移至 SupplierEvaluateResult 命名空间
const SupplierEvaluateResultByZb: React.FC = () => {
const location = useLocation<{
record: API.EvaluateScoreIndicator;
parentRecord: API.EvaluateTaskRecord;
supplierRecord: API.EvaluateSupplierRecord;
scoreDetail: API.EvaluateScoreData;
record: SupplierEvaluateResult.EvaluateScoreIndicator;
parentRecord: SupplierEvaluateResult.EvaluateTaskItem;
supplierRecord: SupplierEvaluateResult.EvaluateSupplierItem;
scoreDetail: SupplierEvaluateResult.EvaluateScoreData;
}>();
const [loading, setLoading] = useState<boolean>(false);
const [scoreRecord, setScoreRecord] = useState<API.EvaluateScoreIndicator | null>(null);
const [parentRecord, setParentRecord] = useState<API.EvaluateTaskRecord | null>(null);
const [supplierRecord, setSupplierRecord] = useState<API.EvaluateSupplierRecord | null>(null);
const [indicatorDetail, setIndicatorDetail] = useState<IndicatorDetailData | null>(null);
const [scoreRecord, setScoreRecord] = useState<SupplierEvaluateResult.EvaluateScoreIndicator | null>(null);
const [parentRecord, setParentRecord] = useState<SupplierEvaluateResult.EvaluateTaskItem | null>(null);
const [supplierRecord, setSupplierRecord] = useState<SupplierEvaluateResult.EvaluateSupplierItem | null>(null);
const [indicatorDetail, setIndicatorDetail] = useState<SupplierEvaluateResult.IndicatorDetailData | null>(null);
// 获取上级页面传递的数据
useEffect(() => {

View File

@ -25,10 +25,10 @@ import { getEvaluateSupplierList, getAllEvaluateRules } from '@/servers/api/supp
const { Option } = Select;
const SupplierEvaluateResultInfo: React.FC = () => {
const location = useLocation<{ record: API.EvaluateTaskRecord }>();
const location = useLocation<{ record: SupplierEvaluateResult.EvaluateTaskItem }>();
const [loading, setLoading] = useState<boolean>(false);
const [form] = Form.useForm();
const [resultData, setResultData] = useState<API.EvaluateSupplierRecord[]>([]);
const [resultData, setResultData] = useState<SupplierEvaluateResult.EvaluateSupplierItem[]>([]);
const [pagination, setPagination] = useState<TablePaginationConfig>({
current: 1,
pageSize: 10,
@ -38,11 +38,11 @@ const SupplierEvaluateResultInfo: React.FC = () => {
showTotal: (total) => `${total} 条记录`,
});
const [searchParams, setSearchParams] =
useState<API.EvaluateSupplierSearchParams>({});
const [parentRecord, setParentRecord] = useState<API.EvaluateTaskRecord | null>(
useState<SupplierEvaluateResult.EvaluateSupplierSearchParams>({});
const [parentRecord, setParentRecord] = useState<SupplierEvaluateResult.EvaluateTaskItem | null>(
null,
);
const [evaluateRules, setEvaluateRules] = useState<API.EvaluateRuleItem[]>([]);
const [evaluateRules, setEvaluateRules] = useState<SupplierEvaluateRuleManage.EvaluateRuleItem[]>([]);
@ -77,7 +77,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
const fetchResultDetailList = async (
current = 1,
pageSize = 10,
params: API.EvaluateSupplierSearchParams = searchParams,
params: SupplierEvaluateResult.EvaluateSupplierSearchParams = searchParams,
) => {
// 确保有评价任务ID
if (!parentRecord?.id) {
@ -93,7 +93,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
setLoading(true);
try {
// 构建请求参数
const requestParams: API.EvaluateSupplierRequest = {
const requestParams: SupplierEvaluateResult.EvaluateSupplierRequest = {
basePageRequest: {
pageNo: current,
pageSize: pageSize,
@ -167,7 +167,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
};
// 查看得分明细
const handleViewScoreDetail = (record: API.EvaluateSupplierRecord) => {
const handleViewScoreDetail = (record: SupplierEvaluateResult.EvaluateSupplierItem) => {
history.push({
pathname: 'supplierEvaluateResultScoreDetail',
state: { record, parentRecord }
@ -175,7 +175,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
};
// 查看打分情况
const handleViewScoring = (record: API.EvaluateSupplierRecord) => {
const handleViewScoring = (record: SupplierEvaluateResult.EvaluateSupplierItem) => {
history.push({
pathname: 'supplierEvaluateResultScoreByList',
state: { record, parentRecord }
@ -185,7 +185,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
const columns = [
{
title: '序号',
render: (_: any, __: API.EvaluateSupplierRecord, index: number) =>
render: (_: any, __: SupplierEvaluateResult.EvaluateSupplierItem, index: number) =>
(pagination.current! - 1) * pagination.pageSize! + index + 1,
width: 80,
},
@ -227,7 +227,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
key: 'action',
width: 180,
align: 'center' as const,
render: (_: unknown, record: API.EvaluateSupplierRecord) => (
render: (_: unknown, record: SupplierEvaluateResult.EvaluateSupplierItem) => (
<Space size="middle">
<Button
type="link"

View File

@ -14,45 +14,21 @@ import { SearchOutlined, DeleteOutlined, ArrowLeftOutlined } from '@ant-design/i
import { history, useLocation } from 'umi';
import { getEvaluateScoreList, getAllEvaluateRules } from '@/servers/api/supplierEvaluate';
// 为修复类型问题,定义新的评分数据结构
interface ScoreDataItem {
id: string;
key: string;
name?: string;
supplierName: string;
evaluateTheme: string;
startTime?: string;
endTime?: string;
evaluateTime: string;
status?: string;
statusName?: string;
score: string | number;
suscore?: string | number;
createBy?: string;
createTime?: string;
updateBy?: string;
updateTime?: string;
categoryName?: string; // 品类名称
deptName?: string; // 评价单位
evaluatorName?: string; // 评价人员
[key: string]: any;
}
// 自定义类型用于传递给详情页的数据
interface DetailPageState {
record: ScoreDataItem;
parentRecord: API.EvaluateSupplierRecord | null;
record: SupplierEvaluateResult.ScoreDataItem;
parentRecord: SupplierEvaluateResult.EvaluateSupplierItem | null;
}
const { Option } = Select;
const SupplierEvaluateResultScoreByList: React.FC = () => {
const location = useLocation<{
record: API.EvaluateSupplierRecord;
record: SupplierEvaluateResult.EvaluateSupplierItem;
}>();
const [loading, setLoading] = useState<boolean>(false);
const [form] = Form.useForm();
const [scoreData, setScoreData] = useState<ScoreDataItem[]>([]);
const [scoreData, setScoreData] = useState<SupplierEvaluateResult.ScoreDataItem[]>([]);
const [pagination, setPagination] = useState<TablePaginationConfig>({
current: 1,
pageSize: 10,
@ -61,9 +37,9 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
showQuickJumper: true,
showTotal: (total) => `${total} 条记录`,
});
const [searchParams, setSearchParams] = useState<API.EvaluateScoreSearchParams>({});
const [record, setRecord] = useState<API.EvaluateSupplierRecord | null>(null);
const [evaluateRules, setEvaluateRules] = useState<API.EvaluateRuleItem[]>([]);
const [searchParams, setSearchParams] = useState<SupplierEvaluateResult.EvaluateScoreSearchParams>({});
const [record, setRecord] = useState<SupplierEvaluateResult.EvaluateSupplierItem | null>(null);
const [evaluateRules, setEvaluateRules] = useState<SupplierEvaluateRuleManage.EvaluateRuleItem[]>([]);
// 获取评价规则列表
const fetchEvaluateRules = async () => {
@ -97,7 +73,7 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
const fetchScoreList = async (
current = 1,
pageSize = 10,
params: API.EvaluateScoreSearchParams = searchParams,
params: SupplierEvaluateResult.EvaluateScoreSearchParams = searchParams,
) => {
// 确保有必要的参数
if (!record?.supplierId || !record?.evaluateTaskId) {
@ -113,7 +89,7 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
setLoading(true);
try {
// 构建请求参数
const requestParams: API.EvaluateScoreRequest = {
const requestParams: SupplierEvaluateResult.EvaluateScoreRequest = {
basePageRequest: {
pageNo: current,
pageSize: pageSize,
@ -181,7 +157,7 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
}, [record]);
// 处理搜索
const handleSearch = (values: API.EvaluateScoreSearchParams) => {
const handleSearch = (values: SupplierEvaluateResult.EvaluateScoreSearchParams) => {
fetchScoreList(1, pagination.pageSize, values);
};
@ -197,7 +173,7 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
};
// 查看评价详情
const handleViewDetail = (scoreItem: ScoreDataItem) => {
const handleViewDetail = (scoreItem: SupplierEvaluateResult.ScoreDataItem) => {
const detailState: DetailPageState = {
record: scoreItem,
parentRecord: record
@ -294,7 +270,7 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
key: 'action',
width: 80,
align: 'center' as const,
render: (_: unknown, scoreItem: ScoreDataItem) => (
render: (_: unknown, scoreItem: SupplierEvaluateResult.ScoreDataItem) => (
<Button type="link" onClick={() => handleViewDetail(scoreItem)}>
</Button>

View File

@ -11,13 +11,13 @@ const { Title } = Typography;
const SupplierEvaluateResultScoreDetail: React.FC = () => {
const location = useLocation<{
record: API.EvaluateSupplierRecord;
parentRecord: API.EvaluateTaskRecord;
record: SupplierEvaluateResult.EvaluateSupplierItem;
parentRecord: SupplierEvaluateResult.EvaluateTaskItem;
}>();
const [loading, setLoading] = useState<boolean>(false);
const [supplierRecord, setSupplierRecord] = useState<API.EvaluateSupplierRecord | null>(null);
const [parentRecord, setParentRecord] = useState<API.EvaluateTaskRecord | null>(null);
const [scoreDetail, setScoreDetail] = useState<API.EvaluateScoreDetailData | null>(null);
const [supplierRecord, setSupplierRecord] = useState<SupplierEvaluateResult.EvaluateSupplierItem | null>(null);
const [parentRecord, setParentRecord] = useState<SupplierEvaluateResult.EvaluateTaskItem | null>(null);
const [scoreDetail, setScoreDetail] = useState<SupplierEvaluateResult.EvaluateScoreDetailData | null>(null);
// 获取上级页面传递的数据
useEffect(() => {
@ -69,12 +69,12 @@ const SupplierEvaluateResultScoreDetail: React.FC = () => {
const formatDataForScoreTable = () => {
if (!scoreDetail?.taskIndicatorVo) return [];
return scoreDetail.taskIndicatorVo.map(indicator => {
return scoreDetail.taskIndicatorVo.map((indicator: SupplierEvaluateResult.TaskIndicatorVo) => {
return {
baseIndicator: indicator.baseIndicator,
descIndicator: indicator.indicatorDesc,
score: indicator.score,
indicatorNdList: indicator.subIndicator?.map(subItem => {
indicatorNdList: indicator.subIndicator?.map((subItem: SupplierEvaluateResult.SubIndicator) => {
return {
subIndicator: subItem.subIndicator,
score: subItem.subScore,