diff --git a/config/api/feedback.js b/config/api/feedback.js index 0b89f8e..950674d 100644 --- a/config/api/feedback.js +++ b/config/api/feedback.js @@ -1,18 +1,18 @@ import request from '../http' -// 投诉反馈 +// 新增反馈 +// data 参数包含: type, content, phone, files (数组) export const addUserFeedback = (data) => { - console.log(data); return request({ url: '/app/feedback/add', method: 'post', data, + hideLoading: true, // 手动控制loading,避免重复显示 }) } -// 获取投诉记录列表 +// 获取反馈列表 export const getFeedbackList = (params) => { - // GET请求需要将参数拼接到URL上 let url = '/app/feedback/list'; if (params) { const queryString = Object.keys(params) @@ -23,12 +23,12 @@ export const getFeedbackList = (params) => { } } return request({ - url: url, + url, method: 'get', }) } -// 获取投诉详情 +// 获取反馈详情(含基础信息) export const getFeedbackDetail = (id) => { return request({ url: `/app/feedback/${id}`, @@ -36,10 +36,18 @@ export const getFeedbackDetail = (id) => { }) } -// 提交投诉回复 -export const submitFeedbackReply = (data) => { +// 获取反馈对话消息 +export const getFeedbackMessages = (id) => { return request({ - url: '/app/feedback/reply', + url: `/app/feedback/${id}/messages`, + method: 'get', + }) +} + +// 用户追加消息 +export const sendFeedbackMessage = (id, data) => { + return request({ + url: `/app/feedback/${id}/message`, method: 'post', data, }) diff --git a/config/url.js b/config/url.js index 38433ce..be24145 100644 --- a/config/url.js +++ b/config/url.js @@ -1,7 +1,7 @@ // export const URL = "https://my.gxfs123.com/api" //正式服务器-弃用 -// export const URL = "https://manager.fdzpower.com/api" //正式服务器 -export const URL = "https://fansdev.gxfs123.com/api" //测试服务器 -// export const URL = "http://192.168.5.149:8080" //本地调试 +export const URL = "https://manager.fdzpower.com/api" //正式服务器 +// export const URL = "https://fansdev.gxfs123.com/api" //测试服务器 +// export const URL = "http://192.168.5.30:8080" //本地调试 // export const URL = "http://127.0.0.1:8080" //本地调试 export const appid = "wx2165f0be356ae7a9" //小程序appid \ No newline at end of file diff --git a/locale/en-US.js b/locale/en-US.js index 7f9ae93..5304925 100644 --- a/locale/en-US.js +++ b/locale/en-US.js @@ -335,6 +335,7 @@ export default { }, feedback: { + uploading: 'Uploading...', title: 'Feedback', placeholder: 'Describe the issue', submit: 'Submit', @@ -350,7 +351,7 @@ export default { pleaseSelectType: 'Select type', pleaseDescribe: 'Describe issue', pleaseContact: 'Leave contact', - imageUploadFailed: 'Upload failed', + imageUploadFailed: 'Image upload failed, please try again', deviceFault: 'Device Fault', chargingIssue: 'Charging', usageSuggestion: 'Suggestion', diff --git a/locale/zh-CN.js b/locale/zh-CN.js index 0838d20..af2f276 100644 --- a/locale/zh-CN.js +++ b/locale/zh-CN.js @@ -335,6 +335,7 @@ export default { }, feedback: { + uploading: '上传中...', title: '投诉与建议', placeholder: '请详细描述您遇到的问题,以便我们更好地为您解决', submit: '提交反馈', @@ -350,7 +351,7 @@ export default { pleaseSelectType: '请选择问题类型', pleaseDescribe: '请描述您的问题', pleaseContact: '请留下联系方式', - imageUploadFailed: '图片上传失败', + imageUploadFailed: '图片上传失败,请重试', deviceFault: '设备故障', chargingIssue: '收费问题', usageSuggestion: '使用建议', diff --git a/pages/feedback/detail.vue b/pages/feedback/detail.vue index 6248f88..0dfa2f9 100644 --- a/pages/feedback/detail.vue +++ b/pages/feedback/detail.vue @@ -12,11 +12,22 @@ + + + {{ detail.title || '-' }} + + {{ detail.content || '-' }} + + + {{ $t('feedback.contactPhone') }} + {{ detail.phone }} + + @@ -39,14 +50,14 @@ - {{ reply.isPlatform ? '平台' : '我' }} - {{ reply.isPlatform ? $t('feedback.platform') : $t('feedback.me') }} + {{ reply.senderName || (reply.isPlatform ? $t('feedback.platform') : $t('feedback.me')) }} {{ formatTime(reply.createTime) }} {{ reply.content || '-' }} @@ -56,7 +67,7 @@ - + @@ -71,14 +82,16 @@ @@ -365,8 +357,8 @@ flex-wrap: wrap; .upload-item { - width: 200rpx; - height: 200rpx; + width: 180rpx; + height: 180rpx; margin-right: 20rpx; margin-bottom: 20rpx; position: relative; @@ -394,8 +386,8 @@ } .upload-btn { - width: 200rpx; - height: 200rpx; + width: 180rpx; + height: 180rpx; background: #f5f5f5; border-radius: 10rpx; display: flex; diff --git a/pages/feedback/list.vue b/pages/feedback/list.vue index 3da63e4..0a10154 100644 --- a/pages/feedback/list.vue +++ b/pages/feedback/list.vue @@ -104,17 +104,23 @@ }, status: '' }, + { + get text() { + return $t('feedback.pending') + }, + status: 'pending' + }, { get text() { return $t('feedback.processing') }, - status: 'processing' + status: 'in_progress' }, { get text() { return $t('feedback.completed') }, - status: 'completed' + status: 'resolved' } ]); @@ -145,8 +151,8 @@ loading.value = true; const status = statusTabs[currentTab.value].status; const params = { - page: currentPage.value, - size: pageSize.value + pageNum: currentPage.value, + pageSize: pageSize.value }; if (status) { params.status = status; @@ -205,9 +211,9 @@ // 获取状态文本 const getStatusText = (status) => { const statusMap = { - 'processing': $t('feedback.processing'), - 'completed': $t('feedback.completed'), - 'pending': $t('feedback.pending') + 'pending': $t('feedback.pending'), + 'in_progress': $t('feedback.processing'), + 'resolved': $t('feedback.completed') }; return statusMap[status] || $t('feedback.pending'); }; @@ -215,9 +221,9 @@ // 获取状态样式类 const getStatusClass = (status) => { const classMap = { - 'processing': 'chip-processing', - 'completed': 'chip-completed', - 'pending': 'chip-pending' + 'pending': 'chip-pending', + 'in_progress': 'chip-processing', + 'resolved': 'chip-completed' }; return classMap[status] || 'chip-pending'; };