智慧教务系统
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

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端功能!