Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

ocrHandle.ts 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import { reactive, ref } from "vue";
  2. import { request, requestNew } from "@/utils/network/request";
  3. import { Index, handleDataList } from "@/components/form-builder/tools";
  4. import { etcOcrCard, ocrAllQuery, fileUpload } from "@/utils/network/api.js";
  5. import { useQdOrderStore } from "@/stores/qdOrder.js";
  6. // 配合formBuilderVue3模板使用
  7. export default function () {
  8. let submitQuery = ref<any>({});
  9. let registerQuery = reactive<any>({});
  10. const qdOrderStore = useQdOrderStore();
  11. // 社会信用代码ocr识别
  12. function cardImageOcrYY(fileList, item, formData) {
  13. submitQuery.value.userIdType = "203"; //203 公司信用代码
  14. // 将图片上传
  15. //识别营业执照
  16. // return
  17. const data = {
  18. type:'5',
  19. // imagePath: fileList.url.split('default-bucket/')[1],
  20. imagePath: fileList.url,
  21. };
  22. uni.showLoading({
  23. title: '正在识别图片...',
  24. mask: true
  25. });
  26. requestNew('/iaw/api/ocr/do', {
  27. data: data
  28. }).then(res => {
  29. if (res.code !== 0) return
  30. let data : any = res.data;
  31. let ocrData = [
  32. {
  33. title: "公司名称",
  34. key: "unitName"
  35. },
  36. {
  37. title: "社会信用代码",
  38. key: "screditCode"
  39. },
  40. {
  41. title: "住址",
  42. key: "adress"
  43. }
  44. ];
  45. // const itemData = formData.value[Index(item.title, formData.value)]
  46. // itemData[itemData.value] = fileList.pathDomain
  47. // 保存营业执照图片地址到submitQuery
  48. // submitQuery.value.userIdPoImageUrl = fileList.pathDomain.split('default-bucket/')[1];
  49. submitQuery.value.userIdPoImageUrl = fileList.url;
  50. // 处理数据展示
  51. handleDataList(ocrData, data, formData);
  52. }).finally(()=>{
  53. uni.hideLoading();
  54. });
  55. }
  56. // 委托书
  57. function cardFileImageUpdate(fileList, item, formData) {
  58. console.log(fileList, item, formData,'fileList, item, formData');
  59. const dataItem = formData.value[Index(item.title, formData.value)];
  60. dataItem[dataItem.value] = fileList.url;
  61. // submitQuery.value.proxyUrl = fileList.pathDomain.split('default-bucket/')[1];
  62. // dataItem[dataItem.value] = fileList.pathDomain;
  63. }
  64. // 身份证类别识别
  65. function idCardOcr(fileList, item, formData) {
  66. console.log(fileList, item, formData,'fileList, item, formData');
  67. let imageType;
  68. if (item.title == "人像面" || item.title == "经办人证件人像面") {
  69. imageType = "1";
  70. } else if (item.title == "国徽面" || item.title == "经办人证件国徽面") {
  71. imageType = "2";
  72. }
  73. const data = {
  74. // source: "1",
  75. type:imageType,
  76. // imagePath: fileList.url.split('default-bucket/')[1],
  77. imagePath: fileList.url,
  78. };
  79. uni.showLoading({
  80. title: '正在识别图片...',
  81. mask: true
  82. });
  83. requestNew('/iaw/api/ocr/do', {
  84. data: data
  85. }).then(res => {
  86. console.log('OCR接口返回:', res); // 添加接口返回日志
  87. if (res.code !== 0) {
  88. console.log('OCR接口返回错误码:', res.code); // 添加错误码日志
  89. return;
  90. }
  91. let data : any = res.data;
  92. console.log('OCR识别数据:', data); // 添加识别数据日志
  93. let ocrData = [];
  94. const itemData = formData.value[Index(item.title, formData.value)]
  95. // itemData[itemData.value] = fileList.pathDomain.split('default-bucket/')[1]
  96. itemData[itemData.value] = fileList.url
  97. if (imageType == "1") {
  98. // 人像面
  99. if (!data.name || !data.idno) {
  100. console.log('缺少必要的身份信息:', {name: data.name, idno: data.idno}); // 添加数据缺失日志
  101. uni.showModal({
  102. title: "提示",
  103. content: "很抱歉,我们无法识别您的证件,请按规范上传正反面,确保图片清晰、背景简洁(如白墙或桌面),减少证件反光和阴影",
  104. success: function (res) { }
  105. });
  106. return;
  107. }
  108. if (item.title == "经办人证件人像面") {
  109. ocrData = ocrData.concat([
  110. {
  111. title: "经办人姓名",
  112. key: "name"
  113. },
  114. {
  115. title: "经办人证件号码",
  116. key: "idno"
  117. }
  118. ]);
  119. submitQuery.value.agentIdType = 101; //身份证类型
  120. submitQuery.value.agentAddress = data.address; //经办人住址
  121. } else {
  122. console.log('设置个人信息数据'); // 添加个人信息设置日志
  123. ocrData = ocrData.concat([
  124. {
  125. title: "姓名",
  126. key: "name"
  127. },
  128. {
  129. title: "证件号码",
  130. key: "idno"
  131. },
  132. {
  133. title: "住址",
  134. key: "address"
  135. }
  136. ]);
  137. console.log('准备处理数据展示,ocrData:', ocrData); // 添加数据处理前日志
  138. submitQuery.value.userIdType = 101; //身份证
  139. registerQuery.gender = data.gender == '男' ? 'MALE' : 'FEMALE' //用户性别
  140. }
  141. console.log('准备处理数据展示,ocrData:', ocrData); // 添加数据处理前日志
  142. // 处理数据展示
  143. handleDataList(ocrData, data, formData);
  144. console.log('数据处理完成'); // 添加数据处理完成日志
  145. } else {
  146. if (!data.enddate) {
  147. console.log('缺少有效期信息'); // 添加有效期缺失日志
  148. uni.showModal({
  149. title: "提示",
  150. content: "很抱歉,我们无法识别您的证件,请按规范上传正反面,确保图片清晰、背景简洁(如白墙或桌面),减少证件反光和阴影",
  151. success: function (res) { }
  152. });
  153. return;
  154. }
  155. if (item.title == "经办人证件国徽面") {
  156. submitQuery.value.agentIdVld = data.enddate; //经办人证件有效期
  157. } else {
  158. submitQuery.value.customerIdVld = data.enddate; //证件有效期
  159. }
  160. }
  161. }).catch(error => {
  162. console.error('OCR接口调用失败:', error); // 添加错误捕获日志
  163. }).finally(()=>{
  164. uni.hideLoading();
  165. });
  166. }
  167. //图像文件上传
  168. function uploadImgHandle(fileList, item, formData) {
  169. if (
  170. ["人像面", "国徽面", "经办人证件人像面", "经办人证件国徽面"].includes(
  171. item.title
  172. )
  173. ) {
  174. idCardOcr(fileList, item, formData);
  175. } else if (item.title == "营业执照") {
  176. console.log("dsdsad",formData)
  177. cardImageOcrYY(fileList, item, formData);
  178. } else {
  179. cardFileImageUpdate(fileList, item, formData);
  180. }
  181. }
  182. return {
  183. uploadImgHandle,
  184. submitQuery
  185. };
  186. }