You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.5 KiB
5.5 KiB
UniApp端接口修复报告
🚨 问题确认
您发现的UniApp端接口问题完全正确!调用的API路径与后端实际路由不匹配。
📋 发现的问题
1. API路径不匹配
错误调用:
curl 'http://localhost:20080/api/contract/my-contracts'
curl 'http://localhost:20080/api/contract/stats'
后端实际路由:
// 在 niucloud/app/api/route/route.php 中
Route::get('contract/myContracts', 'apiController.Contract/myContracts'); // 第428行
Route::get('contract/detail', 'apiController.Contract/detail'); // 第429行
Route::post('contract/sign', 'apiController.Contract/sign'); // 第430行
2. 命名规范不一致
- 前端调用:使用横线分隔
my-contracts - 后端路由:使用驼峰命名
myContracts
✅ 已完成的修复
1. 修复API路径映射
修复文件:uniapp/api/apiRoute.js
| 功能 | 修复前(错误) | 修复后(正确) | 状态 |
|---|---|---|---|
| 获取合同列表 | /contract_distribution/my_contracts |
/contract/myContracts |
✅ 已修复 |
| 获取合同详情 | /contract_distribution/detail/${id} |
/contract/detail?id=${id} |
✅ 已修复 |
| 提交合同签名 | /contract_distribution/submit_signature/${id} |
/contract/sign |
✅ 已修复 |
2. 参数格式修复
修复前:
// 错误的参数传递方式
async getContractDetail(contractId) {
return await http.get(`/contract_distribution/detail/${contractId}`);
}
修复后:
// 正确的参数传递方式
async getContractDetail(contractId) {
return await http.get('/contract/detail', { id: contractId });
}
3. 签名接口修复
修复前:
async submitContractSignature(contractId, data = {}) {
return await http.post(`/contract_distribution/submit_signature/${contractId}`, data);
}
修复后:
async submitContractSignature(contractId, data = {}) {
return await http.post('/contract/sign', {
contract_id: contractId,
sign_file: data.sign_file
});
}
📋 后端实际可用的接口
根据代码检索,后端实际提供的合同相关接口:
1. 已实现的接口 ✅
// 在 niucloud/app/api/controller/apiController/Contract.php 中
GET /api/contract/myContracts - 获取我的合同列表
GET /api/contract/detail - 获取合同详情 (参数: id)
POST /api/contract/sign - 签订合同 (参数: contract_id, sign_file)
GET /api/contract/signStatus - 获取签名状态
GET /api/contract/download - 下载合同文件
2. 暂未实现的接口 ⚠️
// 这些接口在UniApp中被调用,但后端暂未实现
/api/contract/stats - 合同统计数据
/api/contract/form-fields - 获取表单字段
/api/contract/submit-form - 提交表单数据
/api/contract/generate-document - 生成合同文档
🔧 临时解决方案
对于暂未实现的接口,我采用了以下临时方案:
1. 统计数据接口
// 暂时使用合同列表接口代替
async getContractStats(data = {}) {
return await http.get('/contract/myContracts', data);
}
2. 表单相关接口
// 暂时返回空数据,等待后端实现
async getContractFormFields(contractId) {
return { code: 1, data: [] };
}
async submitContractFormData(contractId, data = {}) {
return { code: 1, data: {} };
}
🧪 测试验证
修复后,UniApp应该能正确调用以下接口:
1. 合同列表测试
curl 'http://localhost:20080/api/contract/myContracts?page=1&limit=10' \
-H 'token: YOUR_TOKEN' \
-H 'content-type: application/json'
2. 合同详情测试
curl 'http://localhost:20080/api/contract/detail?id=1' \
-H 'token: YOUR_TOKEN' \
-H 'content-type: application/json'
3. 合同签名测试
curl -X POST 'http://localhost:20080/api/contract/sign' \
-H 'token: YOUR_TOKEN' \
-H 'content-type: application/json' \
-d '{"contract_id": 1, "sign_file": "签名文件路径"}'
📊 修复状态总结
| 接口类型 | 修复状态 | 可用性 | 说明 |
|---|---|---|---|
| 合同列表 | ✅ 已修复 | 🟢 可用 | 路径已匹配后端实际路由 |
| 合同详情 | ✅ 已修复 | 🟢 可用 | 参数格式已修正 |
| 合同签名 | ✅ 已修复 | 🟢 可用 | 接口路径和参数已修正 |
| 统计数据 | ⚠️ 临时方案 | 🟡 部分可用 | 使用合同列表代替 |
| 表单字段 | ⚠️ 临时方案 | 🟡 模拟数据 | 等待后端实现 |
| 文档生成 | ⚠️ 临时方案 | 🟡 模拟数据 | 等待后端实现 |
🎯 下一步建议
1. 立即测试
请重新测试UniApp端的合同功能,应该能正常调用:
- 合同列表页面
- 合同详情页面
- 合同签名功能
2. 后续完善
如需完整功能,建议后端补充实现:
- 合同统计接口
- 动态表单字段接口
- 表单数据提交接口
- 文档生成接口
3. 验证方法
# 测试合同列表接口
curl 'http://localhost:20080/api/contract/myContracts' \
-H 'token: YOUR_TOKEN'
✅ 修复确认
UniApp端API路径已修复完成,现在应该能正确调用后端接口。
主要修复:
- ✅ API路径匹配后端实际路由
- ✅ 参数格式符合后端要求
- ✅ 接口调用方式正确
请重新测试UniApp端功能!