hookehuyr

feat(反馈): 添加提交反馈的API接口和实现

- 在other.js中添加SUBMIT_FEEDBACK API接口
- 实现反馈页面的表单提交逻辑,包括分类映射和错误处理
- 移除模拟提交代码,改为调用真实API接口
/*
* @Date: 2025-07-10 16:13:08
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-07-11 09:40:22
* @LastEditTime: 2025-07-14 15:19:19
* @FilePath: /jgdl/src/api/other.js
* @Description: 文件描述
*/
......@@ -11,6 +11,7 @@ const Api = {
GET_SCHOOLS: '/srv/?a=common&t=get_schools',
GET_BRANDS_MODELS: '/srv/?a=common&t=get_brands_models',
GET_VEHICLE_BRANDS: '/srv/?a=common&t=get_vehicle_brands',
SUBMIT_FEEDBACK: '/srv/?a=common&t=submit_feedback',
GET_FAVORITE_LIST: '/srv/?a=favorite&t=list',
TOGGLE_FAVORITE_ADD: '/srv/?a=favorite&t=add',
TOGGLE_FAVORITE_DEL: '/srv/?a=favorite&t=del',
......@@ -53,3 +54,14 @@ export const getFavoriteListAPI = (params) => fn(fetch.get(Api.GET_FAVORITE_LIST
*/
export const toggleFavoriteAddAPI = (params) => fn(fetch.post(Api.TOGGLE_FAVORITE_ADD, params));
export const toggleFavoriteDelAPI = (params) => fn(fetch.post(Api.TOGGLE_FAVORITE_DEL, params));
/**
* @description: 提交反馈
* @param {*} params
* @param {string} params.category - 反馈类型(1=功能建议,2=界面设计,3=车辆信息, 4=其他)
* @param {string} params.content - 反馈内容
* @param {string} params.images - 上传图片(选填) 最多3张
* @param {string} params.contact_info - 联系方式(选填) 手机号或微信号
* @returns
*/
export const submitFeedbackAPI = (params) => fn(fetch.post(Api.SUBMIT_FEEDBACK, params));
......
<!--
* @Date: 2022-09-19 14:11:06
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-07-08 11:02:56
* @LastEditTime: 2025-07-14 15:20:15
* @FilePath: /jgdl/src/pages/feedBack/index.vue
* @Description: 意见反馈页面
-->
......@@ -126,6 +126,8 @@ import { Plus, Close } from '@nutui/icons-vue-taro'
import { Toast } from '@nutui/nutui-taro'
import BASE_URL from '@/utils/config'
import './index.less'
// 导入接口
import { submitFeedbackAPI } from '@/api/other'
// 反馈分类
const categories = ref([
......@@ -269,32 +271,51 @@ const closePreview = () => {
/**
* 提交反馈
*/
const handleSubmit = () => {
const handleSubmit = async () => {
if (!canSubmit.value) return
Taro.showLoading({ title: '提交中...', mask: true })
// 构建提交数据
const submitData = {
category: selectedCategory.value,
content: feedbackText.value.trim(),
contact: contactInfo.value.trim(),
images: uploadedImages.value
}
try {
// 将分类ID转换为数字格式
const categoryMap = {
'feature': '1',
'ui': '2',
'vehicle': '3',
'other': '4'
}
// 构建提交数据
const submitData = {
category: categoryMap[selectedCategory.value],
content: feedbackText.value.trim(),
contact_info: contactInfo.value.trim(),
images: uploadedImages.value.join(',')
}
// TODO: 调用实际的API接口提交数据
// submitFeedback(submitData)
// 调用真实的API接口提交数据
const response = await submitFeedbackAPI(submitData)
// 模拟提交
setTimeout(() => {
Taro.hideLoading()
showSuccessModal.value = true
// 2秒后自动关闭并重置表单
setTimeout(() => {
closeSuccessModal()
}, 2000)
}, 1500)
if (response.code) {
showSuccessModal.value = true
// 2秒后自动关闭并重置表单
setTimeout(() => {
closeSuccessModal()
}, 2000)
} else {
throw new Error(response.message || '提交失败')
}
} catch (error) {
Taro.hideLoading()
Taro.showToast({
title: error.message || '提交失败,请重试',
icon: 'error',
duration: 2000
})
}
}
/**
......