179 lines
3.7 KiB
Markdown
179 lines
3.7 KiB
Markdown
# 小程序API配置说明
|
||
|
||
## 问题解决
|
||
|
||
已修复 `process is not defined` 错误。小程序环境不支持 Node.js 的 `process` 对象。
|
||
|
||
## API 基础URL 配置
|
||
|
||
### 当前配置
|
||
|
||
API 基础 URL 在 `utils/api.js` 中定义:
|
||
|
||
```javascript
|
||
const API_BASE_URL = 'http://api.zzzhengyangtang.cn'
|
||
```
|
||
|
||
### 修改 API 地址
|
||
|
||
根据你的实际后端地址修改 `TUICallKit-Vue3/utils/api.js` 中的 `API_BASE_URL`:
|
||
|
||
```javascript
|
||
// 开发环境
|
||
const API_BASE_URL = 'http://localhost:8000/api'
|
||
|
||
// 生产环境
|
||
const API_BASE_URL = 'https://your-production-api.com/api'
|
||
```
|
||
|
||
## 医生API端点
|
||
|
||
### 1. 获取医生列表
|
||
|
||
```javascript
|
||
import { doctorApi } from '../utils/api'
|
||
|
||
const response = await doctorApi.getDoctorList({
|
||
page_no: 1,
|
||
page_size: 10,
|
||
keyword: '医生' // 可选
|
||
})
|
||
```
|
||
|
||
**响应格式**:
|
||
```json
|
||
{
|
||
"code": 1,
|
||
"msg": "success",
|
||
"data": {
|
||
"lists": [
|
||
{
|
||
"id": 1,
|
||
"name": "张医生",
|
||
"account": "doctor1",
|
||
"avatar": "http://example.com/avatar.jpg",
|
||
"mobile": "13800138000",
|
||
"email": "doctor@example.com",
|
||
"specialty": "医生",
|
||
"title": "医生",
|
||
"rating": "4.8"
|
||
}
|
||
],
|
||
"count": 10,
|
||
"page_no": 1,
|
||
"page_size": 10
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. 获取医生详情
|
||
|
||
```javascript
|
||
const doctor = await doctorApi.getDoctorDetail(1)
|
||
```
|
||
|
||
### 3. 获取医生排班
|
||
|
||
```javascript
|
||
const roster = await doctorApi.getDoctorRoster(1, '2024-03-11')
|
||
```
|
||
|
||
## 错误处理
|
||
|
||
API 请求会自动处理以下情况:
|
||
|
||
1. **网络错误**: 显示 "网络错误" 提示
|
||
2. **请求失败**: 显示 "获取医生列表失败" 提示
|
||
3. **登录失效**: 自动清除 token
|
||
|
||
## 首页集成
|
||
|
||
首页 (`pages/index/index.vue`) 会在加载时自动调用 `fetchDoctors()` 方法获取医生列表。
|
||
|
||
### 首页流程
|
||
|
||
1. 页面加载时调用 `onMounted()`
|
||
2. `onMounted()` 调用 `fetchDoctors()`
|
||
3. `fetchDoctors()` 调用 `doctorApi.getDoctorList()`
|
||
4. 获取成功后更新 `doctors` 数据
|
||
5. 医生卡片自动渲染
|
||
|
||
### 点击医生卡片
|
||
|
||
点击医生卡片会跳转到挂号页面:
|
||
|
||
```javascript
|
||
uni.navigateTo({
|
||
url: `/pages/order/index?doctorId=${doctor.id}&doctorName=${doctor.name}`
|
||
})
|
||
```
|
||
|
||
## 调试技巧
|
||
|
||
### 1. 查看网络请求
|
||
|
||
在小程序开发者工具中:
|
||
1. 打开 "Network" 标签
|
||
2. 查看 API 请求的 URL、参数和响应
|
||
|
||
### 2. 查看控制台日志
|
||
|
||
```javascript
|
||
console.error('请求失败:', error)
|
||
```
|
||
|
||
### 3. 测试 API
|
||
|
||
使用 Postman 或 curl 测试 API:
|
||
|
||
```bash
|
||
# 获取医生列表
|
||
curl "http://localhost:8000/api/doctor/lists?page_no=1&page_size=10"
|
||
|
||
# 获取医生详情
|
||
curl "http://localhost:8000/api/doctor/detail?id=1"
|
||
|
||
# 获取医生排班
|
||
curl "http://localhost:8000/api/doctor/roster?doctor_id=1&date=2024-03-11"
|
||
```
|
||
|
||
## 常见问题
|
||
|
||
### Q: 医生列表为空?
|
||
|
||
A: 检查以下几点:
|
||
1. API 地址是否正确
|
||
2. 后端是否有医生数据(role_id = 1)
|
||
3. 医生的 disable 字段是否为 0
|
||
4. 网络连接是否正常
|
||
|
||
### Q: 头像无法显示?
|
||
|
||
A:
|
||
1. 检查 avatar URL 是否完整
|
||
2. 检查图片服务器是否可访问
|
||
3. 检查小程序是否有网络权限
|
||
|
||
### Q: 如何修改 API 地址?
|
||
|
||
A: 修改 `TUICallKit-Vue3/utils/api.js` 中的 `API_BASE_URL` 常量。
|
||
|
||
### Q: 如何添加请求头?
|
||
|
||
A: 修改 `request()` 函数中的 `header` 对象:
|
||
|
||
```javascript
|
||
header: {
|
||
'Content-Type': 'application/json',
|
||
'Authorization': token,
|
||
'Custom-Header': 'value' // 添加自定义请求头
|
||
}
|
||
```
|
||
|
||
## 相关文件
|
||
|
||
- API 服务: `TUICallKit-Vue3/utils/api.js`
|
||
- 首页组件: `TUICallKit-Vue3/pages/index/index.vue`
|
||
- 后端控制器: `server/app/api/controller/DoctorController.php`
|
||
- 后端逻辑: `server/app/api/logic/DoctorLogic.php`
|