您好,感谢您的提问。
查询招标项目进度的步骤如下:
如有更多问题,请随时咨询。
', - username: '张三', - company: '上海航运有限公司', - account: 'zhangsan2024', - phone: '13812345678', - email: 'zhangsan@example.com', - createTime: '2024-05-10 09:30:45', - answerTime: '2024-05-10 14:20:30', - isPublished: true, - isTop: true, - status: '1' - }, - { - key: '2', - id: '2', - title: '投标文件格式有什么要求?', - category: '投标指南', - content: '请问投标文件需要什么格式?是否有模板可以参考?文件大小有限制吗?', - answer: '您好:
关于投标文件的要求如下:
1. 文件格式:PDF格式为主,技术文档可接受Word格式
2. 文件大小:单个文件不超过50MB
3. 模板下载:可在"资料下载"栏目中下载对应项目的投标文件模板
4. 命名规则:请按"公司名称-项目编号-文件类型"格式命名
请确保文件内容清晰可辨,签章完整。
', - username: '李四', - company: '北京建设工程有限公司', - account: 'lisi2024', - phone: '13987654321', - email: 'lisi@example.com', - createTime: '2024-05-12 11:20:15', - answerTime: '2024-05-12 16:45:22', - isPublished: true, - isTop: false, - status: '1' - }, - { - key: '3', - id: '3', - title: '如何修改已提交的投标文件?', - category: '投标指南', - content: '我已经提交了投标文件,但发现有一处数据填写错误,请问如何修改?是否可以在截止日期前重新提交?', - answer: '尊敬的用户:
关于修改已提交投标文件的问题,解答如下:
在投标截止时间前,您可以通过以下步骤修改已提交的文件:
请注意,投标截止时间后将无法进行任何修改。建议您在提交前仔细核对所有信息。
', - username: '王五', - company: '广州海运集团', - account: 'wangwu2024', - phone: '13765432198', - email: 'wangwu@example.com', - createTime: '2024-05-15 14:30:00', - answerTime: '2024-05-15 17:10:45', - isPublished: false, - isTop: false, - status: '1' - }, - { - key: '4', - id: '4', - title: '资质审核需要多长时间?', - category: '注册指南', - content: '我刚提交了供应商资质审核材料,请问大概需要多长时间能够完成审核?审核通过后是否会有通知?', - answer: '您好!
关于资质审核时间的问题,回复如下:
1. 一般情况下,资质审核会在3-5个工作日内完成
2. 如材料齐全且符合要求,可能会更快完成审核
3. 审核结果将通过以下方式通知您:
如超过5个工作日仍未收到审核结果,建议您联系客服热线:400-123-4567。
', - username: '赵六', - company: '深圳科技有限公司', - account: 'zhaoliu2024', - phone: '13612345678', - email: 'zhaoliu@example.com', - createTime: '2024-05-18 10:15:30', - answerTime: '2024-05-20 09:25:10', - isPublished: true, - isTop: true, - status: '1' - }, - { - key: '5', - id: '5', - title: '如何查看招标结果公示?', - category: '招标流程', - content: '我参与了贵公司的一个招标项目,现在已经截止,请问在哪里可以查看招标结果公示?', - answer: '尊敬的用户:
查看招标结果公示的方法如下:
根据相关规定,招标结果将在评标结束后的2个工作日内公示,公示期为3个工作日。
如有其他疑问,请随时咨询。
', - username: '钱七', - company: '天津贸易有限公司', - account: 'qianqi2024', - phone: '13898765432', - email: 'qianqi@example.com', - createTime: '2024-05-22 16:40:20', - answerTime: '2024-05-23 10:30:15', - isPublished: true, - isTop: false, - status: '1' + // 获取已回答的用户提问列表数据 + const fetchQuestionList = async ( + current: number = 1, + pageSize: number = 10, + params: SearchParams = searchParams, + ) => { + // 更新搜索参数状态 + if (params !== searchParams) { + setSearchParams(params); } - ]; - // 获取已回答的用户提问列表数据(使用模拟数据) - const fetchQuestionList = (current: number = 1, pageSize: number = 10) => { setLoading(true); + try { + // 构造请求参数 + const requestParams: API.PageRequest = { + basePageRequest: { + pageNo: current, + pageSize: pageSize, + }, + ...params, + isAnswer: 1, // 确保始终查询已回答的问题 + }; - // 模拟API请求延迟 - setTimeout(() => { - // 根据搜索条件过滤数据 - let filteredData = [...mockData]; - if (searchParams.title) { - filteredData = filteredData.filter(item => - item.title.toLowerCase().includes(searchParams.title!.toLowerCase()) - ); + const response = await getQuestionPage(requestParams); + if (response && response.success) { + const { records, total, current: currentPage, size } = response.data; + + // 添加key属性用于表格 + const formattedData = records.map((item: API.QuestionRecord) => ({ + ...item, + key: item.id, + })); + + setQuestionData(formattedData); + setPagination({ + ...pagination, + current: currentPage, + pageSize: size, + total, + }); + } else { + message.error(response.message || '获取问题列表失败'); } - if (searchParams.category) { - filteredData = filteredData.filter(item => - item.category === searchParams.category - ); - } - - // 计算分页数据 - const startIndex = (current - 1) * pageSize; - const endIndex = startIndex + pageSize; - const paginatedData = filteredData.slice(startIndex, endIndex); - - setQuestionData(paginatedData); - setPagination({ - ...pagination, - current, - pageSize, - total: filteredData.length, - }); + } catch (error) { + console.error('获取问题列表失败:', error); + message.error('获取问题列表失败'); + } finally { setLoading(false); - }, 500); + } }; // 首次加载时获取数据 useEffect(() => { - fetchQuestionList(); + fetchQuestionList(pagination.current, pagination.pageSize); }, []); // 处理搜索 - const handleSearch = (values: any) => { - setSearchParams(values); - fetchQuestionList(1, pagination.pageSize); + const handleSearch = (values: SearchParams) => { + const params = { + ...values, + isAnswer: 1, + // 如果设置了answerStatus为已回答,则需要特殊处理 + ...values.answerStatus === AnswerStatus.ANSWERED ? { hasAnswerContent: 1 } : {} + }; + fetchQuestionList(1, pagination.pageSize, params); + }; + + // 获取问题详情 + const fetchQuestionDetail = async (id: string, mode: 'view' | 'edit') => { + try { + const response = await getQuestionDetail(id); + if (response && response.success) { + const detailData = response.data; + const formattedDetail = { + ...detailData, + key: detailData.id + }; + + setCurrentQuestion(formattedDetail); + setModalMode(mode); + setModalVisible(true); + } else { + message.error(response.message || '获取问题详情失败'); + } + } catch (error) { + console.error('获取问题详情失败:', error); + message.error('获取问题详情失败'); + } }; // 处理查看详情 const handleView = (record: QuestionItemType) => { - setCurrentQuestion(record); - setDetailModalVisible(true); + fetchQuestionDetail(record.id, 'view'); }; - // 处理发布状态切换 - const handlePublishChange = (checked: boolean, record: QuestionItemType) => { - const newData = questionData.map(item => { - if (item.id === record.id) { - return { ...item, isPublished: checked }; - } - return item; - }); - setQuestionData(newData); - message.success(`${checked ? '发布' : '取消发布'}成功`); - }; - - // 处理置顶状态切换 - const handleTopChange = (checked: boolean, record: QuestionItemType) => { - const newData = questionData.map(item => { - if (item.id === record.id) { - return { ...item, isTop: checked }; - } - return item; - }); - setQuestionData(newData); - message.success(`${checked ? '置顶' : '取消置顶'}成功`); + // 处理编辑回答 + const handleEdit = (record: QuestionItemType) => { + fetchQuestionDetail(record.id, 'edit'); }; // 处理删除 const showDeleteConfirm = (record: QuestionItemType) => { confirm({ - title: intl.formatMessage({ id: 'readQuestion.confirmDelete' }), + title: '确认删除', icon:{intl.formatMessage({ id: 'userQuestion.descriptionText' })}
-