diff --git a/src/dicts/dataStatistics.ts b/src/dicts/dataStatistics.ts index 977f5e7..b30b1d7 100644 --- a/src/dicts/dataStatistics.ts +++ b/src/dicts/dataStatistics.ts @@ -34,6 +34,13 @@ export const AnnualReviewResultColor = { '2': 'red', }; +// 准入方式 +export const AccessTypeText = { + 'online': '线上准入', + 'offline': '线下准入', + 'scattered': '零星采购/应急采购/个人供应商', +}; + // 数据统计类型 export const StatisticsType = { 'EVALUATE': 'evaluate', // 评价情况统计 diff --git a/src/locales/en-US/dataStatistics.ts b/src/locales/en-US/dataStatistics.ts index 2fc5e43..9f52a11 100644 --- a/src/locales/en-US/dataStatistics.ts +++ b/src/locales/en-US/dataStatistics.ts @@ -16,6 +16,9 @@ export default { 'dataStatistics.common.pleaseInput': 'Please input', 'dataStatistics.common.year': 'Year', 'dataStatistics.common.yearFormat': 'Year {year}', + 'dataStatistics.common.accessType': 'Access Type', + 'dataStatistics.common.accessYear': 'Access Year', + 'dataStatistics.common.supplierType': 'Domestic/Foreign', // Annual Review Statistics 'dataStatistics.annual.title': 'Supplier Annual Review Statistics', @@ -50,4 +53,8 @@ export default { 'dataStatistics.qualification.termOfValidity': 'Qualification Expiry Date', 'dataStatistics.qualification.validityRange': 'Expiry Date Range', 'dataStatistics.qualification.getDataFailed': 'Failed to get qualification warning statistics data', + + // Admission Statistics + 'dataStatistics.admission.title': 'Supplier Admission Statistics', + 'dataStatistics.admission.getDataFailed': 'Failed to get admission statistics data', }; diff --git a/src/locales/zh-CN/dataStatistics.ts b/src/locales/zh-CN/dataStatistics.ts index 38ca56d..0b8d443 100644 --- a/src/locales/zh-CN/dataStatistics.ts +++ b/src/locales/zh-CN/dataStatistics.ts @@ -16,6 +16,9 @@ export default { 'dataStatistics.common.pleaseInput': '请输入', 'dataStatistics.common.year': '年度', 'dataStatistics.common.yearFormat': '{year}年', + 'dataStatistics.common.accessType': '准入方式', + 'dataStatistics.common.accessYear': '准入年度', + 'dataStatistics.common.supplierType': '境内/境外', // 年审统计 'dataStatistics.annual.title': '供应商年审统计', @@ -50,4 +53,8 @@ export default { 'dataStatistics.qualification.termOfValidity': '资质到期时间', 'dataStatistics.qualification.validityRange': '到期时间范围', 'dataStatistics.qualification.getDataFailed': '获取资质预警统计数据失败', + + // 准入统计 + 'dataStatistics.admission.title': '供应商准入统计', + 'dataStatistics.admission.getDataFailed': '获取准入统计数据失败', }; diff --git a/src/pages/dataStatistics/supplierAdmissionStatistics/supplierAdmissionStatistics.tsx b/src/pages/dataStatistics/supplierAdmissionStatistics/supplierAdmissionStatistics.tsx index 09d2ed9..8a2aafb 100644 --- a/src/pages/dataStatistics/supplierAdmissionStatistics/supplierAdmissionStatistics.tsx +++ b/src/pages/dataStatistics/supplierAdmissionStatistics/supplierAdmissionStatistics.tsx @@ -3,7 +3,7 @@ import { Button, Table, Input, Select, Form, Tooltip, Tag, message, DatePicker } import type { TablePaginationConfig } from 'antd'; import { SearchOutlined, DeleteOutlined, ExportOutlined } from '@ant-design/icons'; import { useIntl } from 'umi'; -import { AnnualReviewResultText, AnnualReviewResultColor } from '@/dicts/dataStatistics'; +import { AccessTypeText } from '@/dicts/dataStatistics'; import { getSupplierAdmissionStatistics } from '@/servers/api/dataStatistics'; import { downloadFile } from '@/utils/download'; import moment from 'moment'; @@ -26,8 +26,12 @@ const SupplierAnnualStatistics: React.FC = () => { showQuickJumper: true, showTotal: (total) => intl.formatMessage({ id: 'dataStatistics.common.total' }, { total }), }); - const [searchParams, setSearchParams] = - useState({}); + const [searchParams, setSearchParams] = useState< + | (DataStatistics.SupplierAdmissionStatistics & { + annualreviewYear: string; + }) + | undefined + >(); // 准入单位下拉选项 - 假数据 const companyOptions = [ @@ -37,33 +41,29 @@ const SupplierAnnualStatistics: React.FC = () => { { label: '东莞市制造业有限公司', value: '东莞市制造业有限公司' }, ]; - // 年审结果选项 - const annualResultOptions = Object.entries(AnnualReviewResultText).map(([key, value]) => ({ - label: value, - value: key, - })); - // 获取数据 - const fetchStatisticsData = async ( - current = 1, - pageSize = 10, - params: DataStatistics.AnnualReviewStatisticsSearchParams = searchParams, - ) => { - if (params !== searchParams) { + const fetchStatisticsData = async (current = 1, pageSize = 10, params = searchParams) => { + // 如果params没传,证明是重置 + if (!params && params !== searchParams) { setSearchParams(params); } setLoading(true); try { // 构建请求参数 - const requestParams: DataStatistics.AnnualReviewStatisticsRequest = { - basePageRequest: { - pageNo: current, - pageSize: pageSize, - }, + const requestParams = { + pageNo: current, + pageSize: pageSize, ...params, + startTime: params?.annualreviewYear + ? moment(params.annualreviewYear).format('YYYY-MM-DD') + : undefined, + // 结束时间为开始时间 + 1年 + endTime: params?.annualreviewYear + ? moment(params.annualreviewYear).add(1, 'year').format('YYYY-MM-DD') + : undefined, }; - + delete requestParams.annualreviewYear; // 调用接口 const response = await getSupplierAdmissionStatistics(requestParams); @@ -77,12 +77,12 @@ const SupplierAnnualStatistics: React.FC = () => { }); } else { message.error( - response.message || intl.formatMessage({ id: 'dataStatistics.annual.getDataFailed' }), + response.message || intl.formatMessage({ id: 'dataStatistics.admission.getDataFailed' }), ); } } catch (error) { - console.error('获取年审统计数据失败:', error); - message.error(intl.formatMessage({ id: 'dataStatistics.annual.getDataFailed' })); + console.error('获取准入统计数据失败:', error); + message.error(intl.formatMessage({ id: 'dataStatistics.admission.getDataFailed' })); } finally { setLoading(false); } @@ -90,7 +90,7 @@ const SupplierAnnualStatistics: React.FC = () => { // 首次加载获取数据 useEffect(() => { - fetchStatisticsData(pagination.current, pagination.pageSize, {}); + fetchStatisticsData(pagination.current, pagination.pageSize); }, []); // 处理表格分页变化 @@ -98,17 +98,6 @@ const SupplierAnnualStatistics: React.FC = () => { fetchStatisticsData(newPagination.current, newPagination.pageSize, searchParams); }; - // 获取年审结果标签 - const getResultTag = (result: string) => { - const color = - AnnualReviewResultColor[result as keyof typeof AnnualReviewResultColor] || 'default'; - const text = - result === '1' - ? intl.formatMessage({ id: 'dataStatistics.annual.qualified' }) - : intl.formatMessage({ id: 'dataStatistics.annual.unqualified' }); - return {text}; - }; - const columns = [ { title: intl.formatMessage({ id: 'dataStatistics.common.serialNumber' }), @@ -131,16 +120,24 @@ const SupplierAnnualStatistics: React.FC = () => { ), }, { - title: intl.formatMessage({ id: 'dataStatistics.common.area' }), - dataIndex: 'area', - key: 'area', + title: intl.formatMessage({ id: 'dataStatistics.common.supplierType' }), + dataIndex: 'supplierTypeCn', + key: 'supplierTypeCn', width: 100, }, + { + title: intl.formatMessage({ id: 'dataStatistics.common.accessType' }), + dataIndex: 'accessType', + key: 'accessType', + width: 180, + render: (type: string) => AccessTypeText[type as keyof typeof AccessTypeText] || type, + }, { title: intl.formatMessage({ id: 'dataStatistics.common.category' }), - dataIndex: 'categoryName', - key: 'categoryName', + dataIndex: 'categoryNameList', + key: 'categoryNameList', width: 120, + render: (text: string[]) => text.join(','), }, { title: intl.formatMessage({ id: 'dataStatistics.common.accessUnit' }), @@ -163,20 +160,13 @@ const SupplierAnnualStatistics: React.FC = () => { width: 120, }, { - title: intl.formatMessage({ id: 'dataStatistics.common.year' }), - dataIndex: 'annualreviewYear', - key: 'annualreviewYear', + title: intl.formatMessage({ id: 'dataStatistics.common.accessYear' }), + dataIndex: 'accessYear', + key: 'accessYear', width: 100, render: (year: string) => intl.formatMessage({ id: 'dataStatistics.common.yearFormat' }, { year }), }, - { - title: intl.formatMessage({ id: 'dataStatistics.annual.annualStatisticsResult' }), - dataIndex: 'annualStatisticsResult', - key: 'annualStatisticsResult', - width: 100, - render: (result: string) => getResultTag(result), - }, ]; // 处理搜索 @@ -187,7 +177,13 @@ const SupplierAnnualStatistics: React.FC = () => { // 导出功能 const handleExport = () => { const values = form.getFieldsValue(); - downloadFile('/dataStatistics/exportSupplierAnnualReviewStatistics', 'GET', values); + const params = { + ...values, + startTime: values.annualreviewYear ? moment(values.annualreviewYear).format('YYYY-MM-DD') : undefined, + endTime: values.annualreviewYear ? moment(values.annualreviewYear).add(1, 'year').format('YYYY-MM-DD') : undefined, + }; + delete params.annualreviewYear; + downloadFile('/coscoAccessSupplier/getPageExport', 'GET', params); }; return ( @@ -218,7 +214,7 @@ const SupplierAnnualStatistics: React.FC = () => { value: value ? moment(value) : undefined, })} normalize={(value) => value && value.format('YYYY')} - label={intl.formatMessage({ id: 'dataStatistics.annual.annualYear' })} + label={intl.formatMessage({ id: 'dataStatistics.common.accessYear' })} > { @@ -278,7 +274,7 @@ const SupplierAnnualStatistics: React.FC = () => { icon={} onClick={() => { form.resetFields(); - fetchStatisticsData(1, pagination.pageSize, {}); + fetchStatisticsData(1, pagination.pageSize); }} > {intl.formatMessage({ id: 'dataStatistics.common.reset' })} diff --git a/src/servers/api/dataStatistics.ts b/src/servers/api/dataStatistics.ts index ede2898..46847a9 100644 --- a/src/servers/api/dataStatistics.ts +++ b/src/servers/api/dataStatistics.ts @@ -5,7 +5,7 @@ import { getAllEvaluateRules } from './supplierEvaluate'; // 评价情况统计列表查询 export async function getSupplierAdmissionStatistics(params: DataStatistics.SupplierAdmissionStatistics) { - return request('/api/coscoAccessSupplier/getPage', { + return request('/coscoAccessSupplier/getPage', { method: 'POST', data: params, }); @@ -13,7 +13,7 @@ export async function getSupplierAdmissionStatistics(params: DataStatistics.Supp // 评价情况统计列表查询 export async function getEvaluateStatisticsList(params: DataStatistics.EvaluateStatisticsRequest) { - return request('/api/dataStatistics/evaluateStatistics/list', { + return request('/dataStatistics/evaluateStatistics/list', { method: 'POST', data: params, }); @@ -21,7 +21,7 @@ export async function getEvaluateStatisticsList(params: DataStatistics.EvaluateS // 评价情况统计数据导出 export async function exportEvaluateStatistics(params: DataStatistics.EvaluateStatisticsSearchParams) { - return request('/api/dataStatistics/evaluateStatistics/export', { + return request('/dataStatistics/evaluateStatistics/export', { method: 'POST', data: params, responseType: 'blob', @@ -30,7 +30,7 @@ export async function exportEvaluateStatistics(params: DataStatistics.EvaluateSt // 年度考核统计列表查询 export async function getAnnualStatisticsList(params: any) { - return request('/api/dataStatistics/annualStatistics/list', { + return request('/dataStatistics/annualStatistics/list', { method: 'POST', data: params, }); @@ -38,7 +38,7 @@ export async function getAnnualStatisticsList(params: any) { // 年度考核统计数据导出 export async function exportAnnualStatistics(params: any) { - return request('/api/dataStatistics/annualStatistics/export', { + return request('/dataStatistics/annualStatistics/export', { method: 'POST', data: params, responseType: 'blob', @@ -47,7 +47,7 @@ export async function exportAnnualStatistics(params: any) { // 供应商退出统计列表查询 export async function getExitStatisticsList(params: any) { - return request('/api/dataStatistics/exitStatistics/list', { + return request('/dataStatistics/exitStatistics/list', { method: 'POST', data: params, }); @@ -55,7 +55,7 @@ export async function getExitStatisticsList(params: any) { // 供应商退出统计数据导出 export async function exportExitStatistics(params: any) { - return request('/api/dataStatistics/exitStatistics/export', { + return request('/dataStatistics/exitStatistics/export', { method: 'POST', data: params, responseType: 'blob', @@ -64,7 +64,7 @@ export async function exportExitStatistics(params: any) { // 资质预警统计列表查询 export async function getQualificationWarningStatisticsList(params: any) { - return request('/api/dataStatistics/qualificationWarningStatistics/list', { + return request('/dataStatistics/qualificationWarningStatistics/list', { method: 'POST', data: params, }); @@ -72,7 +72,7 @@ export async function getQualificationWarningStatisticsList(params: any) { // 资质预警统计数据导出 export async function exportQualificationWarningStatistics(params: any) { - return request('/api/dataStatistics/qualificationWarningStatistics/export', { + return request('/dataStatistics/qualificationWarningStatistics/export', { method: 'POST', data: params, responseType: 'blob', diff --git a/src/servers/dao/dataStatistics.d.ts b/src/servers/dao/dataStatistics.d.ts index 0082868..4e37377 100644 --- a/src/servers/dao/dataStatistics.d.ts +++ b/src/servers/dao/dataStatistics.d.ts @@ -26,6 +26,10 @@ declare namespace DataStatistics { export interface SupplierAdmissionStatistics { pageNo: number; pageSize: number; + supplierName?: string; + startTime?: string; + endTime?: string; + accessType?: string; // supplierName: string; // accessType: string; // updateYear: number; diff --git a/src/utils/download.ts b/src/utils/download.ts index 907329d..7852eda 100644 --- a/src/utils/download.ts +++ b/src/utils/download.ts @@ -17,7 +17,6 @@ export async function downloadFile( } }); } - const fetchUrl = method === 'GET' && params ? `${REQUEST_BASE}${url}?${new URLSearchParams(cleanedParams as any).toString()}`