feat: 申诉常见理由快捷选择 + 证据截图上传

- 后端: 新增 appeal_reason_type, appeal_evidence_urls 字段
- 后端: 新建 upload_routes.py 图片上传接口
- 前端: history 页面添加快捷理由选择器 + 截图上传
- 前端: admin-review 页面展示证据图片 + 点击预览
- 新增 SQL 更新脚本 update_appeal_fields.sql

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
刘正航
2026-04-21 23:26:25 +08:00
parent 50440e84fb
commit f7d0601c4e
12 changed files with 344 additions and 13 deletions

View File

@@ -4,6 +4,11 @@ function getBaseURL() {
return app.globalData.baseURL || 'http://127.0.0.1:5000/api'
}
function getServerBase() {
const baseURL = getBaseURL()
return baseURL.replace('/api', '')
}
function getToken() {
return app.globalData.token || wx.getStorageSync('token') || ''
}
@@ -53,6 +58,36 @@ function request({ url, method = 'GET', data = {}, header = {} }) {
})
}
module.exports = {
request
function uploadFile(filePath) {
return new Promise((resolve, reject) => {
const token = getToken()
wx.uploadFile({
url: `${getServerBase()}/api/upload/image`,
filePath,
name: 'file',
header: {
Authorization: token ? `Bearer ${token}` : ''
},
success: (res) => {
const data = JSON.parse(res.data || '{}')
if (data.code === 0) {
resolve(data.data)
return
}
const message = data.message || '上传失败'
wx.showToast({ title: message, icon: 'none' })
reject(new Error(message))
},
fail: (err) => {
const msg = (err && err.errMsg) || '上传失败'
wx.showToast({ title: msg, icon: 'none' })
reject(err)
}
})
})
}
module.exports = {
request,
uploadFile
}