Compare commits

...

2 Commits

Author SHA1 Message Date
9423f15f29 docs: 更新 DEV.md — API 调用规范和页面加载模式
- request 函数正确调用格式说明
- 页面数据加载标准模式(initialLoaded 守卫)
2026-06-08 11:25:03 +08:00
65c2a81486 fix: API 调用格式修复 — request 参数传递方式
- feedback.ts: 修复 request 调用格式,使用 { url, data } 对象
- config.ts: 修复 request 调用格式,使用 { url } 对象
2026-06-08 11:23:43 +08:00
3 changed files with 46 additions and 5 deletions

41
DEV.md
View File

@@ -33,6 +33,47 @@
- API 地址统一在 `config.ts` 中配置,不要在各文件中硬编码
- 头像等用户文件 URL 只存文件名,前端拼接 `API_BASE + 路径 + 文件名`
## API 调用规范
### request 函数调用格式
`request` 函数**只接受一个对象参数**,格式为 `{ url, method?, data? }`
```typescript
// ✅ 正确
request({ url: '/feedback', data: params })
request({ url: '/config' })
request({ url: '/feedback', method: 'POST', data })
// ❌ 错误 — 会导致 URL 拼接为 /apiundefined
request('/feedback', { params })
request('/config', { method: 'PUT', data })
```
**原因**`request` 函数签名是 `request<T>(options: RequestOptions): Promise<T>`,第一个参数是 options 对象,不支持分开传 url 和 options。
### 页面数据加载模式
```typescript
const initialLoaded = ref(false)
onMounted(async () => {
await waitForReady()
await loadData()
initialLoaded.value = true
})
// onShow 时静默刷新,但必须有 initialLoaded 守卫
onShow(() => {
if (initialLoaded.value) loadData(true)
})
onPullDownRefresh(async () => {
await loadData()
uni.stopPullDownRefresh()
})
```
## Never 规则
- Never 修改 dist/ 目录

View File

@@ -2,10 +2,10 @@ import { request } from '@/utils/request'
/** 获取系统配置 */
export function getConfig(): Promise<Record<string, string>> {
return request('/config')
return request({ url: '/config' })
}
/** 更新系统配置(管理员) */
export function updateConfig(data: Record<string, string>) {
return request('/config', { method: 'PUT', data })
return request({ url: '/config', method: 'PUT', data })
}

View File

@@ -6,15 +6,15 @@ export function submitFeedback(data: {
content: string
contact?: string
}) {
return request('/feedback', { method: 'POST', data })
return request({ url: '/feedback', method: 'POST', data })
}
/** 获取反馈列表(管理员) */
export function getFeedbackList(params?: { page?: number; pageSize?: number; status?: string }) {
return request('/feedback', { params })
return request({ url: '/feedback', data: params })
}
/** 更新反馈状态(管理员) */
export function updateFeedbackStatus(id: number, status: string) {
return request(`/feedback/${id}/status`, { method: 'PUT', data: { status } })
return request({ url: `/feedback/${id}/status`, method: 'PUT', data: { status } })
}