diff --git a/config/router.config.ts b/config/router.config.ts index 46534a7..75f2db8 100644 --- a/config/router.config.ts +++ b/config/router.config.ts @@ -309,6 +309,27 @@ export default [ }, component: '@/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult', }, + { + name: 'supplierAnnualResultQuery', + path: 'supplierAnnualResultQuery', + meta: { + title: '年审结果一级查询列表', + icon: 'icon-liebiaomoshi', + hide: true, + }, + component: '@/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery', + }, + { + name: 'supplierAnnualResultQuery2', + path: 'supplierAnnualResultQuery2', + meta: { + title: '年审结果二级查询列表', + icon: 'icon-liebiaomoshi', + hide: true, + }, + component: '@/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery2', + }, + { name: 'supplierAnnualResultDetail', path: 'supplierAnnualResultDetail', diff --git a/src/dicts/supplierAnnualResult.ts b/src/dicts/supplierAnnualResult.ts new file mode 100644 index 0000000..4d613f6 --- /dev/null +++ b/src/dicts/supplierAnnualResult.ts @@ -0,0 +1 @@ +// 年审结果字典 \ No newline at end of file diff --git a/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult.less b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult.less new file mode 100644 index 0000000..e1e55c1 --- /dev/null +++ b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult.less @@ -0,0 +1,82 @@ +.common-container { + padding: 24px; + background-color: #f0f2f5; +} + +.page-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 16px; +} + +.detail-card { + margin-bottom: 16px; +} + +.search-form { + margin-bottom: 24px; +} + +.table-operation { + margin-bottom: 16px; +} + +.result-tag { + min-width: 70px; + text-align: center; +} + +/* 公共样式类,与supplierEvaluateResult.less一致 */ +:global { + .common-container { + background-color: #f0f2f5; + min-height: 100%; + padding: 16px; + } + + .filter-action-row { + background-color: #fff; + padding: 16px; + border-radius: 2px; + margin-bottom: 16px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05); + } + + .filter-form { + display: flex; + flex-wrap: wrap; + gap: 16px; + + .ant-form-item { + margin-right: 16px; + margin-bottom: 12px; + + &.filter-btns { + margin-left: auto; + + button { + margin-left: 8px; + } + } + } + } + + .content-area { + background-color: #fff; + padding: 16px; + border-radius: 2px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05); + } + + .ant-card { + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05); + } + + .table-top-row { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 16px; + } +} diff --git a/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult.tsx b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult.tsx index 3c6c1a8..5c0187b 100644 --- a/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult.tsx +++ b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult.tsx @@ -1,11 +1,220 @@ -import React from 'react'; -import { Card } from 'antd'; +import React, { useState, useEffect } from 'react'; +import { Card, Table, Button, Input, Row, Col, message, Space, Form, DatePicker, Select, Tag } from 'antd'; +import { history } from 'umi'; +import { SearchOutlined, DeleteOutlined } from '@ant-design/icons'; +import { getAnnualResultTaskList } from '@/servers/api/supplierAnnual'; +import styles from './supplierAnnualResult.less'; + +const { RangePicker } = DatePicker; +const { Option } = Select; + +// 定义年度审查状态 +const statusOptions = [ + { label: '待审核', value: '0' }, + { label: '审核中', value: '1' }, + { label: '已完成', value: '2' }, +]; const SupplierAnnualResult: React.FC = () => { + const [form] = Form.useForm(); + const [loading, setLoading] = useState(false); + const [data, setData] = useState([]); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 10, + total: 0, + showTotal: (total: number) => `共 ${total} 条记录`, + showSizeChanger: true, + showQuickJumper: true, + }); + const [searchParams, setSearchParams] = useState({}); + + // 获取年度结果列表 + const fetchList = async (params: any = {}) => { + try { + setLoading(true); + const { current, pageSize, ...restParams } = params; + const res = await getAnnualResultTaskList({ + basePageRequest: { + pageNo: current, + pageSize, + }, + ...restParams, + ...searchParams, + }); + + if (res.success) { + setData(res.data?.records || []); + setPagination({ + ...pagination, + current, + pageSize, + total: res.data?.total || 0, + }); + } else { + message.error(res.message || '获取列表失败'); + } + } catch (error) { + console.error('获取列表失败:', error); + message.error('获取列表失败'); + } finally { + setLoading(false); + } + }; + + // 首次加载获取数据 + useEffect(() => { + fetchList({ current: 1, pageSize: 10 }); + }, []); + + // 表格变化处理 + const handleTableChange = (paginationParams: any) => { + fetchList({ + current: paginationParams.current, + pageSize: paginationParams.pageSize, + }); + }; + + // 搜索 + const handleSearch = (values: any) => { + const params = { ...values }; + + // 处理日期范围 + if (params.reviewTime && params.reviewTime.length === 2) { + params.startTime = params.reviewTime[0].format('YYYY-MM-DD'); + params.endTime = params.reviewTime[1].format('YYYY-MM-DD'); + delete params.reviewTime; + } + + setSearchParams(params); + fetchList({ current: 1, pageSize: pagination.pageSize, ...params }); + }; + + // 重置搜索 + const handleReset = () => { + form.resetFields(); + setSearchParams({}); + fetchList({ current: 1, pageSize: pagination.pageSize }); + }; + + // 查看年度统计 + const handleViewYearStats = (record: supplierAnnualResult.TaskRecord) => { + history.push({ + pathname: '/supplierAnnual/supplierAnnualResultQuery', + state: { + taskId: record.id, + annualTheme: record.annualreviewTheme + }, + }); + }; + + const columns = [ + { + title: '序号', + dataIndex: 'index', + key: 'index', + width: 80, + render: (_: any, __: any, index: number) => index + 1 + (pagination.current - 1) * pagination.pageSize, + }, + { + title: '主题', + dataIndex: 'annualreviewTheme', + key: 'annualreviewTheme', + }, + { + title: '品类', + dataIndex: 'category', + key: 'category', + }, + { + title: '发起单位', + dataIndex: 'deptName', + key: 'deptName', + }, + { + title: '年审开始时间', + dataIndex: 'startTime', + key: 'startTime', + }, + { + title: '年审结束时间', + dataIndex: 'endTime', + key: 'endTime', + }, + { + title: '年审状态', + dataIndex: 'statusName', + key: 'statusName', + }, + { + title: '操作', + key: 'action', + width: 120, + render: (text: any, record: supplierAnnualResult.TaskRecord) => ( + + + + ), + }, + ]; + return ( - -
供应商年度结果模块
-
+
+
+
+ + + + + + + + + + + + + +
+
+ +
+ + + ); }; diff --git a/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultDetail.tsx b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultDetail.tsx index e69de29..fed6aa9 100644 --- a/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultDetail.tsx +++ b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultDetail.tsx @@ -0,0 +1,174 @@ +import React, { useState, useEffect } from 'react'; +import { history } from 'umi'; +import { + Button, + Card, + Descriptions, + Divider, + Spin, + message, + Typography, + Empty, + Table, + Tag, +} from 'antd'; +import { ArrowLeftOutlined } from '@ant-design/icons'; +import { getAnnualResultReviewDetail } from '@/servers/api/supplierAnnual'; +import { + AnnualReviewStatus, + AnnualReviewStatusText, + AnnualReviewStatusColor, + ExamineResult, + ExamineResultText, + ExamineResultColor, +} from '@/dicts/supplierAnnualReviewDict'; +import styles from './supplierAnnualResult.less'; + +const { Title } = Typography; + +const SupplierAnnualResultDetail: React.FC = () => { + const [loading, setLoading] = useState(false); + const [reviewDetail, setReviewDetail] = useState(null); + const [scoreResults, setScoreResults] = useState([]); + + // 从路由获取ID和其他参数 + const { id, supplierId, supplierName, taskId, annualTheme } = history.location.state as { + id: string; + supplierId: string; + supplierName: string; + taskId: string; + annualTheme: string; + }; + + // 获取审查详情 + const fetchReviewDetail = async (reviewId: string) => { + try { + setLoading(true); + const res = await getAnnualResultReviewDetail(reviewId); + if (res.success && res.data) { + setReviewDetail(res.data); + + // 设置评分结果 + if (res.data.taskIndicatorVo && Array.isArray(res.data.taskIndicatorVo)) { + setScoreResults(res.data.taskIndicatorVo); + } + } else { + message.error(res.message || '获取审查详情失败'); + } + } catch (error) { + console.error('获取审查详情失败:', error); + message.error('获取审查详情失败'); + } finally { + setLoading(false); + } + }; + + // 首次加载获取数据 + useEffect(() => { + if (id) { + fetchReviewDetail(id); + } else { + message.error('审查ID不存在,无法获取详情'); + history.goBack(); + } + }, [id]); + + // 返回列表页 + const handleBack = () => { + history.goBack(); + }; + + // 获取评审结果标签 + const getResultTag = (result: string | null) => { + if (!result) return 未评审; + const color = ExamineResultColor[result as keyof typeof ExamineResultColor] || 'default'; + const text = ExamineResultText[result as keyof typeof ExamineResultText] || '未知'; + return {text}; + }; + + // 评分结果表格列定义 + const columns = [ + { + title: '序号', + dataIndex: 'index', + key: 'index', + width: 80, + render: (_: any, __: any, index: number) => index + 1, + }, + { + title: '评分项', + dataIndex: 'itemName', + key: 'itemName', + }, + { + title: '评审结果', + dataIndex: 'examineResult', + key: 'examineResult', + width: 120, + render: (result: string | null) => getResultTag(result), + }, + { + title: '星号项', + dataIndex: 'isStar', + key: 'isStar', + width: 120, + render: (result: string) => result === '1' ? '是' : '否', + }, + { + title: '评审说明', + dataIndex: 'remark', + key: 'remark', + }, + ]; + + return ( +
+ +
+ + 供应商年度审查详情 + + +
+ + {reviewDetail ? ( + <> + + + + {supplierName || reviewDetail.name} + + + {annualTheme} + + + + + + + + {scoreResults.length > 0 ? ( +
+ ) : ( + + )} + + + ) : ( + !loading && + )} + + + + ); +}; + +export default SupplierAnnualResultDetail; diff --git a/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery.tsx b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery.tsx new file mode 100644 index 0000000..4ae6a93 --- /dev/null +++ b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery.tsx @@ -0,0 +1,253 @@ +import React, { useState, useEffect } from 'react'; +import { history } from 'umi'; +import { + Button, + Card, + Table, + Input, + Row, + Col, + message, + Space, + Form, + Select, + Typography, + Tag, + DatePicker +} from 'antd'; +import { ArrowLeftOutlined, SearchOutlined, DeleteOutlined } from '@ant-design/icons'; +import { getAnnualResultSupplierList } from '@/servers/api/supplierAnnual'; +import styles from './supplierAnnualResult.less'; + +const { Title } = Typography; +const { Option } = Select; +const { RangePicker } = DatePicker; + +// 定义年度审查结果状态 +const resultOptions = [ + { label: '合格', value: '1' }, + { label: '不合格', value: '2' }, +]; + +const SupplierAnnualResultQuery: React.FC = () => { + const [form] = Form.useForm(); + const [loading, setLoading] = useState(false); + const [data, setData] = useState([]); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 10, + total: 0, + showTotal: (total: number) => `共 ${total} 条记录`, + showSizeChanger: true, + showQuickJumper: true, + }); + const [searchParams, setSearchParams] = useState({}); + + // 从路由获取任务ID和主题 + const { taskId, annualTheme } = history.location.state as { taskId: string; annualTheme: string }; + + // 获取供应商列表 + const fetchList = async (params: any = {}) => { + try { + setLoading(true); + const { current, pageSize, ...restParams } = params; + const res = await getAnnualResultSupplierList({ + annualreviewTaskId: taskId, + basePageRequest: { + pageNo: current, + pageSize, + }, + ...restParams, + ...searchParams, + }); + + if (res.success) { + setData(res.data?.records || []); + setPagination({ + ...pagination, + current, + pageSize, + total: res.data?.total || 0, + }); + } else { + message.error(res.message || '获取列表失败'); + } + } catch (error) { + console.error('获取列表失败:', error); + message.error('获取列表失败'); + } finally { + setLoading(false); + } + }; + + // 首次加载获取数据 + useEffect(() => { + if (taskId) { + fetchList({ current: 1, pageSize: 10 }); + } else { + message.error('任务ID不存在,无法获取详情'); + history.goBack(); + } + }, [taskId]); + + // 表格变化处理 + const handleTableChange = (paginationParams: any) => { + fetchList({ + current: paginationParams.current, + pageSize: paginationParams.pageSize, + }); + }; + + // 搜索 + const handleSearch = (values: any) => { + const params = { ...values }; + + // 处理日期范围 + if (params.reviewTime && params.reviewTime.length === 2) { + params.startTime = params.reviewTime[0].format('YYYY-MM-DD'); + params.endTime = params.reviewTime[1].format('YYYY-MM-DD'); + delete params.reviewTime; + } + + setSearchParams(params); + fetchList({ current: 1, pageSize: pagination.pageSize, ...params }); + }; + + // 重置搜索 + const handleReset = () => { + form.resetFields(); + setSearchParams({}); + fetchList({ current: 1, pageSize: pagination.pageSize }); + }; + + // 返回列表页 + const handleBack = () => { + history.goBack(); + }; + + // 查看详情 + const handleViewDetail = (record: supplierAnnualResult.SupplierRecord) => { + history.push({ + pathname: '/supplierAnnual/supplierAnnualResultQuery2', + state: { + supplierId: record.supplierId, + supplierName: record.name, + taskId, + annualTheme, + annualreviewTaskId: record.annualreviewTaskId, + }, + }); + }; + + const columns = [ + { + title: '序号', + dataIndex: 'index', + key: 'index', + width: 80, + render: (_: any, __: any, index: number) => index + 1 + (pagination.current - 1) * pagination.pageSize, + }, + { + title: '供应商名称', + dataIndex: 'name', + key: 'name', + }, + { + title: '品类', + dataIndex: 'category', + key: 'category', + }, + { + title: '审查单位', + dataIndex: 'deptName', + key: 'deptName', + }, + { + title: '审查结果', + dataIndex: 'reviewResultName', + key: 'reviewResultName', + }, + { + title: '操作', + key: 'action', + width: 120, + render: (text: any, record: supplierAnnualResult.SupplierRecord) => ( + + + + ), + }, + ]; + + return ( +
+ +
+ + {annualTheme || '供应商年度结果'} + + +
+ +
+
+ + + + + + + + + + + + + + +
+ +
+
+ + + + ); +}; + +export default SupplierAnnualResultQuery; diff --git a/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery2.tsx b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery2.tsx new file mode 100644 index 0000000..9e58b52 --- /dev/null +++ b/src/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResultQuery2.tsx @@ -0,0 +1,294 @@ +import React, { useState, useEffect } from 'react'; +import { history } from 'umi'; +import { + Button, + Card, + Table, + Input, + Row, + Col, + message, + Space, + Form, + Select, + Typography, + Tag, + DatePicker +} from 'antd'; +import { ArrowLeftOutlined, SearchOutlined, DeleteOutlined } from '@ant-design/icons'; +import { getAnnualResultReviewList } from '@/servers/api/supplierAnnual'; +import styles from './supplierAnnualResult.less'; +import { + AnnualReviewStatus, + AnnualReviewStatusText, + AnnualReviewStatusColor +} from '@/dicts/supplierAnnualReviewDict'; + +const { Title } = Typography; +const { Option } = Select; +const { RangePicker } = DatePicker; + +// 定义审查结果状态 +const resultOptions = [ + { label: '合格', value: '1' }, + { label: '不合格', value: '2' }, +]; + +const SupplierAnnualResultQuery2: React.FC = () => { + const [form] = Form.useForm(); + const [loading, setLoading] = useState(false); + const [data, setData] = useState([]); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 10, + total: 0, + showTotal: (total: number) => `共 ${total} 条记录`, + showSizeChanger: true, + showQuickJumper: true, + }); + const [searchParams, setSearchParams] = useState({}); + + // 从路由获取供应商ID和名称 + const { supplierId, supplierName, taskId, annualTheme,annualreviewTaskId } = history.location.state as { + supplierId: string; + supplierName: string; + taskId: string; + annualTheme: string; + annualreviewTaskId: string; + }; + + // 获取供应商审查列表 + const fetchList = async (params: any = {}) => { + try { + setLoading(true); + const { current, pageSize, ...restParams } = params; + const res = await getAnnualResultReviewList({ + basePageRequest: { + pageNo: current, + pageSize, + }, + supplierId, // 使用userId参数传递supplierId + annualreviewTaskId, + ...restParams, + ...searchParams, + }); + + if (res.success) { + setData(res.data?.records || []); + setPagination({ + ...pagination, + current, + pageSize, + total: res.data?.total || 0, + }); + } else { + message.error(res.message || '获取列表失败'); + } + } catch (error) { + console.error('获取列表失败:', error); + message.error('获取列表失败'); + } finally { + setLoading(false); + } + }; + + // 首次加载获取数据 + useEffect(() => { + if (supplierId) { + fetchList({ current: 1, pageSize: 10 }); + } else { + message.error('供应商ID不存在,无法获取详情'); + history.goBack(); + } + }, [supplierId]); + + // 表格变化处理 + const handleTableChange = (paginationParams: any) => { + fetchList({ + current: paginationParams.current, + pageSize: paginationParams.pageSize, + }); + }; + + // 搜索 + const handleSearch = (values: any) => { + const params = { ...values }; + + // 处理日期范围 + if (params.reviewTime && params.reviewTime.length === 2) { + params.startTime = params.reviewTime[0].format('YYYY-MM-DD'); + params.endTime = params.reviewTime[1].format('YYYY-MM-DD'); + delete params.reviewTime; + } + + setSearchParams(params); + fetchList({ current: 1, pageSize: pagination.pageSize, ...params }); + }; + + // 重置搜索 + const handleReset = () => { + form.resetFields(); + setSearchParams({}); + fetchList({ current: 1, pageSize: pagination.pageSize }); + }; + + // 返回列表页 + const handleBack = () => { + history.goBack(); + }; + + // 查看详情 + const handleViewDetail = (record: supplierAnnualResult.ReviewRecord) => { + history.push({ + pathname: '/supplierAnnual/supplierAnnualResultDetail', + state: { + id: record.id, + supplierId, + supplierName, + taskId, + annualTheme, + annualreviewTaskId, + }, + }); + }; + + // 获取状态标签 + const getStatusTag = (status: string | undefined, statusName: string | undefined) => { + if (!status) return 未知状态; + const color = AnnualReviewStatusColor[status as keyof typeof AnnualReviewStatusColor] || 'default'; + const text = statusName || AnnualReviewStatusText[status as keyof typeof AnnualReviewStatusText] || '未知状态'; + return {text}; + }; + + const columns = [ + { + title: '序号', + dataIndex: 'index', + key: 'index', + width: 80, + render: (_: any, __: any, index: number) => index + 1 + (pagination.current - 1) * pagination.pageSize, + }, + { + title: '供应商名称', + dataIndex: 'name', + key: 'name', + }, + { + title: '品类', + dataIndex: 'category', + key: 'category', + }, + { + title: '审查单位', + dataIndex: 'deptName', + key: 'deptName', + }, + { + title: '审查部门', + dataIndex: 'reviewDept', + key: 'reviewDept', + }, + { + title: '评价人员', + dataIndex: 'userName', + key: 'userName', + }, + { + title: '审查时间', + dataIndex: 'reviewTime', + key: 'reviewTime', + render: (_: any, record: supplierAnnualResult.ReviewRecord) => ( + {record.startTime} 至 {record.endTime} + ), + }, + { + title: '审查结果', + dataIndex: 'reviewStatus', + key: 'reviewStatus', + render: (status: string, record: supplierAnnualResult.ReviewRecord) => + getStatusTag(status, record.reviewStatusName), + }, + { + title: '操作', + key: 'action', + width: 120, + render: (text: any, record: supplierAnnualResult.ReviewRecord) => ( + + + + ), + }, + ]; + + return ( +
+ +
+ + {supplierName || '供应商'} - 审查记录 + + +
+ +
+
+ + + + + + + + + + + + + + +
+ +
+
+ + + + ); +}; + +export default SupplierAnnualResultQuery2; diff --git a/src/servers/api/supplierAnnual.ts b/src/servers/api/supplierAnnual.ts index 43d2a92..a20b7c6 100644 --- a/src/servers/api/supplierAnnual.ts +++ b/src/servers/api/supplierAnnual.ts @@ -119,3 +119,76 @@ export async function submitAnnualReviewScore(params: supplierAnnualReview.Score data: params, }); } + +// =================== 供应商年度结果模块 =================== + +/** + * 获取供应商年度结果任务列表(一级列表) + * @param params 查询参数 + * @returns Promise + */ +export async function getAnnualResultTaskList(params: supplierAnnualResult.TaskListRequest) { + return request('/annualreview/task/getPage', { + method: 'POST', + data: params, + }); +} + +/** + * 获取供应商列表(二级列表) + * @param params 查询参数 + * @returns Promise + */ +export async function getAnnualResultSupplierList(params: supplierAnnualResult.SupplierListRequest) { + return request('/system/supplier/getPage', { + method: 'POST', + data: params, + }); +} + +/** + * 获取供应商审查列表(三级列表) + * @param params 查询参数 + * @returns Promise + */ +export async function getAnnualResultReviewList(params: supplierAnnualResult.ReviewListRequest) { + return request('/annualreview/user/getPage', { + method: 'POST', + data: params, + }); +} + +/** + * 获取供应商审查详情 + * @param id 审查ID + * @returns Promise + */ +export async function getAnnualResultReviewDetail(id: string) { + return request(`/annualreview/user/${id}`, { + method: 'GET', + }); +} + +// 以下是旧的API函数,可以暂时保留,后续需要确认是否废弃 +// 获取供应商年度结果列表 +export async function getAnnualResultList(params: any) { + return request('/annualreview/result/getPage', { + method: 'POST', + data: params, + }); +} + +// 获取年度统计列表 +export async function getAnnualYearStatsList(params: any) { + return request('/annualreview/result/getYearStats', { + method: 'POST', + data: params, + }); +} + +// 获取供应商年度结果详情 +export async function getAnnualResultDetail(id: string) { + return request(`/annualreview/result/${id}`, { + method: 'GET', + }); +} diff --git a/src/servers/dao/supplierAnnualManage/supplierAnnualResult.d.ts b/src/servers/dao/supplierAnnualManage/supplierAnnualResult.d.ts new file mode 100644 index 0000000..98fbe69 --- /dev/null +++ b/src/servers/dao/supplierAnnualManage/supplierAnnualResult.d.ts @@ -0,0 +1,176 @@ +// 供应商年度结果模块 dao 接口 + +declare namespace supplierAnnualResult { + // 基础分页请求参数 + interface BasePageRequest { + pageNo: number; + pageSize: number; + [property: string]: any; + } + + // 一级列表接口 - 年度结果任务列表请求参数 + interface TaskListRequest { + basePageRequest: BasePageRequest; + [property: string]: any; + } + + // 一级列表接口 - 年度结果任务列表响应 + interface TaskListResponse { + code: number; + data: TaskListData; + message: string; + success: boolean; + [property: string]: any; + } + + // 年度结果任务列表数据 + interface TaskListData { + countId: null; + current: number; + hitCount: boolean; + maxLimit: null; + optimizeCountSql: boolean; + orders: any[]; + pages: number; + records: TaskRecord[]; + searchCount: boolean; + size: number; + total: number; + [property: string]: any; + } + + // 年度结果任务记录 + interface TaskRecord { + annualreviewTheme: string; + basePageRequest: null; + deptName: string; + endTime: string; + id: string; + startTime: string; + status: string; + statusName: string; + [property: string]: any; + } + + // 二级列表接口 - 供应商列表请求参数 + interface SupplierListRequest { + annualreviewTaskId: string; + basePageRequest: BasePageRequest; + [property: string]: any; + } + + // 二级列表接口 - 供应商列表响应 + interface SupplierListResponse { + code: number; + data: SupplierListData; + message: string; + success: boolean; + [property: string]: any; + } + + // 供应商列表数据 + interface SupplierListData { + countId: null; + current: number; + hitCount: boolean; + maxLimit: null; + optimizeCountSql: boolean; + orders: any[]; + pages: number; + records: SupplierRecord[]; + searchCount: boolean; + size: number; + total: number; + [property: string]: any; + } + + // 供应商记录 + interface SupplierRecord { + annualreviewTaskId: string; + basePageRequest: null; + category: null; + deptName: string; + name: string; + reviewResult: null; + reviewResultName: string; + supplierId: string; + [property: string]: any; + } + + // 三级列表接口 - 审查详情列表请求参数 + interface ReviewListRequest { + basePageRequest: BasePageRequest; + userId: string; + [property: string]: any; + } + + // 三级列表接口 - 审查详情列表响应 + interface ReviewListResponse { + code: number; + data: ReviewListData; + message: string; + success: boolean; + [property: string]: any; + } + + // 审查详情列表数据 + interface ReviewListData { + countId: null; + current: number; + hitCount: boolean; + maxLimit: null; + optimizeCountSql: boolean; + orders: string[]; + pages: number; + records: ReviewRecord[]; + searchCount: boolean; + size: number; + total: number; + [property: string]: any; + } + + // 审查详情记录 + interface ReviewRecord { + annualreviewTheme: string; + basePageRequest: null; + deptName: string; + endTime: string; + id: string; + name: string; + reviewStatus: string; + reviewStatusName: string; + startTime: string; + status: string; + statusName: string; + userId: null; + userName: string; + [property: string]: any; + } + + // 详情接口 - 评审详情响应 + interface ReviewDetailResponse { + code: number; + data: ReviewDetailData; + message: string; + success: boolean; + [property: string]: any; + } + + // 评审详情数据 + interface ReviewDetailData { + category: null; + name: string; + taskIndicatorVo: TaskIndicatorVo[]; + [property: string]: any; + } + + // 评分项 + interface TaskIndicatorVo { + examineResult: null; + id: string; + isStar: string; + itemName: string; + remark: null; + [property: string]: any; + } +}