- 在提交前新增必填图片校验,确保身份证正反面及其他凭证全部上传 - 优化图片上传占位样式,新增上传提示文案 - uploadImage函数增加上传中loading提示及成功失败反馈toast - 格式化后端错误提示,过滤错误码尾巴,提升用户体验 - 明确图片字段标签,标注为“身份证正面(人像面)”等,增强用户指引
3.8 KiB
3.8 KiB
2026-07-26
修复 pages/order/delivery.vue 身份证上传失败 Bug
用户报告:页面提交时弹"请上传身份证正面照片.FAILUREFP03333"。
根因分析:
- 错误码
FAILUREFP03333和提示文本"请上传身份证正面照片"都是后端POST /open/equipment/receipt返回的,前端代码无此内容。 orderSourceData数组下标与图片含义是固定绑定:0=身份证正面、1=身份证反面、2=人车合照、3=车子照片、4=安装照片。- 截图里只看到"其他"模块 3 张图,未见"身份证信息"模块——用户大概率跳过了身份证正反面上传就点了提交。
修复内容(pages/order/delivery.vue):
- 在
handleSubmit提交前增加客户端必传校验:5 个图片槽位任一为空就拦截,并按"身份证正面 > 身份证反面 > 其他"优先级提示用户补图。 - 过滤后端返回的错误码尾巴(如
.FAILUREFP03333),新增formatErrorMsg()工具函数。 - 优化占位图:未上传时显示"+ 点击上传身份证正面(人像面)"等说明,替代原来的灰色
not-dealer.png占位。 chooseImage加uni.showLoading上传中提示,成功/失败分别 toast 明确文案。- 字段标签明确化:"正面/反面"→"身份证正面(人像面)/身份证反面(国徽面)"。
关于 FAILUREFP03333 的判断:
- 非前端错误码(前端 grep 无任何匹配)。
- 推测是后端在调用阿里云内容安全 / 第三方 OCR(Face++、百度、腾讯云天御等)做身份证内容审核时返回的状态码。
- 真正根因在后端,前端只能加校验和友好提示,无法根本解决"图片本身被识别为非身份证"的场景。
- 建议后端同事确认
/open/equipment/receipt接口的身份证正反面校验逻辑,以及是否依赖第三方图片识别服务。
后端 yunxinwei-api 同步修复(FAILUREFP03333 根因)
项目路径:/Users/gxwebsoft/JAVA/yunxinwei-api
文件:src/main/java/com/gxwebsoft/open/controller/OpenEquipmentController.java
根因确认:
receipt()接口(原 402-461 行)调用idcardService.verify(front, back)做阿里云市场 OCR(miitangs14.market.alicloudapi.com/v1/tools/ocr/idCard),非FP00000时把verify.getMessage() + verify.getCode()直接拼进用户提示 → 用户看到"请上传身份证正面照片.FAILUREFP03333"。idcardService.verify在 OCR 接口异常时返回null,原代码紧接着verify.getCode()会 NPE → 500。images.get(0/1)在图片不足 2 张时会IndexOutOfBounds;用户跳过身份证上传只传 3 张其他图时,images[0]被当成身份证人像面去 OCR → 失败但提示语仍是"请上传身份证正面照片"。
修复内容:
- 抽出私有方法
verifyIdCard(orderSourceData, order),把身份证识别与实名回填逻辑内聚。 - JSON 解析加 try-catch,失败返回"身份证图片数据格式有误"。
- 校验
images至少 2 张且images[0]/images[1]非空,否则返回"请上传身份证正面和反面照片"(不再越界)。 verify调用加 try-catch +null判断,避免 NPE;OCR 异常返回友好提示。- 内部错误码
FAILUREFP03333不再回吐给用户,仅log.warn记录;用户提示改为"身份证正面照片识别失败,请重新上传清晰的身份证人像面照片" / "身份证反面照片识别失败,请重新上传清晰的身份证国徽面照片"。 userService.getById(...)补null防护,避免回填空指针。
验证:./mvnw -o -q compile 离线编译通过(EXIT=0,依赖已本地缓存)。
前后端配合结论:前端(delivery.vue)做提交前必传校验 + 友好占位,后端(OpenEquipmentController)做空安全 + 内部码隔离 + 分正反面提示,两端共同消除该 Bug。