- 后端: 新增 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>
94 lines
2.3 KiB
JavaScript
94 lines
2.3 KiB
JavaScript
const app = getApp()
|
|
|
|
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') || ''
|
|
}
|
|
|
|
function request({ url, method = 'GET', data = {}, header = {} }) {
|
|
return new Promise((resolve, reject) => {
|
|
const token = getToken()
|
|
const headers = {
|
|
'Content-Type': 'application/json',
|
|
...header
|
|
}
|
|
|
|
if (token) {
|
|
headers.Authorization = `Bearer ${token}`
|
|
}
|
|
|
|
wx.request({
|
|
url: `${getBaseURL()}${url}`,
|
|
method,
|
|
data,
|
|
header: headers,
|
|
success: (res) => {
|
|
if (res.statusCode === 401) {
|
|
app.clearAuth()
|
|
wx.showToast({ title: '登录已过期,请重新登录', icon: 'none' })
|
|
setTimeout(() => wx.reLaunch({ url: '/pages/login/index' }), 600)
|
|
reject(new Error('Unauthorized'))
|
|
return
|
|
}
|
|
|
|
const body = res.data || {}
|
|
if (body.code === 0) {
|
|
resolve(body.data)
|
|
return
|
|
}
|
|
|
|
const message = body.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)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
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
|
|
}
|