diff --git a/src/pages/downloadManage/downloadManage.tsx b/src/pages/downloadManage/downloadManage.tsx index 6082789..c6d0e1e 100644 --- a/src/pages/downloadManage/downloadManage.tsx +++ b/src/pages/downloadManage/downloadManage.tsx @@ -9,6 +9,7 @@ import { } from '@ant-design/icons'; import { getDownloadList, updateDownloadStatus, batchDeleteDownload } from '@/servers/api/download'; import DownloadManageForm from './DownloadManageForm'; +import uiconfig from '@/uiconfig'; import { DownloadStatus, DownloadIsTop, @@ -499,7 +500,7 @@ const DownloadManage: React.FC = () => { } open={modalVisible} onCancel={handleModalCancel} - width={600} + width={uiconfig.Modal.width} maskClosable={false} destroyOnClose footer={null} diff --git a/src/pages/helpManage/HelpManageForm.tsx b/src/pages/helpManage/HelpManageForm.tsx index 041c4c4..d7cebb6 100644 --- a/src/pages/helpManage/HelpManageForm.tsx +++ b/src/pages/helpManage/HelpManageForm.tsx @@ -5,6 +5,8 @@ import WangEditor from '@/components/WangEidtor/WangEidtor'; import { TopStatus, EnglishSetting, categoryOptions } from '@/dicts/helpManageDict'; import { addHelp, updateHelp, getHelpDetail } from '@/servers/api/help'; import styles from './helpManage.less'; +import { getDictList } from '@/servers/api/dicts'; +import type { DictItem } from '@/servers/api/dicts'; const { TabPane } = Tabs; const { Option } = Select; @@ -20,9 +22,15 @@ const HelpManageForm: React.FC = ({ id, isEdit, onSuccess } const [activeTabKey, setActiveTabKey] = useState('zh'); const [loading, setLoading] = useState(false); const intl = useIntl(); + const [typeList, setTypeList] = useState([]); // 获取详情数据 useEffect(() => { + getDictList('help_center').then((res) => { + if (res.code === 200 && res.success) { + setTypeList(res.data); + } + }); const fetchHelpDetail = async (helpId: string) => { setLoading(true); try { @@ -40,7 +48,9 @@ const HelpManageForm: React.FC = ({ id, isEdit, onSuccess } answerContentEn: detail.answerContentNe, }); } else { - message.error(response.message || intl.formatMessage({ id: 'helpManage.fetchDetailFailed' })); + message.error( + response.message || intl.formatMessage({ id: 'helpManage.fetchDetailFailed' }), + ); } } catch (error) { console.error('获取帮助详情失败:', error); @@ -76,9 +86,17 @@ const HelpManageForm: React.FC = ({ id, isEdit, onSuccess } const fieldName = firstError.name[0]; // 根据字段名判断应该切换到哪个Tab - if (fieldName === 'titleZh' || fieldName === 'contentZh' || fieldName === 'answerContentZh') { + if ( + fieldName === 'titleZh' || + fieldName === 'contentZh' || + fieldName === 'answerContentZh' + ) { setActiveTabKey('zh'); - } else if (fieldName === 'titleEn' || fieldName === 'contentEn' || fieldName === 'answerContentEn') { + } else if ( + fieldName === 'titleEn' || + fieldName === 'contentEn' || + fieldName === 'answerContentEn' + ) { setActiveTabKey('en'); } } @@ -110,14 +128,19 @@ const HelpManageForm: React.FC = ({ id, isEdit, onSuccess } } if (response && response.success) { - message.success(isEdit - ? intl.formatMessage({ id: 'helpManage.updateSuccess' }) - : intl.formatMessage({ id: 'helpManage.addSuccess' })); + message.success( + isEdit + ? intl.formatMessage({ id: 'helpManage.updateSuccess' }) + : intl.formatMessage({ id: 'helpManage.addSuccess' }), + ); onSuccess(); // 回调父组件 } else { - message.error(response.message || (isEdit - ? intl.formatMessage({ id: 'helpManage.updateFailed' }) - : intl.formatMessage({ id: 'helpManage.addFailed' }))); + message.error( + response.message || + (isEdit + ? intl.formatMessage({ id: 'helpManage.updateFailed' }) + : intl.formatMessage({ id: 'helpManage.addFailed' })), + ); } } catch (error: any) { console.error('表单验证或提交失败:', error); @@ -130,38 +153,63 @@ const HelpManageForm: React.FC = ({ id, isEdit, onSuccess } return (
- + - + - + = ({ id, isEdit, onSuccess } - + - + = ({ id, isEdit, onSuccess } @@ -219,11 +287,7 @@ const HelpManageForm: React.FC = ({ id, isEdit, onSuccess } -
diff --git a/src/pages/helpManage/HelpManageInfo.tsx b/src/pages/helpManage/HelpManageInfo.tsx index 9d728ce..a9714db 100644 --- a/src/pages/helpManage/HelpManageInfo.tsx +++ b/src/pages/helpManage/HelpManageInfo.tsx @@ -1,22 +1,27 @@ -import React from 'react'; +import React, { useState } from 'react'; import { Descriptions, Divider, Card, Tag } from 'antd'; import { useIntl } from 'umi'; import { HelpStatus, HelpStatusText, HelpStatusColor } from '@/dicts/helpManageDict'; import styles from './helpManage.less'; +import { getDictList } from '@/servers/api/dicts'; +import type { DictItem } from '@/servers/api/dicts'; interface HelpManageInfoProps { data: API.HelpRecord | null; + typeList: DictItem[]; } -const HelpManageInfo: React.FC = ({ data }) => { +const HelpManageInfo: React.FC = ({ data, typeList }) => { const intl = useIntl(); - // 获取状态标签 const getStatusTag = (status: string) => { const statusKey = status as keyof typeof HelpStatusText; const color = HelpStatusColor[statusKey] || 'default'; const getText = HelpStatusText[statusKey]; - const text = typeof getText === 'function' ? getText() : intl.formatMessage({ id: 'helpManage.status.unknown' }); + const text = + typeof getText === 'function' + ? getText() + : intl.formatMessage({ id: 'helpManage.status.unknown' }); return {text}; }; @@ -29,12 +34,15 @@ const HelpManageInfo: React.FC = ({ data }) => { {data.title} {data.titleEn && ( - + {data.titleEn} )} - {data.type} + {typeList.find((item) => item.code == data.type) ? typeList.find((item) => item.code == data.type).dicName : '-'} {data.isTop === '1' @@ -51,40 +59,60 @@ const HelpManageInfo: React.FC = ({ data }) => { {data.createTime} {data.updateTime && ( - + {data.updateTime} )} - {intl.formatMessage({ id: 'helpManage.detail.contentZh' })} + + {intl.formatMessage({ id: 'helpManage.detail.contentZh' })} +
{data.contentEn && ( <> - {intl.formatMessage({ id: 'helpManage.detail.contentEn' })} + + {intl.formatMessage({ id: 'helpManage.detail.contentEn' })} + -
+
)} {data.answerContent && ( <> - {intl.formatMessage({ id: 'helpManage.detail.answerContentZh' })} + + {intl.formatMessage({ id: 'helpManage.detail.answerContentZh' })} + -
+
)} {data.answerContentNe && ( <> - {intl.formatMessage({ id: 'helpManage.detail.answerContentEn' })} + + {intl.formatMessage({ id: 'helpManage.detail.answerContentEn' })} + -
+
)} diff --git a/src/pages/helpManage/helpManage.tsx b/src/pages/helpManage/helpManage.tsx index 2dd207f..c48b53d 100644 --- a/src/pages/helpManage/helpManage.tsx +++ b/src/pages/helpManage/helpManage.tsx @@ -63,7 +63,7 @@ const HelpManage: React.FC = () => { showTotal: (total: number) => `共 ${total} 条记录`, }); const [searchParams, setSearchParams] = useState({}); - const [typeList, setTypeList] = useState([]); + const [typeList, setTypeList] = useState([]); // 获取帮助中心列表数据 const fetchHelpList = ( @@ -111,11 +111,11 @@ const HelpManage: React.FC = () => { // 首次加载时获取数据 useEffect(() => { - getDictList('download_section').then((res) => { - if (res.code === 200 && res.success) { - setTypeList(res.data); - } - }); + getDictList('help_center').then((res) => { + if (res.code === 200 && res.success) { + setTypeList(res.data); + } + }); fetchHelpList(1, pagination.pageSize, {}); }, []); @@ -358,6 +358,10 @@ const HelpManage: React.FC = () => { dataIndex: 'type', key: 'type', align: 'center' as const, + render: (type: string) => { + const dictItem = typeList.find((item) => item.code === type); + return dictItem ? dictItem.dicName : '-'; + }, }, { title: intl.formatMessage({ id: 'helpManage.date' }), @@ -434,9 +438,9 @@ const HelpManage: React.FC = () => { allowClear style={{ width: 150 }} > - {categoryOptions.map((option) => ( - ))} @@ -526,7 +530,7 @@ const HelpManage: React.FC = () => { maskClosable={false} > {isViewMode ? ( - + ) : ( )} diff --git a/src/pages/noticeManage/noticeManage.tsx b/src/pages/noticeManage/noticeManage.tsx index 6beedf4..91e8061 100644 --- a/src/pages/noticeManage/noticeManage.tsx +++ b/src/pages/noticeManage/noticeManage.tsx @@ -18,7 +18,7 @@ import { updateNoticeTopStatus, getNoticeDetail, } from '@/servers/api/notice'; -import styles from './noticeManage.less'; +import uiconfig from '@/uiconfig'; import { NoticeStatus, NoticeStatusText, @@ -587,7 +587,7 @@ const NoticeManage: React.FC = () => { } open={modalVisible} onCancel={handleModalCancel} - width={900} + width={uiconfig.Modal.width} maskClosable={false} destroyOnClose footer={ diff --git a/src/pages/policyManage/PolicyManageForm.tsx b/src/pages/policyManage/PolicyManageForm.tsx index f5cb3d8..9a3cd0c 100644 --- a/src/pages/policyManage/PolicyManageForm.tsx +++ b/src/pages/policyManage/PolicyManageForm.tsx @@ -142,6 +142,7 @@ const PolicyManageForm: React.FC = ({ id, isEdit, onSucce @@ -163,6 +164,7 @@ const PolicyManageForm: React.FC = ({ id, isEdit, onSucce diff --git a/src/pages/policyManage/policyManage.tsx b/src/pages/policyManage/policyManage.tsx index fff169e..5c5fc8c 100644 --- a/src/pages/policyManage/policyManage.tsx +++ b/src/pages/policyManage/policyManage.tsx @@ -14,6 +14,7 @@ import { TablePaginationConfig, Tabs, } from 'antd'; +import uiconfig from '@/uiconfig'; import { PlusOutlined, DeleteOutlined, @@ -476,7 +477,7 @@ const PolicyManage: React.FC = () => { : intl.formatMessage({ id: 'policyManage.form.add' })} open={modalVisible} onCancel={handleModalCancel} - width={900} + width={uiconfig.Modal.width} maskClosable={false} destroyOnClose footer={ diff --git a/src/pages/userQuestionManage/QuestionModal.tsx b/src/pages/userQuestionManage/QuestionModal.tsx index 287de1e..023f329 100644 --- a/src/pages/userQuestionManage/QuestionModal.tsx +++ b/src/pages/userQuestionManage/QuestionModal.tsx @@ -16,26 +16,29 @@ import { TopStatusText, TopStatusColor } from '@/dicts/userQuestionDict'; +import type { DictItem } from '@/servers/api/dicts'; const { TextArea } = Input; interface QuestionModalProps { - visible: boolean; + open: boolean; onCancel: () => void; question: any; mode: 'view' | 'answer' | 'edit'; onSuccess: () => void; + typeList: DictItem[]; } /** * 问题模态框组件 - 整合了查看详情、回答问题和编辑回答功能 */ const QuestionModal: React.FC = ({ - visible, + open, onCancel, question, mode, - onSuccess + onSuccess, + typeList }) => { const intl = useIntl(); const [form] = Form.useForm(); @@ -170,7 +173,7 @@ const QuestionModal: React.FC = ({ {question.title} - {question.type} + {typeList.find((item) => item.code === question.type)?.dicName} {question.askTime} @@ -252,7 +255,7 @@ const QuestionModal: React.FC = ({ {question.title} - {question.type} + {typeList.find((item) => item.code === question.type)?.dicName} {question.askTime} @@ -357,7 +360,7 @@ const QuestionModal: React.FC = ({ return ( = ({ question }) => { - const intl = useIntl(); - - if (!question) return null; - - // 获取发布状态标签 - const getPublishTag = (isPublished: number) => { - return isPublished === 1 ? - {PublishStatusText[PublishStatus.YES]()} : - {PublishStatusText[PublishStatus.NO]()}; - }; - - // 获取置顶状态标签 - const getTopTag = (isTop: number) => { - return isTop === 1 ? - {TopStatusText[TopStatus.YES]()} : - {TopStatusText[TopStatus.NO]()}; - }; - - return ( -
- - - {question.title} - - - {question.type} - - - {question.askTime} - - - {question.userName} - - - {question.companyName} - - - {question.fullName} - - - {question.contactDetails} - - - {question.email} - - - {/* 只有已回答的问题才会显示以下字段 */} - {question.isAnswer === '1' && ( - <> - - {getPublishTag(question.isPublished)} - - - {getTopTag(question.isTop)} - - - {question.answerTime} - - - {question.answerBy || '-'} - - - )} - - - {intl.formatMessage({ id: 'questionDetail.questionContent' })} - -
- {question.content} -
-
- - {question.answerContent && ( - <> - {intl.formatMessage({ id: 'questionDetail.answerContent' })} - -
- {question.answerContent} -
-
- - )} -
- ); -}; - -export default QuestionViewDetail; diff --git a/src/pages/userQuestionManage/readQuestionManage.tsx b/src/pages/userQuestionManage/readQuestionManage.tsx index 1893344..574858e 100644 --- a/src/pages/userQuestionManage/readQuestionManage.tsx +++ b/src/pages/userQuestionManage/readQuestionManage.tsx @@ -1,12 +1,23 @@ import React, { useState, useEffect } from 'react'; import { useIntl, FormattedMessage } from 'umi'; -import { Button, Table, Modal, message, Input, Form, Tooltip, Tag, Space, Switch, TablePaginationConfig, Select } from 'antd'; import { - DeleteOutlined, - ExclamationCircleOutlined, - SearchOutlined -} from '@ant-design/icons'; + Button, + Table, + Modal, + message, + Input, + Form, + Tooltip, + Tag, + Space, + Switch, + TablePaginationConfig, + Select, +} from 'antd'; +import { DeleteOutlined, ExclamationCircleOutlined, SearchOutlined } from '@ant-design/icons'; import styles from './userQuestionManage.less'; +import { getDictList } from '@/servers/api/dicts'; +import type { DictItem } from '@/servers/api/dicts'; // 引入封装的组件 import QuestionModal from './QuestionModal'; // 引入API @@ -14,15 +25,16 @@ import { getQuestionPage, getQuestionDetail, deleteQuestion, - batchDeleteQuestion + batchDeleteQuestion, } from '@/servers/api/userQuestion'; // 引入字典 import { QuestionCategoryOptions, AnswerStatus, AnswerStatusText, - AnswerStatusColor + AnswerStatusColor, } from '@/dicts/userQuestionDict'; +import { render } from 'react-dom'; const { confirm } = Modal; const { Option } = Select; @@ -49,6 +61,7 @@ const ReadQuestionManage: React.FC = () => { const [modalVisible, setModalVisible] = useState(false); const [currentQuestion, setCurrentQuestion] = useState(null); const [modalMode, setModalMode] = useState<'view' | 'edit'>('view'); + const [typeList, setTypeList] = useState([]); const [pagination, setPagination] = useState({ current: 1, pageSize: 10, @@ -58,7 +71,7 @@ const ReadQuestionManage: React.FC = () => { showTotal: (total: number) => `共 ${total} 条记录`, }); const [searchParams, setSearchParams] = useState({ - isAnswer: 1 // 默认已回答 + isAnswer: 1, // 默认已回答 }); // 获取已回答的用户提问列表数据 @@ -115,6 +128,11 @@ const ReadQuestionManage: React.FC = () => { // 首次加载时获取数据 useEffect(() => { fetchQuestionList(pagination.current, pagination.pageSize); + getDictList('help_center').then((res) => { + if (res.code === 200 && res.success) { + setTypeList(res.data); + } + }); }, []); // 处理搜索 @@ -123,7 +141,7 @@ const ReadQuestionManage: React.FC = () => { ...values, isAnswer: 1, // 如果设置了answerStatus为已回答,则需要特殊处理 - ...values.answerStatus === AnswerStatus.ANSWERED ? { hasAnswerContent: 1 } : {} + ...(values.answerStatus === AnswerStatus.ANSWERED ? { hasAnswerContent: 1 } : {}), }; fetchQuestionList(1, pagination.pageSize, params); }; @@ -136,7 +154,7 @@ const ReadQuestionManage: React.FC = () => { const detailData = response.data; const formattedDetail = { ...detailData, - key: detailData.id + key: detailData.id, }; setCurrentQuestion(formattedDetail); @@ -178,7 +196,9 @@ const ReadQuestionManage: React.FC = () => { message.success(intl.formatMessage({ id: 'readQuestion.deleteSuccess' })); fetchQuestionList(pagination.current, pagination.pageSize, searchParams); // 重新加载数据 } else { - message.error(response.message || intl.formatMessage({ id: 'readQuestion.deleteFailed' })); + message.error( + response.message || intl.formatMessage({ id: 'readQuestion.deleteFailed' }), + ); } } catch (error) { console.error('删除问题失败:', error); @@ -216,7 +236,9 @@ const ReadQuestionManage: React.FC = () => { message.success(intl.formatMessage({ id: 'readQuestion.batchDeleteSuccess' })); fetchQuestionList(pagination.current, pagination.pageSize, searchParams); } else { - message.error(response.message || intl.formatMessage({ id: 'readQuestion.batchDeleteFailed' })); + message.error( + response.message || intl.formatMessage({ id: 'readQuestion.batchDeleteFailed' }), + ); } } catch (error) { console.error('批量删除失败:', error); @@ -241,17 +263,25 @@ const ReadQuestionManage: React.FC = () => { // 获取回答状态标签 const getAnswerTag = (record: QuestionItemType) => { if (record.answerContent && record.answerContent.trim() !== '') { - return {AnswerStatusText[AnswerStatus.ANSWERED]()}; + return ( + + {AnswerStatusText[AnswerStatus.ANSWERED]()} + + ); } else { - return {AnswerStatusText[AnswerStatus.READ]()}; + return ( + + {AnswerStatusText[AnswerStatus.READ]()} + + ); } }; // 获取置顶状态标签 const getTopTag = (isTop: number) => { - return isTop === 1 ? - {intl.formatMessage({ id: 'userQuestion.top' })} : - null; + return isTop === 1 ? ( + {intl.formatMessage({ id: 'userQuestion.top' })} + ) : null; }; // 表格列定义 @@ -283,6 +313,10 @@ const ReadQuestionManage: React.FC = () => { dataIndex: 'type', key: 'type', align: 'center' as const, + render: (type: string) => { + const dictItem = typeList.find((item) => item.code === type); + return dictItem ? dictItem.dicName : '-'; + }, }, { title: intl.formatMessage({ id: 'readQuestion.asker' }), @@ -353,7 +387,9 @@ const ReadQuestionManage: React.FC = () => { render: (_: unknown, record: QuestionItemType) => ( {getAnswerTag(record)} - {record.isPublished === 1 && {intl.formatMessage({ id: 'userQuestion.published' })}} + {record.isPublished === 1 && ( + {intl.formatMessage({ id: 'userQuestion.published' })} + )} ), }, @@ -380,9 +416,9 @@ const ReadQuestionManage: React.FC = () => { // 获取分类选项,处理为下拉框选项 const getCategoryOptions = () => { - return QuestionCategoryOptions.map(option => ( - )); }; @@ -398,17 +434,33 @@ const ReadQuestionManage: React.FC = () => { className="filter-form" > - + - {getCategoryOptions()} - - - + @@ -430,17 +482,15 @@ const ReadQuestionManage: React.FC = () => {
- {hasSelected && ( - {intl.formatMessage({ id: 'readQuestion.selectedCount' }, { count: selectedRowKeys.length })} + {intl.formatMessage( + { id: 'readQuestion.selectedCount' }, + { count: selectedRowKeys.length }, + )} )}
@@ -464,6 +514,7 @@ const ReadQuestionManage: React.FC = () => { onCancel={() => setModalVisible(false)} question={currentQuestion} mode={modalMode} + typeList={typeList} onSuccess={() => fetchQuestionList(pagination.current, pagination.pageSize, searchParams)} />
diff --git a/src/pages/userQuestionManage/unreadQuestionManage.tsx b/src/pages/userQuestionManage/unreadQuestionManage.tsx index 375cd84..88e8c26 100644 --- a/src/pages/userQuestionManage/unreadQuestionManage.tsx +++ b/src/pages/userQuestionManage/unreadQuestionManage.tsx @@ -1,14 +1,23 @@ import React, { useState, useEffect } from 'react'; import { useIntl, FormattedMessage } from 'umi'; -import { Button, Table, Modal, message, Input, Form, Tooltip, Tag, Space, TablePaginationConfig } from 'antd'; import { - DeleteOutlined, - ExclamationCircleOutlined, - SearchOutlined -} from '@ant-design/icons'; + Button, + Table, + Modal, + message, + Input, + Form, + Tooltip, + Tag, + Space, + TablePaginationConfig, +} from 'antd'; +import { DeleteOutlined, ExclamationCircleOutlined, SearchOutlined } from '@ant-design/icons'; import styles from './userQuestionManage.less'; // 引入封装的组件 import QuestionModal from './QuestionModal'; +import { getDictList } from '@/servers/api/dicts'; +import type { DictItem } from '@/servers/api/dicts'; // 引入API import { getQuestionPage, @@ -16,7 +25,7 @@ import { markQuestionSeen, markQuestionSeeEdit, deleteQuestion, - batchDeleteQuestion + batchDeleteQuestion, } from '@/servers/api/userQuestion'; // 引入字典 import { QuestionCategoryOptions } from '@/dicts/userQuestionDict'; @@ -43,6 +52,7 @@ const UnreadQuestionManage: React.FC = () => { const [form] = Form.useForm(); const [answerModalVisible, setAnswerModalVisible] = useState(false); const [currentQuestion, setCurrentQuestion] = useState(null); + const [typeList, setTypeList] = useState([]); const [pagination, setPagination] = useState({ current: 1, pageSize: 10, @@ -52,7 +62,7 @@ const UnreadQuestionManage: React.FC = () => { showTotal: (total: number) => `共 ${total} 条记录`, }); const [searchParams, setSearchParams] = useState({ - isAnswer: 0 // 默认未回答 + isAnswer: 0, // 默认未回答 }); // 获取未回答的用户提问列表数据 @@ -89,8 +99,8 @@ const UnreadQuestionManage: React.FC = () => { })); setQuestionData(formattedData); - setPagination({ - ...pagination, + setPagination({ + ...pagination, current: currentPage, pageSize: size, total, @@ -102,12 +112,17 @@ const UnreadQuestionManage: React.FC = () => { console.error('获取问题列表失败:', error); message.error(intl.formatMessage({ id: 'unreadQuestion.fetchFailed' })); } finally { - setLoading(false); + setLoading(false); } }; // 首次加载时获取数据 useEffect(() => { + getDictList('help_center').then((res) => { + if (res.code === 200 && res.success) { + setTypeList(res.data); + } + }); fetchQuestionList(pagination.current, pagination.pageSize); }, []); @@ -124,8 +139,8 @@ const UnreadQuestionManage: React.FC = () => { const response = await markQuestionSeeEdit(record.id); if (!response || !response.success) { message.error(response?.message || intl.formatMessage({ id: 'userQuestion.replyFailed' })); - return; - } + return; + } // 获取问题详情 const detailResponse = await getQuestionDetail(record.id); @@ -133,13 +148,15 @@ const UnreadQuestionManage: React.FC = () => { const detailData = detailResponse.data; const formattedDetail = { ...detailData, - key: detailData.id + key: detailData.id, }; setCurrentQuestion(formattedDetail); setAnswerModalVisible(true); } else { - message.error(detailResponse.message || intl.formatMessage({ id: 'userQuestion.replyFailed' })); + message.error( + detailResponse.message || intl.formatMessage({ id: 'userQuestion.replyFailed' }), + ); } } catch (error) { console.error('处理问题失败:', error); @@ -164,7 +181,9 @@ const UnreadQuestionManage: React.FC = () => { message.success(intl.formatMessage({ id: 'userQuestion.deleteSuccess' })); fetchQuestionList(pagination.current, pagination.pageSize, searchParams); // 重新加载数据 } else { - message.error(response.message || intl.formatMessage({ id: 'userQuestion.deleteFailed' })); + message.error( + response.message || intl.formatMessage({ id: 'userQuestion.deleteFailed' }), + ); } } catch (error) { console.error('删除问题失败:', error); @@ -202,7 +221,9 @@ const UnreadQuestionManage: React.FC = () => { message.success(intl.formatMessage({ id: 'unreadQuestion.batchDeleteSuccess' })); fetchQuestionList(pagination.current, pagination.pageSize, searchParams); } else { - message.error(response.message || intl.formatMessage({ id: 'unreadQuestion.batchDeleteFailed' })); + message.error( + response.message || intl.formatMessage({ id: 'unreadQuestion.batchDeleteFailed' }), + ); } } catch (error) { console.error('批量删除失败:', error); @@ -226,9 +247,9 @@ const UnreadQuestionManage: React.FC = () => { // 获取分类选项,处理为下拉框选项 const getCategoryOptions = () => { - return QuestionCategoryOptions.map(option => ( - )); }; @@ -260,6 +281,10 @@ const UnreadQuestionManage: React.FC = () => { key: 'type', width: 120, align: 'center' as const, + render: (type: string) => { + const dictItem = typeList.find((item) => item.code === type); + return dictItem ? dictItem.dicName : '-'; + }, }, { title: intl.formatMessage({ id: 'unreadQuestion.asker' }), @@ -327,7 +352,7 @@ const UnreadQuestionManage: React.FC = () => { + @@ -346,12 +371,20 @@ const UnreadQuestionManage: React.FC = () => { layout="inline" className="filter-form" > - - + + @@ -374,17 +407,15 @@ const UnreadQuestionManage: React.FC = () => {
- {hasSelected && ( - {intl.formatMessage({ id: 'unreadQuestion.selectedCount' }, { count: selectedRowKeys.length })} + {intl.formatMessage( + { id: 'unreadQuestion.selectedCount' }, + { count: selectedRowKeys.length }, + )} )}
@@ -408,6 +439,7 @@ const UnreadQuestionManage: React.FC = () => { open={answerModalVisible} onCancel={() => setAnswerModalVisible(false)} question={currentQuestion} + typeList={typeList} mode="answer" onSuccess={() => fetchQuestionList(pagination.current, pagination.pageSize, searchParams)} /> diff --git a/src/uiconfig.ts b/src/uiconfig.ts new file mode 100644 index 0000000..e8f03d5 --- /dev/null +++ b/src/uiconfig.ts @@ -0,0 +1,6 @@ +// 配置ui +export default { + Modal: { + width: 1000 + } +}